== Physical Plan ==
AdaptiveSparkPlan (2194)
+- == Current Plan ==
ResultQueryStage (260)
+- * Project (259)
+- * BroadcastHashJoin LeftOuter BuildRight (258)
:- * Project (232)
: +- * Project (231)
: +- AQEShuffleRead (230)
: +- ShuffleQueryStage (229), Statistics(sizeInBytes=21.0 KiB, rowCount=64)
: +- Exchange (228)
: +- * Project (227)
: +- * BroadcastHashJoin LeftOuter BuildRight (226)
: :- AQEShuffleRead (169)
: : +- ShuffleQueryStage (168), Statistics(sizeInBytes=8.5 KiB, rowCount=64)
: : +- 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=6.0 KiB, rowCount=64)
: : : : : +- Exchange (3)
: : : : : +- * ColumnarToRow (2)
: : : : : +- Scan parquet (1)
: : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=4.5 MiB, rowCount=1.29E+4)
: : : : +- BroadcastExchange (11)
: : : : +- * Project (10)
: : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=1805.1 KiB, rowCount=1.29E+4)
: : : : +- Exchange (8)
: : : : +- * Project (7)
: : : : +- * ColumnarToRow (6)
: : : : +- Scan parquet (5)
: : : +- BroadcastQueryStage (22), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- BroadcastExchange (21)
: : : +- ShuffleQueryStage (20), Statistics(sizeInBytes=89.8 KiB, rowCount=150)
: : : +- Exchange (19)
: : : +- * Project (18)
: : : +- * Filter (17)
: : : +- * ColumnarToRow (16)
: : : +- Scan parquet (15)
: : +- BroadcastQueryStage (164), Statistics(sizeInBytes=2.0 MiB, rowCount=37)
: : +- BroadcastExchange (163)
: : +- * HashAggregate (162)
: : +- AQEShuffleRead (161)
: : +- ShuffleQueryStage (160), Statistics(sizeInBytes=3.8 KiB, rowCount=37)
: : +- Exchange (159)
: : +- * HashAggregate (158)
: : +- * Project (157)
: : +- * BroadcastHashJoin Inner BuildLeft (156)
: : :- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=37)
: : : +- BroadcastExchange (110)
: : : +- AQEShuffleRead (109)
: : : +- ShuffleQueryStage (108), Statistics(sizeInBytes=4.3 KiB, rowCount=37)
: : : +- Exchange (107)
: : : +- * Project (106)
: : : +- * BroadcastHashJoin Inner BuildLeft (105)
: : : :- BroadcastQueryStage (87), Statistics(sizeInBytes=2.0 MiB, rowCount=160)
: : : : +- BroadcastExchange (86)
: : : : +- AQEShuffleRead (85)
: : : : +- ShuffleQueryStage (84), Statistics(sizeInBytes=18.8 KiB, rowCount=160)
: : : : +- 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=444)
: : : : : +- BroadcastExchange (36)
: : : : : +- ShuffleQueryStage (35), Statistics(sizeInBytes=269.9 KiB, rowCount=444)
: : : : : +- 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=2)
: : : : : +- BroadcastExchange (49)
: : : : : +- * Project (48)
: : : : : +- * Generate (47)
: : : : : +- * Project (46)
: : : : : +- * Filter (45)
: : : : : +- * Generate (44)
: : : : : +- ShuffleQueryStage (43), Statistics(sizeInBytes=368.0 B, rowCount=1)
: : : : : +- Exchange (42)
: : : : : +- * Project (41)
: : : : : +- * Filter (40)
: : : : : +- * ColumnarToRow (39)
: : : : : +- Scan parquet (38)
: : : : +- * HashAggregate (72)
: : : : +- AQEShuffleRead (71)
: : : : +- ShuffleQueryStage (70), Statistics(sizeInBytes=1632.0 B, rowCount=34)
: : : : +- 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=5.5 KiB, rowCount=64)
: : : : : : +- Exchange (54)
: : : : : : +- * Filter (53)
: : : : : : +- * ColumnarToRow (52)
: : : : : : +- Scan parquet (51)
: : : : : +- BroadcastQueryStage (57), Statistics(sizeInBytes=4.5 MiB, rowCount=1.29E+4)
: : : : : +- ReusedExchange (56)
: : : : +- BroadcastQueryStage (61), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : : +- 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=6.0 KiB, rowCount=64)
: : : : : +- Exchange (91)
: : : : : +- * Filter (90)
: : : : : +- * ColumnarToRow (89)
: : : : : +- Scan parquet (88)
: : : : +- BroadcastQueryStage (94), Statistics(sizeInBytes=4.5 MiB, rowCount=1.29E+4)
: : : : +- ReusedExchange (93)
: : : +- BroadcastQueryStage (98), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : +- ReusedExchange (97)
: : +- AQEShuffleRead (155)
: : +- ShuffleQueryStage (154), Statistics(sizeInBytes=4.0 KiB, rowCount=37)
: : +- Exchange (153)
: : +- * HashAggregate (152)
: : +- * HashAggregate (151)
: : +- * Project (150)
: : +- * BroadcastHashJoin Inner BuildLeft (149)
: : :- BroadcastQueryStage (134), Statistics(sizeInBytes=2.0 MiB, rowCount=160)
: : : +- BroadcastExchange (133)
: : : +- AQEShuffleRead (132)
: : : +- ShuffleQueryStage (131), Statistics(sizeInBytes=17.5 KiB, rowCount=160)
: : : +- 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=444)
: : : : +- ReusedExchange (112)
: : : +- * Project (121)
: : : +- * BroadcastHashJoin Inner BuildLeft (120)
: : : :- BroadcastQueryStage (115), Statistics(sizeInBytes=2.0 MiB, rowCount=2)
: : : : +- ReusedExchange (114)
: : : +- * HashAggregate (119)
: : : +- AQEShuffleRead (118)
: : : +- ShuffleQueryStage (117), Statistics(sizeInBytes=1632.0 B, rowCount=34)
: : : +- 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=6.0 KiB, rowCount=64)
: : : : +- ReusedExchange (135)
: : : +- BroadcastQueryStage (138), Statistics(sizeInBytes=4.5 MiB, rowCount=1.29E+4)
: : : +- ReusedExchange (137)
: : +- BroadcastQueryStage (142), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : +- ReusedExchange (141)
: +- BroadcastQueryStage (225), Statistics(sizeInBytes=2.0 MiB, rowCount=64)
: +- BroadcastExchange (224)
: +- AQEShuffleRead (223)
: +- ShuffleQueryStage (222), Statistics(sizeInBytes=18.0 KiB, rowCount=64)
: +- Exchange (221)
: +- * SerializeFromObject (220)
: +- * MapElements (219)
: +- * DeserializeToObject (218)
: +- * Project (217)
: +- * BroadcastHashJoin LeftOuter BuildRight (216)
: :- ObjectHashAggregate (208)
: : +- ObjectHashAggregate (207)
: : +- * Project (206)
: : +- * BroadcastHashJoin LeftOuter BuildRight (205)
: : :- * Project (200)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (199)
: : : :- AQEShuffleRead (196)
: : : : +- ShuffleQueryStage (195), Statistics(sizeInBytes=59.1 KiB, rowCount=64)
: : : : +- Exchange (194)
: : : : +- * Project (193)
: : : : +- * Project (192)
: : : : +- * Generate (191)
: : : : +- * Generate (190)
: : : : +- * Project (189)
: : : : +- Project (188)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (187)
: : : : :- * SortMergeJoin LeftOuter (184)
: : : : : :- * Sort (174)
: : : : : : +- ShuffleQueryStage (173), Statistics(sizeInBytes=6.0 KiB, rowCount=64)
: : : : : : +- Exchange (172)
: : : : : : +- ShuffleQueryStage (171), Statistics(sizeInBytes=6.0 KiB, rowCount=64)
: : : : : : +- ReusedExchange (170)
: : : : : +- * Sort (183)
: : : : : +- ShuffleQueryStage (182), Statistics(sizeInBytes=9.9 MiB, rowCount=1.29E+4)
: : : : : +- Exchange (181)
: : : : : +- * Project (180)
: : : : : +- ShuffleQueryStage (179), Statistics(sizeInBytes=9.7 MiB, rowCount=1.29E+4)
: : : : : +- Exchange (178)
: : : : : +- * Project (177)
: : : : : +- * ColumnarToRow (176)
: : : : : +- Scan parquet (175)
: : : : +- BroadcastQueryStage (186), Statistics(sizeInBytes=2.0 MiB, rowCount=150)
: : : : +- ReusedExchange (185)
: : : +- BroadcastQueryStage (198), Statistics(sizeInBytes=2.0 MiB, rowCount=37)
: : : +- ReusedExchange (197)
: : +- BroadcastQueryStage (204), Statistics(sizeInBytes=2.0 MiB, rowCount=64)
: : +- BroadcastExchange (203)
: : +- * ColumnarToRow (202)
: : +- Scan parquet (201)
: +- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=22)
: +- BroadcastExchange (214)
: +- ShuffleQueryStage (213), Statistics(sizeInBytes=1584.0 B, rowCount=22)
: +- Exchange (212)
: +- * Project (211)
: +- * ColumnarToRow (210)
: +- Scan parquet (209)
+- BroadcastQueryStage (257), Statistics(sizeInBytes=2.0 MiB, rowCount=64)
+- BroadcastExchange (256)
+- * Filter (255)
+- * SerializeFromObject (254)
+- * MapElements (253)
+- * DeserializeToObject (252)
+- Project (251)
+- * Project (250)
+- AQEShuffleRead (249)
+- ShuffleQueryStage (248), Statistics(sizeInBytes=74.1 KiB, rowCount=64)
+- Exchange (247)
+- * Project (246)
+- * BroadcastHashJoin LeftOuter BuildRight (245)
:- AQEShuffleRead (242)
: +- ShuffleQueryStage (241), Statistics(sizeInBytes=61.6 KiB, rowCount=64)
: +- Exchange (240)
: +- * Project (239)
: +- * BroadcastHashJoin LeftOuter BuildRight (238)
: :- AQEShuffleRead (235)
: : +- ShuffleQueryStage (234), Statistics(sizeInBytes=59.1 KiB, rowCount=64)
: : +- ReusedExchange (233)
: +- BroadcastQueryStage (237), Statistics(sizeInBytes=2.0 MiB, rowCount=37)
: +- ReusedExchange (236)
+- BroadcastQueryStage (244), Statistics(sizeInBytes=2.0 MiB, rowCount=64)
+- ReusedExchange (243)
+- == Initial Plan ==
Project (2193)
+- SortMergeJoin LeftOuter (2192)
:- Project (1363)
: +- SortMergeJoin LeftOuter (1362)
: :- Sort (648)
: : +- Exchange (647)
: : +- Project (646)
: : +- SortMergeJoin LeftOuter (645)
: : :- Sort (441)
: : : +- Exchange (440)
: : : +- Project (439)
: : : +- SortMergeJoin LeftOuter (438)
: : : :- Sort (279)
: : : : +- Project (278)
: : : : +- Project (277)
: : : : +- Generate (276)
: : : : +- Generate (275)
: : : : +- Project (274)
: : : : +- Project (273)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (272)
: : : : :- Project (267)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (266)
: : : : : :- Exchange (261)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (265)
: : : : : +- Project (264)
: : : : : +- Exchange (263)
: : : : : +- Project (262)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (271)
: : : : +- Exchange (270)
: : : : +- Project (269)
: : : : +- Filter (268)
: : : : +- Scan parquet (15)
: : : +- Sort (437)
: : : +- HashAggregate (436)
: : : +- Exchange (435)
: : : +- HashAggregate (434)
: : : +- Project (433)
: : : +- SortMergeJoin Inner (432)
: : : :- Sort (352)
: : : : +- Exchange (351)
: : : : +- Project (350)
: : : : +- SortMergeJoin Inner (349)
: : : : :- Sort (327)
: : : : : +- Exchange (326)
: : : : : +- Project (325)
: : : : : +- Filter (324)
: : : : : +- Generate (323)
: : : : : +- Filter (322)
: : : : : +- ObjectHashAggregate (321)
: : : : : +- ObjectHashAggregate (320)
: : : : : +- Generate (319)
: : : : : +- BroadcastHashJoin Inner BuildLeft (318)
: : : : : :- BroadcastExchange (283)
: : : : : : +- Exchange (282)
: : : : : : +- Project (281)
: : : : : : +- Filter (280)
: : : : : : +- Scan parquet (30)
: : : : : +- Project (317)
: : : : : +- BroadcastHashJoin Inner BuildLeft (316)
: : : : : :- BroadcastExchange (292)
: : : : : : +- Project (291)
: : : : : : +- Generate (290)
: : : : : : +- Project (289)
: : : : : : +- Filter (288)
: : : : : : +- Generate (287)
: : : : : : +- Exchange (286)
: : : : : : +- Project (285)
: : : : : : +- Filter (284)
: : : : : : +- Scan parquet (38)
: : : : : +- HashAggregate (315)
: : : : : +- Exchange (314)
: : : : : +- HashAggregate (313)
: : : : : +- Project (312)
: : : : : +- Generate (311)
: : : : : +- Project (310)
: : : : : +- Generate (309)
: : : : : +- Project (308)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (307)
: : : : : :- Project (301)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (300)
: : : : : : :- Exchange (294)
: : : : : : : +- Filter (293)
: : : : : : : +- Scan parquet (51)
: : : : : : +- BroadcastExchange (299)
: : : : : : +- Project (298)
: : : : : : +- Exchange (297)
: : : : : : +- Project (296)
: : : : : : +- Scan parquet (295)
: : : : : +- BroadcastExchange (306)
: : : : : +- Exchange (305)
: : : : : +- Project (304)
: : : : : +- Filter (303)
: : : : : +- Scan parquet (302)
: : : : +- Sort (348)
: : : : +- Project (347)
: : : : +- Generate (346)
: : : : +- Project (345)
: : : : +- Generate (344)
: : : : +- Project (343)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (342)
: : : : :- Project (336)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (335)
: : : : : :- Exchange (329)
: : : : : : +- Filter (328)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastExchange (334)
: : : : : +- Project (333)
: : : : : +- Exchange (332)
: : : : : +- Project (331)
: : : : : +- Scan parquet (330)
: : : : +- BroadcastExchange (341)
: : : : +- Exchange (340)
: : : : +- Project (339)
: : : : +- Filter (338)
: : : : +- Scan parquet (337)
: : : +- Sort (431)
: : : +- Exchange (430)
: : : +- HashAggregate (429)
: : : +- HashAggregate (428)
: : : +- Project (427)
: : : +- SortMergeJoin Inner (426)
: : : :- Sort (403)
: : : : +- Exchange (402)
: : : : +- Project (401)
: : : : +- Filter (400)
: : : : +- Generate (399)
: : : : +- Filter (398)
: : : : +- ObjectHashAggregate (397)
: : : : +- ObjectHashAggregate (396)
: : : : +- Generate (395)
: : : : +- BroadcastHashJoin Inner BuildLeft (394)
: : : : :- BroadcastExchange (357)
: : : : : +- Exchange (356)
: : : : : +- Project (355)
: : : : : +- Filter (354)
: : : : : +- Scan parquet (353)
: : : : +- Project (393)
: : : : +- BroadcastHashJoin Inner BuildLeft (392)
: : : : :- BroadcastExchange (367)
: : : : : +- Project (366)
: : : : : +- Generate (365)
: : : : : +- Project (364)
: : : : : +- Filter (363)
: : : : : +- Generate (362)
: : : : : +- Exchange (361)
: : : : : +- Project (360)
: : : : : +- Filter (359)
: : : : : +- Scan parquet (358)
: : : : +- HashAggregate (391)
: : : : +- Exchange (390)
: : : : +- HashAggregate (389)
: : : : +- Project (388)
: : : : +- Generate (387)
: : : : +- Project (386)
: : : : +- Generate (385)
: : : : +- Project (384)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (383)
: : : : :- Project (377)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (376)
: : : : : :- Exchange (370)
: : : : : : +- Filter (369)
: : : : : : +- Scan parquet (368)
: : : : : +- BroadcastExchange (375)
: : : : : +- Project (374)
: : : : : +- Exchange (373)
: : : : : +- Project (372)
: : : : : +- Scan parquet (371)
: : : : +- BroadcastExchange (382)
: : : : +- Exchange (381)
: : : : +- Project (380)
: : : : +- Filter (379)
: : : : +- Scan parquet (378)
: : : +- Sort (425)
: : : +- Project (424)
: : : +- Generate (423)
: : : +- Project (422)
: : : +- Generate (421)
: : : +- Project (420)
: : : +- BroadcastHashJoin LeftOuter BuildRight (419)
: : : :- Project (413)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (412)
: : : : :- Exchange (406)
: : : : : +- Filter (405)
: : : : : +- Scan parquet (404)
: : : : +- BroadcastExchange (411)
: : : : +- Project (410)
: : : : +- Exchange (409)
: : : : +- Project (408)
: : : : +- Scan parquet (407)
: : : +- BroadcastExchange (418)
: : : +- Exchange (417)
: : : +- Project (416)
: : : +- Filter (415)
: : : +- Scan parquet (414)
: : +- Sort (644)
: : +- Exchange (643)
: : +- SerializeFromObject (642)
: : +- MapElements (641)
: : +- DeserializeToObject (640)
: : +- Project (639)
: : +- BroadcastHashJoin LeftOuter BuildRight (638)
: : :- ObjectHashAggregate (634)
: : : +- ObjectHashAggregate (633)
: : : +- Project (632)
: : : +- BroadcastHashJoin LeftOuter BuildRight (631)
: : : :- Project (629)
: : : : +- SortMergeJoin LeftOuter (628)
: : : : :- Sort (465)
: : : : : +- Exchange (464)
: : : : : +- Project (463)
: : : : : +- Project (462)
: : : : : +- Generate (461)
: : : : : +- Generate (460)
: : : : : +- Project (459)
: : : : : +- Project (458)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (457)
: : : : : :- SortMergeJoin LeftOuter (451)
: : : : : : :- Sort (445)
: : : : : : : +- Exchange (444)
: : : : : : : +- Exchange (443)
: : : : : : : +- Scan parquet (442)
: : : : : : +- Sort (450)
: : : : : : +- Exchange (449)
: : : : : : +- Project (448)
: : : : : : +- Exchange (447)
: : : : : : +- Project (446)
: : : : : : +- Scan parquet (175)
: : : : : +- BroadcastExchange (456)
: : : : : +- Exchange (455)
: : : : : +- Project (454)
: : : : : +- Filter (453)
: : : : : +- Scan parquet (452)
: : : : +- Sort (627)
: : : : +- HashAggregate (626)
: : : : +- Exchange (625)
: : : : +- HashAggregate (624)
: : : : +- Project (623)
: : : : +- SortMergeJoin Inner (622)
: : : : :- Sort (542)
: : : : : +- Exchange (541)
: : : : : +- Project (540)
: : : : : +- SortMergeJoin Inner (539)
: : : : : :- Sort (516)
: : : : : : +- Exchange (515)
: : : : : : +- Project (514)
: : : : : : +- Filter (513)
: : : : : : +- Generate (512)
: : : : : : +- Filter (511)
: : : : : : +- ObjectHashAggregate (510)
: : : : : : +- ObjectHashAggregate (509)
: : : : : : +- Generate (508)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (507)
: : : : : : :- BroadcastExchange (470)
: : : : : : : +- Exchange (469)
: : : : : : : +- Project (468)
: : : : : : : +- Filter (467)
: : : : : : : +- Scan parquet (466)
: : : : : : +- Project (506)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (505)
: : : : : : :- BroadcastExchange (480)
: : : : : : : +- Project (479)
: : : : : : : +- Generate (478)
: : : : : : : +- Project (477)
: : : : : : : +- Filter (476)
: : : : : : : +- Generate (475)
: : : : : : : +- Exchange (474)
: : : : : : : +- Project (473)
: : : : : : : +- Filter (472)
: : : : : : : +- Scan parquet (471)
: : : : : : +- HashAggregate (504)
: : : : : : +- Exchange (503)
: : : : : : +- HashAggregate (502)
: : : : : : +- Project (501)
: : : : : : +- Generate (500)
: : : : : : +- Project (499)
: : : : : : +- Generate (498)
: : : : : : +- Project (497)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (496)
: : : : : : :- Project (490)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (489)
: : : : : : : :- Exchange (483)
: : : : : : : : +- Filter (482)
: : : : : : : : +- Scan parquet (481)
: : : : : : : +- BroadcastExchange (488)
: : : : : : : +- Project (487)
: : : : : : : +- Exchange (486)
: : : : : : : +- Project (485)
: : : : : : : +- Scan parquet (484)
: : : : : : +- BroadcastExchange (495)
: : : : : : +- Exchange (494)
: : : : : : +- Project (493)
: : : : : : +- Filter (492)
: : : : : : +- Scan parquet (491)
: : : : : +- Sort (538)
: : : : : +- Project (537)
: : : : : +- Generate (536)
: : : : : +- Project (535)
: : : : : +- Generate (534)
: : : : : +- Project (533)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (532)
: : : : : :- Project (526)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (525)
: : : : : : :- Exchange (519)
: : : : : : : +- Filter (518)
: : : : : : : +- Scan parquet (517)
: : : : : : +- BroadcastExchange (524)
: : : : : : +- Project (523)
: : : : : : +- Exchange (522)
: : : : : : +- Project (521)
: : : : : : +- Scan parquet (520)
: : : : : +- BroadcastExchange (531)
: : : : : +- Exchange (530)
: : : : : +- Project (529)
: : : : : +- Filter (528)
: : : : : +- Scan parquet (527)
: : : : +- Sort (621)
: : : : +- Exchange (620)
: : : : +- HashAggregate (619)
: : : : +- HashAggregate (618)
: : : : +- Project (617)
: : : : +- SortMergeJoin Inner (616)
: : : : :- Sort (593)
: : : : : +- Exchange (592)
: : : : : +- Project (591)
: : : : : +- Filter (590)
: : : : : +- Generate (589)
: : : : : +- Filter (588)
: : : : : +- ObjectHashAggregate (587)
: : : : : +- ObjectHashAggregate (586)
: : : : : +- Generate (585)
: : : : : +- BroadcastHashJoin Inner BuildLeft (584)
: : : : : :- BroadcastExchange (547)
: : : : : : +- Exchange (546)
: : : : : : +- Project (545)
: : : : : : +- Filter (544)
: : : : : : +- Scan parquet (543)
: : : : : +- Project (583)
: : : : : +- BroadcastHashJoin Inner BuildLeft (582)
: : : : : :- BroadcastExchange (557)
: : : : : : +- Project (556)
: : : : : : +- Generate (555)
: : : : : : +- Project (554)
: : : : : : +- Filter (553)
: : : : : : +- Generate (552)
: : : : : : +- Exchange (551)
: : : : : : +- Project (550)
: : : : : : +- Filter (549)
: : : : : : +- Scan parquet (548)
: : : : : +- HashAggregate (581)
: : : : : +- Exchange (580)
: : : : : +- HashAggregate (579)
: : : : : +- Project (578)
: : : : : +- Generate (577)
: : : : : +- Project (576)
: : : : : +- Generate (575)
: : : : : +- Project (574)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (573)
: : : : : :- Project (567)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (566)
: : : : : : :- Exchange (560)
: : : : : : : +- Filter (559)
: : : : : : : +- Scan parquet (558)
: : : : : : +- BroadcastExchange (565)
: : : : : : +- Project (564)
: : : : : : +- Exchange (563)
: : : : : : +- Project (562)
: : : : : : +- Scan parquet (561)
: : : : : +- BroadcastExchange (572)
: : : : : +- Exchange (571)
: : : : : +- Project (570)
: : : : : +- Filter (569)
: : : : : +- Scan parquet (568)
: : : : +- Sort (615)
: : : : +- Project (614)
: : : : +- Generate (613)
: : : : +- Project (612)
: : : : +- Generate (611)
: : : : +- Project (610)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (609)
: : : : :- Project (603)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (602)
: : : : : :- Exchange (596)
: : : : : : +- Filter (595)
: : : : : : +- Scan parquet (594)
: : : : : +- BroadcastExchange (601)
: : : : : +- Project (600)
: : : : : +- Exchange (599)
: : : : : +- Project (598)
: : : : : +- Scan parquet (597)
: : : : +- BroadcastExchange (608)
: : : : +- Exchange (607)
: : : : +- Project (606)
: : : : +- Filter (605)
: : : : +- Scan parquet (604)
: : : +- BroadcastExchange (630)
: : : +- Scan parquet (201)
: : +- BroadcastExchange (637)
: : +- Exchange (636)
: : +- Project (635)
: : +- Scan parquet (209)
: +- Sort (1361)
: +- Project (1360)
: +- ObjectHashAggregate (1359)
: +- Exchange (1358)
: +- ObjectHashAggregate (1357)
: +- Union (1356)
: :- Filter (945)
: : +- InMemoryTableScan (649)
: : +- InMemoryRelation (650)
: : +- AdaptiveSparkPlan (944)
+- == Final Plan ==
ResultQueryStage (652)
+- EmptyRelation (651)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (943)
+- ObjectHashAggregate (942)
+- Exchange (941)
+- ObjectHashAggregate (940)
+- Project (939)
+- Window (938)
+- Sort (937)
+- Exchange (936)
+- Project (935)
+- BroadcastHashJoin Inner BuildRight (934)
:- Project (925)
: +- SortMergeJoin Inner (924)
: :- Sort (885)
: : +- Exchange (884)
: : +- Project (883)
: : +- SortMergeJoin LeftOuter (882)
: : :- Sort (675)
: : : +- Exchange (674)
: : : +- Project (673)
: : : +- Generate (672)
: : : +- Project (671)
: : : +- Generate (670)
: : : +- Project (669)
: : : +- BroadcastHashJoin LeftOuter BuildRight (668)
: : : :- Project (662)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (661)
: : : : :- Exchange (655)
: : : : : +- Filter (654)
: : : : : +- Scan parquet (653)
: : : : +- BroadcastExchange (660)
: : : : +- Project (659)
: : : : +- Exchange (658)
: : : : +- Project (657)
: : : : +- Scan parquet (656)
: : : +- BroadcastExchange (667)
: : : +- Exchange (666)
: : : +- Project (665)
: : : +- Filter (664)
: : : +- Scan parquet (663)
: : +- Sort (881)
: : +- Exchange (880)
: : +- SerializeFromObject (879)
: : +- MapElements (878)
: : +- DeserializeToObject (877)
: : +- Project (876)
: : +- BroadcastHashJoin LeftOuter BuildRight (875)
: : :- ObjectHashAggregate (870)
: : : +- ObjectHashAggregate (869)
: : : +- Project (868)
: : : +- BroadcastHashJoin LeftOuter BuildRight (867)
: : : :- Project (864)
: : : : +- SortMergeJoin LeftOuter (863)
: : : : :- Sort (700)
: : : : : +- Exchange (699)
: : : : : +- Project (698)
: : : : : +- Project (697)
: : : : : +- Generate (696)
: : : : : +- Generate (695)
: : : : : +- Project (694)
: : : : : +- Project (693)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (692)
: : : : : :- SortMergeJoin LeftOuter (686)
: : : : : : :- Sort (679)
: : : : : : : +- Exchange (678)
: : : : : : : +- Exchange (677)
: : : : : : : +- Scan parquet (676)
: : : : : : +- Sort (685)
: : : : : : +- Exchange (684)
: : : : : : +- Project (683)
: : : : : : +- Exchange (682)
: : : : : : +- Project (681)
: : : : : : +- Scan parquet (680)
: : : : : +- BroadcastExchange (691)
: : : : : +- Exchange (690)
: : : : : +- Project (689)
: : : : : +- Filter (688)
: : : : : +- Scan parquet (687)
: : : : +- Sort (862)
: : : : +- HashAggregate (861)
: : : : +- Exchange (860)
: : : : +- HashAggregate (859)
: : : : +- Project (858)
: : : : +- SortMergeJoin Inner (857)
: : : : :- Sort (777)
: : : : : +- Exchange (776)
: : : : : +- Project (775)
: : : : : +- SortMergeJoin Inner (774)
: : : : : :- Sort (751)
: : : : : : +- Exchange (750)
: : : : : : +- Project (749)
: : : : : : +- Filter (748)
: : : : : : +- Generate (747)
: : : : : : +- Filter (746)
: : : : : : +- ObjectHashAggregate (745)
: : : : : : +- ObjectHashAggregate (744)
: : : : : : +- Generate (743)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (742)
: : : : : : :- BroadcastExchange (705)
: : : : : : : +- Exchange (704)
: : : : : : : +- Project (703)
: : : : : : : +- Filter (702)
: : : : : : : +- Scan parquet (701)
: : : : : : +- Project (741)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (740)
: : : : : : :- BroadcastExchange (715)
: : : : : : : +- Project (714)
: : : : : : : +- Generate (713)
: : : : : : : +- Project (712)
: : : : : : : +- Filter (711)
: : : : : : : +- Generate (710)
: : : : : : : +- Exchange (709)
: : : : : : : +- Project (708)
: : : : : : : +- Filter (707)
: : : : : : : +- Scan parquet (706)
: : : : : : +- HashAggregate (739)
: : : : : : +- Exchange (738)
: : : : : : +- HashAggregate (737)
: : : : : : +- Project (736)
: : : : : : +- Generate (735)
: : : : : : +- Project (734)
: : : : : : +- Generate (733)
: : : : : : +- Project (732)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (731)
: : : : : : :- Project (725)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (724)
: : : : : : : :- Exchange (718)
: : : : : : : : +- Filter (717)
: : : : : : : : +- Scan parquet (716)
: : : : : : : +- BroadcastExchange (723)
: : : : : : : +- Project (722)
: : : : : : : +- Exchange (721)
: : : : : : : +- Project (720)
: : : : : : : +- Scan parquet (719)
: : : : : : +- BroadcastExchange (730)
: : : : : : +- Exchange (729)
: : : : : : +- Project (728)
: : : : : : +- Filter (727)
: : : : : : +- Scan parquet (726)
: : : : : +- Sort (773)
: : : : : +- Project (772)
: : : : : +- Generate (771)
: : : : : +- Project (770)
: : : : : +- Generate (769)
: : : : : +- Project (768)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (767)
: : : : : :- Project (761)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (760)
: : : : : : :- Exchange (754)
: : : : : : : +- Filter (753)
: : : : : : : +- Scan parquet (752)
: : : : : : +- BroadcastExchange (759)
: : : : : : +- Project (758)
: : : : : : +- Exchange (757)
: : : : : : +- Project (756)
: : : : : : +- Scan parquet (755)
: : : : : +- BroadcastExchange (766)
: : : : : +- Exchange (765)
: : : : : +- Project (764)
: : : : : +- Filter (763)
: : : : : +- Scan parquet (762)
: : : : +- Sort (856)
: : : : +- Exchange (855)
: : : : +- HashAggregate (854)
: : : : +- HashAggregate (853)
: : : : +- Project (852)
: : : : +- SortMergeJoin Inner (851)
: : : : :- Sort (828)
: : : : : +- Exchange (827)
: : : : : +- Project (826)
: : : : : +- Filter (825)
: : : : : +- Generate (824)
: : : : : +- Filter (823)
: : : : : +- ObjectHashAggregate (822)
: : : : : +- ObjectHashAggregate (821)
: : : : : +- Generate (820)
: : : : : +- BroadcastHashJoin Inner BuildLeft (819)
: : : : : :- BroadcastExchange (782)
: : : : : : +- Exchange (781)
: : : : : : +- Project (780)
: : : : : : +- Filter (779)
: : : : : : +- Scan parquet (778)
: : : : : +- Project (818)
: : : : : +- BroadcastHashJoin Inner BuildLeft (817)
: : : : : :- BroadcastExchange (792)
: : : : : : +- Project (791)
: : : : : : +- Generate (790)
: : : : : : +- Project (789)
: : : : : : +- Filter (788)
: : : : : : +- Generate (787)
: : : : : : +- Exchange (786)
: : : : : : +- Project (785)
: : : : : : +- Filter (784)
: : : : : : +- Scan parquet (783)
: : : : : +- HashAggregate (816)
: : : : : +- Exchange (815)
: : : : : +- HashAggregate (814)
: : : : : +- Project (813)
: : : : : +- Generate (812)
: : : : : +- Project (811)
: : : : : +- Generate (810)
: : : : : +- Project (809)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (808)
: : : : : :- Project (802)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (801)
: : : : : : :- Exchange (795)
: : : : : : : +- Filter (794)
: : : : : : : +- Scan parquet (793)
: : : : : : +- BroadcastExchange (800)
: : : : : : +- Project (799)
: : : : : : +- Exchange (798)
: : : : : : +- Project (797)
: : : : : : +- Scan parquet (796)
: : : : : +- BroadcastExchange (807)
: : : : : +- Exchange (806)
: : : : : +- Project (805)
: : : : : +- Filter (804)
: : : : : +- Scan parquet (803)
: : : : +- Sort (850)
: : : : +- Project (849)
: : : : +- Generate (848)
: : : : +- Project (847)
: : : : +- Generate (846)
: : : : +- Project (845)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (844)
: : : : :- Project (838)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (837)
: : : : : :- Exchange (831)
: : : : : : +- Filter (830)
: : : : : : +- Scan parquet (829)
: : : : : +- BroadcastExchange (836)
: : : : : +- Project (835)
: : : : : +- Exchange (834)
: : : : : +- Project (833)
: : : : : +- Scan parquet (832)
: : : : +- BroadcastExchange (843)
: : : : +- Exchange (842)
: : : : +- Project (841)
: : : : +- Filter (840)
: : : : +- Scan parquet (839)
: : : +- BroadcastExchange (866)
: : : +- Scan parquet (865)
: : +- BroadcastExchange (874)
: : +- Exchange (873)
: : +- Project (872)
: : +- Scan parquet (871)
: +- Sort (923)
: +- Project (922)
: +- BroadcastHashJoin Inner BuildLeft (921)
: :- BroadcastExchange (896)
: : +- Project (895)
: : +- Filter (894)
: : +- Generate (893)
: : +- Project (892)
: : +- Filter (891)
: : +- Generate (890)
: : +- Exchange (889)
: : +- Project (888)
: : +- Filter (887)
: : +- Scan parquet (886)
: +- HashAggregate (920)
: +- Exchange (919)
: +- HashAggregate (918)
: +- Project (917)
: +- Generate (916)
: +- Project (915)
: +- Generate (914)
: +- Project (913)
: +- BroadcastHashJoin LeftOuter BuildRight (912)
: :- Project (906)
: : +- BroadcastHashJoin LeftOuter BuildRight (905)
: : :- Exchange (899)
: : : +- Filter (898)
: : : +- Scan parquet (897)
: : +- BroadcastExchange (904)
: : +- Project (903)
: : +- Exchange (902)
: : +- Project (901)
: : +- Scan parquet (900)
: +- BroadcastExchange (911)
: +- Exchange (910)
: +- Project (909)
: +- Filter (908)
: +- Scan parquet (907)
+- BroadcastExchange (933)
+- Project (932)
+- Filter (931)
+- Generate (930)
+- Exchange (929)
+- Project (928)
+- Filter (927)
+- Scan parquet (926)
: +- Filter (1355)
: +- ObjectHashAggregate (1354)
: +- Exchange (1353)
: +- ObjectHashAggregate (1352)
: +- Project (1351)
: +- BroadcastHashJoin Inner BuildRight (1350)
: :- Project (1341)
: : +- SortMergeJoin LeftOuter (1340)
: : :- Sort (1133)
: : : +- Exchange (1132)
: : : +- Project (1131)
: : : +- SortMergeJoin LeftOuter (1130)
: : : :- Sort (967)
: : : : +- Project (966)
: : : : +- Generate (965)
: : : : +- Project (964)
: : : : +- Generate (963)
: : : : +- Project (962)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (961)
: : : : :- Project (955)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (954)
: : : : : :- Exchange (948)
: : : : : : +- Filter (947)
: : : : : : +- Scan parquet (946)
: : : : : +- BroadcastExchange (953)
: : : : : +- Project (952)
: : : : : +- Exchange (951)
: : : : : +- Project (950)
: : : : : +- Scan parquet (949)
: : : : +- BroadcastExchange (960)
: : : : +- Exchange (959)
: : : : +- Project (958)
: : : : +- Filter (957)
: : : : +- Scan parquet (956)
: : : +- Sort (1129)
: : : +- HashAggregate (1128)
: : : +- Exchange (1127)
: : : +- HashAggregate (1126)
: : : +- Project (1125)
: : : +- SortMergeJoin Inner (1124)
: : : :- Sort (1044)
: : : : +- Exchange (1043)
: : : : +- Project (1042)
: : : : +- SortMergeJoin Inner (1041)
: : : : :- Sort (1018)
: : : : : +- Exchange (1017)
: : : : : +- Project (1016)
: : : : : +- Filter (1015)
: : : : : +- Generate (1014)
: : : : : +- Filter (1013)
: : : : : +- ObjectHashAggregate (1012)
: : : : : +- ObjectHashAggregate (1011)
: : : : : +- Generate (1010)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1009)
: : : : : :- BroadcastExchange (972)
: : : : : : +- Exchange (971)
: : : : : : +- Project (970)
: : : : : : +- Filter (969)
: : : : : : +- Scan parquet (968)
: : : : : +- Project (1008)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1007)
: : : : : :- BroadcastExchange (982)
: : : : : : +- Project (981)
: : : : : : +- Generate (980)
: : : : : : +- Project (979)
: : : : : : +- Filter (978)
: : : : : : +- Generate (977)
: : : : : : +- Exchange (976)
: : : : : : +- Project (975)
: : : : : : +- Filter (974)
: : : : : : +- Scan parquet (973)
: : : : : +- HashAggregate (1006)
: : : : : +- Exchange (1005)
: : : : : +- HashAggregate (1004)
: : : : : +- Project (1003)
: : : : : +- Generate (1002)
: : : : : +- Project (1001)
: : : : : +- Generate (1000)
: : : : : +- Project (999)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (998)
: : : : : :- Project (992)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (991)
: : : : : : :- Exchange (985)
: : : : : : : +- Filter (984)
: : : : : : : +- Scan parquet (983)
: : : : : : +- BroadcastExchange (990)
: : : : : : +- Project (989)
: : : : : : +- Exchange (988)
: : : : : : +- Project (987)
: : : : : : +- Scan parquet (986)
: : : : : +- BroadcastExchange (997)
: : : : : +- Exchange (996)
: : : : : +- Project (995)
: : : : : +- Filter (994)
: : : : : +- Scan parquet (993)
: : : : +- Sort (1040)
: : : : +- Project (1039)
: : : : +- Generate (1038)
: : : : +- Project (1037)
: : : : +- Generate (1036)
: : : : +- Project (1035)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1034)
: : : : :- Project (1028)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1027)
: : : : : :- Exchange (1021)
: : : : : : +- Filter (1020)
: : : : : : +- Scan parquet (1019)
: : : : : +- BroadcastExchange (1026)
: : : : : +- Project (1025)
: : : : : +- Exchange (1024)
: : : : : +- Project (1023)
: : : : : +- Scan parquet (1022)
: : : : +- BroadcastExchange (1033)
: : : : +- Exchange (1032)
: : : : +- Project (1031)
: : : : +- Filter (1030)
: : : : +- Scan parquet (1029)
: : : +- Sort (1123)
: : : +- Exchange (1122)
: : : +- HashAggregate (1121)
: : : +- HashAggregate (1120)
: : : +- Project (1119)
: : : +- SortMergeJoin Inner (1118)
: : : :- Sort (1095)
: : : : +- Exchange (1094)
: : : : +- Project (1093)
: : : : +- Filter (1092)
: : : : +- Generate (1091)
: : : : +- Filter (1090)
: : : : +- ObjectHashAggregate (1089)
: : : : +- ObjectHashAggregate (1088)
: : : : +- Generate (1087)
: : : : +- BroadcastHashJoin Inner BuildLeft (1086)
: : : : :- BroadcastExchange (1049)
: : : : : +- Exchange (1048)
: : : : : +- Project (1047)
: : : : : +- Filter (1046)
: : : : : +- Scan parquet (1045)
: : : : +- Project (1085)
: : : : +- BroadcastHashJoin Inner BuildLeft (1084)
: : : : :- BroadcastExchange (1059)
: : : : : +- Project (1058)
: : : : : +- Generate (1057)
: : : : : +- Project (1056)
: : : : : +- Filter (1055)
: : : : : +- Generate (1054)
: : : : : +- Exchange (1053)
: : : : : +- Project (1052)
: : : : : +- Filter (1051)
: : : : : +- Scan parquet (1050)
: : : : +- HashAggregate (1083)
: : : : +- Exchange (1082)
: : : : +- HashAggregate (1081)
: : : : +- Project (1080)
: : : : +- Generate (1079)
: : : : +- Project (1078)
: : : : +- Generate (1077)
: : : : +- Project (1076)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1075)
: : : : :- Project (1069)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1068)
: : : : : :- Exchange (1062)
: : : : : : +- Filter (1061)
: : : : : : +- Scan parquet (1060)
: : : : : +- BroadcastExchange (1067)
: : : : : +- Project (1066)
: : : : : +- Exchange (1065)
: : : : : +- Project (1064)
: : : : : +- Scan parquet (1063)
: : : : +- BroadcastExchange (1074)
: : : : +- Exchange (1073)
: : : : +- Project (1072)
: : : : +- Filter (1071)
: : : : +- Scan parquet (1070)
: : : +- Sort (1117)
: : : +- Project (1116)
: : : +- Generate (1115)
: : : +- Project (1114)
: : : +- Generate (1113)
: : : +- Project (1112)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1111)
: : : :- Project (1105)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1104)
: : : : :- Exchange (1098)
: : : : : +- Filter (1097)
: : : : : +- Scan parquet (1096)
: : : : +- BroadcastExchange (1103)
: : : : +- Project (1102)
: : : : +- Exchange (1101)
: : : : +- Project (1100)
: : : : +- Scan parquet (1099)
: : : +- BroadcastExchange (1110)
: : : +- Exchange (1109)
: : : +- Project (1108)
: : : +- Filter (1107)
: : : +- Scan parquet (1106)
: : +- Sort (1339)
: : +- Exchange (1338)
: : +- SerializeFromObject (1337)
: : +- MapElements (1336)
: : +- DeserializeToObject (1335)
: : +- Project (1334)
: : +- BroadcastHashJoin LeftOuter BuildRight (1333)
: : :- ObjectHashAggregate (1328)
: : : +- ObjectHashAggregate (1327)
: : : +- Project (1326)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1325)
: : : :- Project (1322)
: : : : +- SortMergeJoin LeftOuter (1321)
: : : : :- Sort (1158)
: : : : : +- Exchange (1157)
: : : : : +- Project (1156)
: : : : : +- Project (1155)
: : : : : +- Generate (1154)
: : : : : +- Generate (1153)
: : : : : +- Project (1152)
: : : : : +- Project (1151)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1150)
: : : : : :- SortMergeJoin LeftOuter (1144)
: : : : : : :- Sort (1137)
: : : : : : : +- Exchange (1136)
: : : : : : : +- Exchange (1135)
: : : : : : : +- Scan parquet (1134)
: : : : : : +- Sort (1143)
: : : : : : +- Exchange (1142)
: : : : : : +- Project (1141)
: : : : : : +- Exchange (1140)
: : : : : : +- Project (1139)
: : : : : : +- Scan parquet (1138)
: : : : : +- BroadcastExchange (1149)
: : : : : +- Exchange (1148)
: : : : : +- Project (1147)
: : : : : +- Filter (1146)
: : : : : +- Scan parquet (1145)
: : : : +- Sort (1320)
: : : : +- HashAggregate (1319)
: : : : +- Exchange (1318)
: : : : +- HashAggregate (1317)
: : : : +- Project (1316)
: : : : +- SortMergeJoin Inner (1315)
: : : : :- Sort (1235)
: : : : : +- Exchange (1234)
: : : : : +- Project (1233)
: : : : : +- SortMergeJoin Inner (1232)
: : : : : :- Sort (1209)
: : : : : : +- Exchange (1208)
: : : : : : +- Project (1207)
: : : : : : +- Filter (1206)
: : : : : : +- Generate (1205)
: : : : : : +- Filter (1204)
: : : : : : +- ObjectHashAggregate (1203)
: : : : : : +- ObjectHashAggregate (1202)
: : : : : : +- Generate (1201)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (1200)
: : : : : : :- BroadcastExchange (1163)
: : : : : : : +- Exchange (1162)
: : : : : : : +- Project (1161)
: : : : : : : +- Filter (1160)
: : : : : : : +- Scan parquet (1159)
: : : : : : +- Project (1199)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (1198)
: : : : : : :- BroadcastExchange (1173)
: : : : : : : +- Project (1172)
: : : : : : : +- Generate (1171)
: : : : : : : +- Project (1170)
: : : : : : : +- Filter (1169)
: : : : : : : +- Generate (1168)
: : : : : : : +- Exchange (1167)
: : : : : : : +- Project (1166)
: : : : : : : +- Filter (1165)
: : : : : : : +- Scan parquet (1164)
: : : : : : +- HashAggregate (1197)
: : : : : : +- Exchange (1196)
: : : : : : +- HashAggregate (1195)
: : : : : : +- Project (1194)
: : : : : : +- Generate (1193)
: : : : : : +- Project (1192)
: : : : : : +- Generate (1191)
: : : : : : +- Project (1190)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1189)
: : : : : : :- Project (1183)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1182)
: : : : : : : :- Exchange (1176)
: : : : : : : : +- Filter (1175)
: : : : : : : : +- Scan parquet (1174)
: : : : : : : +- BroadcastExchange (1181)
: : : : : : : +- Project (1180)
: : : : : : : +- Exchange (1179)
: : : : : : : +- Project (1178)
: : : : : : : +- Scan parquet (1177)
: : : : : : +- BroadcastExchange (1188)
: : : : : : +- Exchange (1187)
: : : : : : +- Project (1186)
: : : : : : +- Filter (1185)
: : : : : : +- Scan parquet (1184)
: : : : : +- Sort (1231)
: : : : : +- Project (1230)
: : : : : +- Generate (1229)
: : : : : +- Project (1228)
: : : : : +- Generate (1227)
: : : : : +- Project (1226)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1225)
: : : : : :- Project (1219)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1218)
: : : : : : :- Exchange (1212)
: : : : : : : +- Filter (1211)
: : : : : : : +- Scan parquet (1210)
: : : : : : +- BroadcastExchange (1217)
: : : : : : +- Project (1216)
: : : : : : +- Exchange (1215)
: : : : : : +- Project (1214)
: : : : : : +- Scan parquet (1213)
: : : : : +- BroadcastExchange (1224)
: : : : : +- Exchange (1223)
: : : : : +- Project (1222)
: : : : : +- Filter (1221)
: : : : : +- Scan parquet (1220)
: : : : +- Sort (1314)
: : : : +- Exchange (1313)
: : : : +- HashAggregate (1312)
: : : : +- HashAggregate (1311)
: : : : +- Project (1310)
: : : : +- SortMergeJoin Inner (1309)
: : : : :- Sort (1286)
: : : : : +- Exchange (1285)
: : : : : +- Project (1284)
: : : : : +- Filter (1283)
: : : : : +- Generate (1282)
: : : : : +- Filter (1281)
: : : : : +- ObjectHashAggregate (1280)
: : : : : +- ObjectHashAggregate (1279)
: : : : : +- Generate (1278)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1277)
: : : : : :- BroadcastExchange (1240)
: : : : : : +- Exchange (1239)
: : : : : : +- Project (1238)
: : : : : : +- Filter (1237)
: : : : : : +- Scan parquet (1236)
: : : : : +- Project (1276)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1275)
: : : : : :- BroadcastExchange (1250)
: : : : : : +- Project (1249)
: : : : : : +- Generate (1248)
: : : : : : +- Project (1247)
: : : : : : +- Filter (1246)
: : : : : : +- Generate (1245)
: : : : : : +- Exchange (1244)
: : : : : : +- Project (1243)
: : : : : : +- Filter (1242)
: : : : : : +- Scan parquet (1241)
: : : : : +- HashAggregate (1274)
: : : : : +- Exchange (1273)
: : : : : +- HashAggregate (1272)
: : : : : +- Project (1271)
: : : : : +- Generate (1270)
: : : : : +- Project (1269)
: : : : : +- Generate (1268)
: : : : : +- Project (1267)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1266)
: : : : : :- Project (1260)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1259)
: : : : : : :- Exchange (1253)
: : : : : : : +- Filter (1252)
: : : : : : : +- Scan parquet (1251)
: : : : : : +- BroadcastExchange (1258)
: : : : : : +- Project (1257)
: : : : : : +- Exchange (1256)
: : : : : : +- Project (1255)
: : : : : : +- Scan parquet (1254)
: : : : : +- BroadcastExchange (1265)
: : : : : +- Exchange (1264)
: : : : : +- Project (1263)
: : : : : +- Filter (1262)
: : : : : +- Scan parquet (1261)
: : : : +- Sort (1308)
: : : : +- Project (1307)
: : : : +- Generate (1306)
: : : : +- Project (1305)
: : : : +- Generate (1304)
: : : : +- Project (1303)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1302)
: : : : :- Project (1296)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1295)
: : : : : :- Exchange (1289)
: : : : : : +- Filter (1288)
: : : : : : +- Scan parquet (1287)
: : : : : +- BroadcastExchange (1294)
: : : : : +- Project (1293)
: : : : : +- Exchange (1292)
: : : : : +- Project (1291)
: : : : : +- Scan parquet (1290)
: : : : +- BroadcastExchange (1301)
: : : : +- Exchange (1300)
: : : : +- Project (1299)
: : : : +- Filter (1298)
: : : : +- Scan parquet (1297)
: : : +- BroadcastExchange (1324)
: : : +- Scan parquet (1323)
: : +- BroadcastExchange (1332)
: : +- Exchange (1331)
: : +- Project (1330)
: : +- Scan parquet (1329)
: +- BroadcastExchange (1349)
: +- Project (1348)
: +- Filter (1347)
: +- Generate (1346)
: +- Exchange (1345)
: +- Project (1344)
: +- Filter (1343)
: +- Scan parquet (1342)
+- Sort (2191)
+- Exchange (2190)
+- Filter (2189)
+- SerializeFromObject (2188)
+- MapElements (2187)
+- DeserializeToObject (2186)
+- Project (2185)
+- SortMergeJoin LeftOuter (2184)
:- Sort (1764)
: +- Exchange (1763)
: +- Project (1762)
: +- SortMergeJoin LeftOuter (1761)
: :- Sort (1554)
: : +- Exchange (1553)
: : +- Project (1552)
: : +- SortMergeJoin LeftOuter (1551)
: : :- Sort (1388)
: : : +- Exchange (1387)
: : : +- Project (1386)
: : : +- Project (1385)
: : : +- Generate (1384)
: : : +- Generate (1383)
: : : +- Project (1382)
: : : +- Project (1381)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1380)
: : : :- SortMergeJoin LeftOuter (1374)
: : : : :- Sort (1367)
: : : : : +- Exchange (1366)
: : : : : +- Exchange (1365)
: : : : : +- Scan parquet (1364)
: : : : +- Sort (1373)
: : : : +- Exchange (1372)
: : : : +- Project (1371)
: : : : +- Exchange (1370)
: : : : +- Project (1369)
: : : : +- Scan parquet (1368)
: : : +- BroadcastExchange (1379)
: : : +- Exchange (1378)
: : : +- Project (1377)
: : : +- Filter (1376)
: : : +- Scan parquet (1375)
: : +- Sort (1550)
: : +- HashAggregate (1549)
: : +- Exchange (1548)
: : +- HashAggregate (1547)
: : +- Project (1546)
: : +- SortMergeJoin Inner (1545)
: : :- Sort (1465)
: : : +- Exchange (1464)
: : : +- Project (1463)
: : : +- SortMergeJoin Inner (1462)
: : : :- Sort (1439)
: : : : +- Exchange (1438)
: : : : +- Project (1437)
: : : : +- Filter (1436)
: : : : +- Generate (1435)
: : : : +- Filter (1434)
: : : : +- ObjectHashAggregate (1433)
: : : : +- ObjectHashAggregate (1432)
: : : : +- Generate (1431)
: : : : +- BroadcastHashJoin Inner BuildLeft (1430)
: : : : :- BroadcastExchange (1393)
: : : : : +- Exchange (1392)
: : : : : +- Project (1391)
: : : : : +- Filter (1390)
: : : : : +- Scan parquet (1389)
: : : : +- Project (1429)
: : : : +- BroadcastHashJoin Inner BuildLeft (1428)
: : : : :- BroadcastExchange (1403)
: : : : : +- Project (1402)
: : : : : +- Generate (1401)
: : : : : +- Project (1400)
: : : : : +- Filter (1399)
: : : : : +- Generate (1398)
: : : : : +- Exchange (1397)
: : : : : +- Project (1396)
: : : : : +- Filter (1395)
: : : : : +- Scan parquet (1394)
: : : : +- HashAggregate (1427)
: : : : +- Exchange (1426)
: : : : +- HashAggregate (1425)
: : : : +- Project (1424)
: : : : +- Generate (1423)
: : : : +- Project (1422)
: : : : +- Generate (1421)
: : : : +- Project (1420)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1419)
: : : : :- Project (1413)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1412)
: : : : : :- Exchange (1406)
: : : : : : +- Filter (1405)
: : : : : : +- Scan parquet (1404)
: : : : : +- BroadcastExchange (1411)
: : : : : +- Project (1410)
: : : : : +- Exchange (1409)
: : : : : +- Project (1408)
: : : : : +- Scan parquet (1407)
: : : : +- BroadcastExchange (1418)
: : : : +- Exchange (1417)
: : : : +- Project (1416)
: : : : +- Filter (1415)
: : : : +- Scan parquet (1414)
: : : +- Sort (1461)
: : : +- Project (1460)
: : : +- Generate (1459)
: : : +- Project (1458)
: : : +- Generate (1457)
: : : +- Project (1456)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1455)
: : : :- Project (1449)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1448)
: : : : :- Exchange (1442)
: : : : : +- Filter (1441)
: : : : : +- Scan parquet (1440)
: : : : +- BroadcastExchange (1447)
: : : : +- Project (1446)
: : : : +- Exchange (1445)
: : : : +- Project (1444)
: : : : +- Scan parquet (1443)
: : : +- BroadcastExchange (1454)
: : : +- Exchange (1453)
: : : +- Project (1452)
: : : +- Filter (1451)
: : : +- Scan parquet (1450)
: : +- Sort (1544)
: : +- Exchange (1543)
: : +- HashAggregate (1542)
: : +- HashAggregate (1541)
: : +- Project (1540)
: : +- SortMergeJoin Inner (1539)
: : :- Sort (1516)
: : : +- Exchange (1515)
: : : +- Project (1514)
: : : +- Filter (1513)
: : : +- Generate (1512)
: : : +- Filter (1511)
: : : +- ObjectHashAggregate (1510)
: : : +- ObjectHashAggregate (1509)
: : : +- Generate (1508)
: : : +- BroadcastHashJoin Inner BuildLeft (1507)
: : : :- BroadcastExchange (1470)
: : : : +- Exchange (1469)
: : : : +- Project (1468)
: : : : +- Filter (1467)
: : : : +- Scan parquet (1466)
: : : +- Project (1506)
: : : +- BroadcastHashJoin Inner BuildLeft (1505)
: : : :- BroadcastExchange (1480)
: : : : +- Project (1479)
: : : : +- Generate (1478)
: : : : +- Project (1477)
: : : : +- Filter (1476)
: : : : +- Generate (1475)
: : : : +- Exchange (1474)
: : : : +- Project (1473)
: : : : +- Filter (1472)
: : : : +- Scan parquet (1471)
: : : +- HashAggregate (1504)
: : : +- Exchange (1503)
: : : +- HashAggregate (1502)
: : : +- Project (1501)
: : : +- Generate (1500)
: : : +- Project (1499)
: : : +- Generate (1498)
: : : +- Project (1497)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1496)
: : : :- Project (1490)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1489)
: : : : :- Exchange (1483)
: : : : : +- Filter (1482)
: : : : : +- Scan parquet (1481)
: : : : +- BroadcastExchange (1488)
: : : : +- Project (1487)
: : : : +- Exchange (1486)
: : : : +- Project (1485)
: : : : +- Scan parquet (1484)
: : : +- BroadcastExchange (1495)
: : : +- Exchange (1494)
: : : +- Project (1493)
: : : +- Filter (1492)
: : : +- Scan parquet (1491)
: : +- Sort (1538)
: : +- Project (1537)
: : +- Generate (1536)
: : +- Project (1535)
: : +- Generate (1534)
: : +- Project (1533)
: : +- BroadcastHashJoin LeftOuter BuildRight (1532)
: : :- Project (1526)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1525)
: : : :- Exchange (1519)
: : : : +- Filter (1518)
: : : : +- Scan parquet (1517)
: : : +- BroadcastExchange (1524)
: : : +- Project (1523)
: : : +- Exchange (1522)
: : : +- Project (1521)
: : : +- Scan parquet (1520)
: : +- BroadcastExchange (1531)
: : +- Exchange (1530)
: : +- Project (1529)
: : +- Filter (1528)
: : +- Scan parquet (1527)
: +- Sort (1760)
: +- Exchange (1759)
: +- SerializeFromObject (1758)
: +- MapElements (1757)
: +- DeserializeToObject (1756)
: +- Project (1755)
: +- BroadcastHashJoin LeftOuter BuildRight (1754)
: :- ObjectHashAggregate (1749)
: : +- ObjectHashAggregate (1748)
: : +- Project (1747)
: : +- BroadcastHashJoin LeftOuter BuildRight (1746)
: : :- Project (1743)
: : : +- SortMergeJoin LeftOuter (1742)
: : : :- Sort (1579)
: : : : +- Exchange (1578)
: : : : +- Project (1577)
: : : : +- Project (1576)
: : : : +- Generate (1575)
: : : : +- Generate (1574)
: : : : +- Project (1573)
: : : : +- Project (1572)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1571)
: : : : :- SortMergeJoin LeftOuter (1565)
: : : : : :- Sort (1558)
: : : : : : +- Exchange (1557)
: : : : : : +- Exchange (1556)
: : : : : : +- Scan parquet (1555)
: : : : : +- Sort (1564)
: : : : : +- Exchange (1563)
: : : : : +- Project (1562)
: : : : : +- Exchange (1561)
: : : : : +- Project (1560)
: : : : : +- Scan parquet (1559)
: : : : +- BroadcastExchange (1570)
: : : : +- Exchange (1569)
: : : : +- Project (1568)
: : : : +- Filter (1567)
: : : : +- Scan parquet (1566)
: : : +- Sort (1741)
: : : +- HashAggregate (1740)
: : : +- Exchange (1739)
: : : +- HashAggregate (1738)
: : : +- Project (1737)
: : : +- SortMergeJoin Inner (1736)
: : : :- Sort (1656)
: : : : +- Exchange (1655)
: : : : +- Project (1654)
: : : : +- SortMergeJoin Inner (1653)
: : : : :- Sort (1630)
: : : : : +- Exchange (1629)
: : : : : +- Project (1628)
: : : : : +- Filter (1627)
: : : : : +- Generate (1626)
: : : : : +- Filter (1625)
: : : : : +- ObjectHashAggregate (1624)
: : : : : +- ObjectHashAggregate (1623)
: : : : : +- Generate (1622)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1621)
: : : : : :- BroadcastExchange (1584)
: : : : : : +- Exchange (1583)
: : : : : : +- Project (1582)
: : : : : : +- Filter (1581)
: : : : : : +- Scan parquet (1580)
: : : : : +- Project (1620)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1619)
: : : : : :- BroadcastExchange (1594)
: : : : : : +- Project (1593)
: : : : : : +- Generate (1592)
: : : : : : +- Project (1591)
: : : : : : +- Filter (1590)
: : : : : : +- Generate (1589)
: : : : : : +- Exchange (1588)
: : : : : : +- Project (1587)
: : : : : : +- Filter (1586)
: : : : : : +- Scan parquet (1585)
: : : : : +- HashAggregate (1618)
: : : : : +- Exchange (1617)
: : : : : +- HashAggregate (1616)
: : : : : +- Project (1615)
: : : : : +- Generate (1614)
: : : : : +- Project (1613)
: : : : : +- Generate (1612)
: : : : : +- Project (1611)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1610)
: : : : : :- Project (1604)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1603)
: : : : : : :- Exchange (1597)
: : : : : : : +- Filter (1596)
: : : : : : : +- Scan parquet (1595)
: : : : : : +- BroadcastExchange (1602)
: : : : : : +- Project (1601)
: : : : : : +- Exchange (1600)
: : : : : : +- Project (1599)
: : : : : : +- Scan parquet (1598)
: : : : : +- BroadcastExchange (1609)
: : : : : +- Exchange (1608)
: : : : : +- Project (1607)
: : : : : +- Filter (1606)
: : : : : +- Scan parquet (1605)
: : : : +- Sort (1652)
: : : : +- Project (1651)
: : : : +- Generate (1650)
: : : : +- Project (1649)
: : : : +- Generate (1648)
: : : : +- Project (1647)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1646)
: : : : :- Project (1640)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1639)
: : : : : :- Exchange (1633)
: : : : : : +- Filter (1632)
: : : : : : +- Scan parquet (1631)
: : : : : +- BroadcastExchange (1638)
: : : : : +- Project (1637)
: : : : : +- Exchange (1636)
: : : : : +- Project (1635)
: : : : : +- Scan parquet (1634)
: : : : +- BroadcastExchange (1645)
: : : : +- Exchange (1644)
: : : : +- Project (1643)
: : : : +- Filter (1642)
: : : : +- Scan parquet (1641)
: : : +- Sort (1735)
: : : +- Exchange (1734)
: : : +- HashAggregate (1733)
: : : +- HashAggregate (1732)
: : : +- Project (1731)
: : : +- SortMergeJoin Inner (1730)
: : : :- Sort (1707)
: : : : +- Exchange (1706)
: : : : +- Project (1705)
: : : : +- Filter (1704)
: : : : +- Generate (1703)
: : : : +- Filter (1702)
: : : : +- ObjectHashAggregate (1701)
: : : : +- ObjectHashAggregate (1700)
: : : : +- Generate (1699)
: : : : +- BroadcastHashJoin Inner BuildLeft (1698)
: : : : :- BroadcastExchange (1661)
: : : : : +- Exchange (1660)
: : : : : +- Project (1659)
: : : : : +- Filter (1658)
: : : : : +- Scan parquet (1657)
: : : : +- Project (1697)
: : : : +- BroadcastHashJoin Inner BuildLeft (1696)
: : : : :- BroadcastExchange (1671)
: : : : : +- Project (1670)
: : : : : +- Generate (1669)
: : : : : +- Project (1668)
: : : : : +- Filter (1667)
: : : : : +- Generate (1666)
: : : : : +- Exchange (1665)
: : : : : +- Project (1664)
: : : : : +- Filter (1663)
: : : : : +- Scan parquet (1662)
: : : : +- HashAggregate (1695)
: : : : +- Exchange (1694)
: : : : +- HashAggregate (1693)
: : : : +- Project (1692)
: : : : +- Generate (1691)
: : : : +- Project (1690)
: : : : +- Generate (1689)
: : : : +- Project (1688)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1687)
: : : : :- Project (1681)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1680)
: : : : : :- Exchange (1674)
: : : : : : +- Filter (1673)
: : : : : : +- Scan parquet (1672)
: : : : : +- BroadcastExchange (1679)
: : : : : +- Project (1678)
: : : : : +- Exchange (1677)
: : : : : +- Project (1676)
: : : : : +- Scan parquet (1675)
: : : : +- BroadcastExchange (1686)
: : : : +- Exchange (1685)
: : : : +- Project (1684)
: : : : +- Filter (1683)
: : : : +- Scan parquet (1682)
: : : +- Sort (1729)
: : : +- Project (1728)
: : : +- Generate (1727)
: : : +- Project (1726)
: : : +- Generate (1725)
: : : +- Project (1724)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1723)
: : : :- Project (1717)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1716)
: : : : :- Exchange (1710)
: : : : : +- Filter (1709)
: : : : : +- Scan parquet (1708)
: : : : +- BroadcastExchange (1715)
: : : : +- Project (1714)
: : : : +- Exchange (1713)
: : : : +- Project (1712)
: : : : +- Scan parquet (1711)
: : : +- BroadcastExchange (1722)
: : : +- Exchange (1721)
: : : +- Project (1720)
: : : +- Filter (1719)
: : : +- Scan parquet (1718)
: : +- BroadcastExchange (1745)
: : +- Scan parquet (1744)
: +- BroadcastExchange (1753)
: +- Exchange (1752)
: +- Project (1751)
: +- Scan parquet (1750)
+- Sort (2183)
+- Project (2182)
+- ObjectHashAggregate (2181)
+- Exchange (2180)
+- ObjectHashAggregate (2179)
+- Union (2178)
:- Filter (1767)
: +- InMemoryTableScan (1765)
: +- InMemoryRelation (1766)
: +- AdaptiveSparkPlan (944)
+- == Final Plan ==
ResultQueryStage (652)
+- EmptyRelation (651)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (943)
+- ObjectHashAggregate (942)
+- Exchange (941)
+- ObjectHashAggregate (940)
+- Project (939)
+- Window (938)
+- Sort (937)
+- Exchange (936)
+- Project (935)
+- BroadcastHashJoin Inner BuildRight (934)
:- Project (925)
: +- SortMergeJoin Inner (924)
: :- Sort (885)
: : +- Exchange (884)
: : +- Project (883)
: : +- SortMergeJoin LeftOuter (882)
: : :- Sort (675)
: : : +- Exchange (674)
: : : +- Project (673)
: : : +- Generate (672)
: : : +- Project (671)
: : : +- Generate (670)
: : : +- Project (669)
: : : +- BroadcastHashJoin LeftOuter BuildRight (668)
: : : :- Project (662)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (661)
: : : : :- Exchange (655)
: : : : : +- Filter (654)
: : : : : +- Scan parquet (653)
: : : : +- BroadcastExchange (660)
: : : : +- Project (659)
: : : : +- Exchange (658)
: : : : +- Project (657)
: : : : +- Scan parquet (656)
: : : +- BroadcastExchange (667)
: : : +- Exchange (666)
: : : +- Project (665)
: : : +- Filter (664)
: : : +- Scan parquet (663)
: : +- Sort (881)
: : +- Exchange (880)
: : +- SerializeFromObject (879)
: : +- MapElements (878)
: : +- DeserializeToObject (877)
: : +- Project (876)
: : +- BroadcastHashJoin LeftOuter BuildRight (875)
: : :- ObjectHashAggregate (870)
: : : +- ObjectHashAggregate (869)
: : : +- Project (868)
: : : +- BroadcastHashJoin LeftOuter BuildRight (867)
: : : :- Project (864)
: : : : +- SortMergeJoin LeftOuter (863)
: : : : :- Sort (700)
: : : : : +- Exchange (699)
: : : : : +- Project (698)
: : : : : +- Project (697)
: : : : : +- Generate (696)
: : : : : +- Generate (695)
: : : : : +- Project (694)
: : : : : +- Project (693)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (692)
: : : : : :- SortMergeJoin LeftOuter (686)
: : : : : : :- Sort (679)
: : : : : : : +- Exchange (678)
: : : : : : : +- Exchange (677)
: : : : : : : +- Scan parquet (676)
: : : : : : +- Sort (685)
: : : : : : +- Exchange (684)
: : : : : : +- Project (683)
: : : : : : +- Exchange (682)
: : : : : : +- Project (681)
: : : : : : +- Scan parquet (680)
: : : : : +- BroadcastExchange (691)
: : : : : +- Exchange (690)
: : : : : +- Project (689)
: : : : : +- Filter (688)
: : : : : +- Scan parquet (687)
: : : : +- Sort (862)
: : : : +- HashAggregate (861)
: : : : +- Exchange (860)
: : : : +- HashAggregate (859)
: : : : +- Project (858)
: : : : +- SortMergeJoin Inner (857)
: : : : :- Sort (777)
: : : : : +- Exchange (776)
: : : : : +- Project (775)
: : : : : +- SortMergeJoin Inner (774)
: : : : : :- Sort (751)
: : : : : : +- Exchange (750)
: : : : : : +- Project (749)
: : : : : : +- Filter (748)
: : : : : : +- Generate (747)
: : : : : : +- Filter (746)
: : : : : : +- ObjectHashAggregate (745)
: : : : : : +- ObjectHashAggregate (744)
: : : : : : +- Generate (743)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (742)
: : : : : : :- BroadcastExchange (705)
: : : : : : : +- Exchange (704)
: : : : : : : +- Project (703)
: : : : : : : +- Filter (702)
: : : : : : : +- Scan parquet (701)
: : : : : : +- Project (741)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (740)
: : : : : : :- BroadcastExchange (715)
: : : : : : : +- Project (714)
: : : : : : : +- Generate (713)
: : : : : : : +- Project (712)
: : : : : : : +- Filter (711)
: : : : : : : +- Generate (710)
: : : : : : : +- Exchange (709)
: : : : : : : +- Project (708)
: : : : : : : +- Filter (707)
: : : : : : : +- Scan parquet (706)
: : : : : : +- HashAggregate (739)
: : : : : : +- Exchange (738)
: : : : : : +- HashAggregate (737)
: : : : : : +- Project (736)
: : : : : : +- Generate (735)
: : : : : : +- Project (734)
: : : : : : +- Generate (733)
: : : : : : +- Project (732)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (731)
: : : : : : :- Project (725)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (724)
: : : : : : : :- Exchange (718)
: : : : : : : : +- Filter (717)
: : : : : : : : +- Scan parquet (716)
: : : : : : : +- BroadcastExchange (723)
: : : : : : : +- Project (722)
: : : : : : : +- Exchange (721)
: : : : : : : +- Project (720)
: : : : : : : +- Scan parquet (719)
: : : : : : +- BroadcastExchange (730)
: : : : : : +- Exchange (729)
: : : : : : +- Project (728)
: : : : : : +- Filter (727)
: : : : : : +- Scan parquet (726)
: : : : : +- Sort (773)
: : : : : +- Project (772)
: : : : : +- Generate (771)
: : : : : +- Project (770)
: : : : : +- Generate (769)
: : : : : +- Project (768)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (767)
: : : : : :- Project (761)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (760)
: : : : : : :- Exchange (754)
: : : : : : : +- Filter (753)
: : : : : : : +- Scan parquet (752)
: : : : : : +- BroadcastExchange (759)
: : : : : : +- Project (758)
: : : : : : +- Exchange (757)
: : : : : : +- Project (756)
: : : : : : +- Scan parquet (755)
: : : : : +- BroadcastExchange (766)
: : : : : +- Exchange (765)
: : : : : +- Project (764)
: : : : : +- Filter (763)
: : : : : +- Scan parquet (762)
: : : : +- Sort (856)
: : : : +- Exchange (855)
: : : : +- HashAggregate (854)
: : : : +- HashAggregate (853)
: : : : +- Project (852)
: : : : +- SortMergeJoin Inner (851)
: : : : :- Sort (828)
: : : : : +- Exchange (827)
: : : : : +- Project (826)
: : : : : +- Filter (825)
: : : : : +- Generate (824)
: : : : : +- Filter (823)
: : : : : +- ObjectHashAggregate (822)
: : : : : +- ObjectHashAggregate (821)
: : : : : +- Generate (820)
: : : : : +- BroadcastHashJoin Inner BuildLeft (819)
: : : : : :- BroadcastExchange (782)
: : : : : : +- Exchange (781)
: : : : : : +- Project (780)
: : : : : : +- Filter (779)
: : : : : : +- Scan parquet (778)
: : : : : +- Project (818)
: : : : : +- BroadcastHashJoin Inner BuildLeft (817)
: : : : : :- BroadcastExchange (792)
: : : : : : +- Project (791)
: : : : : : +- Generate (790)
: : : : : : +- Project (789)
: : : : : : +- Filter (788)
: : : : : : +- Generate (787)
: : : : : : +- Exchange (786)
: : : : : : +- Project (785)
: : : : : : +- Filter (784)
: : : : : : +- Scan parquet (783)
: : : : : +- HashAggregate (816)
: : : : : +- Exchange (815)
: : : : : +- HashAggregate (814)
: : : : : +- Project (813)
: : : : : +- Generate (812)
: : : : : +- Project (811)
: : : : : +- Generate (810)
: : : : : +- Project (809)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (808)
: : : : : :- Project (802)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (801)
: : : : : : :- Exchange (795)
: : : : : : : +- Filter (794)
: : : : : : : +- Scan parquet (793)
: : : : : : +- BroadcastExchange (800)
: : : : : : +- Project (799)
: : : : : : +- Exchange (798)
: : : : : : +- Project (797)
: : : : : : +- Scan parquet (796)
: : : : : +- BroadcastExchange (807)
: : : : : +- Exchange (806)
: : : : : +- Project (805)
: : : : : +- Filter (804)
: : : : : +- Scan parquet (803)
: : : : +- Sort (850)
: : : : +- Project (849)
: : : : +- Generate (848)
: : : : +- Project (847)
: : : : +- Generate (846)
: : : : +- Project (845)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (844)
: : : : :- Project (838)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (837)
: : : : : :- Exchange (831)
: : : : : : +- Filter (830)
: : : : : : +- Scan parquet (829)
: : : : : +- BroadcastExchange (836)
: : : : : +- Project (835)
: : : : : +- Exchange (834)
: : : : : +- Project (833)
: : : : : +- Scan parquet (832)
: : : : +- BroadcastExchange (843)
: : : : +- Exchange (842)
: : : : +- Project (841)
: : : : +- Filter (840)
: : : : +- Scan parquet (839)
: : : +- BroadcastExchange (866)
: : : +- Scan parquet (865)
: : +- BroadcastExchange (874)
: : +- Exchange (873)
: : +- Project (872)
: : +- Scan parquet (871)
: +- Sort (923)
: +- Project (922)
: +- BroadcastHashJoin Inner BuildLeft (921)
: :- BroadcastExchange (896)
: : +- Project (895)
: : +- Filter (894)
: : +- Generate (893)
: : +- Project (892)
: : +- Filter (891)
: : +- Generate (890)
: : +- Exchange (889)
: : +- Project (888)
: : +- Filter (887)
: : +- Scan parquet (886)
: +- HashAggregate (920)
: +- Exchange (919)
: +- HashAggregate (918)
: +- Project (917)
: +- Generate (916)
: +- Project (915)
: +- Generate (914)
: +- Project (913)
: +- BroadcastHashJoin LeftOuter BuildRight (912)
: :- Project (906)
: : +- BroadcastHashJoin LeftOuter BuildRight (905)
: : :- Exchange (899)
: : : +- Filter (898)
: : : +- Scan parquet (897)
: : +- BroadcastExchange (904)
: : +- Project (903)
: : +- Exchange (902)
: : +- Project (901)
: : +- Scan parquet (900)
: +- BroadcastExchange (911)
: +- Exchange (910)
: +- Project (909)
: +- Filter (908)
: +- Scan parquet (907)
+- BroadcastExchange (933)
+- Project (932)
+- Filter (931)
+- Generate (930)
+- Exchange (929)
+- Project (928)
+- Filter (927)
+- Scan parquet (926)
+- Filter (2177)
+- ObjectHashAggregate (2176)
+- Exchange (2175)
+- ObjectHashAggregate (2174)
+- Project (2173)
+- BroadcastHashJoin Inner BuildRight (2172)
:- Project (2163)
: +- SortMergeJoin LeftOuter (2162)
: :- Sort (1955)
: : +- Exchange (1954)
: : +- Project (1953)
: : +- SortMergeJoin LeftOuter (1952)
: : :- Sort (1789)
: : : +- Project (1788)
: : : +- Generate (1787)
: : : +- Project (1786)
: : : +- Generate (1785)
: : : +- Project (1784)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1783)
: : : :- Project (1777)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1776)
: : : : :- Exchange (1770)
: : : : : +- Filter (1769)
: : : : : +- Scan parquet (1768)
: : : : +- BroadcastExchange (1775)
: : : : +- Project (1774)
: : : : +- Exchange (1773)
: : : : +- Project (1772)
: : : : +- Scan parquet (1771)
: : : +- BroadcastExchange (1782)
: : : +- Exchange (1781)
: : : +- Project (1780)
: : : +- Filter (1779)
: : : +- Scan parquet (1778)
: : +- Sort (1951)
: : +- HashAggregate (1950)
: : +- Exchange (1949)
: : +- HashAggregate (1948)
: : +- Project (1947)
: : +- SortMergeJoin Inner (1946)
: : :- Sort (1866)
: : : +- Exchange (1865)
: : : +- Project (1864)
: : : +- SortMergeJoin Inner (1863)
: : : :- Sort (1840)
: : : : +- Exchange (1839)
: : : : +- Project (1838)
: : : : +- Filter (1837)
: : : : +- Generate (1836)
: : : : +- Filter (1835)
: : : : +- ObjectHashAggregate (1834)
: : : : +- ObjectHashAggregate (1833)
: : : : +- Generate (1832)
: : : : +- BroadcastHashJoin Inner BuildLeft (1831)
: : : : :- BroadcastExchange (1794)
: : : : : +- Exchange (1793)
: : : : : +- Project (1792)
: : : : : +- Filter (1791)
: : : : : +- Scan parquet (1790)
: : : : +- Project (1830)
: : : : +- BroadcastHashJoin Inner BuildLeft (1829)
: : : : :- BroadcastExchange (1804)
: : : : : +- Project (1803)
: : : : : +- Generate (1802)
: : : : : +- Project (1801)
: : : : : +- Filter (1800)
: : : : : +- Generate (1799)
: : : : : +- Exchange (1798)
: : : : : +- Project (1797)
: : : : : +- Filter (1796)
: : : : : +- Scan parquet (1795)
: : : : +- HashAggregate (1828)
: : : : +- Exchange (1827)
: : : : +- HashAggregate (1826)
: : : : +- Project (1825)
: : : : +- Generate (1824)
: : : : +- Project (1823)
: : : : +- Generate (1822)
: : : : +- Project (1821)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1820)
: : : : :- Project (1814)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1813)
: : : : : :- Exchange (1807)
: : : : : : +- Filter (1806)
: : : : : : +- Scan parquet (1805)
: : : : : +- BroadcastExchange (1812)
: : : : : +- Project (1811)
: : : : : +- Exchange (1810)
: : : : : +- Project (1809)
: : : : : +- Scan parquet (1808)
: : : : +- BroadcastExchange (1819)
: : : : +- Exchange (1818)
: : : : +- Project (1817)
: : : : +- Filter (1816)
: : : : +- Scan parquet (1815)
: : : +- Sort (1862)
: : : +- Project (1861)
: : : +- Generate (1860)
: : : +- Project (1859)
: : : +- Generate (1858)
: : : +- Project (1857)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1856)
: : : :- Project (1850)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1849)
: : : : :- Exchange (1843)
: : : : : +- Filter (1842)
: : : : : +- Scan parquet (1841)
: : : : +- BroadcastExchange (1848)
: : : : +- Project (1847)
: : : : +- Exchange (1846)
: : : : +- Project (1845)
: : : : +- Scan parquet (1844)
: : : +- BroadcastExchange (1855)
: : : +- Exchange (1854)
: : : +- Project (1853)
: : : +- Filter (1852)
: : : +- Scan parquet (1851)
: : +- Sort (1945)
: : +- Exchange (1944)
: : +- HashAggregate (1943)
: : +- HashAggregate (1942)
: : +- Project (1941)
: : +- SortMergeJoin Inner (1940)
: : :- Sort (1917)
: : : +- Exchange (1916)
: : : +- Project (1915)
: : : +- Filter (1914)
: : : +- Generate (1913)
: : : +- Filter (1912)
: : : +- ObjectHashAggregate (1911)
: : : +- ObjectHashAggregate (1910)
: : : +- Generate (1909)
: : : +- BroadcastHashJoin Inner BuildLeft (1908)
: : : :- BroadcastExchange (1871)
: : : : +- Exchange (1870)
: : : : +- Project (1869)
: : : : +- Filter (1868)
: : : : +- Scan parquet (1867)
: : : +- Project (1907)
: : : +- BroadcastHashJoin Inner BuildLeft (1906)
: : : :- BroadcastExchange (1881)
: : : : +- Project (1880)
: : : : +- Generate (1879)
: : : : +- Project (1878)
: : : : +- Filter (1877)
: : : : +- Generate (1876)
: : : : +- Exchange (1875)
: : : : +- Project (1874)
: : : : +- Filter (1873)
: : : : +- Scan parquet (1872)
: : : +- HashAggregate (1905)
: : : +- Exchange (1904)
: : : +- HashAggregate (1903)
: : : +- Project (1902)
: : : +- Generate (1901)
: : : +- Project (1900)
: : : +- Generate (1899)
: : : +- Project (1898)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1897)
: : : :- Project (1891)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1890)
: : : : :- Exchange (1884)
: : : : : +- Filter (1883)
: : : : : +- Scan parquet (1882)
: : : : +- BroadcastExchange (1889)
: : : : +- Project (1888)
: : : : +- Exchange (1887)
: : : : +- Project (1886)
: : : : +- Scan parquet (1885)
: : : +- BroadcastExchange (1896)
: : : +- Exchange (1895)
: : : +- Project (1894)
: : : +- Filter (1893)
: : : +- Scan parquet (1892)
: : +- Sort (1939)
: : +- Project (1938)
: : +- Generate (1937)
: : +- Project (1936)
: : +- Generate (1935)
: : +- Project (1934)
: : +- BroadcastHashJoin LeftOuter BuildRight (1933)
: : :- Project (1927)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1926)
: : : :- Exchange (1920)
: : : : +- Filter (1919)
: : : : +- Scan parquet (1918)
: : : +- BroadcastExchange (1925)
: : : +- Project (1924)
: : : +- Exchange (1923)
: : : +- Project (1922)
: : : +- Scan parquet (1921)
: : +- BroadcastExchange (1932)
: : +- Exchange (1931)
: : +- Project (1930)
: : +- Filter (1929)
: : +- Scan parquet (1928)
: +- Sort (2161)
: +- Exchange (2160)
: +- SerializeFromObject (2159)
: +- MapElements (2158)
: +- DeserializeToObject (2157)
: +- Project (2156)
: +- BroadcastHashJoin LeftOuter BuildRight (2155)
: :- ObjectHashAggregate (2150)
: : +- ObjectHashAggregate (2149)
: : +- Project (2148)
: : +- BroadcastHashJoin LeftOuter BuildRight (2147)
: : :- Project (2144)
: : : +- SortMergeJoin LeftOuter (2143)
: : : :- Sort (1980)
: : : : +- Exchange (1979)
: : : : +- Project (1978)
: : : : +- Project (1977)
: : : : +- Generate (1976)
: : : : +- Generate (1975)
: : : : +- Project (1974)
: : : : +- Project (1973)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1972)
: : : : :- SortMergeJoin LeftOuter (1966)
: : : : : :- Sort (1959)
: : : : : : +- Exchange (1958)
: : : : : : +- Exchange (1957)
: : : : : : +- Scan parquet (1956)
: : : : : +- Sort (1965)
: : : : : +- Exchange (1964)
: : : : : +- Project (1963)
: : : : : +- Exchange (1962)
: : : : : +- Project (1961)
: : : : : +- Scan parquet (1960)
: : : : +- BroadcastExchange (1971)
: : : : +- Exchange (1970)
: : : : +- Project (1969)
: : : : +- Filter (1968)
: : : : +- Scan parquet (1967)
: : : +- Sort (2142)
: : : +- HashAggregate (2141)
: : : +- Exchange (2140)
: : : +- HashAggregate (2139)
: : : +- Project (2138)
: : : +- SortMergeJoin Inner (2137)
: : : :- Sort (2057)
: : : : +- Exchange (2056)
: : : : +- Project (2055)
: : : : +- SortMergeJoin Inner (2054)
: : : : :- Sort (2031)
: : : : : +- Exchange (2030)
: : : : : +- Project (2029)
: : : : : +- Filter (2028)
: : : : : +- Generate (2027)
: : : : : +- Filter (2026)
: : : : : +- ObjectHashAggregate (2025)
: : : : : +- ObjectHashAggregate (2024)
: : : : : +- Generate (2023)
: : : : : +- BroadcastHashJoin Inner BuildLeft (2022)
: : : : : :- BroadcastExchange (1985)
: : : : : : +- Exchange (1984)
: : : : : : +- Project (1983)
: : : : : : +- Filter (1982)
: : : : : : +- Scan parquet (1981)
: : : : : +- Project (2021)
: : : : : +- BroadcastHashJoin Inner BuildLeft (2020)
: : : : : :- BroadcastExchange (1995)
: : : : : : +- Project (1994)
: : : : : : +- Generate (1993)
: : : : : : +- Project (1992)
: : : : : : +- Filter (1991)
: : : : : : +- Generate (1990)
: : : : : : +- Exchange (1989)
: : : : : : +- Project (1988)
: : : : : : +- Filter (1987)
: : : : : : +- Scan parquet (1986)
: : : : : +- HashAggregate (2019)
: : : : : +- Exchange (2018)
: : : : : +- HashAggregate (2017)
: : : : : +- Project (2016)
: : : : : +- Generate (2015)
: : : : : +- Project (2014)
: : : : : +- Generate (2013)
: : : : : +- Project (2012)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2011)
: : : : : :- Project (2005)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (2004)
: : : : : : :- Exchange (1998)
: : : : : : : +- Filter (1997)
: : : : : : : +- Scan parquet (1996)
: : : : : : +- BroadcastExchange (2003)
: : : : : : +- Project (2002)
: : : : : : +- Exchange (2001)
: : : : : : +- Project (2000)
: : : : : : +- Scan parquet (1999)
: : : : : +- BroadcastExchange (2010)
: : : : : +- Exchange (2009)
: : : : : +- Project (2008)
: : : : : +- Filter (2007)
: : : : : +- Scan parquet (2006)
: : : : +- Sort (2053)
: : : : +- Project (2052)
: : : : +- Generate (2051)
: : : : +- Project (2050)
: : : : +- Generate (2049)
: : : : +- Project (2048)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2047)
: : : : :- Project (2041)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2040)
: : : : : :- Exchange (2034)
: : : : : : +- Filter (2033)
: : : : : : +- Scan parquet (2032)
: : : : : +- BroadcastExchange (2039)
: : : : : +- Project (2038)
: : : : : +- Exchange (2037)
: : : : : +- Project (2036)
: : : : : +- Scan parquet (2035)
: : : : +- BroadcastExchange (2046)
: : : : +- Exchange (2045)
: : : : +- Project (2044)
: : : : +- Filter (2043)
: : : : +- Scan parquet (2042)
: : : +- Sort (2136)
: : : +- Exchange (2135)
: : : +- HashAggregate (2134)
: : : +- HashAggregate (2133)
: : : +- Project (2132)
: : : +- SortMergeJoin Inner (2131)
: : : :- Sort (2108)
: : : : +- Exchange (2107)
: : : : +- Project (2106)
: : : : +- Filter (2105)
: : : : +- Generate (2104)
: : : : +- Filter (2103)
: : : : +- ObjectHashAggregate (2102)
: : : : +- ObjectHashAggregate (2101)
: : : : +- Generate (2100)
: : : : +- BroadcastHashJoin Inner BuildLeft (2099)
: : : : :- BroadcastExchange (2062)
: : : : : +- Exchange (2061)
: : : : : +- Project (2060)
: : : : : +- Filter (2059)
: : : : : +- Scan parquet (2058)
: : : : +- Project (2098)
: : : : +- BroadcastHashJoin Inner BuildLeft (2097)
: : : : :- BroadcastExchange (2072)
: : : : : +- Project (2071)
: : : : : +- Generate (2070)
: : : : : +- Project (2069)
: : : : : +- Filter (2068)
: : : : : +- Generate (2067)
: : : : : +- Exchange (2066)
: : : : : +- Project (2065)
: : : : : +- Filter (2064)
: : : : : +- Scan parquet (2063)
: : : : +- HashAggregate (2096)
: : : : +- Exchange (2095)
: : : : +- HashAggregate (2094)
: : : : +- Project (2093)
: : : : +- Generate (2092)
: : : : +- Project (2091)
: : : : +- Generate (2090)
: : : : +- Project (2089)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2088)
: : : : :- Project (2082)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (2081)
: : : : : :- Exchange (2075)
: : : : : : +- Filter (2074)
: : : : : : +- Scan parquet (2073)
: : : : : +- BroadcastExchange (2080)
: : : : : +- Project (2079)
: : : : : +- Exchange (2078)
: : : : : +- Project (2077)
: : : : : +- Scan parquet (2076)
: : : : +- BroadcastExchange (2087)
: : : : +- Exchange (2086)
: : : : +- Project (2085)
: : : : +- Filter (2084)
: : : : +- Scan parquet (2083)
: : : +- Sort (2130)
: : : +- Project (2129)
: : : +- Generate (2128)
: : : +- Project (2127)
: : : +- Generate (2126)
: : : +- Project (2125)
: : : +- BroadcastHashJoin LeftOuter BuildRight (2124)
: : : :- Project (2118)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (2117)
: : : : :- Exchange (2111)
: : : : : +- Filter (2110)
: : : : : +- Scan parquet (2109)
: : : : +- BroadcastExchange (2116)
: : : : +- Project (2115)
: : : : +- Exchange (2114)
: : : : +- Project (2113)
: : : : +- Scan parquet (2112)
: : : +- BroadcastExchange (2123)
: : : +- Exchange (2122)
: : : +- Project (2121)
: : : +- Filter (2120)
: : : +- Scan parquet (2119)
: : +- BroadcastExchange (2146)
: : +- Scan parquet (2145)
: +- BroadcastExchange (2154)
: +- Exchange (2153)
: +- Project (2152)
: +- Scan parquet (2151)
+- BroadcastExchange (2171)
+- Project (2170)
+- Filter (2169)
+- Generate (2168)
+- Exchange (2167)
+- Project (2166)
+- Filter (2165)
+- Scan parquet (2164)
(1) Scan parquet
Output [3]: [product#21517975, plant#21517976, orderDateTime#21517977]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#21517975, plant#21517976, orderDateTime#21517977]
(3) Exchange
Input [3]: [product#21517975, plant#21517976, orderDateTime#21517977]
Arguments: hashpartitioning(product#21517975, plant#21517976, 25), REPARTITION_BY_NUM, [plan_id=21266497]
(4) ShuffleQueryStage
Output [3]: [product#21517975, plant#21517976, orderDateTime#21517977]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
(7) Project [codegen id : 2]
Output [4]: [plant#21517982.internalRefUUID AS _extract_internalRefUUID#21525578, product#21517983.internalRefUUID AS _extract_internalRefUUID#21525577, productionAspect#21517985.productMovementPlants.unitOfIssue.code AS _extract_code#21525575, productionAspect#21517985.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525576]
Input [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
(8) Exchange
Input [4]: [_extract_internalRefUUID#21525578, _extract_internalRefUUID#21525577, _extract_code#21525575, _extract_internalRefUUID#21525576]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21266511]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#21525578, _extract_internalRefUUID#21525577, _extract_code#21525575, _extract_internalRefUUID#21525576]
Arguments: 1
(10) Project [codegen id : 163]
Output [4]: [_extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
Input [4]: [_extract_internalRefUUID#21525578, _extract_internalRefUUID#21525577, _extract_code#21525575, _extract_internalRefUUID#21525576]
(11) BroadcastExchange
Input [4]: [_extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
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=21303256]
(12) BroadcastQueryStage
Output [4]: [_extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
Arguments: 314
(13) BroadcastHashJoin [codegen id : 353]
Left keys [4]: [coalesce(product#21517975, ), isnull(product#21517975), coalesce(plant#21517976, ), isnull(plant#21517976)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525577, ), isnull(_extract_internalRefUUID#21525577), coalesce(_extract_internalRefUUID#21525578, ), isnull(_extract_internalRefUUID#21525578)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 353]
Output [5]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_code#21525575, _extract_internalRefUUID#21525576]
Input [7]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
(15) Scan parquet
Output [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
(17) Filter [codegen id : 3]
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Condition : isnotnull(internalUUID#21518035)
(18) Project [codegen id : 3]
Output [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
(19) Exchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21266532]
(20) ShuffleQueryStage
Output [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: 2
(21) BroadcastExchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21266542]
(22) BroadcastQueryStage
Output [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: 315
(23) BroadcastHashJoin [codegen id : 353]
Left keys [1]: [product#21517975]
Right keys [1]: [internalUUID#21518035]
Join type: LeftOuter
Join condition: None
(24) Project
Output [4]: [product#21517975, plant#21517976, orderDateTime#21517977, filter(unitOfMeasureConversions#21518041, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525575) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525576)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518039.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518039.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518047]
Input [8]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_code#21525575, _extract_internalRefUUID#21525576, internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
(25) Project [codegen id : 354]
Output [5]: [product#21517975, plant#21517976, orderDateTime#21517977, filteredUnitOfMeasureConversions#21518047.quantityDenominator AS _extract_quantityDenominator#21525573, filteredUnitOfMeasureConversions#21518047.quantityNumerator AS _extract_quantityNumerator#21525574]
Input [4]: [product#21517975, plant#21517976, orderDateTime#21517977, filteredUnitOfMeasureConversions#21518047]
(26) Generate [codegen id : 354]
Input [5]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_quantityDenominator#21525573, _extract_quantityNumerator#21525574]
Arguments: explode(_extract_quantityNumerator#21525574), [product#21517975, plant#21517976, orderDateTime#21517977, _extract_quantityDenominator#21525573], true, [quantityNumerator#21518055]
(27) Generate [codegen id : 354]
Input [5]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_quantityDenominator#21525573, quantityNumerator#21518055]
Arguments: explode(_extract_quantityDenominator#21525573), [product#21517975, plant#21517976, orderDateTime#21517977, quantityNumerator#21518055], true, [quantityDenominator#21518058]
(28) Project [codegen id : 354]
Output [4]: [product#21517975, plant#21517976, orderDateTime#21517977, (cast(quantityNumerator#21518055 as double) / cast(quantityDenominator#21518058 as double)) AS outboundUnit#21518059]
Input [5]: [product#21517975, plant#21517976, orderDateTime#21517977, quantityNumerator#21518055, quantityDenominator#21518058]
(29) Project [codegen id : 354]
Output [4]: [product#21517975, plant#21517976, orderDateTime#21517977, CASE WHEN (isnull(outboundUnit#21518059) OR (outboundUnit#21518059 <= 0.0)) THEN 1.0 ELSE outboundUnit#21518059 END AS outboundUnit#21518060]
Input [4]: [product#21517975, plant#21517976, orderDateTime#21517977, outboundUnit#21518059]
(30) Scan parquet
Output [6]: [internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, systemId#21518148]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, systemId#21518148]
(32) Filter [codegen id : 4]
Input [6]: [internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, systemId#21518148]
Condition : (isnotnull(plant#21518151.internalRefUUID) AND isnotnull(product#21518150.internalRefUUID))
(33) Project [codegen id : 4]
Output [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
Input [6]: [internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, systemId#21518148]
(34) Exchange
Input [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21266560]
(35) ShuffleQueryStage
Output [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
Arguments: 3
(36) BroadcastExchange
Input [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
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=21266570]
(37) BroadcastQueryStage
Output [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
Arguments: 316
(38) Scan parquet
Output [2]: [marketUnit#21518061, distributionCenters#21518067]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_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#21518061, distributionCenters#21518067]
(40) Filter [codegen id : 5]
Input [2]: [marketUnit#21518061, distributionCenters#21518067]
Condition : (((marketUnit#21518061 <=> SS_Test_1) AND (size(distributionCenters#21518067, true) > 0)) AND isnotnull(distributionCenters#21518067))
(41) Project [codegen id : 5]
Output [1]: [distributionCenters#21518067]
Input [2]: [marketUnit#21518061, distributionCenters#21518067]
(42) Exchange
Input [1]: [distributionCenters#21518067]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21266580]
(43) ShuffleQueryStage
Output [1]: [distributionCenters#21518067]
Arguments: 4
(44) Generate [codegen id : 164]
Input [1]: [distributionCenters#21518067]
Arguments: explode(distributionCenters#21518067), false, [distributionCenters#21518085]
(45) Filter [codegen id : 164]
Input [1]: [distributionCenters#21518085]
Condition : (((size(distributionCenters#21518085.storageLocations, true) > 0) AND isnotnull(distributionCenters#21518085.storageLocations)) AND isnotnull(distributionCenters#21518085.internalRefUUID))
(46) Project [codegen id : 164]
Output [2]: [distributionCenters#21518085.internalRefUUID AS _extract_internalRefUUID#21525011, distributionCenters#21518085.storageLocations AS _extract_storageLocations#21525012]
Input [1]: [distributionCenters#21518085]
(47) Generate [codegen id : 164]
Input [2]: [_extract_internalRefUUID#21525011, _extract_storageLocations#21525012]
Arguments: explode(_extract_storageLocations#21525012), [_extract_internalRefUUID#21525011], false, [storageLocations#21518092]
(48) Project [codegen id : 164]
Output [3]: [_extract_internalRefUUID#21525011 AS plantUuid#21518087, storageLocations#21518092.id AS storageLocId#21518093, storageLocations#21518092.internalRefUUID AS storageLocUuid#21518094]
Input [2]: [_extract_internalRefUUID#21525011, storageLocations#21518092]
(49) BroadcastExchange
Input [3]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21303282]
(50) BroadcastQueryStage
Output [3]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Arguments: 317
(51) Scan parquet
Output [2]: [product#21518363, plant#21518364]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(52) ColumnarToRow [codegen id : 6]
Input [2]: [product#21518363, plant#21518364]
(53) Filter [codegen id : 6]
Input [2]: [product#21518363, plant#21518364]
Condition : isnotnull(plant#21518364)
(54) Exchange
Input [2]: [product#21518363, plant#21518364]
Arguments: hashpartitioning(product#21518363, plant#21518364, 25), REPARTITION_BY_NUM, [plan_id=21266603]
(55) ShuffleQueryStage
Output [2]: [product#21518363, plant#21518364]
Arguments: 5
(56) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#21525579, _extract_internalRefUUID#21525580, _extract_internalRefUUID#21525581, _extract_internalRefUUID#21525582]
(57) BroadcastQueryStage
Output [4]: [_extract_code#21525579, _extract_internalRefUUID#21525580, _extract_internalRefUUID#21525581, _extract_internalRefUUID#21525582]
Arguments: 319
(58) BroadcastHashJoin [codegen id : 221]
Left keys [4]: [coalesce(product#21518363, ), isnull(product#21518363), coalesce(plant#21518364, ), isnull(plant#21518364)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525581, ), isnull(_extract_internalRefUUID#21525581), coalesce(_extract_internalRefUUID#21525582, ), isnull(_extract_internalRefUUID#21525582)]
Join type: LeftOuter
Join condition: None
(59) Project [codegen id : 221]
Output [4]: [product#21518363, plant#21518364, _extract_code#21525579, _extract_internalRefUUID#21525580]
Input [6]: [product#21518363, plant#21518364, _extract_code#21525579, _extract_internalRefUUID#21525580, _extract_internalRefUUID#21525581, _extract_internalRefUUID#21525582]
(60) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
(61) BroadcastQueryStage
Output [3]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
Arguments: 320
(62) BroadcastHashJoin [codegen id : 221]
Left keys [1]: [product#21518363]
Right keys [1]: [internalUUID#21518377]
Join type: LeftOuter
Join condition: None
(63) Project
Output [2]: [plant#21518364, filter(unitOfMeasureConversions#21518383, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525579) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525580)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518381.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518381.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518388]
Input [7]: [product#21518363, plant#21518364, _extract_code#21525579, _extract_internalRefUUID#21525580, internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
(64) Generate [codegen id : 222]
Input [2]: [plant#21518364, filteredUnitOfMeasureConversions#21518388]
Arguments: explode(filteredUnitOfMeasureConversions#21518388.quantityNumerator), [plant#21518364, filteredUnitOfMeasureConversions#21518388], true, [quantityNumerator#21518389]
(65) Project [codegen id : 222]
Output [2]: [plant#21518364, filteredUnitOfMeasureConversions#21518388.quantityDenominator AS _extract_quantityDenominator#21525013]
Input [3]: [plant#21518364, filteredUnitOfMeasureConversions#21518388, quantityNumerator#21518389]
(66) Generate [codegen id : 222]
Input [2]: [plant#21518364, _extract_quantityDenominator#21525013]
Arguments: explode(_extract_quantityDenominator#21525013), [plant#21518364], true, [quantityDenominator#21518390]
(67) Project [codegen id : 222]
Output [1]: [plant#21518364]
Input [2]: [plant#21518364, quantityDenominator#21518390]
(68) HashAggregate [codegen id : 222]
Input [1]: [plant#21518364]
Keys [1]: [plant#21518364]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518364]
(69) Exchange
Input [1]: [plant#21518364]
Arguments: hashpartitioning(plant#21518364, 25), ENSURE_REQUIREMENTS, [plan_id=21314752]
(70) ShuffleQueryStage
Output [1]: [plant#21518364]
Arguments: 491
(71) AQEShuffleRead
Input [1]: [plant#21518364]
Arguments: coalesced
(72) HashAggregate
Input [1]: [plant#21518364]
Keys [1]: [plant#21518364]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518364]
(73) BroadcastHashJoin
Left keys [1]: [plantUuid#21518087]
Right keys [1]: [plant#21518364]
Join type: Inner
Join condition: None
(74) Project
Output [3]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Input [4]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094, plant#21518364]
(75) BroadcastHashJoin [codegen id : 273]
Left keys [2]: [coalesce(plant#21518151.internalRefUUID, ), isnull(plant#21518151.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21518087, ), isnull(plantUuid#21518087)]
Join type: Inner
Join condition: None
(76) Generate
Input [9]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Arguments: explode(filter(stockQuantities#21518153, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21518094) AND (lambda x#21518157.storageLocation.Id = storageLocId#21518093)), lambda x#21518157, false))), [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, plantUuid#21518087], false, [stockQuantity#21518158]
(77) ObjectHashAggregate
Input [7]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, plantUuid#21518087, stockQuantity#21518158]
Keys [5]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148]
Functions [2]: [partial_first(calculationDateTime#21518152, false), partial_collect_list(stockQuantity#21518158, 0, 0)]
Aggregate Attributes [3]: [first#21526558, valueSet#21526559, buf#21526560]
Results [8]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148, first#21526561, valueSet#21526562, buf#21526563]
(78) ObjectHashAggregate
Input [8]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148, first#21526561, valueSet#21526562, buf#21526563]
Keys [5]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148]
Functions [2]: [first(calculationDateTime#21518152, false), collect_list(stockQuantity#21518158, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21518152)()#21518172, collect_list(stockQuantity#21518158, 0, 0)#21518173]
Results [4]: [product#21518150, plant#21518151, first(calculationDateTime#21518152)()#21518172 AS calculationDateTime#21518159, collect_list(stockQuantity#21518158, 0, 0)#21518173 AS stockQuantities#21518160]
(79) Filter [codegen id : 274]
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantities#21518160]
Condition : ((size(stockQuantities#21518160, true) > 0) AND isnotnull(calculationDateTime#21518159))
(80) Generate [codegen id : 274]
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantities#21518160]
Arguments: explode(stockQuantities#21518160), [product#21518150, plant#21518151, calculationDateTime#21518159], false, [stockQuantity#21518175]
(81) Filter [codegen id : 274]
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantity#21518175]
Condition : (((isnotnull(stockQuantity#21518175.specialStockIndicator.code) AND isnotnull(stockQuantity#21518175.stockType.code)) AND (stockQuantity#21518175.specialStockIndicator.code = )) AND (stockQuantity#21518175.stockType.code = 01))
(82) Project [codegen id : 274]
Output [5]: [plant#21518151.internalRefUUID AS plantUuid#21518177, product#21518150.internalRefUUID AS productUuid#21518179, calculationDateTime#21518159, stockQuantity#21518175.storagelocation.id AS storageLocId#21518180, stockQuantity#21518175.quantity.measure AS quantity#21518182]
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantity#21518175]
(83) Exchange
Input [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: hashpartitioning(productUuid#21518179, plantUuid#21518177, 25), ENSURE_REQUIREMENTS, [plan_id=21323056]
(84) ShuffleQueryStage
Output [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: 531
(85) AQEShuffleRead
Input [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: local
(86) BroadcastExchange
Input [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=21329230]
(87) BroadcastQueryStage
Output [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: 561
(88) Scan parquet
Output [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(89) ColumnarToRow [codegen id : 9]
Input [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
(90) Filter [codegen id : 9]
Input [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Condition : ((isnotnull(orderDateTime#21518196) AND isnotnull(plant#21518195)) AND isnotnull(product#21518194))
(91) Exchange
Input [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Arguments: hashpartitioning(product#21518194, plant#21518195, 25), REPARTITION_BY_NUM, [plan_id=21266683]
(92) ShuffleQueryStage
Output [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Arguments: 10
(93) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#21525585, _extract_internalRefUUID#21525586, _extract_internalRefUUID#21525584, _extract_internalRefUUID#21525583]
(94) BroadcastQueryStage
Output [4]: [_extract_code#21525585, _extract_internalRefUUID#21525586, _extract_internalRefUUID#21525584, _extract_internalRefUUID#21525583]
Arguments: 322
(95) BroadcastHashJoin [codegen id : 305]
Left keys [4]: [coalesce(product#21518194, ), isnull(product#21518194), coalesce(plant#21518195, ), isnull(plant#21518195)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525584, ), isnull(_extract_internalRefUUID#21525584), coalesce(_extract_internalRefUUID#21525583, ), isnull(_extract_internalRefUUID#21525583)]
Join type: LeftOuter
Join condition: None
(96) Project [codegen id : 305]
Output [5]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_code#21525585, _extract_internalRefUUID#21525586]
Input [7]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_code#21525585, _extract_internalRefUUID#21525586, _extract_internalRefUUID#21525584, _extract_internalRefUUID#21525583]
(97) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
(98) BroadcastQueryStage
Output [3]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
Arguments: 323
(99) BroadcastHashJoin [codegen id : 305]
Left keys [1]: [product#21518194]
Right keys [1]: [internalUUID#21518208]
Join type: LeftOuter
Join condition: None
(100) Project
Output [4]: [product#21518194, plant#21518195, orderDateTime#21518196, filter(unitOfMeasureConversions#21518214, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525585) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525586)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518212.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518212.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518219]
Input [8]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_code#21525585, _extract_internalRefUUID#21525586, internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
(101) Generate
Input [4]: [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219]
Arguments: explode(filteredUnitOfMeasureConversions#21518219.quantityNumerator), [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219], true, [quantityNumerator#21518220]
(102) Project
Output [4]: [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219.quantityDenominator AS _extract_quantityDenominator#21525020]
Input [5]: [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219, quantityNumerator#21518220]
(103) Generate
Input [4]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_quantityDenominator#21525020]
Arguments: explode(_extract_quantityDenominator#21525020), [product#21518194, plant#21518195, orderDateTime#21518196], true, [quantityDenominator#21518221]
(104) Project
Output [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Input [4]: [product#21518194, plant#21518195, orderDateTime#21518196, quantityDenominator#21518221]
(105) BroadcastHashJoin [codegen id : 306]
Left keys [2]: [plantUuid#21518177, productUuid#21518179]
Right keys [2]: [plant#21518195, product#21518194]
Join type: Inner
Join condition: (calculationDateTime#21518159 <= orderDateTime#21518196)
(106) Project [codegen id : 306]
Output [5]: [plantUuid#21518177 AS plant#21518227, productUuid#21518179 AS product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Input [8]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182, product#21518194, plant#21518195, orderDateTime#21518196]
(107) Exchange
Input [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Arguments: hashpartitioning(coalesce(plant#21518227, ), isnull(plant#21518227), coalesce(product#21518228, ), isnull(product#21518228), coalesce(storageLocId#21518180, ), isnull(storageLocId#21518180), coalesce(calculationDateTime#21518159, 1970-01-01 00:00:00), isnull(calculationDateTime#21518159), 25), ENSURE_REQUIREMENTS, [plan_id=21334181]
(108) ShuffleQueryStage
Output [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Arguments: 591
(109) AQEShuffleRead
Input [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Arguments: local
(110) BroadcastExchange
Input [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
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=21338556]
(111) BroadcastQueryStage
Output [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Arguments: 620
(112) ReusedExchange [Reuses operator id: 36]
Output [6]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241]
(113) BroadcastQueryStage
Output [6]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241]
Arguments: 324
(114) ReusedExchange [Reuses operator id: 49]
Output [3]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
(115) BroadcastQueryStage
Output [3]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
Arguments: 326
(116) ReusedExchange [Reuses operator id: 69]
Output [1]: [plant#21518271]
(117) ShuffleQueryStage
Output [1]: [plant#21518271]
Arguments: 493
(118) AQEShuffleRead
Input [1]: [plant#21518271]
Arguments: coalesced
(119) HashAggregate
Input [1]: [plant#21518271]
Keys [1]: [plant#21518271]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518271]
(120) BroadcastHashJoin
Left keys [1]: [plantUuid#21518267]
Right keys [1]: [plant#21518271]
Join type: Inner
Join condition: None
(121) Project
Output [3]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
Input [4]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269, plant#21518271]
(122) BroadcastHashJoin [codegen id : 275]
Left keys [2]: [coalesce(plant#21518239.internalRefUUID, ), isnull(plant#21518239.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21518267, ), isnull(plantUuid#21518267)]
Join type: Inner
Join condition: None
(123) Generate
Input [9]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241, plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
Arguments: explode(filter(stockQuantities#21518241, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21518269) AND (lambda x#21518157.storageLocation.Id = storageLocId#21518268)), lambda x#21518157, false))), [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, plantUuid#21518267], false, [stockQuantity#21518300]
(124) ObjectHashAggregate
Input [7]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, plantUuid#21518267, stockQuantity#21518300]
Keys [5]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236]
Functions [2]: [partial_first(calculationDateTime#21518240, false), partial_collect_list(stockQuantity#21518300, 0, 0)]
Aggregate Attributes [3]: [first#21526566, valueSet#21526567, buf#21526568]
Results [8]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236, first#21526569, valueSet#21526570, buf#21526571]
(125) ObjectHashAggregate
Input [8]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236, first#21526569, valueSet#21526570, buf#21526571]
Keys [5]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236]
Functions [2]: [first(calculationDateTime#21518240, false), collect_list(stockQuantity#21518300, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21518240)()#21518172, collect_list(stockQuantity#21518300, 0, 0)#21518173]
Results [4]: [product#21518238, plant#21518239, first(calculationDateTime#21518240)()#21518172 AS calculationDateTime#21518301, collect_list(stockQuantity#21518300, 0, 0)#21518173 AS stockQuantities#21518302]
(126) Filter [codegen id : 276]
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantities#21518302]
Condition : ((size(stockQuantities#21518302, true) > 0) AND isnotnull(calculationDateTime#21518301))
(127) Generate [codegen id : 276]
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantities#21518302]
Arguments: explode(stockQuantities#21518302), [product#21518238, plant#21518239, calculationDateTime#21518301], false, [stockQuantity#21518303]
(128) Filter [codegen id : 276]
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantity#21518303]
Condition : (((isnotnull(stockQuantity#21518303.specialStockIndicator.code) AND isnotnull(stockQuantity#21518303.stockType.code)) AND (stockQuantity#21518303.specialStockIndicator.code = )) AND (stockQuantity#21518303.stockType.code = 01))
(129) Project [codegen id : 276]
Output [4]: [plant#21518239.internalRefUUID AS plantUuid#21518305, product#21518238.internalRefUUID AS productUuid#21518307, calculationDateTime#21518301, stockQuantity#21518303.storagelocation.id AS storageLocId#21518308]
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantity#21518303]
(130) Exchange
Input [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: hashpartitioning(productUuid#21518307, plantUuid#21518305, 25), ENSURE_REQUIREMENTS, [plan_id=21323124]
(131) ShuffleQueryStage
Output [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: 532
(132) AQEShuffleRead
Input [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: local
(133) BroadcastExchange
Input [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=21331698]
(134) BroadcastQueryStage
Output [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: 572
(135) ReusedExchange [Reuses operator id: 91]
Output [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
(136) ShuffleQueryStage
Output [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Arguments: 26
(137) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#21525591, _extract_internalRefUUID#21525592, _extract_internalRefUUID#21525594, _extract_internalRefUUID#21525593]
(138) BroadcastQueryStage
Output [4]: [_extract_code#21525591, _extract_internalRefUUID#21525592, _extract_internalRefUUID#21525594, _extract_internalRefUUID#21525593]
Arguments: 331
(139) BroadcastHashJoin [codegen id : 317]
Left keys [4]: [coalesce(product#21518313, ), isnull(product#21518313), coalesce(plant#21518314, ), isnull(plant#21518314)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525594, ), isnull(_extract_internalRefUUID#21525594), coalesce(_extract_internalRefUUID#21525593, ), isnull(_extract_internalRefUUID#21525593)]
Join type: LeftOuter
Join condition: None
(140) Project [codegen id : 317]
Output [5]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_code#21525591, _extract_internalRefUUID#21525592]
Input [7]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_code#21525591, _extract_internalRefUUID#21525592, _extract_internalRefUUID#21525594, _extract_internalRefUUID#21525593]
(141) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
(142) BroadcastQueryStage
Output [3]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
Arguments: 332
(143) BroadcastHashJoin [codegen id : 317]
Left keys [1]: [product#21518313]
Right keys [1]: [internalUUID#21518327]
Join type: LeftOuter
Join condition: None
(144) Project
Output [4]: [product#21518313, plant#21518314, orderDateTime#21518315, filter(unitOfMeasureConversions#21518333, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525591) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525592)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518331.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518331.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518338]
Input [8]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_code#21525591, _extract_internalRefUUID#21525592, internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
(145) Generate
Input [4]: [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338]
Arguments: explode(filteredUnitOfMeasureConversions#21518338.quantityNumerator), [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338], true, [quantityNumerator#21518339]
(146) Project
Output [4]: [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338.quantityDenominator AS _extract_quantityDenominator#21525036]
Input [5]: [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338, quantityNumerator#21518339]
(147) Generate
Input [4]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_quantityDenominator#21525036]
Arguments: explode(_extract_quantityDenominator#21525036), [product#21518313, plant#21518314, orderDateTime#21518315], true, [quantityDenominator#21518340]
(148) Project
Output [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Input [4]: [product#21518313, plant#21518314, orderDateTime#21518315, quantityDenominator#21518340]
(149) BroadcastHashJoin [codegen id : 318]
Left keys [2]: [plantUuid#21518305, productUuid#21518307]
Right keys [2]: [plant#21518314, product#21518313]
Join type: Inner
Join condition: (calculationDateTime#21518301 <= orderDateTime#21518315)
(150) Project [codegen id : 318]
Output [4]: [plantUuid#21518305 AS plant#21518343, productUuid#21518307 AS product#21518344, storageLocId#21518308, calculationDateTime#21518301]
Input [7]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308, product#21518313, plant#21518314, orderDateTime#21518315]
(151) HashAggregate [codegen id : 318]
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, calculationDateTime#21518301]
Keys [3]: [plant#21518343, product#21518344, storageLocId#21518308]
Functions [1]: [partial_max(calculationDateTime#21518301)]
Aggregate Attributes [1]: [max#21526564]
Results [4]: [plant#21518343, product#21518344, storageLocId#21518308, max#21526565]
(152) HashAggregate [codegen id : 318]
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, max#21526565]
Keys [3]: [plant#21518343, product#21518344, storageLocId#21518308]
Functions [1]: [max(calculationDateTime#21518301)]
Aggregate Attributes [1]: [max(calculationDateTime#21518301)#21518235]
Results [4]: [plant#21518343, product#21518344, storageLocId#21518308, max(calculationDateTime#21518301)#21518235 AS max_calc_datetime#21518229]
(153) Exchange
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
Arguments: hashpartitioning(coalesce(plant#21518343, ), isnull(plant#21518343), coalesce(product#21518344, ), isnull(product#21518344), coalesce(storageLocId#21518308, ), isnull(storageLocId#21518308), coalesce(max_calc_datetime#21518229, 1970-01-01 00:00:00), isnull(max_calc_datetime#21518229), 25), ENSURE_REQUIREMENTS, [plan_id=21336527]
(154) ShuffleQueryStage
Output [4]: [plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
Arguments: 602
(155) AQEShuffleRead
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
Arguments: local
(156) BroadcastHashJoin [codegen id : 337]
Left keys [8]: [coalesce(plant#21518227, ), isnull(plant#21518227), coalesce(product#21518228, ), isnull(product#21518228), coalesce(storageLocId#21518180, ), isnull(storageLocId#21518180), coalesce(calculationDateTime#21518159, 1970-01-01 00:00:00), isnull(calculationDateTime#21518159)]
Right keys [8]: [coalesce(plant#21518343, ), isnull(plant#21518343), coalesce(product#21518344, ), isnull(product#21518344), coalesce(storageLocId#21518308, ), isnull(storageLocId#21518308), coalesce(max_calc_datetime#21518229, 1970-01-01 00:00:00), isnull(max_calc_datetime#21518229)]
Join type: Inner
Join condition: None
(157) Project [codegen id : 337]
Output [4]: [plant#21518227, product#21518228, calculationDateTime#21518159, quantity#21518182]
Input [9]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182, plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
(158) HashAggregate [codegen id : 337]
Input [4]: [plant#21518227, product#21518228, calculationDateTime#21518159, quantity#21518182]
Keys [2]: [product#21518228, plant#21518227]
Functions [2]: [partial_min(calculationDateTime#21518159), partial_sum(quantity#21518182)]
Aggregate Attributes [2]: [min#21526554, sum#21526555]
Results [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
(159) Exchange
Input [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
Arguments: hashpartitioning(product#21518228, plant#21518227, 25), ENSURE_REQUIREMENTS, [plan_id=21342053]
(160) ShuffleQueryStage
Output [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
Arguments: 634
(161) AQEShuffleRead
Input [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
Arguments: coalesced
(162) HashAggregate [codegen id : 345]
Input [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
Keys [2]: [product#21518228, plant#21518227]
Functions [2]: [min(calculationDateTime#21518159), sum(quantity#21518182)]
Aggregate Attributes [2]: [min(calculationDateTime#21518159)#21518361, sum(quantity#21518182)#21518360]
Results [4]: [product#21518228, plant#21518227, min(calculationDateTime#21518159)#21518361 AS minCalculationDateTime#21518354, round(sum(quantity#21518182)#21518360, 0) AS roundedQuantitySum#21518362]
(163) BroadcastExchange
Input [4]: [product#21518228, plant#21518227, minCalculationDateTime#21518354, roundedQuantitySum#21518362]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=21344266]
(164) BroadcastQueryStage
Output [4]: [product#21518228, plant#21518227, minCalculationDateTime#21518354, roundedQuantitySum#21518362]
Arguments: 648
(165) BroadcastHashJoin [codegen id : 354]
Left keys [2]: [plant#21517976, product#21517975]
Right keys [2]: [plant#21518227, product#21518228]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 354]
Output [5]: [product#21517975, plant#21517976, outboundUnit#21518060, CASE WHEN isnotnull(minCalculationDateTime#21518354) THEN minCalculationDateTime#21518354 ELSE orderDateTime#21517977 END AS stockDatetime#21518396, CASE WHEN isnotnull(roundedQuantitySum#21518362) THEN array(roundedQuantitySum#21518362) ELSE [0.0] END AS stockBatchQuantities#21518397]
Input [8]: [product#21517975, plant#21517976, orderDateTime#21517977, outboundUnit#21518060, product#21518228, plant#21518227, minCalculationDateTime#21518354, roundedQuantitySum#21518362]
(167) Exchange
Input [5]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397]
Arguments: hashpartitioning(coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975), 25), ENSURE_REQUIREMENTS, [plan_id=21346060]
(168) ShuffleQueryStage
Output [5]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397]
Arguments: 662
(169) AQEShuffleRead
Input [5]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397]
Arguments: local
(170) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
(171) ShuffleQueryStage
Output [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: 32
(172) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503), 25), ENSURE_REQUIREMENTS, [plan_id=21266975]
(173) ShuffleQueryStage
Output [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: 333
(174) Sort [codegen id : 225]
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: [coalesce(product#21519502, ) ASC NULLS FIRST, isnull(product#21519502) ASC NULLS FIRST, coalesce(plant#21519503, ) ASC NULLS FIRST, isnull(plant#21519503) ASC NULLS FIRST], false, 0
(175) Scan parquet
Output [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(176) ColumnarToRow [codegen id : 21]
Input [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
(177) Project [codegen id : 21]
Output [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Input [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
(178) Exchange
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21266984]
(179) ShuffleQueryStage
Output [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Arguments: 33
(180) Project [codegen id : 170]
Output [1]: [struct(systemId, systemId#21519506, internalUUID, internalUUID#21519507, plant, plant#21519508, product, product#21519509, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21519510, productionAspect, productionAspect#21519511, salesPlant, salesPlant#21519512, listing, listing#21519513) AS productPlant#21519514]
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
(181) Exchange
Input [1]: [productPlant#21519514]
Arguments: hashpartitioning(coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21303468]
(182) ShuffleQueryStage
Output [1]: [productPlant#21519514]
Arguments: 334
(183) Sort [codegen id : 226]
Input [1]: [productPlant#21519514]
Arguments: [coalesce(productPlant#21519514.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21519514.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(184) SortMergeJoin [codegen id : 227]
Left keys [4]: [coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [4]: [coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(185) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
(186) BroadcastQueryStage
Output [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: 335
(187) BroadcastHashJoin [codegen id : 227]
Left keys [1]: [product#21519502]
Right keys [1]: [internalUUID#21519516]
Join type: LeftOuter
Join condition: None
(188) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filter(unitOfMeasureConversions#21519522, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519520.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519520.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519527]
Input [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
(189) Project [codegen id : 228]
Output [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527.quantityDenominator AS _extract_quantityDenominator#21525595, filteredUnitOfMeasureConversions#21519527.quantityNumerator AS _extract_quantityNumerator#21525596]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527]
(190) Generate [codegen id : 228]
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21525595, _extract_quantityNumerator#21525596]
Arguments: explode(_extract_quantityNumerator#21525596), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21525595], true, [quantityNumerator#21519528]
(191) Generate [codegen id : 228]
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21525595, quantityNumerator#21519528]
Arguments: explode(_extract_quantityDenominator#21525595), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528], true, [quantityDenominator#21519529]
(192) Project [codegen id : 228]
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, (cast(quantityNumerator#21519528 as double) / cast(quantityDenominator#21519529 as double)) AS outboundUnit#21519530]
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528, quantityDenominator#21519529]
(193) Project [codegen id : 228]
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, CASE WHEN (isnull(outboundUnit#21519530) OR (outboundUnit#21519530 <= 0.0)) THEN 1.0 ELSE outboundUnit#21519530 END AS outboundUnit#21519531]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519530]
(194) Exchange
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), ENSURE_REQUIREMENTS, [plan_id=21314891]
(195) ShuffleQueryStage
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: 494
(196) AQEShuffleRead
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: coalesced
(197) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
(198) BroadcastQueryStage
Output [4]: [product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
Arguments: 650
(199) BroadcastHashJoin [codegen id : 355]
Left keys [2]: [plant#21519503, product#21519502]
Right keys [2]: [plant#21519639, product#21519640]
Join type: LeftOuter
Join condition: None
(200) Project [codegen id : 355]
Output [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, CASE WHEN isnotnull(minCalculationDateTime#21519752) THEN minCalculationDateTime#21519752 ELSE orderDateTime#21519504 END AS stockDatetime#21519754, CASE WHEN isnotnull(roundedQuantitySum#21519753) THEN array(roundedQuantitySum#21519753) ELSE [0.0] END AS stockBatchQuantities#21519755]
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
(201) Scan parquet
Output [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001651/0_1_10000001651]
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>>>
(202) ColumnarToRow [codegen id : 39]
Input [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
(203) BroadcastExchange
Input [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
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=21267448]
(204) BroadcastQueryStage
Output [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
Arguments: 68
(205) BroadcastHashJoin [codegen id : 355]
Left keys [4]: [coalesce(plant#21519503, ), isnull(plant#21519503), coalesce(product#21519502, ), isnull(product#21519502)]
Right keys [4]: [coalesce(plant#21518400, ), isnull(plant#21518400), coalesce(product#21518399, ), isnull(product#21518399)]
Join type: LeftOuter
Join condition: None
(206) Project [codegen id : 355]
Output [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, CASE WHEN isnotnull(product#21518399) THEN struct(demandChannel, demandChannel#21518401, demandStream, demandStream#21518402, considerVariance, considerVariance#21518403, demandTimeBuckets, demandTimeBuckets#21518404, demandPointInTimeStart, demandPointInTimeStart#21518405, demandPointInTimeEnd, demandPointInTimeEnd#21518406, demandPointInTime, demandPointInTime#21518407) END AS rawDemands#21518409]
Input [16]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
(207) ObjectHashAggregate
Input [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518409]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, knownfloatingpointnormalized(if (isnull(productPlant#21519514)) null else named_struct(systemId, productPlant#21519514.systemId, internalUUID, productPlant#21519514.internalUUID, plant, productPlant#21519514.plant, product, productPlant#21519514.product, blockedForReplenishmentStartingFrom, productPlant#21519514.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect)) null else named_struct(productMovementPlants, productPlant#21519514.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21519514.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21519514.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21519514.salesPlant, listing, productPlant#21519514.listing)) AS productPlant#21519514, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21519531)) AS outboundUnit#21519531, stockDatetime#21519754, knownfloatingpointnormalized(transform(stockBatchQuantities#21519755, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21529943)), lambda arg#21529943, false))) AS stockBatchQuantities#21519755, [7226582400000000] AS [7226582400000000]#21529942]
Functions [1]: [partial_collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [buf#21521422]
Results [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21529942, buf#21521423]
(208) ObjectHashAggregate
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21529942, buf#21521423]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21529942]
Functions [1]: [collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21518409, 0, 0)#21518429]
Results [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, collect_list(rawDemands#21518409, 0, 0)#21518429 AS rawDemands#21518410]
(209) Scan parquet
Output [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(210) ColumnarToRow [codegen id : 40]
Input [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
(211) Project [codegen id : 40]
Output [2]: [internalUUID#21519453, address#21519459.timeZone.code AS timezonecode#21519465]
Input [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
(212) Exchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21267465]
(213) ShuffleQueryStage
Output [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: 69
(214) BroadcastExchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21267473]
(215) BroadcastQueryStage
Output [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: 354
(216) BroadcastHashJoin [codegen id : 356]
Left keys [2]: [coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [2]: [coalesce(internalUUID#21519453, ), isnull(internalUUID#21519453)]
Join type: LeftOuter
Join condition: None
(217) Project [codegen id : 356]
Output [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, CASE WHEN isnotnull(timezonecode#21519465) THEN timezonecode#21519465 ELSE UTC END AS timezonecode#21519467]
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518410, internalUUID#21519453, timezonecode#21519465]
(218) DeserializeToObject [codegen id : 356]
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, timezonecode#21519467]
Arguments: createexternalrow(invoke(product#21519502.toString()), invoke(plant#21519503.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21519504)), if (isnull(productPlant#21519514)) null else createexternalrow(invoke(productPlant#21519514.systemId.toString()), invoke(productPlant#21519514.internalUUID.toString()), if (isnull(productPlant#21519514.plant)) null else createexternalrow(invoke(productPlant#21519514.plant.internalRefUUID.toString()), invoke(productPlant#21519514.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21519514.product)) null else createexternalrow(invoke(productPlant#21519514.product.internalRefUUID.toString()), invoke(productPlant#21519514.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21519514.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21519514.productionAspect)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21519514.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#21519514.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21519514.salesPlant)) null else createexternalrow(if (isnull(productPlant#21519514.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21519514.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21519514.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#21519514.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21519531)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21519754)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#21519755, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#21519756, 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#21518410, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21519467.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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21519488: org.apache.spark.sql.Row
(219) MapElements [codegen id : 356]
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(220) SerializeFromObject [codegen id : 356]
Input [1]: [obj#21519493]
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#21519498, 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#21519499, 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#21519500, 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#21519501]
(221) Exchange
Input [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: hashpartitioning(coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498), 25), ENSURE_REQUIREMENTS, [plan_id=21346137]
(222) ShuffleQueryStage
Output [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: 663
(223) AQEShuffleRead
Input [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: local
(224) BroadcastExchange
Input [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
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=21348242]
(225) BroadcastQueryStage
Output [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: 673
(226) BroadcastHashJoin [codegen id : 368]
Left keys [4]: [coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975)]
Right keys [4]: [coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498)]
Join type: LeftOuter
Join condition: None
(227) Project [codegen id : 368]
Output [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Input [9]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
(228) Exchange
Input [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: hashpartitioning(product#21517975, plant#21517976, 25), ENSURE_REQUIREMENTS, [plan_id=21348849]
(229) ShuffleQueryStage
Output [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: 679
(230) AQEShuffleRead
Input [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: coalesced
(231) Project [codegen id : 376]
Output [12]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, cast(null as string) AS product#21519794, cast(null as string) AS plant#21519793, cast(null as array<double>) AS _extract_openQtyInBaseUnit#21525570, cast(null as array<timestamp>) AS _extract_availabilityDatetime#21525571, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#21525572]
Input [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
(232) Project [codegen id : 376]
Output [10]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, coalesce(_extract_openQtyInBaseUnit#21525570, []) AS openGoodsMovementQuantities#21522670, coalesce(_extract_availabilityDatetime#21525571, []) AS openGoodsMovementAvailabilityDatetimes#21522671, coalesce(_extract_shelfLifeEndDatetime#21525572, []) AS openGoodsMovementShelfLifeEndDatetimes#21522672]
Input [12]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, product#21519794, plant#21519793, _extract_openQtyInBaseUnit#21525570, _extract_availabilityDatetime#21525571, _extract_shelfLifeEndDatetime#21525572]
(233) ReusedExchange [Reuses operator id: 194]
Output [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999]
(234) ShuffleQueryStage
Output [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999]
Arguments: 510
(235) AQEShuffleRead
Input [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999]
Arguments: local
(236) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#21523108, plant#21523107, minCalculationDateTime#21523220, roundedQuantitySum#21523221]
(237) BroadcastQueryStage
Output [4]: [product#21523108, plant#21523107, minCalculationDateTime#21523220, roundedQuantitySum#21523221]
Arguments: 654
(238) BroadcastHashJoin [codegen id : 359]
Left keys [2]: [plant#21522971, product#21522970]
Right keys [2]: [plant#21523107, product#21523108]
Join type: LeftOuter
Join condition: None
(239) Project [codegen id : 359]
Output [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, CASE WHEN isnotnull(minCalculationDateTime#21523220) THEN minCalculationDateTime#21523220 ELSE orderDateTime#21522972 END AS stockDatetime#21523222, CASE WHEN isnotnull(roundedQuantitySum#21523221) THEN array(roundedQuantitySum#21523221) ELSE [0.0] END AS stockBatchQuantities#21523223]
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, product#21523108, plant#21523107, minCalculationDateTime#21523220, roundedQuantitySum#21523221]
(240) Exchange
Input [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223]
Arguments: hashpartitioning(coalesce(plant#21522971, ), isnull(plant#21522971), coalesce(product#21522970, ), isnull(product#21522970), 25), ENSURE_REQUIREMENTS, [plan_id=21346486]
(241) ShuffleQueryStage
Output [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223]
Arguments: 665
(242) AQEShuffleRead
Input [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223]
Arguments: local
(243) ReusedExchange [Reuses operator id: 224]
Output [4]: [product#21523505, plant#21523506, dayBucketDemands#21523507, pointInTimeDemands#21523508]
(244) BroadcastQueryStage
Output [4]: [product#21523505, plant#21523506, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: 675
(245) BroadcastHashJoin [codegen id : 369]
Left keys [4]: [coalesce(plant#21522971, ), isnull(plant#21522971), coalesce(product#21522970, ), isnull(product#21522970)]
Right keys [4]: [coalesce(plant#21523506, ), isnull(plant#21523506), coalesce(product#21523505, ), isnull(product#21523505)]
Join type: LeftOuter
Join condition: None
(246) Project [codegen id : 369]
Output [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Input [11]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, product#21523505, plant#21523506, dayBucketDemands#21523507, pointInTimeDemands#21523508]
(247) Exchange
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: hashpartitioning(product#21522970, plant#21522971, 25), ENSURE_REQUIREMENTS, [plan_id=21348938]
(248) ShuffleQueryStage
Output [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: 680
(249) AQEShuffleRead
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: coalesced
(250) Project [codegen id : 374]
Output [14]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508, cast(null as string) AS product#21524119, cast(null as string) AS plant#21524118, cast(null as array<double>) AS _extract_openQtyInBaseUnit#21525651, cast(null as array<timestamp>) AS _extract_availabilityDatetime#21525652, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#21525653]
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
(251) Project
Output [15]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21523224, dayBucketDemands#21523507, pointInTimeDemands#21523508, coalesce(_extract_openQtyInBaseUnit#21525651, []) AS openGoodsMovementQuantities#21524693, coalesce(_extract_availabilityDatetime#21525652, []) AS openGoodsMovementAvailabilityDatetimes#21524694, coalesce(_extract_shelfLifeEndDatetime#21525653, []) AS openGoodsMovementShelfLifeEndDatetimes#21524695, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#21524696, array_sort(filter(CASE WHEN isnotnull(productPlant#21522982.listing) THEN productPlant#21522982.listing ELSE [] END, lambdafunction(lambda listing#21522916.isListed, lambda listing#21522916, false)), lambdafunction(if ((isnull(lambda left#21522918) AND isnull(lambda right#21522919))) 0 else if (isnull(lambda left#21522918)) 1 else if (isnull(lambda right#21522919)) -1 else if ((lambda left#21522918 < lambda right#21522919)) -1 else if ((lambda left#21522918 > lambda right#21522919)) 1 else 0, lambda left#21522918, lambda right#21522919, false), false) AS listing#21522917]
Input [14]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508, product#21524119, plant#21524118, _extract_openQtyInBaseUnit#21525651, _extract_availabilityDatetime#21525652, _extract_shelfLifeEndDatetime#21525653]
(252) DeserializeToObject [codegen id : 375]
Input [15]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, stockBatchShelfLifeEndDatetimes#21523224, dayBucketDemands#21523507, pointInTimeDemands#21523508, openGoodsMovementQuantities#21524693, openGoodsMovementAvailabilityDatetimes#21524694, openGoodsMovementShelfLifeEndDatetimes#21524695, configuration#21524696, listing#21522917]
Arguments: createexternalrow(invoke(product#21522970.toString()), invoke(plant#21522971.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21522972)), if (isnull(productPlant#21522982)) null else createexternalrow(invoke(productPlant#21522982.systemId.toString()), invoke(productPlant#21522982.internalUUID.toString()), if (isnull(productPlant#21522982.plant)) null else createexternalrow(invoke(productPlant#21522982.plant.internalRefUUID.toString()), invoke(productPlant#21522982.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21522982.product)) null else createexternalrow(invoke(productPlant#21522982.product.internalRefUUID.toString()), invoke(productPlant#21522982.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21522982.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21522982.productionAspect)) null else createexternalrow(if (isnull(productPlant#21522982.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21522982.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21522982.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#21522982.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21522982.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21522982.salesPlant)) null else createexternalrow(if (isnull(productPlant#21522982.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21522982.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21522982.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#21522982.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21522999)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21523222)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#21523223, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#21523224, 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#21523507, 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#21523508, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#21524693, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#21524694, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#21524695, 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#21524696, 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#21522917, 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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21522950: org.apache.spark.sql.Row
(253) MapElements [codegen id : 375]
Input [1]: [obj#21522950]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801fa9788@49eab929, obj#21522957: org.apache.spark.sql.Row
(254) SerializeFromObject [codegen id : 375]
Input [1]: [obj#21522957]
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#21522964, 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#21522965, 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#21522966, 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#21522967, 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#21522968, 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#21522969]
(255) Filter [codegen id : 375]
Input [6]: [product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
Condition : (isnotnull(product#21522964) AND isnotnull(plant#21522965))
(256) BroadcastExchange
Input [6]: [product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=21349755]
(257) BroadcastQueryStage
Output [6]: [product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
Arguments: 686
(258) BroadcastHashJoin [codegen id : 376]
Left keys [2]: [product#21517975, plant#21517976]
Right keys [2]: [product#21522964, plant#21522965]
Join type: LeftOuter
Join condition: None
(259) Project [codegen id : 376]
Output [16]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21518398, dayBucketDemands#21519500, pointInTimeDemands#21519501, openGoodsMovementQuantities#21522670, openGoodsMovementAvailabilityDatetimes#21522671, openGoodsMovementShelfLifeEndDatetimes#21522672, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#21522773, CASE WHEN isnotnull(timeDependentSettingsName#21522966) THEN timeDependentSettingsName#21522966 ELSE [] END AS timeDependentSettingsName#21524823, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#21522967) THEN timeDependentSettingsStartDatetime#21522967 ELSE [] END AS timeDependentSettingsStartDatetime#21524824, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#21522968) THEN timeDependentSettingsEndDatetime#21522968 ELSE [] END AS timeDependentSettingsEndDatetime#21524825, CASE WHEN isnotnull(timeDependentSettingsValue#21522969) THEN timeDependentSettingsValue#21522969 ELSE [] END AS timeDependentSettingsValue#21524826]
Input [16]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, openGoodsMovementQuantities#21522670, openGoodsMovementAvailabilityDatetimes#21522671, openGoodsMovementShelfLifeEndDatetimes#21522672, product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
(260) ResultQueryStage
Output [16]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, stockBatchShelfLifeEndDatetimes#21518398, dayBucketDemands#21519500, pointInTimeDemands#21519501, openGoodsMovementQuantities#21522670, openGoodsMovementAvailabilityDatetimes#21522671, openGoodsMovementShelfLifeEndDatetimes#21522672, configuration#21522773, timeDependentSettingsName#21524823, timeDependentSettingsStartDatetime#21524824, timeDependentSettingsEndDatetime#21524825, timeDependentSettingsValue#21524826]
Arguments: 688
(261) Exchange
Input [3]: [product#21517975, plant#21517976, orderDateTime#21517977]
Arguments: hashpartitioning(product#21517975, plant#21517976, 25), REPARTITION_BY_NUM, [plan_id=21262574]
(262) Project
Output [4]: [plant#21517982.internalRefUUID AS _extract_internalRefUUID#21525578, product#21517983.internalRefUUID AS _extract_internalRefUUID#21525577, productionAspect#21517985.productMovementPlants.unitOfIssue.code AS _extract_code#21525575, productionAspect#21517985.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525576]
Input [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
(263) Exchange
Input [4]: [_extract_internalRefUUID#21525578, _extract_internalRefUUID#21525577, _extract_code#21525575, _extract_internalRefUUID#21525576]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262577]
(264) Project
Output [4]: [_extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
Input [4]: [_extract_internalRefUUID#21525578, _extract_internalRefUUID#21525577, _extract_code#21525575, _extract_internalRefUUID#21525576]
(265) BroadcastExchange
Input [4]: [_extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
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=21264631]
(266) BroadcastHashJoin
Left keys [4]: [coalesce(product#21517975, ), isnull(product#21517975), coalesce(plant#21517976, ), isnull(plant#21517976)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525577, ), isnull(_extract_internalRefUUID#21525577), coalesce(_extract_internalRefUUID#21525578, ), isnull(_extract_internalRefUUID#21525578)]
Join type: LeftOuter
Join condition: None
(267) Project
Output [5]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_code#21525575, _extract_internalRefUUID#21525576]
Input [7]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_code#21525575, _extract_internalRefUUID#21525576, _extract_internalRefUUID#21525577, _extract_internalRefUUID#21525578]
(268) Filter
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Condition : isnotnull(internalUUID#21518035)
(269) Project
Output [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
(270) Exchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262584]
(271) BroadcastExchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264635]
(272) BroadcastHashJoin
Left keys [1]: [product#21517975]
Right keys [1]: [internalUUID#21518035]
Join type: LeftOuter
Join condition: None
(273) Project
Output [4]: [product#21517975, plant#21517976, orderDateTime#21517977, filter(unitOfMeasureConversions#21518041, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525575) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525576)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518039.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518039.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518047]
Input [8]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_code#21525575, _extract_internalRefUUID#21525576, internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
(274) Project
Output [5]: [product#21517975, plant#21517976, orderDateTime#21517977, filteredUnitOfMeasureConversions#21518047.quantityDenominator AS _extract_quantityDenominator#21525573, filteredUnitOfMeasureConversions#21518047.quantityNumerator AS _extract_quantityNumerator#21525574]
Input [4]: [product#21517975, plant#21517976, orderDateTime#21517977, filteredUnitOfMeasureConversions#21518047]
(275) Generate
Input [5]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_quantityDenominator#21525573, _extract_quantityNumerator#21525574]
Arguments: explode(_extract_quantityNumerator#21525574), [product#21517975, plant#21517976, orderDateTime#21517977, _extract_quantityDenominator#21525573], true, [quantityNumerator#21518055]
(276) Generate
Input [5]: [product#21517975, plant#21517976, orderDateTime#21517977, _extract_quantityDenominator#21525573, quantityNumerator#21518055]
Arguments: explode(_extract_quantityDenominator#21525573), [product#21517975, plant#21517976, orderDateTime#21517977, quantityNumerator#21518055], true, [quantityDenominator#21518058]
(277) Project
Output [4]: [product#21517975, plant#21517976, orderDateTime#21517977, (cast(quantityNumerator#21518055 as double) / cast(quantityDenominator#21518058 as double)) AS outboundUnit#21518059]
Input [5]: [product#21517975, plant#21517976, orderDateTime#21517977, quantityNumerator#21518055, quantityDenominator#21518058]
(278) Project
Output [4]: [product#21517975, plant#21517976, orderDateTime#21517977, CASE WHEN (isnull(outboundUnit#21518059) OR (outboundUnit#21518059 <= 0.0)) THEN 1.0 ELSE outboundUnit#21518059 END AS outboundUnit#21518060]
Input [4]: [product#21517975, plant#21517976, orderDateTime#21517977, outboundUnit#21518059]
(279) Sort
Input [4]: [product#21517975, plant#21517976, orderDateTime#21517977, outboundUnit#21518060]
Arguments: [product#21517975 ASC NULLS FIRST, plant#21517976 ASC NULLS FIRST], false, 0
(280) Filter
Input [6]: [internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, systemId#21518148]
Condition : (isnotnull(plant#21518151.internalRefUUID) AND isnotnull(product#21518150.internalRefUUID))
(281) Project
Output [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
Input [6]: [internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, systemId#21518148]
(282) Exchange
Input [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262595]
(283) BroadcastExchange
Input [6]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153]
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=21264663]
(284) Filter
Input [2]: [marketUnit#21518061, distributionCenters#21518067]
Condition : (((marketUnit#21518061 <=> SS_Test_1) AND (size(distributionCenters#21518067, true) > 0)) AND isnotnull(distributionCenters#21518067))
(285) Project
Output [1]: [distributionCenters#21518067]
Input [2]: [marketUnit#21518061, distributionCenters#21518067]
(286) Exchange
Input [1]: [distributionCenters#21518067]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262599]
(287) Generate
Input [1]: [distributionCenters#21518067]
Arguments: explode(distributionCenters#21518067), false, [distributionCenters#21518085]
(288) Filter
Input [1]: [distributionCenters#21518085]
Condition : (((size(distributionCenters#21518085.storageLocations, true) > 0) AND isnotnull(distributionCenters#21518085.storageLocations)) AND isnotnull(distributionCenters#21518085.internalRefUUID))
(289) Project
Output [2]: [distributionCenters#21518085.internalRefUUID AS _extract_internalRefUUID#21525011, distributionCenters#21518085.storageLocations AS _extract_storageLocations#21525012]
Input [1]: [distributionCenters#21518085]
(290) Generate
Input [2]: [_extract_internalRefUUID#21525011, _extract_storageLocations#21525012]
Arguments: explode(_extract_storageLocations#21525012), [_extract_internalRefUUID#21525011], false, [storageLocations#21518092]
(291) Project
Output [3]: [_extract_internalRefUUID#21525011 AS plantUuid#21518087, storageLocations#21518092.id AS storageLocId#21518093, storageLocations#21518092.internalRefUUID AS storageLocUuid#21518094]
Input [2]: [_extract_internalRefUUID#21525011, storageLocations#21518092]
(292) BroadcastExchange
Input [3]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264659]
(293) Filter
Input [2]: [product#21518363, plant#21518364]
Condition : isnotnull(plant#21518364)
(294) Exchange
Input [2]: [product#21518363, plant#21518364]
Arguments: hashpartitioning(product#21518363, plant#21518364, 25), REPARTITION_BY_NUM, [plan_id=21263965]
(295) Scan parquet
Output [4]: [plant#21518369, product#21518370, productionAspect#21518372, systemId#21518367]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(296) Project
Output [4]: [plant#21518369.internalRefUUID AS _extract_internalRefUUID#21525582, product#21518370.internalRefUUID AS _extract_internalRefUUID#21525581, productionAspect#21518372.productMovementPlants.unitOfIssue.code AS _extract_code#21525579, productionAspect#21518372.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525580]
Input [4]: [plant#21518369, product#21518370, productionAspect#21518372, systemId#21518367]
(297) Exchange
Input [4]: [_extract_internalRefUUID#21525582, _extract_internalRefUUID#21525581, _extract_code#21525579, _extract_internalRefUUID#21525580]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262611]
(298) Project
Output [4]: [_extract_code#21525579, _extract_internalRefUUID#21525580, _extract_internalRefUUID#21525581, _extract_internalRefUUID#21525582]
Input [4]: [_extract_internalRefUUID#21525582, _extract_internalRefUUID#21525581, _extract_code#21525579, _extract_internalRefUUID#21525580]
(299) BroadcastExchange
Input [4]: [_extract_code#21525579, _extract_internalRefUUID#21525580, _extract_internalRefUUID#21525581, _extract_internalRefUUID#21525582]
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=21264643]
(300) BroadcastHashJoin
Left keys [4]: [coalesce(product#21518363, ), isnull(product#21518363), coalesce(plant#21518364, ), isnull(plant#21518364)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525581, ), isnull(_extract_internalRefUUID#21525581), coalesce(_extract_internalRefUUID#21525582, ), isnull(_extract_internalRefUUID#21525582)]
Join type: LeftOuter
Join condition: None
(301) Project
Output [4]: [product#21518363, plant#21518364, _extract_code#21525579, _extract_internalRefUUID#21525580]
Input [6]: [product#21518363, plant#21518364, _extract_code#21525579, _extract_internalRefUUID#21525580, _extract_internalRefUUID#21525581, _extract_internalRefUUID#21525582]
(302) Scan parquet
Output [4]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383, systemId#21518376]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(303) Filter
Input [4]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383, systemId#21518376]
Condition : isnotnull(internalUUID#21518377)
(304) Project
Output [3]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
Input [4]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383, systemId#21518376]
(305) Exchange
Input [3]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262618]
(306) BroadcastExchange
Input [3]: [internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264647]
(307) BroadcastHashJoin
Left keys [1]: [product#21518363]
Right keys [1]: [internalUUID#21518377]
Join type: LeftOuter
Join condition: None
(308) Project
Output [2]: [plant#21518364, filter(unitOfMeasureConversions#21518383, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525579) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525580)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518381.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518381.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518388]
Input [7]: [product#21518363, plant#21518364, _extract_code#21525579, _extract_internalRefUUID#21525580, internalUUID#21518377, baseUnitOfMeasure#21518381, unitOfMeasureConversions#21518383]
(309) Generate
Input [2]: [plant#21518364, filteredUnitOfMeasureConversions#21518388]
Arguments: explode(filteredUnitOfMeasureConversions#21518388.quantityNumerator), [plant#21518364, filteredUnitOfMeasureConversions#21518388], true, [quantityNumerator#21518389]
(310) Project
Output [2]: [plant#21518364, filteredUnitOfMeasureConversions#21518388.quantityDenominator AS _extract_quantityDenominator#21525013]
Input [3]: [plant#21518364, filteredUnitOfMeasureConversions#21518388, quantityNumerator#21518389]
(311) Generate
Input [2]: [plant#21518364, _extract_quantityDenominator#21525013]
Arguments: explode(_extract_quantityDenominator#21525013), [plant#21518364], true, [quantityDenominator#21518390]
(312) Project
Output [1]: [plant#21518364]
Input [2]: [plant#21518364, quantityDenominator#21518390]
(313) HashAggregate
Input [1]: [plant#21518364]
Keys [1]: [plant#21518364]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518364]
(314) Exchange
Input [1]: [plant#21518364]
Arguments: hashpartitioning(plant#21518364, 25), ENSURE_REQUIREMENTS, [plan_id=21264656]
(315) HashAggregate
Input [1]: [plant#21518364]
Keys [1]: [plant#21518364]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518364]
(316) BroadcastHashJoin
Left keys [1]: [plantUuid#21518087]
Right keys [1]: [plant#21518364]
Join type: Inner
Join condition: None
(317) Project
Output [3]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Input [4]: [plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094, plant#21518364]
(318) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21518151.internalRefUUID, ), isnull(plant#21518151.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21518087, ), isnull(plantUuid#21518087)]
Join type: Inner
Join condition: None
(319) Generate
Input [9]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, stockQuantities#21518153, plantUuid#21518087, storageLocId#21518093, storageLocUuid#21518094]
Arguments: explode(filter(stockQuantities#21518153, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21518094) AND (lambda x#21518157.storageLocation.Id = storageLocId#21518093)), lambda x#21518157, false))), [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, plantUuid#21518087], false, [stockQuantity#21518158]
(320) ObjectHashAggregate
Input [7]: [systemId#21518148, internalUUID#21518149, product#21518150, plant#21518151, calculationDateTime#21518152, plantUuid#21518087, stockQuantity#21518158]
Keys [5]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148]
Functions [2]: [partial_first(calculationDateTime#21518152, false), partial_collect_list(stockQuantity#21518158, 0, 0)]
Aggregate Attributes [3]: [first#21526558, valueSet#21526559, buf#21526560]
Results [8]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148, first#21526561, valueSet#21526562, buf#21526563]
(321) ObjectHashAggregate
Input [8]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148, first#21526561, valueSet#21526562, buf#21526563]
Keys [5]: [plantUuid#21518087, internalUUID#21518149, plant#21518151, product#21518150, systemId#21518148]
Functions [2]: [first(calculationDateTime#21518152, false), collect_list(stockQuantity#21518158, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21518152)()#21518172, collect_list(stockQuantity#21518158, 0, 0)#21518173]
Results [4]: [product#21518150, plant#21518151, first(calculationDateTime#21518152)()#21518172 AS calculationDateTime#21518159, collect_list(stockQuantity#21518158, 0, 0)#21518173 AS stockQuantities#21518160]
(322) Filter
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantities#21518160]
Condition : ((size(stockQuantities#21518160, true) > 0) AND isnotnull(calculationDateTime#21518159))
(323) Generate
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantities#21518160]
Arguments: explode(stockQuantities#21518160), [product#21518150, plant#21518151, calculationDateTime#21518159], false, [stockQuantity#21518175]
(324) Filter
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantity#21518175]
Condition : (((isnotnull(stockQuantity#21518175.specialStockIndicator.code) AND isnotnull(stockQuantity#21518175.stockType.code)) AND (stockQuantity#21518175.specialStockIndicator.code = )) AND (stockQuantity#21518175.stockType.code = 01))
(325) Project
Output [5]: [plant#21518151.internalRefUUID AS plantUuid#21518177, product#21518150.internalRefUUID AS productUuid#21518179, calculationDateTime#21518159, stockQuantity#21518175.storagelocation.id AS storageLocId#21518180, stockQuantity#21518175.quantity.measure AS quantity#21518182]
Input [4]: [product#21518150, plant#21518151, calculationDateTime#21518159, stockQuantity#21518175]
(326) Exchange
Input [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: hashpartitioning(productUuid#21518179, plantUuid#21518177, 25), ENSURE_REQUIREMENTS, [plan_id=21264685]
(327) Sort
Input [5]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182]
Arguments: [productUuid#21518179 ASC NULLS FIRST, plantUuid#21518177 ASC NULLS FIRST], false, 0
(328) Filter
Input [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Condition : ((isnotnull(orderDateTime#21518196) AND isnotnull(plant#21518195)) AND isnotnull(product#21518194))
(329) Exchange
Input [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Arguments: hashpartitioning(product#21518194, plant#21518195, 25), REPARTITION_BY_NUM, [plan_id=21263986]
(330) Scan parquet
Output [4]: [plant#21518200, product#21518201, productionAspect#21518203, systemId#21518198]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(331) Project
Output [4]: [plant#21518200.internalRefUUID AS _extract_internalRefUUID#21525583, product#21518201.internalRefUUID AS _extract_internalRefUUID#21525584, productionAspect#21518203.productMovementPlants.unitOfIssue.code AS _extract_code#21525585, productionAspect#21518203.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525586]
Input [4]: [plant#21518200, product#21518201, productionAspect#21518203, systemId#21518198]
(332) Exchange
Input [4]: [_extract_internalRefUUID#21525583, _extract_internalRefUUID#21525584, _extract_code#21525585, _extract_internalRefUUID#21525586]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262643]
(333) Project
Output [4]: [_extract_code#21525585, _extract_internalRefUUID#21525586, _extract_internalRefUUID#21525584, _extract_internalRefUUID#21525583]
Input [4]: [_extract_internalRefUUID#21525583, _extract_internalRefUUID#21525584, _extract_code#21525585, _extract_internalRefUUID#21525586]
(334) BroadcastExchange
Input [4]: [_extract_code#21525585, _extract_internalRefUUID#21525586, _extract_internalRefUUID#21525584, _extract_internalRefUUID#21525583]
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=21264672]
(335) BroadcastHashJoin
Left keys [4]: [coalesce(product#21518194, ), isnull(product#21518194), coalesce(plant#21518195, ), isnull(plant#21518195)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525584, ), isnull(_extract_internalRefUUID#21525584), coalesce(_extract_internalRefUUID#21525583, ), isnull(_extract_internalRefUUID#21525583)]
Join type: LeftOuter
Join condition: None
(336) Project
Output [5]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_code#21525585, _extract_internalRefUUID#21525586]
Input [7]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_code#21525585, _extract_internalRefUUID#21525586, _extract_internalRefUUID#21525584, _extract_internalRefUUID#21525583]
(337) Scan parquet
Output [4]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214, systemId#21518207]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(338) Filter
Input [4]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214, systemId#21518207]
Condition : isnotnull(internalUUID#21518208)
(339) Project
Output [3]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
Input [4]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214, systemId#21518207]
(340) Exchange
Input [3]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262650]
(341) BroadcastExchange
Input [3]: [internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264676]
(342) BroadcastHashJoin
Left keys [1]: [product#21518194]
Right keys [1]: [internalUUID#21518208]
Join type: LeftOuter
Join condition: None
(343) Project
Output [4]: [product#21518194, plant#21518195, orderDateTime#21518196, filter(unitOfMeasureConversions#21518214, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525585) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525586)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518212.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518212.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518219]
Input [8]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_code#21525585, _extract_internalRefUUID#21525586, internalUUID#21518208, baseUnitOfMeasure#21518212, unitOfMeasureConversions#21518214]
(344) Generate
Input [4]: [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219]
Arguments: explode(filteredUnitOfMeasureConversions#21518219.quantityNumerator), [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219], true, [quantityNumerator#21518220]
(345) Project
Output [4]: [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219.quantityDenominator AS _extract_quantityDenominator#21525020]
Input [5]: [product#21518194, plant#21518195, orderDateTime#21518196, filteredUnitOfMeasureConversions#21518219, quantityNumerator#21518220]
(346) Generate
Input [4]: [product#21518194, plant#21518195, orderDateTime#21518196, _extract_quantityDenominator#21525020]
Arguments: explode(_extract_quantityDenominator#21525020), [product#21518194, plant#21518195, orderDateTime#21518196], true, [quantityDenominator#21518221]
(347) Project
Output [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Input [4]: [product#21518194, plant#21518195, orderDateTime#21518196, quantityDenominator#21518221]
(348) Sort
Input [3]: [product#21518194, plant#21518195, orderDateTime#21518196]
Arguments: [product#21518194 ASC NULLS FIRST, plant#21518195 ASC NULLS FIRST], false, 0
(349) SortMergeJoin
Left keys [2]: [productUuid#21518179, plantUuid#21518177]
Right keys [2]: [product#21518194, plant#21518195]
Join type: Inner
Join condition: (calculationDateTime#21518159 <= orderDateTime#21518196)
(350) Project
Output [5]: [plantUuid#21518177 AS plant#21518227, productUuid#21518179 AS product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Input [8]: [plantUuid#21518177, productUuid#21518179, calculationDateTime#21518159, storageLocId#21518180, quantity#21518182, product#21518194, plant#21518195, orderDateTime#21518196]
(351) Exchange
Input [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Arguments: hashpartitioning(coalesce(plant#21518227, ), isnull(plant#21518227), coalesce(product#21518228, ), isnull(product#21518228), coalesce(storageLocId#21518180, ), isnull(storageLocId#21518180), coalesce(calculationDateTime#21518159, 1970-01-01 00:00:00), isnull(calculationDateTime#21518159), 25), ENSURE_REQUIREMENTS, [plan_id=21264741]
(352) Sort
Input [5]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182]
Arguments: [coalesce(plant#21518227, ) ASC NULLS FIRST, isnull(plant#21518227) ASC NULLS FIRST, coalesce(product#21518228, ) ASC NULLS FIRST, isnull(product#21518228) ASC NULLS FIRST, coalesce(storageLocId#21518180, ) ASC NULLS FIRST, isnull(storageLocId#21518180) ASC NULLS FIRST, coalesce(calculationDateTime#21518159, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21518159) ASC NULLS FIRST], false, 0
(353) Scan parquet
Output [6]: [internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241, systemId#21518236]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(354) Filter
Input [6]: [internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241, systemId#21518236]
Condition : (isnotnull(plant#21518239.internalRefUUID) AND isnotnull(product#21518238.internalRefUUID))
(355) Project
Output [6]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241]
Input [6]: [internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241, systemId#21518236]
(356) Exchange
Input [6]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262662]
(357) BroadcastExchange
Input [6]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241]
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=21264710]
(358) Scan parquet
Output [2]: [marketUnit#21518242, distributionCenters#21518248]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(359) Filter
Input [2]: [marketUnit#21518242, distributionCenters#21518248]
Condition : (((marketUnit#21518242 <=> SS_Test_1) AND (size(distributionCenters#21518248, true) > 0)) AND isnotnull(distributionCenters#21518248))
(360) Project
Output [1]: [distributionCenters#21518248]
Input [2]: [marketUnit#21518242, distributionCenters#21518248]
(361) Exchange
Input [1]: [distributionCenters#21518248]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262666]
(362) Generate
Input [1]: [distributionCenters#21518248]
Arguments: explode(distributionCenters#21518248), false, [distributionCenters#21518264]
(363) Filter
Input [1]: [distributionCenters#21518264]
Condition : (((size(distributionCenters#21518264.storageLocations, true) > 0) AND isnotnull(distributionCenters#21518264.storageLocations)) AND isnotnull(distributionCenters#21518264.internalRefUUID))
(364) Project
Output [2]: [distributionCenters#21518264.internalRefUUID AS _extract_internalRefUUID#21525027, distributionCenters#21518264.storageLocations AS _extract_storageLocations#21525028]
Input [1]: [distributionCenters#21518264]
(365) Generate
Input [2]: [_extract_internalRefUUID#21525027, _extract_storageLocations#21525028]
Arguments: explode(_extract_storageLocations#21525028), [_extract_internalRefUUID#21525027], false, [storageLocations#21518265]
(366) Project
Output [3]: [_extract_internalRefUUID#21525027 AS plantUuid#21518267, storageLocations#21518265.id AS storageLocId#21518268, storageLocations#21518265.internalRefUUID AS storageLocUuid#21518269]
Input [2]: [_extract_internalRefUUID#21525027, storageLocations#21518265]
(367) BroadcastExchange
Input [3]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264706]
(368) Scan parquet
Output [2]: [product#21518270, plant#21518271]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(369) Filter
Input [2]: [product#21518270, plant#21518271]
Condition : isnotnull(plant#21518271)
(370) Exchange
Input [2]: [product#21518270, plant#21518271]
Arguments: hashpartitioning(product#21518270, plant#21518271, 25), REPARTITION_BY_NUM, [plan_id=21263997]
(371) Scan parquet
Output [4]: [plant#21518276, product#21518277, productionAspect#21518279, systemId#21518274]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(372) Project
Output [4]: [plant#21518276.internalRefUUID AS _extract_internalRefUUID#21525588, product#21518277.internalRefUUID AS _extract_internalRefUUID#21525587, productionAspect#21518279.productMovementPlants.unitOfIssue.code AS _extract_code#21525589, productionAspect#21518279.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525590]
Input [4]: [plant#21518276, product#21518277, productionAspect#21518279, systemId#21518274]
(373) Exchange
Input [4]: [_extract_internalRefUUID#21525588, _extract_internalRefUUID#21525587, _extract_code#21525589, _extract_internalRefUUID#21525590]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262678]
(374) Project
Output [4]: [_extract_code#21525589, _extract_internalRefUUID#21525590, _extract_internalRefUUID#21525587, _extract_internalRefUUID#21525588]
Input [4]: [_extract_internalRefUUID#21525588, _extract_internalRefUUID#21525587, _extract_code#21525589, _extract_internalRefUUID#21525590]
(375) BroadcastExchange
Input [4]: [_extract_code#21525589, _extract_internalRefUUID#21525590, _extract_internalRefUUID#21525587, _extract_internalRefUUID#21525588]
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=21264690]
(376) BroadcastHashJoin
Left keys [4]: [coalesce(product#21518270, ), isnull(product#21518270), coalesce(plant#21518271, ), isnull(plant#21518271)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525587, ), isnull(_extract_internalRefUUID#21525587), coalesce(_extract_internalRefUUID#21525588, ), isnull(_extract_internalRefUUID#21525588)]
Join type: LeftOuter
Join condition: None
(377) Project
Output [4]: [product#21518270, plant#21518271, _extract_code#21525589, _extract_internalRefUUID#21525590]
Input [6]: [product#21518270, plant#21518271, _extract_code#21525589, _extract_internalRefUUID#21525590, _extract_internalRefUUID#21525587, _extract_internalRefUUID#21525588]
(378) Scan parquet
Output [4]: [internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290, systemId#21518283]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(379) Filter
Input [4]: [internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290, systemId#21518283]
Condition : isnotnull(internalUUID#21518284)
(380) Project
Output [3]: [internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290]
Input [4]: [internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290, systemId#21518283]
(381) Exchange
Input [3]: [internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262685]
(382) BroadcastExchange
Input [3]: [internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264694]
(383) BroadcastHashJoin
Left keys [1]: [product#21518270]
Right keys [1]: [internalUUID#21518284]
Join type: LeftOuter
Join condition: None
(384) Project
Output [2]: [plant#21518271, filter(unitOfMeasureConversions#21518290, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525589) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525590)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518288.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518288.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518295]
Input [7]: [product#21518270, plant#21518271, _extract_code#21525589, _extract_internalRefUUID#21525590, internalUUID#21518284, baseUnitOfMeasure#21518288, unitOfMeasureConversions#21518290]
(385) Generate
Input [2]: [plant#21518271, filteredUnitOfMeasureConversions#21518295]
Arguments: explode(filteredUnitOfMeasureConversions#21518295.quantityNumerator), [plant#21518271, filteredUnitOfMeasureConversions#21518295], true, [quantityNumerator#21518296]
(386) Project
Output [2]: [plant#21518271, filteredUnitOfMeasureConversions#21518295.quantityDenominator AS _extract_quantityDenominator#21525029]
Input [3]: [plant#21518271, filteredUnitOfMeasureConversions#21518295, quantityNumerator#21518296]
(387) Generate
Input [2]: [plant#21518271, _extract_quantityDenominator#21525029]
Arguments: explode(_extract_quantityDenominator#21525029), [plant#21518271], true, [quantityDenominator#21518297]
(388) Project
Output [1]: [plant#21518271]
Input [2]: [plant#21518271, quantityDenominator#21518297]
(389) HashAggregate
Input [1]: [plant#21518271]
Keys [1]: [plant#21518271]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518271]
(390) Exchange
Input [1]: [plant#21518271]
Arguments: hashpartitioning(plant#21518271, 25), ENSURE_REQUIREMENTS, [plan_id=21264703]
(391) HashAggregate
Input [1]: [plant#21518271]
Keys [1]: [plant#21518271]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21518271]
(392) BroadcastHashJoin
Left keys [1]: [plantUuid#21518267]
Right keys [1]: [plant#21518271]
Join type: Inner
Join condition: None
(393) Project
Output [3]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
Input [4]: [plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269, plant#21518271]
(394) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21518239.internalRefUUID, ), isnull(plant#21518239.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21518267, ), isnull(plantUuid#21518267)]
Join type: Inner
Join condition: None
(395) Generate
Input [9]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, stockQuantities#21518241, plantUuid#21518267, storageLocId#21518268, storageLocUuid#21518269]
Arguments: explode(filter(stockQuantities#21518241, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21518269) AND (lambda x#21518157.storageLocation.Id = storageLocId#21518268)), lambda x#21518157, false))), [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, plantUuid#21518267], false, [stockQuantity#21518300]
(396) ObjectHashAggregate
Input [7]: [systemId#21518236, internalUUID#21518237, product#21518238, plant#21518239, calculationDateTime#21518240, plantUuid#21518267, stockQuantity#21518300]
Keys [5]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236]
Functions [2]: [partial_first(calculationDateTime#21518240, false), partial_collect_list(stockQuantity#21518300, 0, 0)]
Aggregate Attributes [3]: [first#21526566, valueSet#21526567, buf#21526568]
Results [8]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236, first#21526569, valueSet#21526570, buf#21526571]
(397) ObjectHashAggregate
Input [8]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236, first#21526569, valueSet#21526570, buf#21526571]
Keys [5]: [plantUuid#21518267, internalUUID#21518237, plant#21518239, product#21518238, systemId#21518236]
Functions [2]: [first(calculationDateTime#21518240, false), collect_list(stockQuantity#21518300, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21518240)()#21518172, collect_list(stockQuantity#21518300, 0, 0)#21518173]
Results [4]: [product#21518238, plant#21518239, first(calculationDateTime#21518240)()#21518172 AS calculationDateTime#21518301, collect_list(stockQuantity#21518300, 0, 0)#21518173 AS stockQuantities#21518302]
(398) Filter
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantities#21518302]
Condition : ((size(stockQuantities#21518302, true) > 0) AND isnotnull(calculationDateTime#21518301))
(399) Generate
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantities#21518302]
Arguments: explode(stockQuantities#21518302), [product#21518238, plant#21518239, calculationDateTime#21518301], false, [stockQuantity#21518303]
(400) Filter
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantity#21518303]
Condition : (((isnotnull(stockQuantity#21518303.specialStockIndicator.code) AND isnotnull(stockQuantity#21518303.stockType.code)) AND (stockQuantity#21518303.specialStockIndicator.code = )) AND (stockQuantity#21518303.stockType.code = 01))
(401) Project
Output [4]: [plant#21518239.internalRefUUID AS plantUuid#21518305, product#21518238.internalRefUUID AS productUuid#21518307, calculationDateTime#21518301, stockQuantity#21518303.storagelocation.id AS storageLocId#21518308]
Input [4]: [product#21518238, plant#21518239, calculationDateTime#21518301, stockQuantity#21518303]
(402) Exchange
Input [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: hashpartitioning(productUuid#21518307, plantUuid#21518305, 25), ENSURE_REQUIREMENTS, [plan_id=21264732]
(403) Sort
Input [4]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308]
Arguments: [productUuid#21518307 ASC NULLS FIRST, plantUuid#21518305 ASC NULLS FIRST], false, 0
(404) Scan parquet
Output [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(405) Filter
Input [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Condition : ((isnotnull(orderDateTime#21518315) AND isnotnull(plant#21518314)) AND isnotnull(product#21518313))
(406) Exchange
Input [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Arguments: hashpartitioning(product#21518313, plant#21518314, 25), REPARTITION_BY_NUM, [plan_id=21264018]
(407) Scan parquet
Output [4]: [plant#21518319, product#21518320, productionAspect#21518322, systemId#21518317]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(408) Project
Output [4]: [plant#21518319.internalRefUUID AS _extract_internalRefUUID#21525593, product#21518320.internalRefUUID AS _extract_internalRefUUID#21525594, productionAspect#21518322.productMovementPlants.unitOfIssue.code AS _extract_code#21525591, productionAspect#21518322.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525592]
Input [4]: [plant#21518319, product#21518320, productionAspect#21518322, systemId#21518317]
(409) Exchange
Input [4]: [_extract_internalRefUUID#21525593, _extract_internalRefUUID#21525594, _extract_code#21525591, _extract_internalRefUUID#21525592]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262710]
(410) Project
Output [4]: [_extract_code#21525591, _extract_internalRefUUID#21525592, _extract_internalRefUUID#21525594, _extract_internalRefUUID#21525593]
Input [4]: [_extract_internalRefUUID#21525593, _extract_internalRefUUID#21525594, _extract_code#21525591, _extract_internalRefUUID#21525592]
(411) BroadcastExchange
Input [4]: [_extract_code#21525591, _extract_internalRefUUID#21525592, _extract_internalRefUUID#21525594, _extract_internalRefUUID#21525593]
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=21264719]
(412) BroadcastHashJoin
Left keys [4]: [coalesce(product#21518313, ), isnull(product#21518313), coalesce(plant#21518314, ), isnull(plant#21518314)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525594, ), isnull(_extract_internalRefUUID#21525594), coalesce(_extract_internalRefUUID#21525593, ), isnull(_extract_internalRefUUID#21525593)]
Join type: LeftOuter
Join condition: None
(413) Project
Output [5]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_code#21525591, _extract_internalRefUUID#21525592]
Input [7]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_code#21525591, _extract_internalRefUUID#21525592, _extract_internalRefUUID#21525594, _extract_internalRefUUID#21525593]
(414) Scan parquet
Output [4]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333, systemId#21518326]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(415) Filter
Input [4]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333, systemId#21518326]
Condition : isnotnull(internalUUID#21518327)
(416) Project
Output [3]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
Input [4]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333, systemId#21518326]
(417) Exchange
Input [3]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262717]
(418) BroadcastExchange
Input [3]: [internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264723]
(419) BroadcastHashJoin
Left keys [1]: [product#21518313]
Right keys [1]: [internalUUID#21518327]
Join type: LeftOuter
Join condition: None
(420) Project
Output [4]: [product#21518313, plant#21518314, orderDateTime#21518315, filter(unitOfMeasureConversions#21518333, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525591) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525592)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518331.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518331.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518338]
Input [8]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_code#21525591, _extract_internalRefUUID#21525592, internalUUID#21518327, baseUnitOfMeasure#21518331, unitOfMeasureConversions#21518333]
(421) Generate
Input [4]: [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338]
Arguments: explode(filteredUnitOfMeasureConversions#21518338.quantityNumerator), [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338], true, [quantityNumerator#21518339]
(422) Project
Output [4]: [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338.quantityDenominator AS _extract_quantityDenominator#21525036]
Input [5]: [product#21518313, plant#21518314, orderDateTime#21518315, filteredUnitOfMeasureConversions#21518338, quantityNumerator#21518339]
(423) Generate
Input [4]: [product#21518313, plant#21518314, orderDateTime#21518315, _extract_quantityDenominator#21525036]
Arguments: explode(_extract_quantityDenominator#21525036), [product#21518313, plant#21518314, orderDateTime#21518315], true, [quantityDenominator#21518340]
(424) Project
Output [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Input [4]: [product#21518313, plant#21518314, orderDateTime#21518315, quantityDenominator#21518340]
(425) Sort
Input [3]: [product#21518313, plant#21518314, orderDateTime#21518315]
Arguments: [product#21518313 ASC NULLS FIRST, plant#21518314 ASC NULLS FIRST], false, 0
(426) SortMergeJoin
Left keys [2]: [productUuid#21518307, plantUuid#21518305]
Right keys [2]: [product#21518313, plant#21518314]
Join type: Inner
Join condition: (calculationDateTime#21518301 <= orderDateTime#21518315)
(427) Project
Output [4]: [plantUuid#21518305 AS plant#21518343, productUuid#21518307 AS product#21518344, storageLocId#21518308, calculationDateTime#21518301]
Input [7]: [plantUuid#21518305, productUuid#21518307, calculationDateTime#21518301, storageLocId#21518308, product#21518313, plant#21518314, orderDateTime#21518315]
(428) HashAggregate
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, calculationDateTime#21518301]
Keys [3]: [plant#21518343, product#21518344, storageLocId#21518308]
Functions [1]: [partial_max(calculationDateTime#21518301)]
Aggregate Attributes [1]: [max#21526564]
Results [4]: [plant#21518343, product#21518344, storageLocId#21518308, max#21526565]
(429) HashAggregate
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, max#21526565]
Keys [3]: [plant#21518343, product#21518344, storageLocId#21518308]
Functions [1]: [max(calculationDateTime#21518301)]
Aggregate Attributes [1]: [max(calculationDateTime#21518301)#21518235]
Results [4]: [plant#21518343, product#21518344, storageLocId#21518308, max(calculationDateTime#21518301)#21518235 AS max_calc_datetime#21518229]
(430) Exchange
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
Arguments: hashpartitioning(coalesce(plant#21518343, ), isnull(plant#21518343), coalesce(product#21518344, ), isnull(product#21518344), coalesce(storageLocId#21518308, ), isnull(storageLocId#21518308), coalesce(max_calc_datetime#21518229, 1970-01-01 00:00:00), isnull(max_calc_datetime#21518229), 25), ENSURE_REQUIREMENTS, [plan_id=21264742]
(431) Sort
Input [4]: [plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
Arguments: [coalesce(plant#21518343, ) ASC NULLS FIRST, isnull(plant#21518343) ASC NULLS FIRST, coalesce(product#21518344, ) ASC NULLS FIRST, isnull(product#21518344) ASC NULLS FIRST, coalesce(storageLocId#21518308, ) ASC NULLS FIRST, isnull(storageLocId#21518308) ASC NULLS FIRST, coalesce(max_calc_datetime#21518229, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21518229) ASC NULLS FIRST], false, 0
(432) SortMergeJoin
Left keys [8]: [coalesce(plant#21518227, ), isnull(plant#21518227), coalesce(product#21518228, ), isnull(product#21518228), coalesce(storageLocId#21518180, ), isnull(storageLocId#21518180), coalesce(calculationDateTime#21518159, 1970-01-01 00:00:00), isnull(calculationDateTime#21518159)]
Right keys [8]: [coalesce(plant#21518343, ), isnull(plant#21518343), coalesce(product#21518344, ), isnull(product#21518344), coalesce(storageLocId#21518308, ), isnull(storageLocId#21518308), coalesce(max_calc_datetime#21518229, 1970-01-01 00:00:00), isnull(max_calc_datetime#21518229)]
Join type: Inner
Join condition: None
(433) Project
Output [4]: [plant#21518227, product#21518228, calculationDateTime#21518159, quantity#21518182]
Input [9]: [plant#21518227, product#21518228, storageLocId#21518180, calculationDateTime#21518159, quantity#21518182, plant#21518343, product#21518344, storageLocId#21518308, max_calc_datetime#21518229]
(434) HashAggregate
Input [4]: [plant#21518227, product#21518228, calculationDateTime#21518159, quantity#21518182]
Keys [2]: [product#21518228, plant#21518227]
Functions [2]: [partial_min(calculationDateTime#21518159), partial_sum(quantity#21518182)]
Aggregate Attributes [2]: [min#21526554, sum#21526555]
Results [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
(435) Exchange
Input [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
Arguments: hashpartitioning(product#21518228, plant#21518227, 25), ENSURE_REQUIREMENTS, [plan_id=21264749]
(436) HashAggregate
Input [4]: [product#21518228, plant#21518227, min#21526556, sum#21526557]
Keys [2]: [product#21518228, plant#21518227]
Functions [2]: [min(calculationDateTime#21518159), sum(quantity#21518182)]
Aggregate Attributes [2]: [min(calculationDateTime#21518159)#21518361, sum(quantity#21518182)#21518360]
Results [4]: [product#21518228, plant#21518227, min(calculationDateTime#21518159)#21518361 AS minCalculationDateTime#21518354, round(sum(quantity#21518182)#21518360, 0) AS roundedQuantitySum#21518362]
(437) Sort
Input [4]: [product#21518228, plant#21518227, minCalculationDateTime#21518354, roundedQuantitySum#21518362]
Arguments: [product#21518228 ASC NULLS FIRST, plant#21518227 ASC NULLS FIRST], false, 0
(438) SortMergeJoin
Left keys [2]: [product#21517975, plant#21517976]
Right keys [2]: [product#21518228, plant#21518227]
Join type: LeftOuter
Join condition: None
(439) Project
Output [5]: [product#21517975, plant#21517976, outboundUnit#21518060, CASE WHEN isnotnull(minCalculationDateTime#21518354) THEN minCalculationDateTime#21518354 ELSE orderDateTime#21517977 END AS stockDatetime#21518396, CASE WHEN isnotnull(roundedQuantitySum#21518362) THEN array(roundedQuantitySum#21518362) ELSE [0.0] END AS stockBatchQuantities#21518397]
Input [8]: [product#21517975, plant#21517976, orderDateTime#21517977, outboundUnit#21518060, product#21518228, plant#21518227, minCalculationDateTime#21518354, roundedQuantitySum#21518362]
(440) Exchange
Input [5]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397]
Arguments: hashpartitioning(coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975), 25), ENSURE_REQUIREMENTS, [plan_id=21264902]
(441) Sort
Input [5]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397]
Arguments: [coalesce(plant#21517976, ) ASC NULLS FIRST, isnull(plant#21517976) ASC NULLS FIRST, coalesce(product#21517975, ) ASC NULLS FIRST, isnull(product#21517975) ASC NULLS FIRST], false, 0
(442) Scan parquet
Output [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(443) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), REPARTITION_BY_NUM, [plan_id=21262735]
(444) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503), 25), ENSURE_REQUIREMENTS, [plan_id=21264758]
(445) Sort
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: [coalesce(product#21519502, ) ASC NULLS FIRST, isnull(product#21519502) ASC NULLS FIRST, coalesce(plant#21519503, ) ASC NULLS FIRST, isnull(plant#21519503) ASC NULLS FIRST], false, 0
(446) Project
Output [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Input [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
(447) Exchange
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262738]
(448) Project
Output [1]: [struct(systemId, systemId#21519506, internalUUID, internalUUID#21519507, plant, plant#21519508, product, product#21519509, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21519510, productionAspect, productionAspect#21519511, salesPlant, salesPlant#21519512, listing, listing#21519513) AS productPlant#21519514]
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
(449) Exchange
Input [1]: [productPlant#21519514]
Arguments: hashpartitioning(coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21264759]
(450) Sort
Input [1]: [productPlant#21519514]
Arguments: [coalesce(productPlant#21519514.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21519514.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(451) SortMergeJoin
Left keys [4]: [coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [4]: [coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(452) Scan parquet
Output [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(453) Filter
Input [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
Condition : isnotnull(internalUUID#21519516)
(454) Project
Output [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Input [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
(455) Exchange
Input [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262744]
(456) BroadcastExchange
Input [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264764]
(457) BroadcastHashJoin
Left keys [1]: [product#21519502]
Right keys [1]: [internalUUID#21519516]
Join type: LeftOuter
Join condition: None
(458) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filter(unitOfMeasureConversions#21519522, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519520.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519520.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519527]
Input [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
(459) Project
Output [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527.quantityDenominator AS _extract_quantityDenominator#21525595, filteredUnitOfMeasureConversions#21519527.quantityNumerator AS _extract_quantityNumerator#21525596]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527]
(460) Generate
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21525595, _extract_quantityNumerator#21525596]
Arguments: explode(_extract_quantityNumerator#21525596), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21525595], true, [quantityNumerator#21519528]
(461) Generate
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21525595, quantityNumerator#21519528]
Arguments: explode(_extract_quantityDenominator#21525595), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528], true, [quantityDenominator#21519529]
(462) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, (cast(quantityNumerator#21519528 as double) / cast(quantityDenominator#21519529 as double)) AS outboundUnit#21519530]
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528, quantityDenominator#21519529]
(463) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, CASE WHEN (isnull(outboundUnit#21519530) OR (outboundUnit#21519530 <= 0.0)) THEN 1.0 ELSE outboundUnit#21519530 END AS outboundUnit#21519531]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519530]
(464) Exchange
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), ENSURE_REQUIREMENTS, [plan_id=21264882]
(465) Sort
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: [product#21519502 ASC NULLS FIRST, plant#21519503 ASC NULLS FIRST], false, 0
(466) Scan parquet
Output [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(467) Filter
Input [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
Condition : (isnotnull(plant#21519535.internalRefUUID) AND isnotnull(product#21519534.internalRefUUID))
(468) Project
Output [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Input [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
(469) Exchange
Input [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262755]
(470) BroadcastExchange
Input [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
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=21264792]
(471) Scan parquet
Output [2]: [marketUnit#21519538, distributionCenters#21519544]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(472) Filter
Input [2]: [marketUnit#21519538, distributionCenters#21519544]
Condition : (((marketUnit#21519538 <=> SS_Test_1) AND (size(distributionCenters#21519544, true) > 0)) AND isnotnull(distributionCenters#21519544))
(473) Project
Output [1]: [distributionCenters#21519544]
Input [2]: [marketUnit#21519538, distributionCenters#21519544]
(474) Exchange
Input [1]: [distributionCenters#21519544]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262759]
(475) Generate
Input [1]: [distributionCenters#21519544]
Arguments: explode(distributionCenters#21519544), false, [distributionCenters#21519560]
(476) Filter
Input [1]: [distributionCenters#21519560]
Condition : (((size(distributionCenters#21519560.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519560.storageLocations)) AND isnotnull(distributionCenters#21519560.internalRefUUID))
(477) Project
Output [2]: [distributionCenters#21519560.internalRefUUID AS _extract_internalRefUUID#21525044, distributionCenters#21519560.storageLocations AS _extract_storageLocations#21525045]
Input [1]: [distributionCenters#21519560]
(478) Generate
Input [2]: [_extract_internalRefUUID#21525044, _extract_storageLocations#21525045]
Arguments: explode(_extract_storageLocations#21525045), [_extract_internalRefUUID#21525044], false, [storageLocations#21519561]
(479) Project
Output [3]: [_extract_internalRefUUID#21525044 AS plantUuid#21519563, storageLocations#21519561.id AS storageLocId#21519564, storageLocations#21519561.internalRefUUID AS storageLocUuid#21519565]
Input [2]: [_extract_internalRefUUID#21525044, storageLocations#21519561]
(480) BroadcastExchange
Input [3]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264788]
(481) Scan parquet
Output [2]: [product#21519566, plant#21519567]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(482) Filter
Input [2]: [product#21519566, plant#21519567]
Condition : isnotnull(plant#21519567)
(483) Exchange
Input [2]: [product#21519566, plant#21519567]
Arguments: hashpartitioning(product#21519566, plant#21519567, 25), REPARTITION_BY_NUM, [plan_id=21264037]
(484) Scan parquet
Output [4]: [plant#21519572, product#21519573, productionAspect#21519575, systemId#21519570]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(485) Project
Output [4]: [plant#21519572.internalRefUUID AS _extract_internalRefUUID#21525600, product#21519573.internalRefUUID AS _extract_internalRefUUID#21525597, productionAspect#21519575.productMovementPlants.unitOfIssue.code AS _extract_code#21525598, productionAspect#21519575.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525599]
Input [4]: [plant#21519572, product#21519573, productionAspect#21519575, systemId#21519570]
(486) Exchange
Input [4]: [_extract_internalRefUUID#21525600, _extract_internalRefUUID#21525597, _extract_code#21525598, _extract_internalRefUUID#21525599]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262771]
(487) Project
Output [4]: [_extract_code#21525598, _extract_internalRefUUID#21525599, _extract_internalRefUUID#21525597, _extract_internalRefUUID#21525600]
Input [4]: [_extract_internalRefUUID#21525600, _extract_internalRefUUID#21525597, _extract_code#21525598, _extract_internalRefUUID#21525599]
(488) BroadcastExchange
Input [4]: [_extract_code#21525598, _extract_internalRefUUID#21525599, _extract_internalRefUUID#21525597, _extract_internalRefUUID#21525600]
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=21264772]
(489) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519566, ), isnull(product#21519566), coalesce(plant#21519567, ), isnull(plant#21519567)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525597, ), isnull(_extract_internalRefUUID#21525597), coalesce(_extract_internalRefUUID#21525600, ), isnull(_extract_internalRefUUID#21525600)]
Join type: LeftOuter
Join condition: None
(490) Project
Output [4]: [product#21519566, plant#21519567, _extract_code#21525598, _extract_internalRefUUID#21525599]
Input [6]: [product#21519566, plant#21519567, _extract_code#21525598, _extract_internalRefUUID#21525599, _extract_internalRefUUID#21525597, _extract_internalRefUUID#21525600]
(491) Scan parquet
Output [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(492) Filter
Input [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
Condition : isnotnull(internalUUID#21519580)
(493) Project
Output [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Input [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
(494) Exchange
Input [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262778]
(495) BroadcastExchange
Input [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264776]
(496) BroadcastHashJoin
Left keys [1]: [product#21519566]
Right keys [1]: [internalUUID#21519580]
Join type: LeftOuter
Join condition: None
(497) Project
Output [2]: [plant#21519567, filter(unitOfMeasureConversions#21519586, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525598) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525599)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519584.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519584.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519591]
Input [7]: [product#21519566, plant#21519567, _extract_code#21525598, _extract_internalRefUUID#21525599, internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
(498) Generate
Input [2]: [plant#21519567, filteredUnitOfMeasureConversions#21519591]
Arguments: explode(filteredUnitOfMeasureConversions#21519591.quantityNumerator), [plant#21519567, filteredUnitOfMeasureConversions#21519591], true, [quantityNumerator#21519592]
(499) Project
Output [2]: [plant#21519567, filteredUnitOfMeasureConversions#21519591.quantityDenominator AS _extract_quantityDenominator#21525046]
Input [3]: [plant#21519567, filteredUnitOfMeasureConversions#21519591, quantityNumerator#21519592]
(500) Generate
Input [2]: [plant#21519567, _extract_quantityDenominator#21525046]
Arguments: explode(_extract_quantityDenominator#21525046), [plant#21519567], true, [quantityDenominator#21519593]
(501) Project
Output [1]: [plant#21519567]
Input [2]: [plant#21519567, quantityDenominator#21519593]
(502) HashAggregate
Input [1]: [plant#21519567]
Keys [1]: [plant#21519567]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519567]
(503) Exchange
Input [1]: [plant#21519567]
Arguments: hashpartitioning(plant#21519567, 25), ENSURE_REQUIREMENTS, [plan_id=21264785]
(504) HashAggregate
Input [1]: [plant#21519567]
Keys [1]: [plant#21519567]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519567]
(505) BroadcastHashJoin
Left keys [1]: [plantUuid#21519563]
Right keys [1]: [plant#21519567]
Join type: Inner
Join condition: None
(506) Project
Output [3]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Input [4]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565, plant#21519567]
(507) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519535.internalRefUUID, ), isnull(plant#21519535.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21519563, ), isnull(plantUuid#21519563)]
Join type: Inner
Join condition: None
(508) Generate
Input [9]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Arguments: explode(filter(stockQuantities#21519537, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519565) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519564)), lambda x#21518157, false))), [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563], false, [stockQuantity#21519596]
(509) ObjectHashAggregate
Input [7]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563, stockQuantity#21519596]
Keys [5]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532]
Functions [2]: [partial_first(calculationDateTime#21519536, false), partial_collect_list(stockQuantity#21519596, 0, 0)]
Aggregate Attributes [3]: [first#21521428, valueSet#21521429, buf#21521430]
Results [8]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532, first#21521431, valueSet#21521432, buf#21521433]
(510) ObjectHashAggregate
Input [8]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532, first#21521431, valueSet#21521432, buf#21521433]
Keys [5]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532]
Functions [2]: [first(calculationDateTime#21519536, false), collect_list(stockQuantity#21519596, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21519536)()#21518172, collect_list(stockQuantity#21519596, 0, 0)#21518173]
Results [4]: [product#21519534, plant#21519535, first(calculationDateTime#21519536)()#21518172 AS calculationDateTime#21519597, collect_list(stockQuantity#21519596, 0, 0)#21518173 AS stockQuantities#21519598]
(511) Filter
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantities#21519598]
Condition : ((size(stockQuantities#21519598, true) > 0) AND isnotnull(calculationDateTime#21519597))
(512) Generate
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantities#21519598]
Arguments: explode(stockQuantities#21519598), [product#21519534, plant#21519535, calculationDateTime#21519597], false, [stockQuantity#21519599]
(513) Filter
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantity#21519599]
Condition : (((isnotnull(stockQuantity#21519599.specialStockIndicator.code) AND isnotnull(stockQuantity#21519599.stockType.code)) AND (stockQuantity#21519599.specialStockIndicator.code = )) AND (stockQuantity#21519599.stockType.code = 01))
(514) Project
Output [5]: [plant#21519535.internalRefUUID AS plantUuid#21519601, product#21519534.internalRefUUID AS productUuid#21519603, calculationDateTime#21519597, stockQuantity#21519599.storagelocation.id AS storageLocId#21519604, stockQuantity#21519599.quantity.measure AS quantity#21519606]
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantity#21519599]
(515) Exchange
Input [5]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606]
Arguments: hashpartitioning(productUuid#21519603, plantUuid#21519601, 25), ENSURE_REQUIREMENTS, [plan_id=21264814]
(516) Sort
Input [5]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606]
Arguments: [productUuid#21519603 ASC NULLS FIRST, plantUuid#21519601 ASC NULLS FIRST], false, 0
(517) Scan parquet
Output [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(518) Filter
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Condition : ((isnotnull(orderDateTime#21519611) AND isnotnull(plant#21519610)) AND isnotnull(product#21519609))
(519) Exchange
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Arguments: hashpartitioning(product#21519609, plant#21519610, 25), REPARTITION_BY_NUM, [plan_id=21264058]
(520) Scan parquet
Output [4]: [plant#21519615, product#21519616, productionAspect#21519618, systemId#21519613]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(521) Project
Output [4]: [plant#21519615.internalRefUUID AS _extract_internalRefUUID#21525604, product#21519616.internalRefUUID AS _extract_internalRefUUID#21525603, productionAspect#21519618.productMovementPlants.unitOfIssue.code AS _extract_code#21525601, productionAspect#21519618.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525602]
Input [4]: [plant#21519615, product#21519616, productionAspect#21519618, systemId#21519613]
(522) Exchange
Input [4]: [_extract_internalRefUUID#21525604, _extract_internalRefUUID#21525603, _extract_code#21525601, _extract_internalRefUUID#21525602]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262803]
(523) Project
Output [4]: [_extract_code#21525601, _extract_internalRefUUID#21525602, _extract_internalRefUUID#21525603, _extract_internalRefUUID#21525604]
Input [4]: [_extract_internalRefUUID#21525604, _extract_internalRefUUID#21525603, _extract_code#21525601, _extract_internalRefUUID#21525602]
(524) BroadcastExchange
Input [4]: [_extract_code#21525601, _extract_internalRefUUID#21525602, _extract_internalRefUUID#21525603, _extract_internalRefUUID#21525604]
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=21264801]
(525) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519609, ), isnull(product#21519609), coalesce(plant#21519610, ), isnull(plant#21519610)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525603, ), isnull(_extract_internalRefUUID#21525603), coalesce(_extract_internalRefUUID#21525604, ), isnull(_extract_internalRefUUID#21525604)]
Join type: LeftOuter
Join condition: None
(526) Project
Output [5]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21525601, _extract_internalRefUUID#21525602]
Input [7]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21525601, _extract_internalRefUUID#21525602, _extract_internalRefUUID#21525603, _extract_internalRefUUID#21525604]
(527) Scan parquet
Output [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(528) Filter
Input [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
Condition : isnotnull(internalUUID#21519623)
(529) Project
Output [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Input [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
(530) Exchange
Input [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262810]
(531) BroadcastExchange
Input [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264805]
(532) BroadcastHashJoin
Left keys [1]: [product#21519609]
Right keys [1]: [internalUUID#21519623]
Join type: LeftOuter
Join condition: None
(533) Project
Output [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filter(unitOfMeasureConversions#21519629, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525601) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525602)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519627.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519627.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519634]
Input [8]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21525601, _extract_internalRefUUID#21525602, internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
(534) Generate
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634]
Arguments: explode(filteredUnitOfMeasureConversions#21519634.quantityNumerator), [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634], true, [quantityNumerator#21519635]
(535) Project
Output [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634.quantityDenominator AS _extract_quantityDenominator#21525053]
Input [5]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634, quantityNumerator#21519635]
(536) Generate
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_quantityDenominator#21525053]
Arguments: explode(_extract_quantityDenominator#21525053), [product#21519609, plant#21519610, orderDateTime#21519611], true, [quantityDenominator#21519636]
(537) Project
Output [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, quantityDenominator#21519636]
(538) Sort
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Arguments: [product#21519609 ASC NULLS FIRST, plant#21519610 ASC NULLS FIRST], false, 0
(539) SortMergeJoin
Left keys [2]: [productUuid#21519603, plantUuid#21519601]
Right keys [2]: [product#21519609, plant#21519610]
Join type: Inner
Join condition: (calculationDateTime#21519597 <= orderDateTime#21519611)
(540) Project
Output [5]: [plantUuid#21519601 AS plant#21519639, productUuid#21519603 AS product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Input [8]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606, product#21519609, plant#21519610, orderDateTime#21519611]
(541) Exchange
Input [5]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Arguments: hashpartitioning(coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597), 25), ENSURE_REQUIREMENTS, [plan_id=21264870]
(542) Sort
Input [5]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Arguments: [coalesce(plant#21519639, ) ASC NULLS FIRST, isnull(plant#21519639) ASC NULLS FIRST, coalesce(product#21519640, ) ASC NULLS FIRST, isnull(product#21519640) ASC NULLS FIRST, coalesce(storageLocId#21519604, ) ASC NULLS FIRST, isnull(storageLocId#21519604) ASC NULLS FIRST, coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21519597) ASC NULLS FIRST], false, 0
(543) Scan parquet
Output [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(544) Filter
Input [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
Condition : (isnotnull(plant#21519644.internalRefUUID) AND isnotnull(product#21519643.internalRefUUID))
(545) Project
Output [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Input [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
(546) Exchange
Input [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262822]
(547) BroadcastExchange
Input [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
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=21264839]
(548) Scan parquet
Output [2]: [marketUnit#21519647, distributionCenters#21519653]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(549) Filter
Input [2]: [marketUnit#21519647, distributionCenters#21519653]
Condition : (((marketUnit#21519647 <=> SS_Test_1) AND (size(distributionCenters#21519653, true) > 0)) AND isnotnull(distributionCenters#21519653))
(550) Project
Output [1]: [distributionCenters#21519653]
Input [2]: [marketUnit#21519647, distributionCenters#21519653]
(551) Exchange
Input [1]: [distributionCenters#21519653]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262826]
(552) Generate
Input [1]: [distributionCenters#21519653]
Arguments: explode(distributionCenters#21519653), false, [distributionCenters#21519669]
(553) Filter
Input [1]: [distributionCenters#21519669]
Condition : (((size(distributionCenters#21519669.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519669.storageLocations)) AND isnotnull(distributionCenters#21519669.internalRefUUID))
(554) Project
Output [2]: [distributionCenters#21519669.internalRefUUID AS _extract_internalRefUUID#21525060, distributionCenters#21519669.storageLocations AS _extract_storageLocations#21525061]
Input [1]: [distributionCenters#21519669]
(555) Generate
Input [2]: [_extract_internalRefUUID#21525060, _extract_storageLocations#21525061]
Arguments: explode(_extract_storageLocations#21525061), [_extract_internalRefUUID#21525060], false, [storageLocations#21519670]
(556) Project
Output [3]: [_extract_internalRefUUID#21525060 AS plantUuid#21519672, storageLocations#21519670.id AS storageLocId#21519673, storageLocations#21519670.internalRefUUID AS storageLocUuid#21519674]
Input [2]: [_extract_internalRefUUID#21525060, storageLocations#21519670]
(557) BroadcastExchange
Input [3]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264835]
(558) Scan parquet
Output [2]: [product#21519675, plant#21519676]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(559) Filter
Input [2]: [product#21519675, plant#21519676]
Condition : isnotnull(plant#21519676)
(560) Exchange
Input [2]: [product#21519675, plant#21519676]
Arguments: hashpartitioning(product#21519675, plant#21519676, 25), REPARTITION_BY_NUM, [plan_id=21264069]
(561) Scan parquet
Output [4]: [plant#21519681, product#21519682, productionAspect#21519684, systemId#21519679]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(562) Project
Output [4]: [plant#21519681.internalRefUUID AS _extract_internalRefUUID#21525605, product#21519682.internalRefUUID AS _extract_internalRefUUID#21525608, productionAspect#21519684.productMovementPlants.unitOfIssue.code AS _extract_code#21525606, productionAspect#21519684.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525607]
Input [4]: [plant#21519681, product#21519682, productionAspect#21519684, systemId#21519679]
(563) Exchange
Input [4]: [_extract_internalRefUUID#21525605, _extract_internalRefUUID#21525608, _extract_code#21525606, _extract_internalRefUUID#21525607]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262838]
(564) Project
Output [4]: [_extract_code#21525606, _extract_internalRefUUID#21525607, _extract_internalRefUUID#21525608, _extract_internalRefUUID#21525605]
Input [4]: [_extract_internalRefUUID#21525605, _extract_internalRefUUID#21525608, _extract_code#21525606, _extract_internalRefUUID#21525607]
(565) BroadcastExchange
Input [4]: [_extract_code#21525606, _extract_internalRefUUID#21525607, _extract_internalRefUUID#21525608, _extract_internalRefUUID#21525605]
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=21264819]
(566) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519675, ), isnull(product#21519675), coalesce(plant#21519676, ), isnull(plant#21519676)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525608, ), isnull(_extract_internalRefUUID#21525608), coalesce(_extract_internalRefUUID#21525605, ), isnull(_extract_internalRefUUID#21525605)]
Join type: LeftOuter
Join condition: None
(567) Project
Output [4]: [product#21519675, plant#21519676, _extract_code#21525606, _extract_internalRefUUID#21525607]
Input [6]: [product#21519675, plant#21519676, _extract_code#21525606, _extract_internalRefUUID#21525607, _extract_internalRefUUID#21525608, _extract_internalRefUUID#21525605]
(568) Scan parquet
Output [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(569) Filter
Input [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
Condition : isnotnull(internalUUID#21519689)
(570) Project
Output [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Input [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
(571) Exchange
Input [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262845]
(572) BroadcastExchange
Input [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264823]
(573) BroadcastHashJoin
Left keys [1]: [product#21519675]
Right keys [1]: [internalUUID#21519689]
Join type: LeftOuter
Join condition: None
(574) Project
Output [2]: [plant#21519676, filter(unitOfMeasureConversions#21519695, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525606) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525607)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519693.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519693.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519700]
Input [7]: [product#21519675, plant#21519676, _extract_code#21525606, _extract_internalRefUUID#21525607, internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
(575) Generate
Input [2]: [plant#21519676, filteredUnitOfMeasureConversions#21519700]
Arguments: explode(filteredUnitOfMeasureConversions#21519700.quantityNumerator), [plant#21519676, filteredUnitOfMeasureConversions#21519700], true, [quantityNumerator#21519701]
(576) Project
Output [2]: [plant#21519676, filteredUnitOfMeasureConversions#21519700.quantityDenominator AS _extract_quantityDenominator#21525062]
Input [3]: [plant#21519676, filteredUnitOfMeasureConversions#21519700, quantityNumerator#21519701]
(577) Generate
Input [2]: [plant#21519676, _extract_quantityDenominator#21525062]
Arguments: explode(_extract_quantityDenominator#21525062), [plant#21519676], true, [quantityDenominator#21519702]
(578) Project
Output [1]: [plant#21519676]
Input [2]: [plant#21519676, quantityDenominator#21519702]
(579) HashAggregate
Input [1]: [plant#21519676]
Keys [1]: [plant#21519676]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519676]
(580) Exchange
Input [1]: [plant#21519676]
Arguments: hashpartitioning(plant#21519676, 25), ENSURE_REQUIREMENTS, [plan_id=21264832]
(581) HashAggregate
Input [1]: [plant#21519676]
Keys [1]: [plant#21519676]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519676]
(582) BroadcastHashJoin
Left keys [1]: [plantUuid#21519672]
Right keys [1]: [plant#21519676]
Join type: Inner
Join condition: None
(583) Project
Output [3]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Input [4]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674, plant#21519676]
(584) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519644.internalRefUUID, ), isnull(plant#21519644.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21519672, ), isnull(plantUuid#21519672)]
Join type: Inner
Join condition: None
(585) Generate
Input [9]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Arguments: explode(filter(stockQuantities#21519646, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519674) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519673)), lambda x#21518157, false))), [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672], false, [stockQuantity#21519705]
(586) ObjectHashAggregate
Input [7]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672, stockQuantity#21519705]
Keys [5]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641]
Functions [2]: [partial_first(calculationDateTime#21519645, false), partial_collect_list(stockQuantity#21519705, 0, 0)]
Aggregate Attributes [3]: [first#21521436, valueSet#21521437, buf#21521438]
Results [8]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641, first#21521439, valueSet#21521440, buf#21521441]
(587) ObjectHashAggregate
Input [8]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641, first#21521439, valueSet#21521440, buf#21521441]
Keys [5]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641]
Functions [2]: [first(calculationDateTime#21519645, false), collect_list(stockQuantity#21519705, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21519645)()#21518172, collect_list(stockQuantity#21519705, 0, 0)#21518173]
Results [4]: [product#21519643, plant#21519644, first(calculationDateTime#21519645)()#21518172 AS calculationDateTime#21519706, collect_list(stockQuantity#21519705, 0, 0)#21518173 AS stockQuantities#21519707]
(588) Filter
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantities#21519707]
Condition : ((size(stockQuantities#21519707, true) > 0) AND isnotnull(calculationDateTime#21519706))
(589) Generate
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantities#21519707]
Arguments: explode(stockQuantities#21519707), [product#21519643, plant#21519644, calculationDateTime#21519706], false, [stockQuantity#21519708]
(590) Filter
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantity#21519708]
Condition : (((isnotnull(stockQuantity#21519708.specialStockIndicator.code) AND isnotnull(stockQuantity#21519708.stockType.code)) AND (stockQuantity#21519708.specialStockIndicator.code = )) AND (stockQuantity#21519708.stockType.code = 01))
(591) Project
Output [4]: [plant#21519644.internalRefUUID AS plantUuid#21519710, product#21519643.internalRefUUID AS productUuid#21519712, calculationDateTime#21519706, stockQuantity#21519708.storagelocation.id AS storageLocId#21519713]
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantity#21519708]
(592) Exchange
Input [4]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713]
Arguments: hashpartitioning(productUuid#21519712, plantUuid#21519710, 25), ENSURE_REQUIREMENTS, [plan_id=21264861]
(593) Sort
Input [4]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713]
Arguments: [productUuid#21519712 ASC NULLS FIRST, plantUuid#21519710 ASC NULLS FIRST], false, 0
(594) Scan parquet
Output [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(595) Filter
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Condition : ((isnotnull(orderDateTime#21519720) AND isnotnull(plant#21519719)) AND isnotnull(product#21519718))
(596) Exchange
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Arguments: hashpartitioning(product#21519718, plant#21519719, 25), REPARTITION_BY_NUM, [plan_id=21264090]
(597) Scan parquet
Output [4]: [plant#21519724, product#21519725, productionAspect#21519727, systemId#21519722]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(598) Project
Output [4]: [plant#21519724.internalRefUUID AS _extract_internalRefUUID#21525612, product#21519725.internalRefUUID AS _extract_internalRefUUID#21525609, productionAspect#21519727.productMovementPlants.unitOfIssue.code AS _extract_code#21525610, productionAspect#21519727.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525611]
Input [4]: [plant#21519724, product#21519725, productionAspect#21519727, systemId#21519722]
(599) Exchange
Input [4]: [_extract_internalRefUUID#21525612, _extract_internalRefUUID#21525609, _extract_code#21525610, _extract_internalRefUUID#21525611]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262870]
(600) Project
Output [4]: [_extract_code#21525610, _extract_internalRefUUID#21525611, _extract_internalRefUUID#21525609, _extract_internalRefUUID#21525612]
Input [4]: [_extract_internalRefUUID#21525612, _extract_internalRefUUID#21525609, _extract_code#21525610, _extract_internalRefUUID#21525611]
(601) BroadcastExchange
Input [4]: [_extract_code#21525610, _extract_internalRefUUID#21525611, _extract_internalRefUUID#21525609, _extract_internalRefUUID#21525612]
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=21264848]
(602) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519718, ), isnull(product#21519718), coalesce(plant#21519719, ), isnull(plant#21519719)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525609, ), isnull(_extract_internalRefUUID#21525609), coalesce(_extract_internalRefUUID#21525612, ), isnull(_extract_internalRefUUID#21525612)]
Join type: LeftOuter
Join condition: None
(603) Project
Output [5]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21525610, _extract_internalRefUUID#21525611]
Input [7]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21525610, _extract_internalRefUUID#21525611, _extract_internalRefUUID#21525609, _extract_internalRefUUID#21525612]
(604) Scan parquet
Output [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(605) Filter
Input [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
Condition : isnotnull(internalUUID#21519732)
(606) Project
Output [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Input [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
(607) Exchange
Input [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262877]
(608) BroadcastExchange
Input [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264852]
(609) BroadcastHashJoin
Left keys [1]: [product#21519718]
Right keys [1]: [internalUUID#21519732]
Join type: LeftOuter
Join condition: None
(610) Project
Output [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filter(unitOfMeasureConversions#21519738, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525610) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525611)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519736.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519736.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519743]
Input [8]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21525610, _extract_internalRefUUID#21525611, internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
(611) Generate
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743]
Arguments: explode(filteredUnitOfMeasureConversions#21519743.quantityNumerator), [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743], true, [quantityNumerator#21519744]
(612) Project
Output [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743.quantityDenominator AS _extract_quantityDenominator#21525069]
Input [5]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743, quantityNumerator#21519744]
(613) Generate
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_quantityDenominator#21525069]
Arguments: explode(_extract_quantityDenominator#21525069), [product#21519718, plant#21519719, orderDateTime#21519720], true, [quantityDenominator#21519745]
(614) Project
Output [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, quantityDenominator#21519745]
(615) Sort
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Arguments: [product#21519718 ASC NULLS FIRST, plant#21519719 ASC NULLS FIRST], false, 0
(616) SortMergeJoin
Left keys [2]: [productUuid#21519712, plantUuid#21519710]
Right keys [2]: [product#21519718, plant#21519719]
Join type: Inner
Join condition: (calculationDateTime#21519706 <= orderDateTime#21519720)
(617) Project
Output [4]: [plantUuid#21519710 AS plant#21519748, productUuid#21519712 AS product#21519749, storageLocId#21519713, calculationDateTime#21519706]
Input [7]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713, product#21519718, plant#21519719, orderDateTime#21519720]
(618) HashAggregate
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, calculationDateTime#21519706]
Keys [3]: [plant#21519748, product#21519749, storageLocId#21519713]
Functions [1]: [partial_max(calculationDateTime#21519706)]
Aggregate Attributes [1]: [max#21521434]
Results [4]: [plant#21519748, product#21519749, storageLocId#21519713, max#21521435]
(619) HashAggregate
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max#21521435]
Keys [3]: [plant#21519748, product#21519749, storageLocId#21519713]
Functions [1]: [max(calculationDateTime#21519706)]
Aggregate Attributes [1]: [max(calculationDateTime#21519706)#21518235]
Results [4]: [plant#21519748, product#21519749, storageLocId#21519713, max(calculationDateTime#21519706)#21518235 AS max_calc_datetime#21519750]
(620) Exchange
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
Arguments: hashpartitioning(coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750), 25), ENSURE_REQUIREMENTS, [plan_id=21264871]
(621) Sort
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
Arguments: [coalesce(plant#21519748, ) ASC NULLS FIRST, isnull(plant#21519748) ASC NULLS FIRST, coalesce(product#21519749, ) ASC NULLS FIRST, isnull(product#21519749) ASC NULLS FIRST, coalesce(storageLocId#21519713, ) ASC NULLS FIRST, isnull(storageLocId#21519713) ASC NULLS FIRST, coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21519750) ASC NULLS FIRST], false, 0
(622) SortMergeJoin
Left keys [8]: [coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597)]
Right keys [8]: [coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750)]
Join type: Inner
Join condition: None
(623) Project
Output [4]: [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]
Input [9]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606, plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
(624) HashAggregate
Input [4]: [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]
Keys [2]: [product#21519640, plant#21519639]
Functions [2]: [partial_min(calculationDateTime#21519597), partial_sum(quantity#21519606)]
Aggregate Attributes [2]: [min#21521424, sum#21521425]
Results [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
(625) Exchange
Input [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
Arguments: hashpartitioning(product#21519640, plant#21519639, 25), ENSURE_REQUIREMENTS, [plan_id=21264878]
(626) HashAggregate
Input [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
Keys [2]: [product#21519640, plant#21519639]
Functions [2]: [min(calculationDateTime#21519597), sum(quantity#21519606)]
Aggregate Attributes [2]: [min(calculationDateTime#21519597)#21518361, sum(quantity#21519606)#21518360]
Results [4]: [product#21519640, plant#21519639, min(calculationDateTime#21519597)#21518361 AS minCalculationDateTime#21519752, round(sum(quantity#21519606)#21518360, 0) AS roundedQuantitySum#21519753]
(627) Sort
Input [4]: [product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
Arguments: [product#21519640 ASC NULLS FIRST, plant#21519639 ASC NULLS FIRST], false, 0
(628) SortMergeJoin
Left keys [2]: [product#21519502, plant#21519503]
Right keys [2]: [product#21519640, plant#21519639]
Join type: LeftOuter
Join condition: None
(629) Project
Output [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, CASE WHEN isnotnull(minCalculationDateTime#21519752) THEN minCalculationDateTime#21519752 ELSE orderDateTime#21519504 END AS stockDatetime#21519754, CASE WHEN isnotnull(roundedQuantitySum#21519753) THEN array(roundedQuantitySum#21519753) ELSE [0.0] END AS stockBatchQuantities#21519755]
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
(630) BroadcastExchange
Input [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
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=21264888]
(631) BroadcastHashJoin
Left keys [4]: [coalesce(plant#21519503, ), isnull(plant#21519503), coalesce(product#21519502, ), isnull(product#21519502)]
Right keys [4]: [coalesce(plant#21518400, ), isnull(plant#21518400), coalesce(product#21518399, ), isnull(product#21518399)]
Join type: LeftOuter
Join condition: None
(632) Project
Output [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, CASE WHEN isnotnull(product#21518399) THEN struct(demandChannel, demandChannel#21518401, demandStream, demandStream#21518402, considerVariance, considerVariance#21518403, demandTimeBuckets, demandTimeBuckets#21518404, demandPointInTimeStart, demandPointInTimeStart#21518405, demandPointInTimeEnd, demandPointInTimeEnd#21518406, demandPointInTime, demandPointInTime#21518407) END AS rawDemands#21518409]
Input [16]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
(633) ObjectHashAggregate
Input [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518409]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, knownfloatingpointnormalized(if (isnull(productPlant#21519514)) null else named_struct(systemId, productPlant#21519514.systemId, internalUUID, productPlant#21519514.internalUUID, plant, productPlant#21519514.plant, product, productPlant#21519514.product, blockedForReplenishmentStartingFrom, productPlant#21519514.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect)) null else named_struct(productMovementPlants, productPlant#21519514.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21519514.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21519514.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21519514.salesPlant, listing, productPlant#21519514.listing)) AS productPlant#21519514, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21519531)) AS outboundUnit#21519531, stockDatetime#21519754, knownfloatingpointnormalized(transform(stockBatchQuantities#21519755, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21526573)), lambda arg#21526573, false))) AS stockBatchQuantities#21519755, [7226582400000000] AS [7226582400000000]#21526572]
Functions [1]: [partial_collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [buf#21521422]
Results [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21526572, buf#21521423]
(634) ObjectHashAggregate
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21526572, buf#21521423]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21526572]
Functions [1]: [collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21518409, 0, 0)#21518429]
Results [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, collect_list(rawDemands#21518409, 0, 0)#21518429 AS rawDemands#21518410]
(635) Project
Output [2]: [internalUUID#21519453, address#21519459.timeZone.code AS timezonecode#21519465]
Input [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
(636) Exchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262901]
(637) BroadcastExchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21264894]
(638) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [2]: [coalesce(internalUUID#21519453, ), isnull(internalUUID#21519453)]
Join type: LeftOuter
Join condition: None
(639) Project
Output [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, CASE WHEN isnotnull(timezonecode#21519465) THEN timezonecode#21519465 ELSE UTC END AS timezonecode#21519467]
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518410, internalUUID#21519453, timezonecode#21519465]
(640) DeserializeToObject
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, timezonecode#21519467]
Arguments: createexternalrow(invoke(product#21519502.toString()), invoke(plant#21519503.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21519504)), if (isnull(productPlant#21519514)) null else createexternalrow(invoke(productPlant#21519514.systemId.toString()), invoke(productPlant#21519514.internalUUID.toString()), if (isnull(productPlant#21519514.plant)) null else createexternalrow(invoke(productPlant#21519514.plant.internalRefUUID.toString()), invoke(productPlant#21519514.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21519514.product)) null else createexternalrow(invoke(productPlant#21519514.product.internalRefUUID.toString()), invoke(productPlant#21519514.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21519514.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21519514.productionAspect)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21519514.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#21519514.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21519514.salesPlant)) null else createexternalrow(if (isnull(productPlant#21519514.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21519514.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21519514.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#21519514.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21519531)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21519754)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#21519755, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#21519756, 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#21518410, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21519467.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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21519488: org.apache.spark.sql.Row
(641) MapElements
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(642) SerializeFromObject
Input [1]: [obj#21519493]
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#21519498, 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#21519499, 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#21519500, 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#21519501]
(643) Exchange
Input [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: hashpartitioning(coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498), 25), ENSURE_REQUIREMENTS, [plan_id=21264903]
(644) Sort
Input [4]: [product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: [coalesce(plant#21519499, ) ASC NULLS FIRST, isnull(plant#21519499) ASC NULLS FIRST, coalesce(product#21519498, ) ASC NULLS FIRST, isnull(product#21519498) ASC NULLS FIRST], false, 0
(645) SortMergeJoin
Left keys [4]: [coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975)]
Right keys [4]: [coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498)]
Join type: LeftOuter
Join condition: None
(646) Project
Output [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Input [9]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, product#21519498, plant#21519499, dayBucketDemands#21519500, pointInTimeDemands#21519501]
(647) Exchange
Input [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: hashpartitioning(product#21517975, plant#21517976, 25), ENSURE_REQUIREMENTS, [plan_id=21265201]
(648) Sort
Input [7]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501]
Arguments: [product#21517975 ASC NULLS FIRST, plant#21517976 ASC NULLS FIRST], false, 0
(649) InMemoryTableScan
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: [product#21519794, plant#21519793, openGoodsMovements#21519894], [isnotnull(product#21519794), isnotnull(plant#21519793)]
(650) InMemoryRelation
Arguments: [product#21519794, plant#21519793, openGoodsMovements#21519894], StorageLevel(disk, memory, 2 replicas)
(651) EmptyRelation
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: [plan_id=21298748]
(652) ResultQueryStage
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: 94
(653) Scan parquet
Output [2]: [product#21517975, plant#21517976]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(654) Filter
Input [2]: [product#21517975, plant#21517976]
Condition : (isnotnull(plant#21517976) AND isnotnull(product#21517975))
(655) Exchange
Input [2]: [product#21517975, plant#21517976]
Arguments: hashpartitioning(product#21517975, plant#21517976, 25), REPARTITION_BY_NUM, [plan_id=21258404]
(656) Scan parquet
Output [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(657) Project
Output [4]: [plant#21517982.internalRefUUID AS _extract_internalRefUUID#21520075, product#21517983.internalRefUUID AS _extract_internalRefUUID#21520074, productionAspect#21517985.productMovementPlants.unitOfIssue.code AS _extract_code#21520072, productionAspect#21517985.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520073]
Input [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
(658) Exchange
Input [4]: [_extract_internalRefUUID#21520075, _extract_internalRefUUID#21520074, _extract_code#21520072, _extract_internalRefUUID#21520073]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258164]
(659) Project
Output [4]: [_extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]
Input [4]: [_extract_internalRefUUID#21520075, _extract_internalRefUUID#21520074, _extract_code#21520072, _extract_internalRefUUID#21520073]
(660) BroadcastExchange
Input [4]: [_extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]
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=21258518]
(661) BroadcastHashJoin
Left keys [4]: [coalesce(product#21517975, ), isnull(product#21517975), coalesce(plant#21517976, ), isnull(plant#21517976)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520074, ), isnull(_extract_internalRefUUID#21520074), coalesce(_extract_internalRefUUID#21520075, ), isnull(_extract_internalRefUUID#21520075)]
Join type: LeftOuter
Join condition: None
(662) Project
Output [4]: [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073]
Input [6]: [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]
(663) Scan parquet
Output [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(664) Filter
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Condition : isnotnull(internalUUID#21518035)
(665) Project
Output [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
(666) Exchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258171]
(667) BroadcastExchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258522]
(668) BroadcastHashJoin
Left keys [1]: [product#21517975]
Right keys [1]: [internalUUID#21518035]
Join type: LeftOuter
Join condition: None
(669) Project
Output [3]: [product#21517975, plant#21517976, filter(unitOfMeasureConversions#21518041, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520072) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520073)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518039.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518039.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518047]
Input [7]: [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073, internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
(670) Generate
Input [3]: [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047]
Arguments: explode(filteredUnitOfMeasureConversions#21518047.quantityNumerator), [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047], true, [quantityNumerator#21518055]
(671) Project
Output [3]: [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047.quantityDenominator AS _extract_quantityDenominator#21519910]
Input [4]: [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047, quantityNumerator#21518055]
(672) Generate
Input [3]: [product#21517975, plant#21517976, _extract_quantityDenominator#21519910]
Arguments: explode(_extract_quantityDenominator#21519910), [product#21517975, plant#21517976], true, [quantityDenominator#21518058]
(673) Project
Output [2]: [product#21517975, plant#21517976]
Input [3]: [product#21517975, plant#21517976, quantityDenominator#21518058]
(674) Exchange
Input [2]: [product#21517975, plant#21517976]
Arguments: hashpartitioning(coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975), 25), ENSURE_REQUIREMENTS, [plan_id=21258674]
(675) Sort
Input [2]: [product#21517975, plant#21517976]
Arguments: [coalesce(plant#21517976, ) ASC NULLS FIRST, isnull(plant#21517976) ASC NULLS FIRST, coalesce(product#21517975, ) ASC NULLS FIRST, isnull(product#21517975) ASC NULLS FIRST], false, 0
(676) Scan parquet
Output [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(677) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), REPARTITION_BY_NUM, [plan_id=21258179]
(678) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503), 25), ENSURE_REQUIREMENTS, [plan_id=21258530]
(679) Sort
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: [coalesce(product#21519502, ) ASC NULLS FIRST, isnull(product#21519502) ASC NULLS FIRST, coalesce(plant#21519503, ) ASC NULLS FIRST, isnull(plant#21519503) ASC NULLS FIRST], false, 0
(680) Scan parquet
Output [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(681) Project
Output [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Input [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
(682) Exchange
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258182]
(683) Project
Output [1]: [struct(systemId, systemId#21519506, internalUUID, internalUUID#21519507, plant, plant#21519508, product, product#21519509, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21519510, productionAspect, productionAspect#21519511, salesPlant, salesPlant#21519512, listing, listing#21519513) AS productPlant#21519514]
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
(684) Exchange
Input [1]: [productPlant#21519514]
Arguments: hashpartitioning(coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21258531]
(685) Sort
Input [1]: [productPlant#21519514]
Arguments: [coalesce(productPlant#21519514.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21519514.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(686) SortMergeJoin
Left keys [4]: [coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [4]: [coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(687) Scan parquet
Output [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(688) Filter
Input [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
Condition : isnotnull(internalUUID#21519516)
(689) Project
Output [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Input [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
(690) Exchange
Input [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258188]
(691) BroadcastExchange
Input [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258536]
(692) BroadcastHashJoin
Left keys [1]: [product#21519502]
Right keys [1]: [internalUUID#21519516]
Join type: LeftOuter
Join condition: None
(693) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filter(unitOfMeasureConversions#21519522, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519520.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519520.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519527]
Input [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
(694) Project
Output [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527.quantityDenominator AS _extract_quantityDenominator#21520076, filteredUnitOfMeasureConversions#21519527.quantityNumerator AS _extract_quantityNumerator#21520077]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527]
(695) Generate
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076, _extract_quantityNumerator#21520077]
Arguments: explode(_extract_quantityNumerator#21520077), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076], true, [quantityNumerator#21519528]
(696) Generate
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076, quantityNumerator#21519528]
Arguments: explode(_extract_quantityDenominator#21520076), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528], true, [quantityDenominator#21519529]
(697) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, (cast(quantityNumerator#21519528 as double) / cast(quantityDenominator#21519529 as double)) AS outboundUnit#21519530]
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528, quantityDenominator#21519529]
(698) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, CASE WHEN (isnull(outboundUnit#21519530) OR (outboundUnit#21519530 <= 0.0)) THEN 1.0 ELSE outboundUnit#21519530 END AS outboundUnit#21519531]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519530]
(699) Exchange
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), ENSURE_REQUIREMENTS, [plan_id=21258654]
(700) Sort
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: [product#21519502 ASC NULLS FIRST, plant#21519503 ASC NULLS FIRST], false, 0
(701) Scan parquet
Output [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(702) Filter
Input [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
Condition : (isnotnull(plant#21519535.internalRefUUID) AND isnotnull(product#21519534.internalRefUUID))
(703) Project
Output [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Input [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
(704) Exchange
Input [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258199]
(705) BroadcastExchange
Input [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
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=21258564]
(706) Scan parquet
Output [2]: [marketUnit#21519538, distributionCenters#21519544]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(707) Filter
Input [2]: [marketUnit#21519538, distributionCenters#21519544]
Condition : (((marketUnit#21519538 <=> SS_Test_1) AND (size(distributionCenters#21519544, true) > 0)) AND isnotnull(distributionCenters#21519544))
(708) Project
Output [1]: [distributionCenters#21519544]
Input [2]: [marketUnit#21519538, distributionCenters#21519544]
(709) Exchange
Input [1]: [distributionCenters#21519544]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258203]
(710) Generate
Input [1]: [distributionCenters#21519544]
Arguments: explode(distributionCenters#21519544), false, [distributionCenters#21519560]
(711) Filter
Input [1]: [distributionCenters#21519560]
Condition : (((size(distributionCenters#21519560.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519560.storageLocations)) AND isnotnull(distributionCenters#21519560.internalRefUUID))
(712) Project
Output [2]: [distributionCenters#21519560.internalRefUUID AS _extract_internalRefUUID#21519950, distributionCenters#21519560.storageLocations AS _extract_storageLocations#21519951]
Input [1]: [distributionCenters#21519560]
(713) Generate
Input [2]: [_extract_internalRefUUID#21519950, _extract_storageLocations#21519951]
Arguments: explode(_extract_storageLocations#21519951), [_extract_internalRefUUID#21519950], false, [storageLocations#21519561]
(714) Project
Output [3]: [_extract_internalRefUUID#21519950 AS plantUuid#21519563, storageLocations#21519561.id AS storageLocId#21519564, storageLocations#21519561.internalRefUUID AS storageLocUuid#21519565]
Input [2]: [_extract_internalRefUUID#21519950, storageLocations#21519561]
(715) BroadcastExchange
Input [3]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258560]
(716) Scan parquet
Output [2]: [product#21519566, plant#21519567]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(717) Filter
Input [2]: [product#21519566, plant#21519567]
Condition : isnotnull(plant#21519567)
(718) Exchange
Input [2]: [product#21519566, plant#21519567]
Arguments: hashpartitioning(product#21519566, plant#21519567, 25), REPARTITION_BY_NUM, [plan_id=21258413]
(719) Scan parquet
Output [4]: [plant#21519572, product#21519573, productionAspect#21519575, systemId#21519570]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(720) Project
Output [4]: [plant#21519572.internalRefUUID AS _extract_internalRefUUID#21520081, product#21519573.internalRefUUID AS _extract_internalRefUUID#21520078, productionAspect#21519575.productMovementPlants.unitOfIssue.code AS _extract_code#21520079, productionAspect#21519575.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520080]
Input [4]: [plant#21519572, product#21519573, productionAspect#21519575, systemId#21519570]
(721) Exchange
Input [4]: [_extract_internalRefUUID#21520081, _extract_internalRefUUID#21520078, _extract_code#21520079, _extract_internalRefUUID#21520080]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258215]
(722) Project
Output [4]: [_extract_code#21520079, _extract_internalRefUUID#21520080, _extract_internalRefUUID#21520078, _extract_internalRefUUID#21520081]
Input [4]: [_extract_internalRefUUID#21520081, _extract_internalRefUUID#21520078, _extract_code#21520079, _extract_internalRefUUID#21520080]
(723) BroadcastExchange
Input [4]: [_extract_code#21520079, _extract_internalRefUUID#21520080, _extract_internalRefUUID#21520078, _extract_internalRefUUID#21520081]
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=21258544]
(724) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519566, ), isnull(product#21519566), coalesce(plant#21519567, ), isnull(plant#21519567)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520078, ), isnull(_extract_internalRefUUID#21520078), coalesce(_extract_internalRefUUID#21520081, ), isnull(_extract_internalRefUUID#21520081)]
Join type: LeftOuter
Join condition: None
(725) Project
Output [4]: [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080]
Input [6]: [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080, _extract_internalRefUUID#21520078, _extract_internalRefUUID#21520081]
(726) Scan parquet
Output [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(727) Filter
Input [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
Condition : isnotnull(internalUUID#21519580)
(728) Project
Output [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Input [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
(729) Exchange
Input [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258222]
(730) BroadcastExchange
Input [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258548]
(731) BroadcastHashJoin
Left keys [1]: [product#21519566]
Right keys [1]: [internalUUID#21519580]
Join type: LeftOuter
Join condition: None
(732) Project
Output [2]: [plant#21519567, filter(unitOfMeasureConversions#21519586, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520079) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520080)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519584.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519584.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519591]
Input [7]: [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080, internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
(733) Generate
Input [2]: [plant#21519567, filteredUnitOfMeasureConversions#21519591]
Arguments: explode(filteredUnitOfMeasureConversions#21519591.quantityNumerator), [plant#21519567, filteredUnitOfMeasureConversions#21519591], true, [quantityNumerator#21519592]
(734) Project
Output [2]: [plant#21519567, filteredUnitOfMeasureConversions#21519591.quantityDenominator AS _extract_quantityDenominator#21519952]
Input [3]: [plant#21519567, filteredUnitOfMeasureConversions#21519591, quantityNumerator#21519592]
(735) Generate
Input [2]: [plant#21519567, _extract_quantityDenominator#21519952]
Arguments: explode(_extract_quantityDenominator#21519952), [plant#21519567], true, [quantityDenominator#21519593]
(736) Project
Output [1]: [plant#21519567]
Input [2]: [plant#21519567, quantityDenominator#21519593]
(737) HashAggregate
Input [1]: [plant#21519567]
Keys [1]: [plant#21519567]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519567]
(738) Exchange
Input [1]: [plant#21519567]
Arguments: hashpartitioning(plant#21519567, 25), ENSURE_REQUIREMENTS, [plan_id=21258557]
(739) HashAggregate
Input [1]: [plant#21519567]
Keys [1]: [plant#21519567]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519567]
(740) BroadcastHashJoin
Left keys [1]: [plantUuid#21519563]
Right keys [1]: [plant#21519567]
Join type: Inner
Join condition: None
(741) Project
Output [3]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Input [4]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565, plant#21519567]
(742) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519535.internalRefUUID, ), isnull(plant#21519535.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21519563, ), isnull(plantUuid#21519563)]
Join type: Inner
Join condition: None
(743) Generate
Input [9]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Arguments: explode(filter(stockQuantities#21519537, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519565) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519564)), lambda x#21518157, false))), [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563], false, [stockQuantity#21519596]
(744) ObjectHashAggregate
Input [7]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563, stockQuantity#21519596]
Keys [5]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532]
Functions [2]: [partial_first(calculationDateTime#21519536, false), partial_collect_list(stockQuantity#21519596, 0, 0)]
Aggregate Attributes [3]: [first#21521428, valueSet#21521429, buf#21521430]
Results [8]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532, first#21521431, valueSet#21521432, buf#21521433]
(745) ObjectHashAggregate
Input [8]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532, first#21521431, valueSet#21521432, buf#21521433]
Keys [5]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532]
Functions [2]: [first(calculationDateTime#21519536, false), collect_list(stockQuantity#21519596, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21519536)()#21518172, collect_list(stockQuantity#21519596, 0, 0)#21518173]
Results [4]: [product#21519534, plant#21519535, first(calculationDateTime#21519536)()#21518172 AS calculationDateTime#21519597, collect_list(stockQuantity#21519596, 0, 0)#21518173 AS stockQuantities#21519598]
(746) Filter
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantities#21519598]
Condition : ((size(stockQuantities#21519598, true) > 0) AND isnotnull(calculationDateTime#21519597))
(747) Generate
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantities#21519598]
Arguments: explode(stockQuantities#21519598), [product#21519534, plant#21519535, calculationDateTime#21519597], false, [stockQuantity#21519599]
(748) Filter
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantity#21519599]
Condition : (((isnotnull(stockQuantity#21519599.specialStockIndicator.code) AND isnotnull(stockQuantity#21519599.stockType.code)) AND (stockQuantity#21519599.specialStockIndicator.code = )) AND (stockQuantity#21519599.stockType.code = 01))
(749) Project
Output [5]: [plant#21519535.internalRefUUID AS plantUuid#21519601, product#21519534.internalRefUUID AS productUuid#21519603, calculationDateTime#21519597, stockQuantity#21519599.storagelocation.id AS storageLocId#21519604, stockQuantity#21519599.quantity.measure AS quantity#21519606]
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantity#21519599]
(750) Exchange
Input [5]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606]
Arguments: hashpartitioning(productUuid#21519603, plantUuid#21519601, 25), ENSURE_REQUIREMENTS, [plan_id=21258586]
(751) Sort
Input [5]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606]
Arguments: [productUuid#21519603 ASC NULLS FIRST, plantUuid#21519601 ASC NULLS FIRST], false, 0
(752) Scan parquet
Output [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(753) Filter
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Condition : ((isnotnull(orderDateTime#21519611) AND isnotnull(plant#21519610)) AND isnotnull(product#21519609))
(754) Exchange
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Arguments: hashpartitioning(product#21519609, plant#21519610, 25), REPARTITION_BY_NUM, [plan_id=21258434]
(755) Scan parquet
Output [4]: [plant#21519615, product#21519616, productionAspect#21519618, systemId#21519613]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(756) Project
Output [4]: [plant#21519615.internalRefUUID AS _extract_internalRefUUID#21520085, product#21519616.internalRefUUID AS _extract_internalRefUUID#21520084, productionAspect#21519618.productMovementPlants.unitOfIssue.code AS _extract_code#21520082, productionAspect#21519618.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520083]
Input [4]: [plant#21519615, product#21519616, productionAspect#21519618, systemId#21519613]
(757) Exchange
Input [4]: [_extract_internalRefUUID#21520085, _extract_internalRefUUID#21520084, _extract_code#21520082, _extract_internalRefUUID#21520083]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258247]
(758) Project
Output [4]: [_extract_code#21520082, _extract_internalRefUUID#21520083, _extract_internalRefUUID#21520084, _extract_internalRefUUID#21520085]
Input [4]: [_extract_internalRefUUID#21520085, _extract_internalRefUUID#21520084, _extract_code#21520082, _extract_internalRefUUID#21520083]
(759) BroadcastExchange
Input [4]: [_extract_code#21520082, _extract_internalRefUUID#21520083, _extract_internalRefUUID#21520084, _extract_internalRefUUID#21520085]
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=21258573]
(760) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519609, ), isnull(product#21519609), coalesce(plant#21519610, ), isnull(plant#21519610)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520084, ), isnull(_extract_internalRefUUID#21520084), coalesce(_extract_internalRefUUID#21520085, ), isnull(_extract_internalRefUUID#21520085)]
Join type: LeftOuter
Join condition: None
(761) Project
Output [5]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083]
Input [7]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083, _extract_internalRefUUID#21520084, _extract_internalRefUUID#21520085]
(762) Scan parquet
Output [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(763) Filter
Input [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
Condition : isnotnull(internalUUID#21519623)
(764) Project
Output [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Input [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
(765) Exchange
Input [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258254]
(766) BroadcastExchange
Input [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258577]
(767) BroadcastHashJoin
Left keys [1]: [product#21519609]
Right keys [1]: [internalUUID#21519623]
Join type: LeftOuter
Join condition: None
(768) Project
Output [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filter(unitOfMeasureConversions#21519629, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520082) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520083)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519627.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519627.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519634]
Input [8]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083, internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
(769) Generate
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634]
Arguments: explode(filteredUnitOfMeasureConversions#21519634.quantityNumerator), [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634], true, [quantityNumerator#21519635]
(770) Project
Output [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634.quantityDenominator AS _extract_quantityDenominator#21519959]
Input [5]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634, quantityNumerator#21519635]
(771) Generate
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_quantityDenominator#21519959]
Arguments: explode(_extract_quantityDenominator#21519959), [product#21519609, plant#21519610, orderDateTime#21519611], true, [quantityDenominator#21519636]
(772) Project
Output [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, quantityDenominator#21519636]
(773) Sort
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Arguments: [product#21519609 ASC NULLS FIRST, plant#21519610 ASC NULLS FIRST], false, 0
(774) SortMergeJoin
Left keys [2]: [productUuid#21519603, plantUuid#21519601]
Right keys [2]: [product#21519609, plant#21519610]
Join type: Inner
Join condition: (calculationDateTime#21519597 <= orderDateTime#21519611)
(775) Project
Output [5]: [plantUuid#21519601 AS plant#21519639, productUuid#21519603 AS product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Input [8]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606, product#21519609, plant#21519610, orderDateTime#21519611]
(776) Exchange
Input [5]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Arguments: hashpartitioning(coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597), 25), ENSURE_REQUIREMENTS, [plan_id=21258642]
(777) Sort
Input [5]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Arguments: [coalesce(plant#21519639, ) ASC NULLS FIRST, isnull(plant#21519639) ASC NULLS FIRST, coalesce(product#21519640, ) ASC NULLS FIRST, isnull(product#21519640) ASC NULLS FIRST, coalesce(storageLocId#21519604, ) ASC NULLS FIRST, isnull(storageLocId#21519604) ASC NULLS FIRST, coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21519597) ASC NULLS FIRST], false, 0
(778) Scan parquet
Output [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(779) Filter
Input [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
Condition : (isnotnull(plant#21519644.internalRefUUID) AND isnotnull(product#21519643.internalRefUUID))
(780) Project
Output [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Input [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
(781) Exchange
Input [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258266]
(782) BroadcastExchange
Input [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
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=21258611]
(783) Scan parquet
Output [2]: [marketUnit#21519647, distributionCenters#21519653]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(784) Filter
Input [2]: [marketUnit#21519647, distributionCenters#21519653]
Condition : (((marketUnit#21519647 <=> SS_Test_1) AND (size(distributionCenters#21519653, true) > 0)) AND isnotnull(distributionCenters#21519653))
(785) Project
Output [1]: [distributionCenters#21519653]
Input [2]: [marketUnit#21519647, distributionCenters#21519653]
(786) Exchange
Input [1]: [distributionCenters#21519653]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258270]
(787) Generate
Input [1]: [distributionCenters#21519653]
Arguments: explode(distributionCenters#21519653), false, [distributionCenters#21519669]
(788) Filter
Input [1]: [distributionCenters#21519669]
Condition : (((size(distributionCenters#21519669.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519669.storageLocations)) AND isnotnull(distributionCenters#21519669.internalRefUUID))
(789) Project
Output [2]: [distributionCenters#21519669.internalRefUUID AS _extract_internalRefUUID#21519966, distributionCenters#21519669.storageLocations AS _extract_storageLocations#21519967]
Input [1]: [distributionCenters#21519669]
(790) Generate
Input [2]: [_extract_internalRefUUID#21519966, _extract_storageLocations#21519967]
Arguments: explode(_extract_storageLocations#21519967), [_extract_internalRefUUID#21519966], false, [storageLocations#21519670]
(791) Project
Output [3]: [_extract_internalRefUUID#21519966 AS plantUuid#21519672, storageLocations#21519670.id AS storageLocId#21519673, storageLocations#21519670.internalRefUUID AS storageLocUuid#21519674]
Input [2]: [_extract_internalRefUUID#21519966, storageLocations#21519670]
(792) BroadcastExchange
Input [3]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258607]
(793) Scan parquet
Output [2]: [product#21519675, plant#21519676]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(794) Filter
Input [2]: [product#21519675, plant#21519676]
Condition : isnotnull(plant#21519676)
(795) Exchange
Input [2]: [product#21519675, plant#21519676]
Arguments: hashpartitioning(product#21519675, plant#21519676, 25), REPARTITION_BY_NUM, [plan_id=21258445]
(796) Scan parquet
Output [4]: [plant#21519681, product#21519682, productionAspect#21519684, systemId#21519679]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(797) Project
Output [4]: [plant#21519681.internalRefUUID AS _extract_internalRefUUID#21520086, product#21519682.internalRefUUID AS _extract_internalRefUUID#21520089, productionAspect#21519684.productMovementPlants.unitOfIssue.code AS _extract_code#21520087, productionAspect#21519684.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520088]
Input [4]: [plant#21519681, product#21519682, productionAspect#21519684, systemId#21519679]
(798) Exchange
Input [4]: [_extract_internalRefUUID#21520086, _extract_internalRefUUID#21520089, _extract_code#21520087, _extract_internalRefUUID#21520088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258282]
(799) Project
Output [4]: [_extract_code#21520087, _extract_internalRefUUID#21520088, _extract_internalRefUUID#21520089, _extract_internalRefUUID#21520086]
Input [4]: [_extract_internalRefUUID#21520086, _extract_internalRefUUID#21520089, _extract_code#21520087, _extract_internalRefUUID#21520088]
(800) BroadcastExchange
Input [4]: [_extract_code#21520087, _extract_internalRefUUID#21520088, _extract_internalRefUUID#21520089, _extract_internalRefUUID#21520086]
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=21258591]
(801) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519675, ), isnull(product#21519675), coalesce(plant#21519676, ), isnull(plant#21519676)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520089, ), isnull(_extract_internalRefUUID#21520089), coalesce(_extract_internalRefUUID#21520086, ), isnull(_extract_internalRefUUID#21520086)]
Join type: LeftOuter
Join condition: None
(802) Project
Output [4]: [product#21519675, plant#21519676, _extract_code#21520087, _extract_internalRefUUID#21520088]
Input [6]: [product#21519675, plant#21519676, _extract_code#21520087, _extract_internalRefUUID#21520088, _extract_internalRefUUID#21520089, _extract_internalRefUUID#21520086]
(803) Scan parquet
Output [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(804) Filter
Input [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
Condition : isnotnull(internalUUID#21519689)
(805) Project
Output [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Input [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
(806) Exchange
Input [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258289]
(807) BroadcastExchange
Input [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258595]
(808) BroadcastHashJoin
Left keys [1]: [product#21519675]
Right keys [1]: [internalUUID#21519689]
Join type: LeftOuter
Join condition: None
(809) Project
Output [2]: [plant#21519676, filter(unitOfMeasureConversions#21519695, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520087) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520088)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519693.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519693.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519700]
Input [7]: [product#21519675, plant#21519676, _extract_code#21520087, _extract_internalRefUUID#21520088, internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
(810) Generate
Input [2]: [plant#21519676, filteredUnitOfMeasureConversions#21519700]
Arguments: explode(filteredUnitOfMeasureConversions#21519700.quantityNumerator), [plant#21519676, filteredUnitOfMeasureConversions#21519700], true, [quantityNumerator#21519701]
(811) Project
Output [2]: [plant#21519676, filteredUnitOfMeasureConversions#21519700.quantityDenominator AS _extract_quantityDenominator#21519968]
Input [3]: [plant#21519676, filteredUnitOfMeasureConversions#21519700, quantityNumerator#21519701]
(812) Generate
Input [2]: [plant#21519676, _extract_quantityDenominator#21519968]
Arguments: explode(_extract_quantityDenominator#21519968), [plant#21519676], true, [quantityDenominator#21519702]
(813) Project
Output [1]: [plant#21519676]
Input [2]: [plant#21519676, quantityDenominator#21519702]
(814) HashAggregate
Input [1]: [plant#21519676]
Keys [1]: [plant#21519676]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519676]
(815) Exchange
Input [1]: [plant#21519676]
Arguments: hashpartitioning(plant#21519676, 25), ENSURE_REQUIREMENTS, [plan_id=21258604]
(816) HashAggregate
Input [1]: [plant#21519676]
Keys [1]: [plant#21519676]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519676]
(817) BroadcastHashJoin
Left keys [1]: [plantUuid#21519672]
Right keys [1]: [plant#21519676]
Join type: Inner
Join condition: None
(818) Project
Output [3]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Input [4]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674, plant#21519676]
(819) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519644.internalRefUUID, ), isnull(plant#21519644.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21519672, ), isnull(plantUuid#21519672)]
Join type: Inner
Join condition: None
(820) Generate
Input [9]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Arguments: explode(filter(stockQuantities#21519646, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519674) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519673)), lambda x#21518157, false))), [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672], false, [stockQuantity#21519705]
(821) ObjectHashAggregate
Input [7]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672, stockQuantity#21519705]
Keys [5]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641]
Functions [2]: [partial_first(calculationDateTime#21519645, false), partial_collect_list(stockQuantity#21519705, 0, 0)]
Aggregate Attributes [3]: [first#21521436, valueSet#21521437, buf#21521438]
Results [8]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641, first#21521439, valueSet#21521440, buf#21521441]
(822) ObjectHashAggregate
Input [8]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641, first#21521439, valueSet#21521440, buf#21521441]
Keys [5]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641]
Functions [2]: [first(calculationDateTime#21519645, false), collect_list(stockQuantity#21519705, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21519645)()#21518172, collect_list(stockQuantity#21519705, 0, 0)#21518173]
Results [4]: [product#21519643, plant#21519644, first(calculationDateTime#21519645)()#21518172 AS calculationDateTime#21519706, collect_list(stockQuantity#21519705, 0, 0)#21518173 AS stockQuantities#21519707]
(823) Filter
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantities#21519707]
Condition : ((size(stockQuantities#21519707, true) > 0) AND isnotnull(calculationDateTime#21519706))
(824) Generate
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantities#21519707]
Arguments: explode(stockQuantities#21519707), [product#21519643, plant#21519644, calculationDateTime#21519706], false, [stockQuantity#21519708]
(825) Filter
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantity#21519708]
Condition : (((isnotnull(stockQuantity#21519708.specialStockIndicator.code) AND isnotnull(stockQuantity#21519708.stockType.code)) AND (stockQuantity#21519708.specialStockIndicator.code = )) AND (stockQuantity#21519708.stockType.code = 01))
(826) Project
Output [4]: [plant#21519644.internalRefUUID AS plantUuid#21519710, product#21519643.internalRefUUID AS productUuid#21519712, calculationDateTime#21519706, stockQuantity#21519708.storagelocation.id AS storageLocId#21519713]
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantity#21519708]
(827) Exchange
Input [4]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713]
Arguments: hashpartitioning(productUuid#21519712, plantUuid#21519710, 25), ENSURE_REQUIREMENTS, [plan_id=21258633]
(828) Sort
Input [4]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713]
Arguments: [productUuid#21519712 ASC NULLS FIRST, plantUuid#21519710 ASC NULLS FIRST], false, 0
(829) Scan parquet
Output [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(830) Filter
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Condition : ((isnotnull(orderDateTime#21519720) AND isnotnull(plant#21519719)) AND isnotnull(product#21519718))
(831) Exchange
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Arguments: hashpartitioning(product#21519718, plant#21519719, 25), REPARTITION_BY_NUM, [plan_id=21258466]
(832) Scan parquet
Output [4]: [plant#21519724, product#21519725, productionAspect#21519727, systemId#21519722]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(833) Project
Output [4]: [plant#21519724.internalRefUUID AS _extract_internalRefUUID#21520093, product#21519725.internalRefUUID AS _extract_internalRefUUID#21520090, productionAspect#21519727.productMovementPlants.unitOfIssue.code AS _extract_code#21520091, productionAspect#21519727.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520092]
Input [4]: [plant#21519724, product#21519725, productionAspect#21519727, systemId#21519722]
(834) Exchange
Input [4]: [_extract_internalRefUUID#21520093, _extract_internalRefUUID#21520090, _extract_code#21520091, _extract_internalRefUUID#21520092]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258314]
(835) Project
Output [4]: [_extract_code#21520091, _extract_internalRefUUID#21520092, _extract_internalRefUUID#21520090, _extract_internalRefUUID#21520093]
Input [4]: [_extract_internalRefUUID#21520093, _extract_internalRefUUID#21520090, _extract_code#21520091, _extract_internalRefUUID#21520092]
(836) BroadcastExchange
Input [4]: [_extract_code#21520091, _extract_internalRefUUID#21520092, _extract_internalRefUUID#21520090, _extract_internalRefUUID#21520093]
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=21258620]
(837) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519718, ), isnull(product#21519718), coalesce(plant#21519719, ), isnull(plant#21519719)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520090, ), isnull(_extract_internalRefUUID#21520090), coalesce(_extract_internalRefUUID#21520093, ), isnull(_extract_internalRefUUID#21520093)]
Join type: LeftOuter
Join condition: None
(838) Project
Output [5]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092]
Input [7]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092, _extract_internalRefUUID#21520090, _extract_internalRefUUID#21520093]
(839) Scan parquet
Output [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(840) Filter
Input [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
Condition : isnotnull(internalUUID#21519732)
(841) Project
Output [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Input [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
(842) Exchange
Input [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258321]
(843) BroadcastExchange
Input [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258624]
(844) BroadcastHashJoin
Left keys [1]: [product#21519718]
Right keys [1]: [internalUUID#21519732]
Join type: LeftOuter
Join condition: None
(845) Project
Output [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filter(unitOfMeasureConversions#21519738, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520091) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520092)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519736.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519736.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519743]
Input [8]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092, internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
(846) Generate
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743]
Arguments: explode(filteredUnitOfMeasureConversions#21519743.quantityNumerator), [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743], true, [quantityNumerator#21519744]
(847) Project
Output [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743.quantityDenominator AS _extract_quantityDenominator#21519975]
Input [5]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743, quantityNumerator#21519744]
(848) Generate
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_quantityDenominator#21519975]
Arguments: explode(_extract_quantityDenominator#21519975), [product#21519718, plant#21519719, orderDateTime#21519720], true, [quantityDenominator#21519745]
(849) Project
Output [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, quantityDenominator#21519745]
(850) Sort
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Arguments: [product#21519718 ASC NULLS FIRST, plant#21519719 ASC NULLS FIRST], false, 0
(851) SortMergeJoin
Left keys [2]: [productUuid#21519712, plantUuid#21519710]
Right keys [2]: [product#21519718, plant#21519719]
Join type: Inner
Join condition: (calculationDateTime#21519706 <= orderDateTime#21519720)
(852) Project
Output [4]: [plantUuid#21519710 AS plant#21519748, productUuid#21519712 AS product#21519749, storageLocId#21519713, calculationDateTime#21519706]
Input [7]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713, product#21519718, plant#21519719, orderDateTime#21519720]
(853) HashAggregate
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, calculationDateTime#21519706]
Keys [3]: [plant#21519748, product#21519749, storageLocId#21519713]
Functions [1]: [partial_max(calculationDateTime#21519706)]
Aggregate Attributes [1]: [max#21521434]
Results [4]: [plant#21519748, product#21519749, storageLocId#21519713, max#21521435]
(854) HashAggregate
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max#21521435]
Keys [3]: [plant#21519748, product#21519749, storageLocId#21519713]
Functions [1]: [max(calculationDateTime#21519706)]
Aggregate Attributes [1]: [max(calculationDateTime#21519706)#21518235]
Results [4]: [plant#21519748, product#21519749, storageLocId#21519713, max(calculationDateTime#21519706)#21518235 AS max_calc_datetime#21519750]
(855) Exchange
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
Arguments: hashpartitioning(coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750), 25), ENSURE_REQUIREMENTS, [plan_id=21258643]
(856) Sort
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
Arguments: [coalesce(plant#21519748, ) ASC NULLS FIRST, isnull(plant#21519748) ASC NULLS FIRST, coalesce(product#21519749, ) ASC NULLS FIRST, isnull(product#21519749) ASC NULLS FIRST, coalesce(storageLocId#21519713, ) ASC NULLS FIRST, isnull(storageLocId#21519713) ASC NULLS FIRST, coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21519750) ASC NULLS FIRST], false, 0
(857) SortMergeJoin
Left keys [8]: [coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597)]
Right keys [8]: [coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750)]
Join type: Inner
Join condition: None
(858) Project
Output [4]: [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]
Input [9]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606, plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
(859) HashAggregate
Input [4]: [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]
Keys [2]: [product#21519640, plant#21519639]
Functions [2]: [partial_min(calculationDateTime#21519597), partial_sum(quantity#21519606)]
Aggregate Attributes [2]: [min#21521424, sum#21521425]
Results [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
(860) Exchange
Input [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
Arguments: hashpartitioning(product#21519640, plant#21519639, 25), ENSURE_REQUIREMENTS, [plan_id=21258650]
(861) HashAggregate
Input [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
Keys [2]: [product#21519640, plant#21519639]
Functions [2]: [min(calculationDateTime#21519597), sum(quantity#21519606)]
Aggregate Attributes [2]: [min(calculationDateTime#21519597)#21518361, sum(quantity#21519606)#21518360]
Results [4]: [product#21519640, plant#21519639, min(calculationDateTime#21519597)#21518361 AS minCalculationDateTime#21519752, round(sum(quantity#21519606)#21518360, 0) AS roundedQuantitySum#21519753]
(862) Sort
Input [4]: [product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
Arguments: [product#21519640 ASC NULLS FIRST, plant#21519639 ASC NULLS FIRST], false, 0
(863) SortMergeJoin
Left keys [2]: [product#21519502, plant#21519503]
Right keys [2]: [product#21519640, plant#21519639]
Join type: LeftOuter
Join condition: None
(864) Project
Output [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, CASE WHEN isnotnull(minCalculationDateTime#21519752) THEN minCalculationDateTime#21519752 ELSE orderDateTime#21519504 END AS stockDatetime#21519754, CASE WHEN isnotnull(roundedQuantitySum#21519753) THEN array(roundedQuantitySum#21519753) ELSE [0.0] END AS stockBatchQuantities#21519755]
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
(865) Scan parquet
Output [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001651/0_1_10000001651]
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>>>
(866) BroadcastExchange
Input [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
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=21258660]
(867) BroadcastHashJoin
Left keys [4]: [coalesce(plant#21519503, ), isnull(plant#21519503), coalesce(product#21519502, ), isnull(product#21519502)]
Right keys [4]: [coalesce(plant#21518400, ), isnull(plant#21518400), coalesce(product#21518399, ), isnull(product#21518399)]
Join type: LeftOuter
Join condition: None
(868) Project
Output [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, CASE WHEN isnotnull(product#21518399) THEN struct(demandChannel, demandChannel#21518401, demandStream, demandStream#21518402, considerVariance, considerVariance#21518403, demandTimeBuckets, demandTimeBuckets#21518404, demandPointInTimeStart, demandPointInTimeStart#21518405, demandPointInTimeEnd, demandPointInTimeEnd#21518406, demandPointInTime, demandPointInTime#21518407) END AS rawDemands#21518409]
Input [16]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
(869) ObjectHashAggregate
Input [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518409]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, knownfloatingpointnormalized(if (isnull(productPlant#21519514)) null else named_struct(systemId, productPlant#21519514.systemId, internalUUID, productPlant#21519514.internalUUID, plant, productPlant#21519514.plant, product, productPlant#21519514.product, blockedForReplenishmentStartingFrom, productPlant#21519514.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect)) null else named_struct(productMovementPlants, productPlant#21519514.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21519514.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21519514.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21519514.salesPlant, listing, productPlant#21519514.listing)) AS productPlant#21519514, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21519531)) AS outboundUnit#21519531, stockDatetime#21519754, knownfloatingpointnormalized(transform(stockBatchQuantities#21519755, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21521421)), lambda arg#21521421, false))) AS stockBatchQuantities#21519755, [7226582400000000] AS [7226582400000000]#21521420]
Functions [1]: [partial_collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [buf#21521422]
Results [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21521420, buf#21521423]
(870) ObjectHashAggregate
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21521420, buf#21521423]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21521420]
Functions [1]: [collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21518409, 0, 0)#21518429]
Results [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, collect_list(rawDemands#21518409, 0, 0)#21518429 AS rawDemands#21518410]
(871) Scan parquet
Output [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(872) Project
Output [2]: [internalUUID#21519453, address#21519459.timeZone.code AS timezonecode#21519465]
Input [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
(873) Exchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258345]
(874) BroadcastExchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21258666]
(875) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [2]: [coalesce(internalUUID#21519453, ), isnull(internalUUID#21519453)]
Join type: LeftOuter
Join condition: None
(876) Project
Output [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, CASE WHEN isnotnull(timezonecode#21519465) THEN timezonecode#21519465 ELSE UTC END AS timezonecode#21519467]
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518410, internalUUID#21519453, timezonecode#21519465]
(877) DeserializeToObject
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, timezonecode#21519467]
Arguments: createexternalrow(invoke(product#21519502.toString()), invoke(plant#21519503.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21519504)), if (isnull(productPlant#21519514)) null else createexternalrow(invoke(productPlant#21519514.systemId.toString()), invoke(productPlant#21519514.internalUUID.toString()), if (isnull(productPlant#21519514.plant)) null else createexternalrow(invoke(productPlant#21519514.plant.internalRefUUID.toString()), invoke(productPlant#21519514.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21519514.product)) null else createexternalrow(invoke(productPlant#21519514.product.internalRefUUID.toString()), invoke(productPlant#21519514.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21519514.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21519514.productionAspect)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21519514.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#21519514.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21519514.salesPlant)) null else createexternalrow(if (isnull(productPlant#21519514.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21519514.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21519514.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#21519514.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21519531)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21519754)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#21519755, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#21519756, 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#21518410, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21519467.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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21519488: org.apache.spark.sql.Row
(878) MapElements
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(879) SerializeFromObject
Input [1]: [obj#21519493]
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#21519498, 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#21519499]
(880) Exchange
Input [2]: [product#21519498, plant#21519499]
Arguments: hashpartitioning(coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498), 25), ENSURE_REQUIREMENTS, [plan_id=21258675]
(881) Sort
Input [2]: [product#21519498, plant#21519499]
Arguments: [coalesce(plant#21519499, ) ASC NULLS FIRST, isnull(plant#21519499) ASC NULLS FIRST, coalesce(product#21519498, ) ASC NULLS FIRST, isnull(product#21519498) ASC NULLS FIRST], false, 0
(882) SortMergeJoin
Left keys [4]: [coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975)]
Right keys [4]: [coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498)]
Join type: LeftOuter
Join condition: None
(883) Project
Output [2]: [product#21517975, plant#21517976]
Input [4]: [product#21517975, plant#21517976, product#21519498, plant#21519499]
(884) Exchange
Input [2]: [product#21517975, plant#21517976]
Arguments: hashpartitioning(plant#21517976, 25), ENSURE_REQUIREMENTS, [plan_id=21258701]
(885) Sort
Input [2]: [product#21517975, plant#21517976]
Arguments: [plant#21517976 ASC NULLS FIRST], false, 0
(886) Scan parquet
Output [2]: [marketUnit#21519812, distributionCenters#21519818]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(887) Filter
Input [2]: [marketUnit#21519812, distributionCenters#21519818]
Condition : (((marketUnit#21519812 <=> SS_Test_1) AND (size(distributionCenters#21519818, true) > 0)) AND isnotnull(distributionCenters#21519818))
(888) Project
Output [1]: [distributionCenters#21519818]
Input [2]: [marketUnit#21519812, distributionCenters#21519818]
(889) Exchange
Input [1]: [distributionCenters#21519818]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258356]
(890) Generate
Input [1]: [distributionCenters#21519818]
Arguments: explode(distributionCenters#21519818), false, [distributionCenters#21519834]
(891) Filter
Input [1]: [distributionCenters#21519834]
Condition : (((size(distributionCenters#21519834.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#21519834.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#21519834.internalRefUUID))
(892) Project
Output [2]: [distributionCenters#21519834.internalRefUUID AS _extract_internalRefUUID#21519983, distributionCenters#21519834.storageLocations.internalRefUUID AS _extract_internalRefUUID#21520099]
Input [1]: [distributionCenters#21519834]
(893) Generate
Input [2]: [_extract_internalRefUUID#21519983, _extract_internalRefUUID#21520099]
Arguments: explode(_extract_internalRefUUID#21520099), [_extract_internalRefUUID#21519983], false, [storageLocations#21519835]
(894) Filter
Input [2]: [_extract_internalRefUUID#21519983, storageLocations#21519835]
Condition : isnotnull(storageLocations#21519835)
(895) Project
Output [2]: [_extract_internalRefUUID#21519983 AS plantUuid#21519837, storageLocations#21519835 AS storageLocUuid#21519839]
Input [2]: [_extract_internalRefUUID#21519983, storageLocations#21519835]
(896) BroadcastExchange
Input [2]: [plantUuid#21519837, storageLocUuid#21519839]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258696]
(897) Scan parquet
Output [2]: [product#21519840, plant#21519841]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(898) Filter
Input [2]: [product#21519840, plant#21519841]
Condition : isnotnull(plant#21519841)
(899) Exchange
Input [2]: [product#21519840, plant#21519841]
Arguments: hashpartitioning(product#21519840, plant#21519841, 25), REPARTITION_BY_NUM, [plan_id=21258496]
(900) Scan parquet
Output [4]: [plant#21519846, product#21519847, productionAspect#21519849, systemId#21519844]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(901) Project
Output [4]: [plant#21519846.internalRefUUID AS _extract_internalRefUUID#21520097, product#21519847.internalRefUUID AS _extract_internalRefUUID#21520094, productionAspect#21519849.productMovementPlants.unitOfIssue.code AS _extract_code#21520095, productionAspect#21519849.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520096]
Input [4]: [plant#21519846, product#21519847, productionAspect#21519849, systemId#21519844]
(902) Exchange
Input [4]: [_extract_internalRefUUID#21520097, _extract_internalRefUUID#21520094, _extract_code#21520095, _extract_internalRefUUID#21520096]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258369]
(903) Project
Output [4]: [_extract_code#21520095, _extract_internalRefUUID#21520096, _extract_internalRefUUID#21520094, _extract_internalRefUUID#21520097]
Input [4]: [_extract_internalRefUUID#21520097, _extract_internalRefUUID#21520094, _extract_code#21520095, _extract_internalRefUUID#21520096]
(904) BroadcastExchange
Input [4]: [_extract_code#21520095, _extract_internalRefUUID#21520096, _extract_internalRefUUID#21520094, _extract_internalRefUUID#21520097]
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=21258680]
(905) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519840, ), isnull(product#21519840), coalesce(plant#21519841, ), isnull(plant#21519841)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520094, ), isnull(_extract_internalRefUUID#21520094), coalesce(_extract_internalRefUUID#21520097, ), isnull(_extract_internalRefUUID#21520097)]
Join type: LeftOuter
Join condition: None
(906) Project
Output [4]: [product#21519840, plant#21519841, _extract_code#21520095, _extract_internalRefUUID#21520096]
Input [6]: [product#21519840, plant#21519841, _extract_code#21520095, _extract_internalRefUUID#21520096, _extract_internalRefUUID#21520094, _extract_internalRefUUID#21520097]
(907) Scan parquet
Output [4]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860, systemId#21519853]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(908) Filter
Input [4]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860, systemId#21519853]
Condition : isnotnull(internalUUID#21519854)
(909) Project
Output [3]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
Input [4]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860, systemId#21519853]
(910) Exchange
Input [3]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258376]
(911) BroadcastExchange
Input [3]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258684]
(912) BroadcastHashJoin
Left keys [1]: [product#21519840]
Right keys [1]: [internalUUID#21519854]
Join type: LeftOuter
Join condition: None
(913) Project
Output [2]: [plant#21519841, filter(unitOfMeasureConversions#21519860, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520095) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520096)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519858.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519858.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519865]
Input [7]: [product#21519840, plant#21519841, _extract_code#21520095, _extract_internalRefUUID#21520096, internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
(914) Generate
Input [2]: [plant#21519841, filteredUnitOfMeasureConversions#21519865]
Arguments: explode(filteredUnitOfMeasureConversions#21519865.quantityNumerator), [plant#21519841, filteredUnitOfMeasureConversions#21519865], true, [quantityNumerator#21519866]
(915) Project
Output [2]: [plant#21519841, filteredUnitOfMeasureConversions#21519865.quantityDenominator AS _extract_quantityDenominator#21519985]
Input [3]: [plant#21519841, filteredUnitOfMeasureConversions#21519865, quantityNumerator#21519866]
(916) Generate
Input [2]: [plant#21519841, _extract_quantityDenominator#21519985]
Arguments: explode(_extract_quantityDenominator#21519985), [plant#21519841], true, [quantityDenominator#21519867]
(917) Project
Output [1]: [plant#21519841]
Input [2]: [plant#21519841, quantityDenominator#21519867]
(918) HashAggregate
Input [1]: [plant#21519841]
Keys [1]: [plant#21519841]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519841]
(919) Exchange
Input [1]: [plant#21519841]
Arguments: hashpartitioning(plant#21519841, 25), ENSURE_REQUIREMENTS, [plan_id=21258693]
(920) HashAggregate
Input [1]: [plant#21519841]
Keys [1]: [plant#21519841]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519841]
(921) BroadcastHashJoin
Left keys [1]: [plantUuid#21519837]
Right keys [1]: [plant#21519841]
Join type: Inner
Join condition: None
(922) Project
Output [2]: [plantUuid#21519837 AS plant#21519811, storageLocUuid#21519839]
Input [3]: [plantUuid#21519837, storageLocUuid#21519839, plant#21519841]
(923) Sort
Input [2]: [plant#21519811, storageLocUuid#21519839]
Arguments: [plant#21519811 ASC NULLS FIRST], false, 0
(924) SortMergeJoin
Left keys [1]: [plant#21517976]
Right keys [1]: [plant#21519811]
Join type: Inner
Join condition: None
(925) Project
Output [3]: [plant#21517976, product#21517975, storageLocUuid#21519839]
Input [4]: [product#21517975, plant#21517976, plant#21519811, storageLocUuid#21519839]
(926) Scan parquet
Output [5]: [internalUUID#21519777, id#21519778, isMarkedForDeletion#21519783, items#21519784, systemId#21519776]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(927) Filter
Input [5]: [internalUUID#21519777, id#21519778, isMarkedForDeletion#21519783, items#21519784, systemId#21519776]
Condition : (((isnotnull(isMarkedForDeletion#21519783) AND NOT isMarkedForDeletion#21519783) AND (size(items#21519784, true) > 0)) AND isnotnull(items#21519784))
(928) Project
Output [3]: [internalUUID#21519777, id#21519778, items#21519784]
Input [5]: [internalUUID#21519777, id#21519778, isMarkedForDeletion#21519783, items#21519784, systemId#21519776]
(929) Exchange
Input [3]: [internalUUID#21519777, id#21519778, items#21519784]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258392]
(930) Generate
Input [3]: [internalUUID#21519777, id#21519778, items#21519784]
Arguments: explode(items#21519784), [internalUUID#21519777, id#21519778], false, [item#21519788]
(931) Filter
Input [3]: [internalUUID#21519777, id#21519778, item#21519788]
Condition : ((((isnotnull(item#21519788.deletionIndicator) AND isnotnull(item#21519788.completeIndicator)) AND isnotnull(item#21519788.returnIndicator)) AND ((NOT item#21519788.deletionIndicator AND NOT item#21519788.completeIndicator) AND NOT item#21519788.returnIndicator)) AND ((isnotnull(item#21519788.product.internalRefUUID) AND isnotnull(item#21519788.plant.internalRefUUID)) AND isnotnull(item#21519788.storageLocation.internalRefUUID)))
(932) Project
Output [11]: [id#21519778, internalUUID#21519777, item#21519788.plant.internalRefUUID AS plant#21519793, item#21519788.product.internalRefUUID AS product#21519794, item#21519788.storageLocation.internalRefUUID AS storageLocUuid#21519795, item#21519788.quantityUnit.code AS quantityUom#21519796, item#21519788.quantityUnit.internalRefUUID AS quantityUomUuid#21519797, item#21519788.quantityNumerator AS quantityNumerator#21519798, item#21519788.quantityDenominator AS quantityDenominator#21519799, item#21519788.scheduleLines AS scheduleLines#21519800, item#21519788.confirmations AS confirmations#21519801]
Input [3]: [internalUUID#21519777, id#21519778, item#21519788]
(933) BroadcastExchange
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, storageLocUuid#21519795, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=21258707]
(934) BroadcastHashJoin
Left keys [3]: [product#21517975, plant#21517976, storageLocUuid#21519839]
Right keys [3]: [product#21519794, plant#21519793, storageLocUuid#21519795]
Join type: Inner
Join condition: None
(935) Project
Output [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, size(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519885.deletionIndicator AND lambda x_1552#21519885.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519885.confirmedDeliveryAt)), lambda x_1552#21519885, false)), false) AS _w0#21519892]
Input [14]: [plant#21517976, product#21517975, storageLocUuid#21519839, id#21519778, internalUUID#21519777, plant#21519793, product#21519794, storageLocUuid#21519795, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801]
(936) Exchange
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892]
Arguments: hashpartitioning(internalUUID#21519777, 25), ENSURE_REQUIREMENTS, [plan_id=21258711]
(937) Sort
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892]
Arguments: [internalUUID#21519777 ASC NULLS FIRST], false, 0
(938) Window
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892]
Arguments: [sum(_w0#21519892) windowspecdefinition(internalUUID#21519777, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#21519893L], [internalUUID#21519777]
(939) Project
Output [3]: [plant#21519793, product#21519794, filter(transform(CASE WHEN (_we0#21519893L > 0) THEN transform(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519886.deletionIndicator AND lambda x_1552#21519886.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519886.confirmedDeliveryAt)), lambda x_1552#21519886, false)), lambdafunction(struct(openQty, greatest((lambda x_1553#21519889.confirmedQuantity - coalesce(lambda x_1553#21519889.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1553#21519889.confirmedDeliveryAt), lambda x_1553#21519889, false)) ELSE transform(scheduleLines#21519800, lambdafunction(struct(openQty, greatest((lambda x_1551#21519887.quantity - coalesce(lambda x_1551#21519887.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1551#21519887.deliveryAt), lambda x_1551#21519887, false)) END, lambdafunction(struct(documentId, id#21519778, documentUuid, internalUUID#21519777, openQty, lambda x_1554#21519890.openQty, openQtyInBaseUnit, ((lambda x_1554#21519890.openQty * quantityNumerator#21519798) / quantityDenominator#21519799), qtyUom, quantityUom#21519796, qtyUomUuid, quantityUomUuid#21519797, availabilityDatetime, lambda x_1554#21519890.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_1554#21519890, false)), lambdafunction(NOT (lambda x_1555#21519891.openQty = 0.0), lambda x_1555#21519891, false)) AS openGoodsMovements#21519884]
Input [12]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892, _we0#21519893L]
(940) ObjectHashAggregate
Input [3]: [plant#21519793, product#21519794, openGoodsMovements#21519884]
Keys [2]: [product#21519794, plant#21519793]
Functions [1]: [partial_collect_list(openGoodsMovements#21519884, 0, 0)]
Aggregate Attributes [1]: [buf#21521418]
Results [3]: [product#21519794, plant#21519793, buf#21521419]
(941) Exchange
Input [3]: [product#21519794, plant#21519793, buf#21521419]
Arguments: hashpartitioning(product#21519794, plant#21519793, 25), ENSURE_REQUIREMENTS, [plan_id=21258717]
(942) ObjectHashAggregate
Input [3]: [product#21519794, plant#21519793, buf#21521419]
Keys [2]: [product#21519794, plant#21519793]
Functions [1]: [collect_list(openGoodsMovements#21519884, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#21519884, 0, 0)#21519909]
Results [3]: [product#21519794, plant#21519793, flatten(collect_list(openGoodsMovements#21519884, 0, 0)#21519909) AS openGoodsMovements#21519894]
(943) Filter
Input [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Condition : (size(openGoodsMovements#21519894, false) > 0)
(944) AdaptiveSparkPlan
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: isFinalPlan=true
(945) Filter
Input [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Condition : (isnotnull(product#21519794) AND isnotnull(plant#21519793))
(946) Scan parquet
Output [3]: [product#21521486, plant#21521487, orderDateTime#21521488]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(947) Filter
Input [3]: [product#21521486, plant#21521487, orderDateTime#21521488]
Condition : isnotnull(plant#21521487)
(948) Exchange
Input [3]: [product#21521486, plant#21521487, orderDateTime#21521488]
Arguments: hashpartitioning(product#21521486, plant#21521487, 25), REPARTITION_BY_NUM, [plan_id=21264120]
(949) Scan parquet
Output [4]: [plant#21521492, product#21521493, productionAspect#21521495, systemId#21521490]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(950) Project
Output [4]: [plant#21521492.internalRefUUID AS _extract_internalRefUUID#21525613, product#21521493.internalRefUUID AS _extract_internalRefUUID#21525616, productionAspect#21521495.productMovementPlants.unitOfIssue.code AS _extract_code#21525614, productionAspect#21521495.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525615]
Input [4]: [plant#21521492, product#21521493, productionAspect#21521495, systemId#21521490]
(951) Exchange
Input [4]: [_extract_internalRefUUID#21525613, _extract_internalRefUUID#21525616, _extract_code#21525614, _extract_internalRefUUID#21525615]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262917]
(952) Project
Output [4]: [_extract_code#21525614, _extract_internalRefUUID#21525615, _extract_internalRefUUID#21525616, _extract_internalRefUUID#21525613]
Input [4]: [_extract_internalRefUUID#21525613, _extract_internalRefUUID#21525616, _extract_code#21525614, _extract_internalRefUUID#21525615]
(953) BroadcastExchange
Input [4]: [_extract_code#21525614, _extract_internalRefUUID#21525615, _extract_internalRefUUID#21525616, _extract_internalRefUUID#21525613]
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=21264908]
(954) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521486, ), isnull(product#21521486), coalesce(plant#21521487, ), isnull(plant#21521487)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525616, ), isnull(_extract_internalRefUUID#21525616), coalesce(_extract_internalRefUUID#21525613, ), isnull(_extract_internalRefUUID#21525613)]
Join type: LeftOuter
Join condition: None
(955) Project
Output [5]: [product#21521486, plant#21521487, orderDateTime#21521488, _extract_code#21525614, _extract_internalRefUUID#21525615]
Input [7]: [product#21521486, plant#21521487, orderDateTime#21521488, _extract_code#21525614, _extract_internalRefUUID#21525615, _extract_internalRefUUID#21525616, _extract_internalRefUUID#21525613]
(956) Scan parquet
Output [4]: [internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506, systemId#21521499]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(957) Filter
Input [4]: [internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506, systemId#21521499]
Condition : isnotnull(internalUUID#21521500)
(958) Project
Output [3]: [internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506]
Input [4]: [internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506, systemId#21521499]
(959) Exchange
Input [3]: [internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262924]
(960) BroadcastExchange
Input [3]: [internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264912]
(961) BroadcastHashJoin
Left keys [1]: [product#21521486]
Right keys [1]: [internalUUID#21521500]
Join type: LeftOuter
Join condition: None
(962) Project
Output [4]: [product#21521486, plant#21521487, orderDateTime#21521488, filter(unitOfMeasureConversions#21521506, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525614) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525615)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521504.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521504.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521511]
Input [8]: [product#21521486, plant#21521487, orderDateTime#21521488, _extract_code#21525614, _extract_internalRefUUID#21525615, internalUUID#21521500, baseUnitOfMeasure#21521504, unitOfMeasureConversions#21521506]
(963) Generate
Input [4]: [product#21521486, plant#21521487, orderDateTime#21521488, filteredUnitOfMeasureConversions#21521511]
Arguments: explode(filteredUnitOfMeasureConversions#21521511.quantityNumerator), [product#21521486, plant#21521487, orderDateTime#21521488, filteredUnitOfMeasureConversions#21521511], true, [quantityNumerator#21521512]
(964) Project
Output [4]: [product#21521486, plant#21521487, orderDateTime#21521488, filteredUnitOfMeasureConversions#21521511.quantityDenominator AS _extract_quantityDenominator#21525077]
Input [5]: [product#21521486, plant#21521487, orderDateTime#21521488, filteredUnitOfMeasureConversions#21521511, quantityNumerator#21521512]
(965) Generate
Input [4]: [product#21521486, plant#21521487, orderDateTime#21521488, _extract_quantityDenominator#21525077]
Arguments: explode(_extract_quantityDenominator#21525077), [product#21521486, plant#21521487, orderDateTime#21521488], true, [quantityDenominator#21521513]
(966) Project
Output [3]: [product#21521486, plant#21521487, orderDateTime#21521488]
Input [4]: [product#21521486, plant#21521487, orderDateTime#21521488, quantityDenominator#21521513]
(967) Sort
Input [3]: [product#21521486, plant#21521487, orderDateTime#21521488]
Arguments: [product#21521486 ASC NULLS FIRST, plant#21521487 ASC NULLS FIRST], false, 0
(968) Scan parquet
Output [6]: [internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521, systemId#21521516]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(969) Filter
Input [6]: [internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521, systemId#21521516]
Condition : (isnotnull(plant#21521519.internalRefUUID) AND isnotnull(product#21521518.internalRefUUID))
(970) Project
Output [6]: [systemId#21521516, internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521]
Input [6]: [internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521, systemId#21521516]
(971) Exchange
Input [6]: [systemId#21521516, internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262934]
(972) BroadcastExchange
Input [6]: [systemId#21521516, internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521]
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=21264939]
(973) Scan parquet
Output [2]: [marketUnit#21521522, distributionCenters#21521528]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(974) Filter
Input [2]: [marketUnit#21521522, distributionCenters#21521528]
Condition : (((marketUnit#21521522 <=> SS_Test_1) AND (size(distributionCenters#21521528, true) > 0)) AND isnotnull(distributionCenters#21521528))
(975) Project
Output [1]: [distributionCenters#21521528]
Input [2]: [marketUnit#21521522, distributionCenters#21521528]
(976) Exchange
Input [1]: [distributionCenters#21521528]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262938]
(977) Generate
Input [1]: [distributionCenters#21521528]
Arguments: explode(distributionCenters#21521528), false, [distributionCenters#21521544]
(978) Filter
Input [1]: [distributionCenters#21521544]
Condition : (((size(distributionCenters#21521544.storageLocations, true) > 0) AND isnotnull(distributionCenters#21521544.storageLocations)) AND isnotnull(distributionCenters#21521544.internalRefUUID))
(979) Project
Output [2]: [distributionCenters#21521544.internalRefUUID AS _extract_internalRefUUID#21525084, distributionCenters#21521544.storageLocations AS _extract_storageLocations#21525085]
Input [1]: [distributionCenters#21521544]
(980) Generate
Input [2]: [_extract_internalRefUUID#21525084, _extract_storageLocations#21525085]
Arguments: explode(_extract_storageLocations#21525085), [_extract_internalRefUUID#21525084], false, [storageLocations#21521545]
(981) Project
Output [3]: [_extract_internalRefUUID#21525084 AS plantUuid#21521547, storageLocations#21521545.id AS storageLocId#21521548, storageLocations#21521545.internalRefUUID AS storageLocUuid#21521549]
Input [2]: [_extract_internalRefUUID#21525084, storageLocations#21521545]
(982) BroadcastExchange
Input [3]: [plantUuid#21521547, storageLocId#21521548, storageLocUuid#21521549]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264935]
(983) Scan parquet
Output [2]: [product#21521550, plant#21521551]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(984) Filter
Input [2]: [product#21521550, plant#21521551]
Condition : isnotnull(plant#21521551)
(985) Exchange
Input [2]: [product#21521550, plant#21521551]
Arguments: hashpartitioning(product#21521550, plant#21521551, 25), REPARTITION_BY_NUM, [plan_id=21264129]
(986) Scan parquet
Output [4]: [plant#21521556, product#21521557, productionAspect#21521559, systemId#21521554]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(987) Project
Output [4]: [plant#21521556.internalRefUUID AS _extract_internalRefUUID#21525617, product#21521557.internalRefUUID AS _extract_internalRefUUID#21525618, productionAspect#21521559.productMovementPlants.unitOfIssue.code AS _extract_code#21525619, productionAspect#21521559.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525620]
Input [4]: [plant#21521556, product#21521557, productionAspect#21521559, systemId#21521554]
(988) Exchange
Input [4]: [_extract_internalRefUUID#21525617, _extract_internalRefUUID#21525618, _extract_code#21525619, _extract_internalRefUUID#21525620]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262950]
(989) Project
Output [4]: [_extract_code#21525619, _extract_internalRefUUID#21525620, _extract_internalRefUUID#21525618, _extract_internalRefUUID#21525617]
Input [4]: [_extract_internalRefUUID#21525617, _extract_internalRefUUID#21525618, _extract_code#21525619, _extract_internalRefUUID#21525620]
(990) BroadcastExchange
Input [4]: [_extract_code#21525619, _extract_internalRefUUID#21525620, _extract_internalRefUUID#21525618, _extract_internalRefUUID#21525617]
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=21264919]
(991) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521550, ), isnull(product#21521550), coalesce(plant#21521551, ), isnull(plant#21521551)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525618, ), isnull(_extract_internalRefUUID#21525618), coalesce(_extract_internalRefUUID#21525617, ), isnull(_extract_internalRefUUID#21525617)]
Join type: LeftOuter
Join condition: None
(992) Project
Output [4]: [product#21521550, plant#21521551, _extract_code#21525619, _extract_internalRefUUID#21525620]
Input [6]: [product#21521550, plant#21521551, _extract_code#21525619, _extract_internalRefUUID#21525620, _extract_internalRefUUID#21525618, _extract_internalRefUUID#21525617]
(993) Scan parquet
Output [4]: [internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570, systemId#21521563]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(994) Filter
Input [4]: [internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570, systemId#21521563]
Condition : isnotnull(internalUUID#21521564)
(995) Project
Output [3]: [internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570]
Input [4]: [internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570, systemId#21521563]
(996) Exchange
Input [3]: [internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262957]
(997) BroadcastExchange
Input [3]: [internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264923]
(998) BroadcastHashJoin
Left keys [1]: [product#21521550]
Right keys [1]: [internalUUID#21521564]
Join type: LeftOuter
Join condition: None
(999) Project
Output [2]: [plant#21521551, filter(unitOfMeasureConversions#21521570, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525619) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525620)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521568.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521568.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521575]
Input [7]: [product#21521550, plant#21521551, _extract_code#21525619, _extract_internalRefUUID#21525620, internalUUID#21521564, baseUnitOfMeasure#21521568, unitOfMeasureConversions#21521570]
(1000) Generate
Input [2]: [plant#21521551, filteredUnitOfMeasureConversions#21521575]
Arguments: explode(filteredUnitOfMeasureConversions#21521575.quantityNumerator), [plant#21521551, filteredUnitOfMeasureConversions#21521575], true, [quantityNumerator#21521576]
(1001) Project
Output [2]: [plant#21521551, filteredUnitOfMeasureConversions#21521575.quantityDenominator AS _extract_quantityDenominator#21525086]
Input [3]: [plant#21521551, filteredUnitOfMeasureConversions#21521575, quantityNumerator#21521576]
(1002) Generate
Input [2]: [plant#21521551, _extract_quantityDenominator#21525086]
Arguments: explode(_extract_quantityDenominator#21525086), [plant#21521551], true, [quantityDenominator#21521577]
(1003) Project
Output [1]: [plant#21521551]
Input [2]: [plant#21521551, quantityDenominator#21521577]
(1004) HashAggregate
Input [1]: [plant#21521551]
Keys [1]: [plant#21521551]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521551]
(1005) Exchange
Input [1]: [plant#21521551]
Arguments: hashpartitioning(plant#21521551, 25), ENSURE_REQUIREMENTS, [plan_id=21264932]
(1006) HashAggregate
Input [1]: [plant#21521551]
Keys [1]: [plant#21521551]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521551]
(1007) BroadcastHashJoin
Left keys [1]: [plantUuid#21521547]
Right keys [1]: [plant#21521551]
Join type: Inner
Join condition: None
(1008) Project
Output [3]: [plantUuid#21521547, storageLocId#21521548, storageLocUuid#21521549]
Input [4]: [plantUuid#21521547, storageLocId#21521548, storageLocUuid#21521549, plant#21521551]
(1009) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21521519.internalRefUUID, ), isnull(plant#21521519.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21521547, ), isnull(plantUuid#21521547)]
Join type: Inner
Join condition: None
(1010) Generate
Input [9]: [systemId#21521516, internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, stockQuantities#21521521, plantUuid#21521547, storageLocId#21521548, storageLocUuid#21521549]
Arguments: explode(filter(stockQuantities#21521521, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21521549) AND (lambda x#21518157.storageLocation.Id = storageLocId#21521548)), lambda x#21518157, false))), [systemId#21521516, internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, plantUuid#21521547], false, [stockQuantity#21521580]
(1011) ObjectHashAggregate
Input [7]: [systemId#21521516, internalUUID#21521517, product#21521518, plant#21521519, calculationDateTime#21521520, plantUuid#21521547, stockQuantity#21521580]
Keys [5]: [plantUuid#21521547, internalUUID#21521517, plant#21521519, product#21521518, systemId#21521516]
Functions [2]: [partial_first(calculationDateTime#21521520, false), partial_collect_list(stockQuantity#21521580, 0, 0)]
Aggregate Attributes [3]: [first#21526580, valueSet#21526581, buf#21526582]
Results [8]: [plantUuid#21521547, internalUUID#21521517, plant#21521519, product#21521518, systemId#21521516, first#21526583, valueSet#21526584, buf#21526585]
(1012) ObjectHashAggregate
Input [8]: [plantUuid#21521547, internalUUID#21521517, plant#21521519, product#21521518, systemId#21521516, first#21526583, valueSet#21526584, buf#21526585]
Keys [5]: [plantUuid#21521547, internalUUID#21521517, plant#21521519, product#21521518, systemId#21521516]
Functions [2]: [first(calculationDateTime#21521520, false), collect_list(stockQuantity#21521580, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21521520)()#21518172, collect_list(stockQuantity#21521580, 0, 0)#21518173]
Results [4]: [product#21521518, plant#21521519, first(calculationDateTime#21521520)()#21518172 AS calculationDateTime#21521581, collect_list(stockQuantity#21521580, 0, 0)#21518173 AS stockQuantities#21521582]
(1013) Filter
Input [4]: [product#21521518, plant#21521519, calculationDateTime#21521581, stockQuantities#21521582]
Condition : ((size(stockQuantities#21521582, true) > 0) AND isnotnull(calculationDateTime#21521581))
(1014) Generate
Input [4]: [product#21521518, plant#21521519, calculationDateTime#21521581, stockQuantities#21521582]
Arguments: explode(stockQuantities#21521582), [product#21521518, plant#21521519, calculationDateTime#21521581], false, [stockQuantity#21521583]
(1015) Filter
Input [4]: [product#21521518, plant#21521519, calculationDateTime#21521581, stockQuantity#21521583]
Condition : (((isnotnull(stockQuantity#21521583.specialStockIndicator.code) AND isnotnull(stockQuantity#21521583.stockType.code)) AND (stockQuantity#21521583.specialStockIndicator.code = )) AND (stockQuantity#21521583.stockType.code = 01))
(1016) Project
Output [4]: [plant#21521519.internalRefUUID AS plantUuid#21521585, product#21521518.internalRefUUID AS productUuid#21521587, calculationDateTime#21521581, stockQuantity#21521583.storagelocation.id AS storageLocId#21521588]
Input [4]: [product#21521518, plant#21521519, calculationDateTime#21521581, stockQuantity#21521583]
(1017) Exchange
Input [4]: [plantUuid#21521585, productUuid#21521587, calculationDateTime#21521581, storageLocId#21521588]
Arguments: hashpartitioning(productUuid#21521587, plantUuid#21521585, 25), ENSURE_REQUIREMENTS, [plan_id=21264961]
(1018) Sort
Input [4]: [plantUuid#21521585, productUuid#21521587, calculationDateTime#21521581, storageLocId#21521588]
Arguments: [productUuid#21521587 ASC NULLS FIRST, plantUuid#21521585 ASC NULLS FIRST], false, 0
(1019) Scan parquet
Output [3]: [product#21521593, plant#21521594, orderDateTime#21521595]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1020) Filter
Input [3]: [product#21521593, plant#21521594, orderDateTime#21521595]
Condition : ((isnotnull(orderDateTime#21521595) AND isnotnull(plant#21521594)) AND isnotnull(product#21521593))
(1021) Exchange
Input [3]: [product#21521593, plant#21521594, orderDateTime#21521595]
Arguments: hashpartitioning(product#21521593, plant#21521594, 25), REPARTITION_BY_NUM, [plan_id=21264150]
(1022) Scan parquet
Output [4]: [plant#21521599, product#21521600, productionAspect#21521602, systemId#21521597]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1023) Project
Output [4]: [plant#21521599.internalRefUUID AS _extract_internalRefUUID#21525622, product#21521600.internalRefUUID AS _extract_internalRefUUID#21525621, productionAspect#21521602.productMovementPlants.unitOfIssue.code AS _extract_code#21525623, productionAspect#21521602.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525624]
Input [4]: [plant#21521599, product#21521600, productionAspect#21521602, systemId#21521597]
(1024) Exchange
Input [4]: [_extract_internalRefUUID#21525622, _extract_internalRefUUID#21525621, _extract_code#21525623, _extract_internalRefUUID#21525624]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262982]
(1025) Project
Output [4]: [_extract_code#21525623, _extract_internalRefUUID#21525624, _extract_internalRefUUID#21525621, _extract_internalRefUUID#21525622]
Input [4]: [_extract_internalRefUUID#21525622, _extract_internalRefUUID#21525621, _extract_code#21525623, _extract_internalRefUUID#21525624]
(1026) BroadcastExchange
Input [4]: [_extract_code#21525623, _extract_internalRefUUID#21525624, _extract_internalRefUUID#21525621, _extract_internalRefUUID#21525622]
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=21264948]
(1027) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521593, ), isnull(product#21521593), coalesce(plant#21521594, ), isnull(plant#21521594)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525621, ), isnull(_extract_internalRefUUID#21525621), coalesce(_extract_internalRefUUID#21525622, ), isnull(_extract_internalRefUUID#21525622)]
Join type: LeftOuter
Join condition: None
(1028) Project
Output [5]: [product#21521593, plant#21521594, orderDateTime#21521595, _extract_code#21525623, _extract_internalRefUUID#21525624]
Input [7]: [product#21521593, plant#21521594, orderDateTime#21521595, _extract_code#21525623, _extract_internalRefUUID#21525624, _extract_internalRefUUID#21525621, _extract_internalRefUUID#21525622]
(1029) Scan parquet
Output [4]: [internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613, systemId#21521606]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1030) Filter
Input [4]: [internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613, systemId#21521606]
Condition : isnotnull(internalUUID#21521607)
(1031) Project
Output [3]: [internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613]
Input [4]: [internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613, systemId#21521606]
(1032) Exchange
Input [3]: [internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21262989]
(1033) BroadcastExchange
Input [3]: [internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264952]
(1034) BroadcastHashJoin
Left keys [1]: [product#21521593]
Right keys [1]: [internalUUID#21521607]
Join type: LeftOuter
Join condition: None
(1035) Project
Output [4]: [product#21521593, plant#21521594, orderDateTime#21521595, filter(unitOfMeasureConversions#21521613, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525623) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525624)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521611.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521611.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521618]
Input [8]: [product#21521593, plant#21521594, orderDateTime#21521595, _extract_code#21525623, _extract_internalRefUUID#21525624, internalUUID#21521607, baseUnitOfMeasure#21521611, unitOfMeasureConversions#21521613]
(1036) Generate
Input [4]: [product#21521593, plant#21521594, orderDateTime#21521595, filteredUnitOfMeasureConversions#21521618]
Arguments: explode(filteredUnitOfMeasureConversions#21521618.quantityNumerator), [product#21521593, plant#21521594, orderDateTime#21521595, filteredUnitOfMeasureConversions#21521618], true, [quantityNumerator#21521619]
(1037) Project
Output [4]: [product#21521593, plant#21521594, orderDateTime#21521595, filteredUnitOfMeasureConversions#21521618.quantityDenominator AS _extract_quantityDenominator#21525093]
Input [5]: [product#21521593, plant#21521594, orderDateTime#21521595, filteredUnitOfMeasureConversions#21521618, quantityNumerator#21521619]
(1038) Generate
Input [4]: [product#21521593, plant#21521594, orderDateTime#21521595, _extract_quantityDenominator#21525093]
Arguments: explode(_extract_quantityDenominator#21525093), [product#21521593, plant#21521594, orderDateTime#21521595], true, [quantityDenominator#21521620]
(1039) Project
Output [3]: [product#21521593, plant#21521594, orderDateTime#21521595]
Input [4]: [product#21521593, plant#21521594, orderDateTime#21521595, quantityDenominator#21521620]
(1040) Sort
Input [3]: [product#21521593, plant#21521594, orderDateTime#21521595]
Arguments: [product#21521593 ASC NULLS FIRST, plant#21521594 ASC NULLS FIRST], false, 0
(1041) SortMergeJoin
Left keys [2]: [productUuid#21521587, plantUuid#21521585]
Right keys [2]: [product#21521593, plant#21521594]
Join type: Inner
Join condition: (calculationDateTime#21521581 <= orderDateTime#21521595)
(1042) Project
Output [4]: [plantUuid#21521585 AS plant#21521623, productUuid#21521587 AS product#21521624, storageLocId#21521588, calculationDateTime#21521581]
Input [7]: [plantUuid#21521585, productUuid#21521587, calculationDateTime#21521581, storageLocId#21521588, product#21521593, plant#21521594, orderDateTime#21521595]
(1043) Exchange
Input [4]: [plant#21521623, product#21521624, storageLocId#21521588, calculationDateTime#21521581]
Arguments: hashpartitioning(coalesce(plant#21521623, ), isnull(plant#21521623), coalesce(product#21521624, ), isnull(product#21521624), coalesce(storageLocId#21521588, ), isnull(storageLocId#21521588), coalesce(calculationDateTime#21521581, 1970-01-01 00:00:00), isnull(calculationDateTime#21521581), 25), ENSURE_REQUIREMENTS, [plan_id=21265017]
(1044) Sort
Input [4]: [plant#21521623, product#21521624, storageLocId#21521588, calculationDateTime#21521581]
Arguments: [coalesce(plant#21521623, ) ASC NULLS FIRST, isnull(plant#21521623) ASC NULLS FIRST, coalesce(product#21521624, ) ASC NULLS FIRST, isnull(product#21521624) ASC NULLS FIRST, coalesce(storageLocId#21521588, ) ASC NULLS FIRST, isnull(storageLocId#21521588) ASC NULLS FIRST, coalesce(calculationDateTime#21521581, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21521581) ASC NULLS FIRST], false, 0
(1045) Scan parquet
Output [6]: [internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630, systemId#21521625]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1046) Filter
Input [6]: [internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630, systemId#21521625]
Condition : (isnotnull(plant#21521628.internalRefUUID) AND isnotnull(product#21521627.internalRefUUID))
(1047) Project
Output [6]: [systemId#21521625, internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630]
Input [6]: [internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630, systemId#21521625]
(1048) Exchange
Input [6]: [systemId#21521625, internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263001]
(1049) BroadcastExchange
Input [6]: [systemId#21521625, internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630]
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=21264986]
(1050) Scan parquet
Output [2]: [marketUnit#21521631, distributionCenters#21521637]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1051) Filter
Input [2]: [marketUnit#21521631, distributionCenters#21521637]
Condition : (((marketUnit#21521631 <=> SS_Test_1) AND (size(distributionCenters#21521637, true) > 0)) AND isnotnull(distributionCenters#21521637))
(1052) Project
Output [1]: [distributionCenters#21521637]
Input [2]: [marketUnit#21521631, distributionCenters#21521637]
(1053) Exchange
Input [1]: [distributionCenters#21521637]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263005]
(1054) Generate
Input [1]: [distributionCenters#21521637]
Arguments: explode(distributionCenters#21521637), false, [distributionCenters#21521653]
(1055) Filter
Input [1]: [distributionCenters#21521653]
Condition : (((size(distributionCenters#21521653.storageLocations, true) > 0) AND isnotnull(distributionCenters#21521653.storageLocations)) AND isnotnull(distributionCenters#21521653.internalRefUUID))
(1056) Project
Output [2]: [distributionCenters#21521653.internalRefUUID AS _extract_internalRefUUID#21525100, distributionCenters#21521653.storageLocations AS _extract_storageLocations#21525101]
Input [1]: [distributionCenters#21521653]
(1057) Generate
Input [2]: [_extract_internalRefUUID#21525100, _extract_storageLocations#21525101]
Arguments: explode(_extract_storageLocations#21525101), [_extract_internalRefUUID#21525100], false, [storageLocations#21521654]
(1058) Project
Output [3]: [_extract_internalRefUUID#21525100 AS plantUuid#21521656, storageLocations#21521654.id AS storageLocId#21521657, storageLocations#21521654.internalRefUUID AS storageLocUuid#21521658]
Input [2]: [_extract_internalRefUUID#21525100, storageLocations#21521654]
(1059) BroadcastExchange
Input [3]: [plantUuid#21521656, storageLocId#21521657, storageLocUuid#21521658]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264982]
(1060) Scan parquet
Output [2]: [product#21521659, plant#21521660]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1061) Filter
Input [2]: [product#21521659, plant#21521660]
Condition : isnotnull(plant#21521660)
(1062) Exchange
Input [2]: [product#21521659, plant#21521660]
Arguments: hashpartitioning(product#21521659, plant#21521660, 25), REPARTITION_BY_NUM, [plan_id=21264161]
(1063) Scan parquet
Output [4]: [plant#21521665, product#21521666, productionAspect#21521668, systemId#21521663]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1064) Project
Output [4]: [plant#21521665.internalRefUUID AS _extract_internalRefUUID#21525628, product#21521666.internalRefUUID AS _extract_internalRefUUID#21525625, productionAspect#21521668.productMovementPlants.unitOfIssue.code AS _extract_code#21525626, productionAspect#21521668.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525627]
Input [4]: [plant#21521665, product#21521666, productionAspect#21521668, systemId#21521663]
(1065) Exchange
Input [4]: [_extract_internalRefUUID#21525628, _extract_internalRefUUID#21525625, _extract_code#21525626, _extract_internalRefUUID#21525627]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263017]
(1066) Project
Output [4]: [_extract_code#21525626, _extract_internalRefUUID#21525627, _extract_internalRefUUID#21525625, _extract_internalRefUUID#21525628]
Input [4]: [_extract_internalRefUUID#21525628, _extract_internalRefUUID#21525625, _extract_code#21525626, _extract_internalRefUUID#21525627]
(1067) BroadcastExchange
Input [4]: [_extract_code#21525626, _extract_internalRefUUID#21525627, _extract_internalRefUUID#21525625, _extract_internalRefUUID#21525628]
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=21264966]
(1068) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521659, ), isnull(product#21521659), coalesce(plant#21521660, ), isnull(plant#21521660)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525625, ), isnull(_extract_internalRefUUID#21525625), coalesce(_extract_internalRefUUID#21525628, ), isnull(_extract_internalRefUUID#21525628)]
Join type: LeftOuter
Join condition: None
(1069) Project
Output [4]: [product#21521659, plant#21521660, _extract_code#21525626, _extract_internalRefUUID#21525627]
Input [6]: [product#21521659, plant#21521660, _extract_code#21525626, _extract_internalRefUUID#21525627, _extract_internalRefUUID#21525625, _extract_internalRefUUID#21525628]
(1070) Scan parquet
Output [4]: [internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679, systemId#21521672]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1071) Filter
Input [4]: [internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679, systemId#21521672]
Condition : isnotnull(internalUUID#21521673)
(1072) Project
Output [3]: [internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679]
Input [4]: [internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679, systemId#21521672]
(1073) Exchange
Input [3]: [internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263024]
(1074) BroadcastExchange
Input [3]: [internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264970]
(1075) BroadcastHashJoin
Left keys [1]: [product#21521659]
Right keys [1]: [internalUUID#21521673]
Join type: LeftOuter
Join condition: None
(1076) Project
Output [2]: [plant#21521660, filter(unitOfMeasureConversions#21521679, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525626) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525627)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521677.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521677.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521684]
Input [7]: [product#21521659, plant#21521660, _extract_code#21525626, _extract_internalRefUUID#21525627, internalUUID#21521673, baseUnitOfMeasure#21521677, unitOfMeasureConversions#21521679]
(1077) Generate
Input [2]: [plant#21521660, filteredUnitOfMeasureConversions#21521684]
Arguments: explode(filteredUnitOfMeasureConversions#21521684.quantityNumerator), [plant#21521660, filteredUnitOfMeasureConversions#21521684], true, [quantityNumerator#21521685]
(1078) Project
Output [2]: [plant#21521660, filteredUnitOfMeasureConversions#21521684.quantityDenominator AS _extract_quantityDenominator#21525102]
Input [3]: [plant#21521660, filteredUnitOfMeasureConversions#21521684, quantityNumerator#21521685]
(1079) Generate
Input [2]: [plant#21521660, _extract_quantityDenominator#21525102]
Arguments: explode(_extract_quantityDenominator#21525102), [plant#21521660], true, [quantityDenominator#21521686]
(1080) Project
Output [1]: [plant#21521660]
Input [2]: [plant#21521660, quantityDenominator#21521686]
(1081) HashAggregate
Input [1]: [plant#21521660]
Keys [1]: [plant#21521660]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521660]
(1082) Exchange
Input [1]: [plant#21521660]
Arguments: hashpartitioning(plant#21521660, 25), ENSURE_REQUIREMENTS, [plan_id=21264979]
(1083) HashAggregate
Input [1]: [plant#21521660]
Keys [1]: [plant#21521660]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521660]
(1084) BroadcastHashJoin
Left keys [1]: [plantUuid#21521656]
Right keys [1]: [plant#21521660]
Join type: Inner
Join condition: None
(1085) Project
Output [3]: [plantUuid#21521656, storageLocId#21521657, storageLocUuid#21521658]
Input [4]: [plantUuid#21521656, storageLocId#21521657, storageLocUuid#21521658, plant#21521660]
(1086) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21521628.internalRefUUID, ), isnull(plant#21521628.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21521656, ), isnull(plantUuid#21521656)]
Join type: Inner
Join condition: None
(1087) Generate
Input [9]: [systemId#21521625, internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, stockQuantities#21521630, plantUuid#21521656, storageLocId#21521657, storageLocUuid#21521658]
Arguments: explode(filter(stockQuantities#21521630, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21521658) AND (lambda x#21518157.storageLocation.Id = storageLocId#21521657)), lambda x#21518157, false))), [systemId#21521625, internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, plantUuid#21521656], false, [stockQuantity#21521689]
(1088) ObjectHashAggregate
Input [7]: [systemId#21521625, internalUUID#21521626, product#21521627, plant#21521628, calculationDateTime#21521629, plantUuid#21521656, stockQuantity#21521689]
Keys [5]: [plantUuid#21521656, internalUUID#21521626, plant#21521628, product#21521627, systemId#21521625]
Functions [2]: [partial_first(calculationDateTime#21521629, false), partial_collect_list(stockQuantity#21521689, 0, 0)]
Aggregate Attributes [3]: [first#21526588, valueSet#21526589, buf#21526590]
Results [8]: [plantUuid#21521656, internalUUID#21521626, plant#21521628, product#21521627, systemId#21521625, first#21526591, valueSet#21526592, buf#21526593]
(1089) ObjectHashAggregate
Input [8]: [plantUuid#21521656, internalUUID#21521626, plant#21521628, product#21521627, systemId#21521625, first#21526591, valueSet#21526592, buf#21526593]
Keys [5]: [plantUuid#21521656, internalUUID#21521626, plant#21521628, product#21521627, systemId#21521625]
Functions [2]: [first(calculationDateTime#21521629, false), collect_list(stockQuantity#21521689, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21521629)()#21518172, collect_list(stockQuantity#21521689, 0, 0)#21518173]
Results [4]: [product#21521627, plant#21521628, first(calculationDateTime#21521629)()#21518172 AS calculationDateTime#21521690, collect_list(stockQuantity#21521689, 0, 0)#21518173 AS stockQuantities#21521691]
(1090) Filter
Input [4]: [product#21521627, plant#21521628, calculationDateTime#21521690, stockQuantities#21521691]
Condition : ((size(stockQuantities#21521691, true) > 0) AND isnotnull(calculationDateTime#21521690))
(1091) Generate
Input [4]: [product#21521627, plant#21521628, calculationDateTime#21521690, stockQuantities#21521691]
Arguments: explode(stockQuantities#21521691), [product#21521627, plant#21521628, calculationDateTime#21521690], false, [stockQuantity#21521692]
(1092) Filter
Input [4]: [product#21521627, plant#21521628, calculationDateTime#21521690, stockQuantity#21521692]
Condition : (((isnotnull(stockQuantity#21521692.specialStockIndicator.code) AND isnotnull(stockQuantity#21521692.stockType.code)) AND (stockQuantity#21521692.specialStockIndicator.code = )) AND (stockQuantity#21521692.stockType.code = 01))
(1093) Project
Output [4]: [plant#21521628.internalRefUUID AS plantUuid#21521694, product#21521627.internalRefUUID AS productUuid#21521696, calculationDateTime#21521690, stockQuantity#21521692.storagelocation.id AS storageLocId#21521697]
Input [4]: [product#21521627, plant#21521628, calculationDateTime#21521690, stockQuantity#21521692]
(1094) Exchange
Input [4]: [plantUuid#21521694, productUuid#21521696, calculationDateTime#21521690, storageLocId#21521697]
Arguments: hashpartitioning(productUuid#21521696, plantUuid#21521694, 25), ENSURE_REQUIREMENTS, [plan_id=21265008]
(1095) Sort
Input [4]: [plantUuid#21521694, productUuid#21521696, calculationDateTime#21521690, storageLocId#21521697]
Arguments: [productUuid#21521696 ASC NULLS FIRST, plantUuid#21521694 ASC NULLS FIRST], false, 0
(1096) Scan parquet
Output [3]: [product#21521702, plant#21521703, orderDateTime#21521704]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1097) Filter
Input [3]: [product#21521702, plant#21521703, orderDateTime#21521704]
Condition : ((isnotnull(orderDateTime#21521704) AND isnotnull(plant#21521703)) AND isnotnull(product#21521702))
(1098) Exchange
Input [3]: [product#21521702, plant#21521703, orderDateTime#21521704]
Arguments: hashpartitioning(product#21521702, plant#21521703, 25), REPARTITION_BY_NUM, [plan_id=21264182]
(1099) Scan parquet
Output [4]: [plant#21521708, product#21521709, productionAspect#21521711, systemId#21521706]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1100) Project
Output [4]: [plant#21521708.internalRefUUID AS _extract_internalRefUUID#21525629, product#21521709.internalRefUUID AS _extract_internalRefUUID#21525630, productionAspect#21521711.productMovementPlants.unitOfIssue.code AS _extract_code#21525631, productionAspect#21521711.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525632]
Input [4]: [plant#21521708, product#21521709, productionAspect#21521711, systemId#21521706]
(1101) Exchange
Input [4]: [_extract_internalRefUUID#21525629, _extract_internalRefUUID#21525630, _extract_code#21525631, _extract_internalRefUUID#21525632]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263049]
(1102) Project
Output [4]: [_extract_code#21525631, _extract_internalRefUUID#21525632, _extract_internalRefUUID#21525630, _extract_internalRefUUID#21525629]
Input [4]: [_extract_internalRefUUID#21525629, _extract_internalRefUUID#21525630, _extract_code#21525631, _extract_internalRefUUID#21525632]
(1103) BroadcastExchange
Input [4]: [_extract_code#21525631, _extract_internalRefUUID#21525632, _extract_internalRefUUID#21525630, _extract_internalRefUUID#21525629]
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=21264995]
(1104) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521702, ), isnull(product#21521702), coalesce(plant#21521703, ), isnull(plant#21521703)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525630, ), isnull(_extract_internalRefUUID#21525630), coalesce(_extract_internalRefUUID#21525629, ), isnull(_extract_internalRefUUID#21525629)]
Join type: LeftOuter
Join condition: None
(1105) Project
Output [5]: [product#21521702, plant#21521703, orderDateTime#21521704, _extract_code#21525631, _extract_internalRefUUID#21525632]
Input [7]: [product#21521702, plant#21521703, orderDateTime#21521704, _extract_code#21525631, _extract_internalRefUUID#21525632, _extract_internalRefUUID#21525630, _extract_internalRefUUID#21525629]
(1106) Scan parquet
Output [4]: [internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722, systemId#21521715]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1107) Filter
Input [4]: [internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722, systemId#21521715]
Condition : isnotnull(internalUUID#21521716)
(1108) Project
Output [3]: [internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722]
Input [4]: [internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722, systemId#21521715]
(1109) Exchange
Input [3]: [internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263056]
(1110) BroadcastExchange
Input [3]: [internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21264999]
(1111) BroadcastHashJoin
Left keys [1]: [product#21521702]
Right keys [1]: [internalUUID#21521716]
Join type: LeftOuter
Join condition: None
(1112) Project
Output [4]: [product#21521702, plant#21521703, orderDateTime#21521704, filter(unitOfMeasureConversions#21521722, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525631) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525632)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521720.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521720.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521727]
Input [8]: [product#21521702, plant#21521703, orderDateTime#21521704, _extract_code#21525631, _extract_internalRefUUID#21525632, internalUUID#21521716, baseUnitOfMeasure#21521720, unitOfMeasureConversions#21521722]
(1113) Generate
Input [4]: [product#21521702, plant#21521703, orderDateTime#21521704, filteredUnitOfMeasureConversions#21521727]
Arguments: explode(filteredUnitOfMeasureConversions#21521727.quantityNumerator), [product#21521702, plant#21521703, orderDateTime#21521704, filteredUnitOfMeasureConversions#21521727], true, [quantityNumerator#21521728]
(1114) Project
Output [4]: [product#21521702, plant#21521703, orderDateTime#21521704, filteredUnitOfMeasureConversions#21521727.quantityDenominator AS _extract_quantityDenominator#21525109]
Input [5]: [product#21521702, plant#21521703, orderDateTime#21521704, filteredUnitOfMeasureConversions#21521727, quantityNumerator#21521728]
(1115) Generate
Input [4]: [product#21521702, plant#21521703, orderDateTime#21521704, _extract_quantityDenominator#21525109]
Arguments: explode(_extract_quantityDenominator#21525109), [product#21521702, plant#21521703, orderDateTime#21521704], true, [quantityDenominator#21521729]
(1116) Project
Output [3]: [product#21521702, plant#21521703, orderDateTime#21521704]
Input [4]: [product#21521702, plant#21521703, orderDateTime#21521704, quantityDenominator#21521729]
(1117) Sort
Input [3]: [product#21521702, plant#21521703, orderDateTime#21521704]
Arguments: [product#21521702 ASC NULLS FIRST, plant#21521703 ASC NULLS FIRST], false, 0
(1118) SortMergeJoin
Left keys [2]: [productUuid#21521696, plantUuid#21521694]
Right keys [2]: [product#21521702, plant#21521703]
Join type: Inner
Join condition: (calculationDateTime#21521690 <= orderDateTime#21521704)
(1119) Project
Output [4]: [plantUuid#21521694 AS plant#21521732, productUuid#21521696 AS product#21521733, storageLocId#21521697, calculationDateTime#21521690]
Input [7]: [plantUuid#21521694, productUuid#21521696, calculationDateTime#21521690, storageLocId#21521697, product#21521702, plant#21521703, orderDateTime#21521704]
(1120) HashAggregate
Input [4]: [plant#21521732, product#21521733, storageLocId#21521697, calculationDateTime#21521690]
Keys [3]: [plant#21521732, product#21521733, storageLocId#21521697]
Functions [1]: [partial_max(calculationDateTime#21521690)]
Aggregate Attributes [1]: [max#21526586]
Results [4]: [plant#21521732, product#21521733, storageLocId#21521697, max#21526587]
(1121) HashAggregate
Input [4]: [plant#21521732, product#21521733, storageLocId#21521697, max#21526587]
Keys [3]: [plant#21521732, product#21521733, storageLocId#21521697]
Functions [1]: [max(calculationDateTime#21521690)]
Aggregate Attributes [1]: [max(calculationDateTime#21521690)#21518235]
Results [4]: [plant#21521732, product#21521733, storageLocId#21521697, max(calculationDateTime#21521690)#21518235 AS max_calc_datetime#21521734]
(1122) Exchange
Input [4]: [plant#21521732, product#21521733, storageLocId#21521697, max_calc_datetime#21521734]
Arguments: hashpartitioning(coalesce(plant#21521732, ), isnull(plant#21521732), coalesce(product#21521733, ), isnull(product#21521733), coalesce(storageLocId#21521697, ), isnull(storageLocId#21521697), coalesce(max_calc_datetime#21521734, 1970-01-01 00:00:00), isnull(max_calc_datetime#21521734), 25), ENSURE_REQUIREMENTS, [plan_id=21265018]
(1123) Sort
Input [4]: [plant#21521732, product#21521733, storageLocId#21521697, max_calc_datetime#21521734]
Arguments: [coalesce(plant#21521732, ) ASC NULLS FIRST, isnull(plant#21521732) ASC NULLS FIRST, coalesce(product#21521733, ) ASC NULLS FIRST, isnull(product#21521733) ASC NULLS FIRST, coalesce(storageLocId#21521697, ) ASC NULLS FIRST, isnull(storageLocId#21521697) ASC NULLS FIRST, coalesce(max_calc_datetime#21521734, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21521734) ASC NULLS FIRST], false, 0
(1124) SortMergeJoin
Left keys [8]: [coalesce(plant#21521623, ), isnull(plant#21521623), coalesce(product#21521624, ), isnull(product#21521624), coalesce(storageLocId#21521588, ), isnull(storageLocId#21521588), coalesce(calculationDateTime#21521581, 1970-01-01 00:00:00), isnull(calculationDateTime#21521581)]
Right keys [8]: [coalesce(plant#21521732, ), isnull(plant#21521732), coalesce(product#21521733, ), isnull(product#21521733), coalesce(storageLocId#21521697, ), isnull(storageLocId#21521697), coalesce(max_calc_datetime#21521734, 1970-01-01 00:00:00), isnull(max_calc_datetime#21521734)]
Join type: Inner
Join condition: None
(1125) Project
Output [3]: [plant#21521623, product#21521624, calculationDateTime#21521581]
Input [8]: [plant#21521623, product#21521624, storageLocId#21521588, calculationDateTime#21521581, plant#21521732, product#21521733, storageLocId#21521697, max_calc_datetime#21521734]
(1126) HashAggregate
Input [3]: [plant#21521623, product#21521624, calculationDateTime#21521581]
Keys [2]: [product#21521624, plant#21521623]
Functions [1]: [partial_min(calculationDateTime#21521581)]
Aggregate Attributes [1]: [min#21526578]
Results [3]: [product#21521624, plant#21521623, min#21526579]
(1127) Exchange
Input [3]: [product#21521624, plant#21521623, min#21526579]
Arguments: hashpartitioning(product#21521624, plant#21521623, 25), ENSURE_REQUIREMENTS, [plan_id=21265025]
(1128) HashAggregate
Input [3]: [product#21521624, plant#21521623, min#21526579]
Keys [2]: [product#21521624, plant#21521623]
Functions [1]: [min(calculationDateTime#21521581)]
Aggregate Attributes [1]: [min(calculationDateTime#21521581)#21518361]
Results [3]: [product#21521624, plant#21521623, min(calculationDateTime#21521581)#21518361 AS minCalculationDateTime#21521736]
(1129) Sort
Input [3]: [product#21521624, plant#21521623, minCalculationDateTime#21521736]
Arguments: [product#21521624 ASC NULLS FIRST, plant#21521623 ASC NULLS FIRST], false, 0
(1130) SortMergeJoin
Left keys [2]: [product#21521486, plant#21521487]
Right keys [2]: [product#21521624, plant#21521623]
Join type: LeftOuter
Join condition: None
(1131) Project
Output [3]: [product#21521486, plant#21521487, CASE WHEN isnotnull(minCalculationDateTime#21521736) THEN minCalculationDateTime#21521736 ELSE orderDateTime#21521488 END AS stockDatetime#21521738]
Input [6]: [product#21521486, plant#21521487, orderDateTime#21521488, product#21521624, plant#21521623, minCalculationDateTime#21521736]
(1132) Exchange
Input [3]: [product#21521486, plant#21521487, stockDatetime#21521738]
Arguments: hashpartitioning(coalesce(plant#21521487, ), isnull(plant#21521487), coalesce(product#21521486, ), isnull(product#21521486), 25), ENSURE_REQUIREMENTS, [plan_id=21265178]
(1133) Sort
Input [3]: [product#21521486, plant#21521487, stockDatetime#21521738]
Arguments: [coalesce(plant#21521487, ) ASC NULLS FIRST, isnull(plant#21521487) ASC NULLS FIRST, coalesce(product#21521486, ) ASC NULLS FIRST, isnull(product#21521486) ASC NULLS FIRST], false, 0
(1134) Scan parquet
Output [3]: [product#21521741, plant#21521742, orderDateTime#21521743]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1135) Exchange
Input [3]: [product#21521741, plant#21521742, orderDateTime#21521743]
Arguments: hashpartitioning(product#21521741, plant#21521742, 25), REPARTITION_BY_NUM, [plan_id=21263074]
(1136) Exchange
Input [3]: [product#21521741, plant#21521742, orderDateTime#21521743]
Arguments: hashpartitioning(coalesce(product#21521741, ), isnull(product#21521741), coalesce(plant#21521742, ), isnull(plant#21521742), 25), ENSURE_REQUIREMENTS, [plan_id=21265034]
(1137) Sort
Input [3]: [product#21521741, plant#21521742, orderDateTime#21521743]
Arguments: [coalesce(product#21521741, ) ASC NULLS FIRST, isnull(product#21521741) ASC NULLS FIRST, coalesce(plant#21521742, ) ASC NULLS FIRST, isnull(plant#21521742) ASC NULLS FIRST], false, 0
(1138) Scan parquet
Output [8]: [internalUUID#21521746, plant#21521747, product#21521748, blockedForReplenishmentStartingFrom#21521749, productionAspect#21521750, salesPlant#21521751, listing#21521752, systemId#21521745]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1139) Project
Output [8]: [systemId#21521745, internalUUID#21521746, plant#21521747, product#21521748, blockedForReplenishmentStartingFrom#21521749, productionAspect#21521750, salesPlant#21521751, listing#21521752]
Input [8]: [internalUUID#21521746, plant#21521747, product#21521748, blockedForReplenishmentStartingFrom#21521749, productionAspect#21521750, salesPlant#21521751, listing#21521752, systemId#21521745]
(1140) Exchange
Input [8]: [systemId#21521745, internalUUID#21521746, plant#21521747, product#21521748, blockedForReplenishmentStartingFrom#21521749, productionAspect#21521750, salesPlant#21521751, listing#21521752]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263077]
(1141) Project
Output [1]: [struct(systemId, systemId#21521745, internalUUID, internalUUID#21521746, plant, plant#21521747, product, product#21521748, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21521749, productionAspect, productionAspect#21521750, salesPlant, salesPlant#21521751, listing, listing#21521752) AS productPlant#21521753]
Input [8]: [systemId#21521745, internalUUID#21521746, plant#21521747, product#21521748, blockedForReplenishmentStartingFrom#21521749, productionAspect#21521750, salesPlant#21521751, listing#21521752]
(1142) Exchange
Input [1]: [productPlant#21521753]
Arguments: hashpartitioning(coalesce(productPlant#21521753.product.internalRefUUID, ), isnull(productPlant#21521753.product.internalRefUUID), coalesce(productPlant#21521753.plant.internalRefUUID, ), isnull(productPlant#21521753.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21265035]
(1143) Sort
Input [1]: [productPlant#21521753]
Arguments: [coalesce(productPlant#21521753.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21521753.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21521753.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21521753.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(1144) SortMergeJoin
Left keys [4]: [coalesce(product#21521741, ), isnull(product#21521741), coalesce(plant#21521742, ), isnull(plant#21521742)]
Right keys [4]: [coalesce(productPlant#21521753.product.internalRefUUID, ), isnull(productPlant#21521753.product.internalRefUUID), coalesce(productPlant#21521753.plant.internalRefUUID, ), isnull(productPlant#21521753.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1145) Scan parquet
Output [4]: [internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761, systemId#21521754]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1146) Filter
Input [4]: [internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761, systemId#21521754]
Condition : isnotnull(internalUUID#21521755)
(1147) Project
Output [3]: [internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761]
Input [4]: [internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761, systemId#21521754]
(1148) Exchange
Input [3]: [internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263083]
(1149) BroadcastExchange
Input [3]: [internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265040]
(1150) BroadcastHashJoin
Left keys [1]: [product#21521741]
Right keys [1]: [internalUUID#21521755]
Join type: LeftOuter
Join condition: None
(1151) Project
Output [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, filter(unitOfMeasureConversions#21521761, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21521753.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21521753.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521759.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521759.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521766]
Input [7]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, internalUUID#21521755, baseUnitOfMeasure#21521759, unitOfMeasureConversions#21521761]
(1152) Project
Output [6]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, filteredUnitOfMeasureConversions#21521766.quantityDenominator AS _extract_quantityDenominator#21525633, filteredUnitOfMeasureConversions#21521766.quantityNumerator AS _extract_quantityNumerator#21525634]
Input [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, filteredUnitOfMeasureConversions#21521766]
(1153) Generate
Input [6]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, _extract_quantityDenominator#21525633, _extract_quantityNumerator#21525634]
Arguments: explode(_extract_quantityNumerator#21525634), [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, _extract_quantityDenominator#21525633], true, [quantityNumerator#21521767]
(1154) Generate
Input [6]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, _extract_quantityDenominator#21525633, quantityNumerator#21521767]
Arguments: explode(_extract_quantityDenominator#21525633), [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, quantityNumerator#21521767], true, [quantityDenominator#21521768]
(1155) Project
Output [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, (cast(quantityNumerator#21521767 as double) / cast(quantityDenominator#21521768 as double)) AS outboundUnit#21521769]
Input [6]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, quantityNumerator#21521767, quantityDenominator#21521768]
(1156) Project
Output [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, CASE WHEN (isnull(outboundUnit#21521769) OR (outboundUnit#21521769 <= 0.0)) THEN 1.0 ELSE outboundUnit#21521769 END AS outboundUnit#21521770]
Input [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521769]
(1157) Exchange
Input [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770]
Arguments: hashpartitioning(product#21521741, plant#21521742, 25), ENSURE_REQUIREMENTS, [plan_id=21265158]
(1158) Sort
Input [5]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770]
Arguments: [product#21521741 ASC NULLS FIRST, plant#21521742 ASC NULLS FIRST], false, 0
(1159) Scan parquet
Output [6]: [internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776, systemId#21521771]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1160) Filter
Input [6]: [internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776, systemId#21521771]
Condition : (isnotnull(plant#21521774.internalRefUUID) AND isnotnull(product#21521773.internalRefUUID))
(1161) Project
Output [6]: [systemId#21521771, internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776]
Input [6]: [internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776, systemId#21521771]
(1162) Exchange
Input [6]: [systemId#21521771, internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263094]
(1163) BroadcastExchange
Input [6]: [systemId#21521771, internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776]
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=21265068]
(1164) Scan parquet
Output [2]: [marketUnit#21521777, distributionCenters#21521783]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1165) Filter
Input [2]: [marketUnit#21521777, distributionCenters#21521783]
Condition : (((marketUnit#21521777 <=> SS_Test_1) AND (size(distributionCenters#21521783, true) > 0)) AND isnotnull(distributionCenters#21521783))
(1166) Project
Output [1]: [distributionCenters#21521783]
Input [2]: [marketUnit#21521777, distributionCenters#21521783]
(1167) Exchange
Input [1]: [distributionCenters#21521783]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263098]
(1168) Generate
Input [1]: [distributionCenters#21521783]
Arguments: explode(distributionCenters#21521783), false, [distributionCenters#21521799]
(1169) Filter
Input [1]: [distributionCenters#21521799]
Condition : (((size(distributionCenters#21521799.storageLocations, true) > 0) AND isnotnull(distributionCenters#21521799.storageLocations)) AND isnotnull(distributionCenters#21521799.internalRefUUID))
(1170) Project
Output [2]: [distributionCenters#21521799.internalRefUUID AS _extract_internalRefUUID#21525117, distributionCenters#21521799.storageLocations AS _extract_storageLocations#21525118]
Input [1]: [distributionCenters#21521799]
(1171) Generate
Input [2]: [_extract_internalRefUUID#21525117, _extract_storageLocations#21525118]
Arguments: explode(_extract_storageLocations#21525118), [_extract_internalRefUUID#21525117], false, [storageLocations#21521800]
(1172) Project
Output [3]: [_extract_internalRefUUID#21525117 AS plantUuid#21521802, storageLocations#21521800.id AS storageLocId#21521803, storageLocations#21521800.internalRefUUID AS storageLocUuid#21521804]
Input [2]: [_extract_internalRefUUID#21525117, storageLocations#21521800]
(1173) BroadcastExchange
Input [3]: [plantUuid#21521802, storageLocId#21521803, storageLocUuid#21521804]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265064]
(1174) Scan parquet
Output [2]: [product#21521805, plant#21521806]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1175) Filter
Input [2]: [product#21521805, plant#21521806]
Condition : isnotnull(plant#21521806)
(1176) Exchange
Input [2]: [product#21521805, plant#21521806]
Arguments: hashpartitioning(product#21521805, plant#21521806, 25), REPARTITION_BY_NUM, [plan_id=21264201]
(1177) Scan parquet
Output [4]: [plant#21521811, product#21521812, productionAspect#21521814, systemId#21521809]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1178) Project
Output [4]: [plant#21521811.internalRefUUID AS _extract_internalRefUUID#21525635, product#21521812.internalRefUUID AS _extract_internalRefUUID#21525638, productionAspect#21521814.productMovementPlants.unitOfIssue.code AS _extract_code#21525636, productionAspect#21521814.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525637]
Input [4]: [plant#21521811, product#21521812, productionAspect#21521814, systemId#21521809]
(1179) Exchange
Input [4]: [_extract_internalRefUUID#21525635, _extract_internalRefUUID#21525638, _extract_code#21525636, _extract_internalRefUUID#21525637]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263110]
(1180) Project
Output [4]: [_extract_code#21525636, _extract_internalRefUUID#21525637, _extract_internalRefUUID#21525638, _extract_internalRefUUID#21525635]
Input [4]: [_extract_internalRefUUID#21525635, _extract_internalRefUUID#21525638, _extract_code#21525636, _extract_internalRefUUID#21525637]
(1181) BroadcastExchange
Input [4]: [_extract_code#21525636, _extract_internalRefUUID#21525637, _extract_internalRefUUID#21525638, _extract_internalRefUUID#21525635]
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=21265048]
(1182) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521805, ), isnull(product#21521805), coalesce(plant#21521806, ), isnull(plant#21521806)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525638, ), isnull(_extract_internalRefUUID#21525638), coalesce(_extract_internalRefUUID#21525635, ), isnull(_extract_internalRefUUID#21525635)]
Join type: LeftOuter
Join condition: None
(1183) Project
Output [4]: [product#21521805, plant#21521806, _extract_code#21525636, _extract_internalRefUUID#21525637]
Input [6]: [product#21521805, plant#21521806, _extract_code#21525636, _extract_internalRefUUID#21525637, _extract_internalRefUUID#21525638, _extract_internalRefUUID#21525635]
(1184) Scan parquet
Output [4]: [internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825, systemId#21521818]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1185) Filter
Input [4]: [internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825, systemId#21521818]
Condition : isnotnull(internalUUID#21521819)
(1186) Project
Output [3]: [internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825]
Input [4]: [internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825, systemId#21521818]
(1187) Exchange
Input [3]: [internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263117]
(1188) BroadcastExchange
Input [3]: [internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265052]
(1189) BroadcastHashJoin
Left keys [1]: [product#21521805]
Right keys [1]: [internalUUID#21521819]
Join type: LeftOuter
Join condition: None
(1190) Project
Output [2]: [plant#21521806, filter(unitOfMeasureConversions#21521825, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525636) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525637)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521823.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521823.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521830]
Input [7]: [product#21521805, plant#21521806, _extract_code#21525636, _extract_internalRefUUID#21525637, internalUUID#21521819, baseUnitOfMeasure#21521823, unitOfMeasureConversions#21521825]
(1191) Generate
Input [2]: [plant#21521806, filteredUnitOfMeasureConversions#21521830]
Arguments: explode(filteredUnitOfMeasureConversions#21521830.quantityNumerator), [plant#21521806, filteredUnitOfMeasureConversions#21521830], true, [quantityNumerator#21521831]
(1192) Project
Output [2]: [plant#21521806, filteredUnitOfMeasureConversions#21521830.quantityDenominator AS _extract_quantityDenominator#21525119]
Input [3]: [plant#21521806, filteredUnitOfMeasureConversions#21521830, quantityNumerator#21521831]
(1193) Generate
Input [2]: [plant#21521806, _extract_quantityDenominator#21525119]
Arguments: explode(_extract_quantityDenominator#21525119), [plant#21521806], true, [quantityDenominator#21521832]
(1194) Project
Output [1]: [plant#21521806]
Input [2]: [plant#21521806, quantityDenominator#21521832]
(1195) HashAggregate
Input [1]: [plant#21521806]
Keys [1]: [plant#21521806]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521806]
(1196) Exchange
Input [1]: [plant#21521806]
Arguments: hashpartitioning(plant#21521806, 25), ENSURE_REQUIREMENTS, [plan_id=21265061]
(1197) HashAggregate
Input [1]: [plant#21521806]
Keys [1]: [plant#21521806]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521806]
(1198) BroadcastHashJoin
Left keys [1]: [plantUuid#21521802]
Right keys [1]: [plant#21521806]
Join type: Inner
Join condition: None
(1199) Project
Output [3]: [plantUuid#21521802, storageLocId#21521803, storageLocUuid#21521804]
Input [4]: [plantUuid#21521802, storageLocId#21521803, storageLocUuid#21521804, plant#21521806]
(1200) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21521774.internalRefUUID, ), isnull(plant#21521774.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21521802, ), isnull(plantUuid#21521802)]
Join type: Inner
Join condition: None
(1201) Generate
Input [9]: [systemId#21521771, internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, stockQuantities#21521776, plantUuid#21521802, storageLocId#21521803, storageLocUuid#21521804]
Arguments: explode(filter(stockQuantities#21521776, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21521804) AND (lambda x#21518157.storageLocation.Id = storageLocId#21521803)), lambda x#21518157, false))), [systemId#21521771, internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, plantUuid#21521802], false, [stockQuantity#21521835]
(1202) ObjectHashAggregate
Input [7]: [systemId#21521771, internalUUID#21521772, product#21521773, plant#21521774, calculationDateTime#21521775, plantUuid#21521802, stockQuantity#21521835]
Keys [5]: [plantUuid#21521802, internalUUID#21521772, plant#21521774, product#21521773, systemId#21521771]
Functions [2]: [partial_first(calculationDateTime#21521775, false), partial_collect_list(stockQuantity#21521835, 0, 0)]
Aggregate Attributes [3]: [first#21526602, valueSet#21526603, buf#21526604]
Results [8]: [plantUuid#21521802, internalUUID#21521772, plant#21521774, product#21521773, systemId#21521771, first#21526605, valueSet#21526606, buf#21526607]
(1203) ObjectHashAggregate
Input [8]: [plantUuid#21521802, internalUUID#21521772, plant#21521774, product#21521773, systemId#21521771, first#21526605, valueSet#21526606, buf#21526607]
Keys [5]: [plantUuid#21521802, internalUUID#21521772, plant#21521774, product#21521773, systemId#21521771]
Functions [2]: [first(calculationDateTime#21521775, false), collect_list(stockQuantity#21521835, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21521775)()#21518172, collect_list(stockQuantity#21521835, 0, 0)#21518173]
Results [4]: [product#21521773, plant#21521774, first(calculationDateTime#21521775)()#21518172 AS calculationDateTime#21521836, collect_list(stockQuantity#21521835, 0, 0)#21518173 AS stockQuantities#21521837]
(1204) Filter
Input [4]: [product#21521773, plant#21521774, calculationDateTime#21521836, stockQuantities#21521837]
Condition : ((size(stockQuantities#21521837, true) > 0) AND isnotnull(calculationDateTime#21521836))
(1205) Generate
Input [4]: [product#21521773, plant#21521774, calculationDateTime#21521836, stockQuantities#21521837]
Arguments: explode(stockQuantities#21521837), [product#21521773, plant#21521774, calculationDateTime#21521836], false, [stockQuantity#21521838]
(1206) Filter
Input [4]: [product#21521773, plant#21521774, calculationDateTime#21521836, stockQuantity#21521838]
Condition : (((isnotnull(stockQuantity#21521838.specialStockIndicator.code) AND isnotnull(stockQuantity#21521838.stockType.code)) AND (stockQuantity#21521838.specialStockIndicator.code = )) AND (stockQuantity#21521838.stockType.code = 01))
(1207) Project
Output [5]: [plant#21521774.internalRefUUID AS plantUuid#21521840, product#21521773.internalRefUUID AS productUuid#21521842, calculationDateTime#21521836, stockQuantity#21521838.storagelocation.id AS storageLocId#21521843, stockQuantity#21521838.quantity.measure AS quantity#21521845]
Input [4]: [product#21521773, plant#21521774, calculationDateTime#21521836, stockQuantity#21521838]
(1208) Exchange
Input [5]: [plantUuid#21521840, productUuid#21521842, calculationDateTime#21521836, storageLocId#21521843, quantity#21521845]
Arguments: hashpartitioning(productUuid#21521842, plantUuid#21521840, 25), ENSURE_REQUIREMENTS, [plan_id=21265090]
(1209) Sort
Input [5]: [plantUuid#21521840, productUuid#21521842, calculationDateTime#21521836, storageLocId#21521843, quantity#21521845]
Arguments: [productUuid#21521842 ASC NULLS FIRST, plantUuid#21521840 ASC NULLS FIRST], false, 0
(1210) Scan parquet
Output [3]: [product#21521848, plant#21521849, orderDateTime#21521850]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1211) Filter
Input [3]: [product#21521848, plant#21521849, orderDateTime#21521850]
Condition : ((isnotnull(orderDateTime#21521850) AND isnotnull(plant#21521849)) AND isnotnull(product#21521848))
(1212) Exchange
Input [3]: [product#21521848, plant#21521849, orderDateTime#21521850]
Arguments: hashpartitioning(product#21521848, plant#21521849, 25), REPARTITION_BY_NUM, [plan_id=21264222]
(1213) Scan parquet
Output [4]: [plant#21521854, product#21521855, productionAspect#21521857, systemId#21521852]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1214) Project
Output [4]: [plant#21521854.internalRefUUID AS _extract_internalRefUUID#21525640, product#21521855.internalRefUUID AS _extract_internalRefUUID#21525639, productionAspect#21521857.productMovementPlants.unitOfIssue.code AS _extract_code#21525641, productionAspect#21521857.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525642]
Input [4]: [plant#21521854, product#21521855, productionAspect#21521857, systemId#21521852]
(1215) Exchange
Input [4]: [_extract_internalRefUUID#21525640, _extract_internalRefUUID#21525639, _extract_code#21525641, _extract_internalRefUUID#21525642]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263142]
(1216) Project
Output [4]: [_extract_code#21525641, _extract_internalRefUUID#21525642, _extract_internalRefUUID#21525639, _extract_internalRefUUID#21525640]
Input [4]: [_extract_internalRefUUID#21525640, _extract_internalRefUUID#21525639, _extract_code#21525641, _extract_internalRefUUID#21525642]
(1217) BroadcastExchange
Input [4]: [_extract_code#21525641, _extract_internalRefUUID#21525642, _extract_internalRefUUID#21525639, _extract_internalRefUUID#21525640]
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=21265077]
(1218) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521848, ), isnull(product#21521848), coalesce(plant#21521849, ), isnull(plant#21521849)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525639, ), isnull(_extract_internalRefUUID#21525639), coalesce(_extract_internalRefUUID#21525640, ), isnull(_extract_internalRefUUID#21525640)]
Join type: LeftOuter
Join condition: None
(1219) Project
Output [5]: [product#21521848, plant#21521849, orderDateTime#21521850, _extract_code#21525641, _extract_internalRefUUID#21525642]
Input [7]: [product#21521848, plant#21521849, orderDateTime#21521850, _extract_code#21525641, _extract_internalRefUUID#21525642, _extract_internalRefUUID#21525639, _extract_internalRefUUID#21525640]
(1220) Scan parquet
Output [4]: [internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868, systemId#21521861]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1221) Filter
Input [4]: [internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868, systemId#21521861]
Condition : isnotnull(internalUUID#21521862)
(1222) Project
Output [3]: [internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868]
Input [4]: [internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868, systemId#21521861]
(1223) Exchange
Input [3]: [internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263149]
(1224) BroadcastExchange
Input [3]: [internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265081]
(1225) BroadcastHashJoin
Left keys [1]: [product#21521848]
Right keys [1]: [internalUUID#21521862]
Join type: LeftOuter
Join condition: None
(1226) Project
Output [4]: [product#21521848, plant#21521849, orderDateTime#21521850, filter(unitOfMeasureConversions#21521868, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525641) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525642)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521866.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521866.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521873]
Input [8]: [product#21521848, plant#21521849, orderDateTime#21521850, _extract_code#21525641, _extract_internalRefUUID#21525642, internalUUID#21521862, baseUnitOfMeasure#21521866, unitOfMeasureConversions#21521868]
(1227) Generate
Input [4]: [product#21521848, plant#21521849, orderDateTime#21521850, filteredUnitOfMeasureConversions#21521873]
Arguments: explode(filteredUnitOfMeasureConversions#21521873.quantityNumerator), [product#21521848, plant#21521849, orderDateTime#21521850, filteredUnitOfMeasureConversions#21521873], true, [quantityNumerator#21521874]
(1228) Project
Output [4]: [product#21521848, plant#21521849, orderDateTime#21521850, filteredUnitOfMeasureConversions#21521873.quantityDenominator AS _extract_quantityDenominator#21525126]
Input [5]: [product#21521848, plant#21521849, orderDateTime#21521850, filteredUnitOfMeasureConversions#21521873, quantityNumerator#21521874]
(1229) Generate
Input [4]: [product#21521848, plant#21521849, orderDateTime#21521850, _extract_quantityDenominator#21525126]
Arguments: explode(_extract_quantityDenominator#21525126), [product#21521848, plant#21521849, orderDateTime#21521850], true, [quantityDenominator#21521875]
(1230) Project
Output [3]: [product#21521848, plant#21521849, orderDateTime#21521850]
Input [4]: [product#21521848, plant#21521849, orderDateTime#21521850, quantityDenominator#21521875]
(1231) Sort
Input [3]: [product#21521848, plant#21521849, orderDateTime#21521850]
Arguments: [product#21521848 ASC NULLS FIRST, plant#21521849 ASC NULLS FIRST], false, 0
(1232) SortMergeJoin
Left keys [2]: [productUuid#21521842, plantUuid#21521840]
Right keys [2]: [product#21521848, plant#21521849]
Join type: Inner
Join condition: (calculationDateTime#21521836 <= orderDateTime#21521850)
(1233) Project
Output [5]: [plantUuid#21521840 AS plant#21521878, productUuid#21521842 AS product#21521879, storageLocId#21521843, calculationDateTime#21521836, quantity#21521845]
Input [8]: [plantUuid#21521840, productUuid#21521842, calculationDateTime#21521836, storageLocId#21521843, quantity#21521845, product#21521848, plant#21521849, orderDateTime#21521850]
(1234) Exchange
Input [5]: [plant#21521878, product#21521879, storageLocId#21521843, calculationDateTime#21521836, quantity#21521845]
Arguments: hashpartitioning(coalesce(plant#21521878, ), isnull(plant#21521878), coalesce(product#21521879, ), isnull(product#21521879), coalesce(storageLocId#21521843, ), isnull(storageLocId#21521843), coalesce(calculationDateTime#21521836, 1970-01-01 00:00:00), isnull(calculationDateTime#21521836), 25), ENSURE_REQUIREMENTS, [plan_id=21265146]
(1235) Sort
Input [5]: [plant#21521878, product#21521879, storageLocId#21521843, calculationDateTime#21521836, quantity#21521845]
Arguments: [coalesce(plant#21521878, ) ASC NULLS FIRST, isnull(plant#21521878) ASC NULLS FIRST, coalesce(product#21521879, ) ASC NULLS FIRST, isnull(product#21521879) ASC NULLS FIRST, coalesce(storageLocId#21521843, ) ASC NULLS FIRST, isnull(storageLocId#21521843) ASC NULLS FIRST, coalesce(calculationDateTime#21521836, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21521836) ASC NULLS FIRST], false, 0
(1236) Scan parquet
Output [6]: [internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885, systemId#21521880]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1237) Filter
Input [6]: [internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885, systemId#21521880]
Condition : (isnotnull(plant#21521883.internalRefUUID) AND isnotnull(product#21521882.internalRefUUID))
(1238) Project
Output [6]: [systemId#21521880, internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885]
Input [6]: [internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885, systemId#21521880]
(1239) Exchange
Input [6]: [systemId#21521880, internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263161]
(1240) BroadcastExchange
Input [6]: [systemId#21521880, internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885]
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=21265115]
(1241) Scan parquet
Output [2]: [marketUnit#21521886, distributionCenters#21521892]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1242) Filter
Input [2]: [marketUnit#21521886, distributionCenters#21521892]
Condition : (((marketUnit#21521886 <=> SS_Test_1) AND (size(distributionCenters#21521892, true) > 0)) AND isnotnull(distributionCenters#21521892))
(1243) Project
Output [1]: [distributionCenters#21521892]
Input [2]: [marketUnit#21521886, distributionCenters#21521892]
(1244) Exchange
Input [1]: [distributionCenters#21521892]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263165]
(1245) Generate
Input [1]: [distributionCenters#21521892]
Arguments: explode(distributionCenters#21521892), false, [distributionCenters#21521908]
(1246) Filter
Input [1]: [distributionCenters#21521908]
Condition : (((size(distributionCenters#21521908.storageLocations, true) > 0) AND isnotnull(distributionCenters#21521908.storageLocations)) AND isnotnull(distributionCenters#21521908.internalRefUUID))
(1247) Project
Output [2]: [distributionCenters#21521908.internalRefUUID AS _extract_internalRefUUID#21525133, distributionCenters#21521908.storageLocations AS _extract_storageLocations#21525134]
Input [1]: [distributionCenters#21521908]
(1248) Generate
Input [2]: [_extract_internalRefUUID#21525133, _extract_storageLocations#21525134]
Arguments: explode(_extract_storageLocations#21525134), [_extract_internalRefUUID#21525133], false, [storageLocations#21521909]
(1249) Project
Output [3]: [_extract_internalRefUUID#21525133 AS plantUuid#21521911, storageLocations#21521909.id AS storageLocId#21521912, storageLocations#21521909.internalRefUUID AS storageLocUuid#21521913]
Input [2]: [_extract_internalRefUUID#21525133, storageLocations#21521909]
(1250) BroadcastExchange
Input [3]: [plantUuid#21521911, storageLocId#21521912, storageLocUuid#21521913]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265111]
(1251) Scan parquet
Output [2]: [product#21521914, plant#21521915]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1252) Filter
Input [2]: [product#21521914, plant#21521915]
Condition : isnotnull(plant#21521915)
(1253) Exchange
Input [2]: [product#21521914, plant#21521915]
Arguments: hashpartitioning(product#21521914, plant#21521915, 25), REPARTITION_BY_NUM, [plan_id=21264233]
(1254) Scan parquet
Output [4]: [plant#21521920, product#21521921, productionAspect#21521923, systemId#21521918]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1255) Project
Output [4]: [plant#21521920.internalRefUUID AS _extract_internalRefUUID#21525643, product#21521921.internalRefUUID AS _extract_internalRefUUID#21525644, productionAspect#21521923.productMovementPlants.unitOfIssue.code AS _extract_code#21525645, productionAspect#21521923.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525646]
Input [4]: [plant#21521920, product#21521921, productionAspect#21521923, systemId#21521918]
(1256) Exchange
Input [4]: [_extract_internalRefUUID#21525643, _extract_internalRefUUID#21525644, _extract_code#21525645, _extract_internalRefUUID#21525646]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263177]
(1257) Project
Output [4]: [_extract_code#21525645, _extract_internalRefUUID#21525646, _extract_internalRefUUID#21525644, _extract_internalRefUUID#21525643]
Input [4]: [_extract_internalRefUUID#21525643, _extract_internalRefUUID#21525644, _extract_code#21525645, _extract_internalRefUUID#21525646]
(1258) BroadcastExchange
Input [4]: [_extract_code#21525645, _extract_internalRefUUID#21525646, _extract_internalRefUUID#21525644, _extract_internalRefUUID#21525643]
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=21265095]
(1259) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521914, ), isnull(product#21521914), coalesce(plant#21521915, ), isnull(plant#21521915)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525644, ), isnull(_extract_internalRefUUID#21525644), coalesce(_extract_internalRefUUID#21525643, ), isnull(_extract_internalRefUUID#21525643)]
Join type: LeftOuter
Join condition: None
(1260) Project
Output [4]: [product#21521914, plant#21521915, _extract_code#21525645, _extract_internalRefUUID#21525646]
Input [6]: [product#21521914, plant#21521915, _extract_code#21525645, _extract_internalRefUUID#21525646, _extract_internalRefUUID#21525644, _extract_internalRefUUID#21525643]
(1261) Scan parquet
Output [4]: [internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934, systemId#21521927]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1262) Filter
Input [4]: [internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934, systemId#21521927]
Condition : isnotnull(internalUUID#21521928)
(1263) Project
Output [3]: [internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934]
Input [4]: [internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934, systemId#21521927]
(1264) Exchange
Input [3]: [internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263184]
(1265) BroadcastExchange
Input [3]: [internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265099]
(1266) BroadcastHashJoin
Left keys [1]: [product#21521914]
Right keys [1]: [internalUUID#21521928]
Join type: LeftOuter
Join condition: None
(1267) Project
Output [2]: [plant#21521915, filter(unitOfMeasureConversions#21521934, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525645) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525646)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521932.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521932.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521939]
Input [7]: [product#21521914, plant#21521915, _extract_code#21525645, _extract_internalRefUUID#21525646, internalUUID#21521928, baseUnitOfMeasure#21521932, unitOfMeasureConversions#21521934]
(1268) Generate
Input [2]: [plant#21521915, filteredUnitOfMeasureConversions#21521939]
Arguments: explode(filteredUnitOfMeasureConversions#21521939.quantityNumerator), [plant#21521915, filteredUnitOfMeasureConversions#21521939], true, [quantityNumerator#21521940]
(1269) Project
Output [2]: [plant#21521915, filteredUnitOfMeasureConversions#21521939.quantityDenominator AS _extract_quantityDenominator#21525135]
Input [3]: [plant#21521915, filteredUnitOfMeasureConversions#21521939, quantityNumerator#21521940]
(1270) Generate
Input [2]: [plant#21521915, _extract_quantityDenominator#21525135]
Arguments: explode(_extract_quantityDenominator#21525135), [plant#21521915], true, [quantityDenominator#21521941]
(1271) Project
Output [1]: [plant#21521915]
Input [2]: [plant#21521915, quantityDenominator#21521941]
(1272) HashAggregate
Input [1]: [plant#21521915]
Keys [1]: [plant#21521915]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521915]
(1273) Exchange
Input [1]: [plant#21521915]
Arguments: hashpartitioning(plant#21521915, 25), ENSURE_REQUIREMENTS, [plan_id=21265108]
(1274) HashAggregate
Input [1]: [plant#21521915]
Keys [1]: [plant#21521915]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21521915]
(1275) BroadcastHashJoin
Left keys [1]: [plantUuid#21521911]
Right keys [1]: [plant#21521915]
Join type: Inner
Join condition: None
(1276) Project
Output [3]: [plantUuid#21521911, storageLocId#21521912, storageLocUuid#21521913]
Input [4]: [plantUuid#21521911, storageLocId#21521912, storageLocUuid#21521913, plant#21521915]
(1277) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21521883.internalRefUUID, ), isnull(plant#21521883.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21521911, ), isnull(plantUuid#21521911)]
Join type: Inner
Join condition: None
(1278) Generate
Input [9]: [systemId#21521880, internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, stockQuantities#21521885, plantUuid#21521911, storageLocId#21521912, storageLocUuid#21521913]
Arguments: explode(filter(stockQuantities#21521885, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21521913) AND (lambda x#21518157.storageLocation.Id = storageLocId#21521912)), lambda x#21518157, false))), [systemId#21521880, internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, plantUuid#21521911], false, [stockQuantity#21521944]
(1279) ObjectHashAggregate
Input [7]: [systemId#21521880, internalUUID#21521881, product#21521882, plant#21521883, calculationDateTime#21521884, plantUuid#21521911, stockQuantity#21521944]
Keys [5]: [plantUuid#21521911, internalUUID#21521881, plant#21521883, product#21521882, systemId#21521880]
Functions [2]: [partial_first(calculationDateTime#21521884, false), partial_collect_list(stockQuantity#21521944, 0, 0)]
Aggregate Attributes [3]: [first#21526610, valueSet#21526611, buf#21526612]
Results [8]: [plantUuid#21521911, internalUUID#21521881, plant#21521883, product#21521882, systemId#21521880, first#21526613, valueSet#21526614, buf#21526615]
(1280) ObjectHashAggregate
Input [8]: [plantUuid#21521911, internalUUID#21521881, plant#21521883, product#21521882, systemId#21521880, first#21526613, valueSet#21526614, buf#21526615]
Keys [5]: [plantUuid#21521911, internalUUID#21521881, plant#21521883, product#21521882, systemId#21521880]
Functions [2]: [first(calculationDateTime#21521884, false), collect_list(stockQuantity#21521944, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21521884)()#21518172, collect_list(stockQuantity#21521944, 0, 0)#21518173]
Results [4]: [product#21521882, plant#21521883, first(calculationDateTime#21521884)()#21518172 AS calculationDateTime#21521945, collect_list(stockQuantity#21521944, 0, 0)#21518173 AS stockQuantities#21521946]
(1281) Filter
Input [4]: [product#21521882, plant#21521883, calculationDateTime#21521945, stockQuantities#21521946]
Condition : ((size(stockQuantities#21521946, true) > 0) AND isnotnull(calculationDateTime#21521945))
(1282) Generate
Input [4]: [product#21521882, plant#21521883, calculationDateTime#21521945, stockQuantities#21521946]
Arguments: explode(stockQuantities#21521946), [product#21521882, plant#21521883, calculationDateTime#21521945], false, [stockQuantity#21521947]
(1283) Filter
Input [4]: [product#21521882, plant#21521883, calculationDateTime#21521945, stockQuantity#21521947]
Condition : (((isnotnull(stockQuantity#21521947.specialStockIndicator.code) AND isnotnull(stockQuantity#21521947.stockType.code)) AND (stockQuantity#21521947.specialStockIndicator.code = )) AND (stockQuantity#21521947.stockType.code = 01))
(1284) Project
Output [4]: [plant#21521883.internalRefUUID AS plantUuid#21521949, product#21521882.internalRefUUID AS productUuid#21521951, calculationDateTime#21521945, stockQuantity#21521947.storagelocation.id AS storageLocId#21521952]
Input [4]: [product#21521882, plant#21521883, calculationDateTime#21521945, stockQuantity#21521947]
(1285) Exchange
Input [4]: [plantUuid#21521949, productUuid#21521951, calculationDateTime#21521945, storageLocId#21521952]
Arguments: hashpartitioning(productUuid#21521951, plantUuid#21521949, 25), ENSURE_REQUIREMENTS, [plan_id=21265137]
(1286) Sort
Input [4]: [plantUuid#21521949, productUuid#21521951, calculationDateTime#21521945, storageLocId#21521952]
Arguments: [productUuid#21521951 ASC NULLS FIRST, plantUuid#21521949 ASC NULLS FIRST], false, 0
(1287) Scan parquet
Output [3]: [product#21521957, plant#21521958, orderDateTime#21521959]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1288) Filter
Input [3]: [product#21521957, plant#21521958, orderDateTime#21521959]
Condition : ((isnotnull(orderDateTime#21521959) AND isnotnull(plant#21521958)) AND isnotnull(product#21521957))
(1289) Exchange
Input [3]: [product#21521957, plant#21521958, orderDateTime#21521959]
Arguments: hashpartitioning(product#21521957, plant#21521958, 25), REPARTITION_BY_NUM, [plan_id=21264254]
(1290) Scan parquet
Output [4]: [plant#21521963, product#21521964, productionAspect#21521966, systemId#21521961]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1291) Project
Output [4]: [plant#21521963.internalRefUUID AS _extract_internalRefUUID#21525648, product#21521964.internalRefUUID AS _extract_internalRefUUID#21525647, productionAspect#21521966.productMovementPlants.unitOfIssue.code AS _extract_code#21525649, productionAspect#21521966.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525650]
Input [4]: [plant#21521963, product#21521964, productionAspect#21521966, systemId#21521961]
(1292) Exchange
Input [4]: [_extract_internalRefUUID#21525648, _extract_internalRefUUID#21525647, _extract_code#21525649, _extract_internalRefUUID#21525650]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263209]
(1293) Project
Output [4]: [_extract_code#21525649, _extract_internalRefUUID#21525650, _extract_internalRefUUID#21525647, _extract_internalRefUUID#21525648]
Input [4]: [_extract_internalRefUUID#21525648, _extract_internalRefUUID#21525647, _extract_code#21525649, _extract_internalRefUUID#21525650]
(1294) BroadcastExchange
Input [4]: [_extract_code#21525649, _extract_internalRefUUID#21525650, _extract_internalRefUUID#21525647, _extract_internalRefUUID#21525648]
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=21265124]
(1295) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521957, ), isnull(product#21521957), coalesce(plant#21521958, ), isnull(plant#21521958)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525647, ), isnull(_extract_internalRefUUID#21525647), coalesce(_extract_internalRefUUID#21525648, ), isnull(_extract_internalRefUUID#21525648)]
Join type: LeftOuter
Join condition: None
(1296) Project
Output [5]: [product#21521957, plant#21521958, orderDateTime#21521959, _extract_code#21525649, _extract_internalRefUUID#21525650]
Input [7]: [product#21521957, plant#21521958, orderDateTime#21521959, _extract_code#21525649, _extract_internalRefUUID#21525650, _extract_internalRefUUID#21525647, _extract_internalRefUUID#21525648]
(1297) Scan parquet
Output [4]: [internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977, systemId#21521970]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1298) Filter
Input [4]: [internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977, systemId#21521970]
Condition : isnotnull(internalUUID#21521971)
(1299) Project
Output [3]: [internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977]
Input [4]: [internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977, systemId#21521970]
(1300) Exchange
Input [3]: [internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263216]
(1301) BroadcastExchange
Input [3]: [internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265128]
(1302) BroadcastHashJoin
Left keys [1]: [product#21521957]
Right keys [1]: [internalUUID#21521971]
Join type: LeftOuter
Join condition: None
(1303) Project
Output [4]: [product#21521957, plant#21521958, orderDateTime#21521959, filter(unitOfMeasureConversions#21521977, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525649) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525650)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21521975.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21521975.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21521982]
Input [8]: [product#21521957, plant#21521958, orderDateTime#21521959, _extract_code#21525649, _extract_internalRefUUID#21525650, internalUUID#21521971, baseUnitOfMeasure#21521975, unitOfMeasureConversions#21521977]
(1304) Generate
Input [4]: [product#21521957, plant#21521958, orderDateTime#21521959, filteredUnitOfMeasureConversions#21521982]
Arguments: explode(filteredUnitOfMeasureConversions#21521982.quantityNumerator), [product#21521957, plant#21521958, orderDateTime#21521959, filteredUnitOfMeasureConversions#21521982], true, [quantityNumerator#21521983]
(1305) Project
Output [4]: [product#21521957, plant#21521958, orderDateTime#21521959, filteredUnitOfMeasureConversions#21521982.quantityDenominator AS _extract_quantityDenominator#21525142]
Input [5]: [product#21521957, plant#21521958, orderDateTime#21521959, filteredUnitOfMeasureConversions#21521982, quantityNumerator#21521983]
(1306) Generate
Input [4]: [product#21521957, plant#21521958, orderDateTime#21521959, _extract_quantityDenominator#21525142]
Arguments: explode(_extract_quantityDenominator#21525142), [product#21521957, plant#21521958, orderDateTime#21521959], true, [quantityDenominator#21521984]
(1307) Project
Output [3]: [product#21521957, plant#21521958, orderDateTime#21521959]
Input [4]: [product#21521957, plant#21521958, orderDateTime#21521959, quantityDenominator#21521984]
(1308) Sort
Input [3]: [product#21521957, plant#21521958, orderDateTime#21521959]
Arguments: [product#21521957 ASC NULLS FIRST, plant#21521958 ASC NULLS FIRST], false, 0
(1309) SortMergeJoin
Left keys [2]: [productUuid#21521951, plantUuid#21521949]
Right keys [2]: [product#21521957, plant#21521958]
Join type: Inner
Join condition: (calculationDateTime#21521945 <= orderDateTime#21521959)
(1310) Project
Output [4]: [plantUuid#21521949 AS plant#21521987, productUuid#21521951 AS product#21521988, storageLocId#21521952, calculationDateTime#21521945]
Input [7]: [plantUuid#21521949, productUuid#21521951, calculationDateTime#21521945, storageLocId#21521952, product#21521957, plant#21521958, orderDateTime#21521959]
(1311) HashAggregate
Input [4]: [plant#21521987, product#21521988, storageLocId#21521952, calculationDateTime#21521945]
Keys [3]: [plant#21521987, product#21521988, storageLocId#21521952]
Functions [1]: [partial_max(calculationDateTime#21521945)]
Aggregate Attributes [1]: [max#21526608]
Results [4]: [plant#21521987, product#21521988, storageLocId#21521952, max#21526609]
(1312) HashAggregate
Input [4]: [plant#21521987, product#21521988, storageLocId#21521952, max#21526609]
Keys [3]: [plant#21521987, product#21521988, storageLocId#21521952]
Functions [1]: [max(calculationDateTime#21521945)]
Aggregate Attributes [1]: [max(calculationDateTime#21521945)#21518235]
Results [4]: [plant#21521987, product#21521988, storageLocId#21521952, max(calculationDateTime#21521945)#21518235 AS max_calc_datetime#21521989]
(1313) Exchange
Input [4]: [plant#21521987, product#21521988, storageLocId#21521952, max_calc_datetime#21521989]
Arguments: hashpartitioning(coalesce(plant#21521987, ), isnull(plant#21521987), coalesce(product#21521988, ), isnull(product#21521988), coalesce(storageLocId#21521952, ), isnull(storageLocId#21521952), coalesce(max_calc_datetime#21521989, 1970-01-01 00:00:00), isnull(max_calc_datetime#21521989), 25), ENSURE_REQUIREMENTS, [plan_id=21265147]
(1314) Sort
Input [4]: [plant#21521987, product#21521988, storageLocId#21521952, max_calc_datetime#21521989]
Arguments: [coalesce(plant#21521987, ) ASC NULLS FIRST, isnull(plant#21521987) ASC NULLS FIRST, coalesce(product#21521988, ) ASC NULLS FIRST, isnull(product#21521988) ASC NULLS FIRST, coalesce(storageLocId#21521952, ) ASC NULLS FIRST, isnull(storageLocId#21521952) ASC NULLS FIRST, coalesce(max_calc_datetime#21521989, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21521989) ASC NULLS FIRST], false, 0
(1315) SortMergeJoin
Left keys [8]: [coalesce(plant#21521878, ), isnull(plant#21521878), coalesce(product#21521879, ), isnull(product#21521879), coalesce(storageLocId#21521843, ), isnull(storageLocId#21521843), coalesce(calculationDateTime#21521836, 1970-01-01 00:00:00), isnull(calculationDateTime#21521836)]
Right keys [8]: [coalesce(plant#21521987, ), isnull(plant#21521987), coalesce(product#21521988, ), isnull(product#21521988), coalesce(storageLocId#21521952, ), isnull(storageLocId#21521952), coalesce(max_calc_datetime#21521989, 1970-01-01 00:00:00), isnull(max_calc_datetime#21521989)]
Join type: Inner
Join condition: None
(1316) Project
Output [4]: [plant#21521878, product#21521879, calculationDateTime#21521836, quantity#21521845]
Input [9]: [plant#21521878, product#21521879, storageLocId#21521843, calculationDateTime#21521836, quantity#21521845, plant#21521987, product#21521988, storageLocId#21521952, max_calc_datetime#21521989]
(1317) HashAggregate
Input [4]: [plant#21521878, product#21521879, calculationDateTime#21521836, quantity#21521845]
Keys [2]: [product#21521879, plant#21521878]
Functions [2]: [partial_min(calculationDateTime#21521836), partial_sum(quantity#21521845)]
Aggregate Attributes [2]: [min#21526598, sum#21526599]
Results [4]: [product#21521879, plant#21521878, min#21526600, sum#21526601]
(1318) Exchange
Input [4]: [product#21521879, plant#21521878, min#21526600, sum#21526601]
Arguments: hashpartitioning(product#21521879, plant#21521878, 25), ENSURE_REQUIREMENTS, [plan_id=21265154]
(1319) HashAggregate
Input [4]: [product#21521879, plant#21521878, min#21526600, sum#21526601]
Keys [2]: [product#21521879, plant#21521878]
Functions [2]: [min(calculationDateTime#21521836), sum(quantity#21521845)]
Aggregate Attributes [2]: [min(calculationDateTime#21521836)#21518361, sum(quantity#21521845)#21518360]
Results [4]: [product#21521879, plant#21521878, min(calculationDateTime#21521836)#21518361 AS minCalculationDateTime#21521991, round(sum(quantity#21521845)#21518360, 0) AS roundedQuantitySum#21521992]
(1320) Sort
Input [4]: [product#21521879, plant#21521878, minCalculationDateTime#21521991, roundedQuantitySum#21521992]
Arguments: [product#21521879 ASC NULLS FIRST, plant#21521878 ASC NULLS FIRST], false, 0
(1321) SortMergeJoin
Left keys [2]: [product#21521741, plant#21521742]
Right keys [2]: [product#21521879, plant#21521878]
Join type: LeftOuter
Join condition: None
(1322) Project
Output [7]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, CASE WHEN isnotnull(minCalculationDateTime#21521991) THEN minCalculationDateTime#21521991 ELSE orderDateTime#21521743 END AS stockDatetime#21521993, CASE WHEN isnotnull(roundedQuantitySum#21521992) THEN array(roundedQuantitySum#21521992) ELSE [0.0] END AS stockBatchQuantities#21521994]
Input [9]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, product#21521879, plant#21521878, minCalculationDateTime#21521991, roundedQuantitySum#21521992]
(1323) Scan parquet
Output [9]: [product#21521996, plant#21521997, demandChannel#21521998, demandStream#21521999, considerVariance#21522000, demandTimeBuckets#21522001, demandPointInTimeStart#21522002, demandPointInTimeEnd#21522003, demandPointInTime#21522004]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001651/0_1_10000001651]
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>>>
(1324) BroadcastExchange
Input [9]: [product#21521996, plant#21521997, demandChannel#21521998, demandStream#21521999, considerVariance#21522000, demandTimeBuckets#21522001, demandPointInTimeStart#21522002, demandPointInTimeEnd#21522003, demandPointInTime#21522004]
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=21265164]
(1325) BroadcastHashJoin
Left keys [4]: [coalesce(plant#21521742, ), isnull(plant#21521742), coalesce(product#21521741, ), isnull(product#21521741)]
Right keys [4]: [coalesce(plant#21521997, ), isnull(plant#21521997), coalesce(product#21521996, ), isnull(product#21521996)]
Join type: LeftOuter
Join condition: None
(1326) Project
Output [8]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, CASE WHEN isnotnull(product#21521996) THEN struct(demandChannel, demandChannel#21521998, demandStream, demandStream#21521999, considerVariance, considerVariance#21522000, demandTimeBuckets, demandTimeBuckets#21522001, demandPointInTimeStart, demandPointInTimeStart#21522002, demandPointInTimeEnd, demandPointInTimeEnd#21522003, demandPointInTime, demandPointInTime#21522004) END AS rawDemands#21522005]
Input [16]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, product#21521996, plant#21521997, demandChannel#21521998, demandStream#21521999, considerVariance#21522000, demandTimeBuckets#21522001, demandPointInTimeStart#21522002, demandPointInTimeEnd#21522003, demandPointInTime#21522004]
(1327) ObjectHashAggregate
Input [8]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, rawDemands#21522005]
Keys [8]: [product#21521741, plant#21521742, orderDateTime#21521743, knownfloatingpointnormalized(if (isnull(productPlant#21521753)) null else named_struct(systemId, productPlant#21521753.systemId, internalUUID, productPlant#21521753.internalUUID, plant, productPlant#21521753.plant, product, productPlant#21521753.product, blockedForReplenishmentStartingFrom, productPlant#21521753.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21521753.productionAspect)) null else named_struct(productMovementPlants, productPlant#21521753.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21521753.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21521753.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21521753.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21521753.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21521753.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21521753.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21521753.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21521753.salesPlant, listing, productPlant#21521753.listing)) AS productPlant#21521753, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21521770)) AS outboundUnit#21521770, stockDatetime#21521993, knownfloatingpointnormalized(transform(stockBatchQuantities#21521994, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21526595)), lambda arg#21526595, false))) AS stockBatchQuantities#21521994, [7226582400000000] AS [7226582400000000]#21526594]
Functions [1]: [partial_collect_list(rawDemands#21522005, 0, 0)]
Aggregate Attributes [1]: [buf#21526596]
Results [9]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, [7226582400000000]#21526594, buf#21526597]
(1328) ObjectHashAggregate
Input [9]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, [7226582400000000]#21526594, buf#21526597]
Keys [8]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, [7226582400000000]#21526594]
Functions [1]: [collect_list(rawDemands#21522005, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21522005, 0, 0)#21518429]
Results [8]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, collect_list(rawDemands#21522005, 0, 0)#21518429 AS rawDemands#21522006]
(1329) Scan parquet
Output [3]: [internalUUID#21522008, address#21522014, systemId#21522007]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1330) Project
Output [2]: [internalUUID#21522008, address#21522014.timeZone.code AS timezonecode#21522019]
Input [3]: [internalUUID#21522008, address#21522014, systemId#21522007]
(1331) Exchange
Input [2]: [internalUUID#21522008, timezonecode#21522019]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263240]
(1332) BroadcastExchange
Input [2]: [internalUUID#21522008, timezonecode#21522019]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21265170]
(1333) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21521742, ), isnull(plant#21521742)]
Right keys [2]: [coalesce(internalUUID#21522008, ), isnull(internalUUID#21522008)]
Join type: LeftOuter
Join condition: None
(1334) Project
Output [10]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21521995, rawDemands#21522006, CASE WHEN isnotnull(timezonecode#21522019) THEN timezonecode#21522019 ELSE UTC END AS timezonecode#21522020]
Input [10]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, rawDemands#21522006, internalUUID#21522008, timezonecode#21522019]
(1335) DeserializeToObject
Input [10]: [product#21521741, plant#21521742, orderDateTime#21521743, productPlant#21521753, outboundUnit#21521770, stockDatetime#21521993, stockBatchQuantities#21521994, stockBatchShelfLifeEndDatetimes#21521995, rawDemands#21522006, timezonecode#21522020]
Arguments: createexternalrow(invoke(product#21521741.toString()), invoke(plant#21521742.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21521743)), if (isnull(productPlant#21521753)) null else createexternalrow(invoke(productPlant#21521753.systemId.toString()), invoke(productPlant#21521753.internalUUID.toString()), if (isnull(productPlant#21521753.plant)) null else createexternalrow(invoke(productPlant#21521753.plant.internalRefUUID.toString()), invoke(productPlant#21521753.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21521753.product)) null else createexternalrow(invoke(productPlant#21521753.product.internalRefUUID.toString()), invoke(productPlant#21521753.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21521753.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21521753.productionAspect)) null else createexternalrow(if (isnull(productPlant#21521753.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21521753.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21521753.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21521753.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#21521753.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21521753.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21521753.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21521753.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21521753.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21521753.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21521753.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21521753.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21521753.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21521753.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21521753.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21521753.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21521753.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21521753.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21521753.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21521753.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21521753.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21521753.salesPlant)) null else createexternalrow(if (isnull(productPlant#21521753.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21521753.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21521753.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#21521753.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21521770)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21521993)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#21521994, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#21521995, 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#21522006, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21522020.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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21519488: org.apache.spark.sql.Row
(1336) MapElements
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(1337) SerializeFromObject
Input [1]: [obj#21519493]
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#21522021, 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#21522022]
(1338) Exchange
Input [2]: [product#21522021, plant#21522022]
Arguments: hashpartitioning(coalesce(plant#21522022, ), isnull(plant#21522022), coalesce(product#21522021, ), isnull(product#21522021), 25), ENSURE_REQUIREMENTS, [plan_id=21265179]
(1339) Sort
Input [2]: [product#21522021, plant#21522022]
Arguments: [coalesce(plant#21522022, ) ASC NULLS FIRST, isnull(plant#21522022) ASC NULLS FIRST, coalesce(product#21522021, ) ASC NULLS FIRST, isnull(product#21522021) ASC NULLS FIRST], false, 0
(1340) SortMergeJoin
Left keys [4]: [coalesce(plant#21521487, ), isnull(plant#21521487), coalesce(product#21521486, ), isnull(product#21521486)]
Right keys [4]: [coalesce(plant#21522022, ), isnull(plant#21522022), coalesce(product#21522021, ), isnull(product#21522021)]
Join type: LeftOuter
Join condition: None
(1341) Project
Output [3]: [product#21521486, plant#21521487, stockDatetime#21521738]
Input [5]: [product#21521486, plant#21521487, stockDatetime#21521738, product#21522021, plant#21522022]
(1342) Scan parquet
Output [6]: [internalUUID#21522026, id#21522027, supplier#21522029, isMarkedForDeletion#21522032, items#21522033, systemId#21522025]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1343) Filter
Input [6]: [internalUUID#21522026, id#21522027, supplier#21522029, isMarkedForDeletion#21522032, items#21522033, systemId#21522025]
Condition : (((isnotnull(isMarkedForDeletion#21522032) AND NOT isMarkedForDeletion#21522032) AND (size(items#21522033, true) > 0)) AND isnotnull(items#21522033))
(1344) Project
Output [4]: [internalUUID#21522026, id#21522027, supplier#21522029, items#21522033]
Input [6]: [internalUUID#21522026, id#21522027, supplier#21522029, isMarkedForDeletion#21522032, items#21522033, systemId#21522025]
(1345) Exchange
Input [4]: [internalUUID#21522026, id#21522027, supplier#21522029, items#21522033]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263251]
(1346) Generate
Input [4]: [internalUUID#21522026, id#21522027, supplier#21522029, items#21522033]
Arguments: explode(items#21522033), [internalUUID#21522026, id#21522027, supplier#21522029], false, [item#21522034]
(1347) Filter
Input [4]: [internalUUID#21522026, id#21522027, supplier#21522029, item#21522034]
Condition : ((((isnotnull(item#21522034.deletionIndicator) AND isnotnull(item#21522034.completeIndicator)) AND isnotnull(item#21522034.returnIndicator)) AND ((NOT item#21522034.deletionIndicator AND NOT item#21522034.completeIndicator) AND NOT item#21522034.returnIndicator)) AND isnotnull(item#21522034.product.internalRefUUID))
(1348) Project
Output [9]: [id#21522027, internalUUID#21522026, supplier#21522029.internalRefUUID AS supplierUuid#21522035, item#21522034.product.internalRefUUID AS product#21522037, item#21522034.quantityUnit.code AS quantityUom#21522039, item#21522034.quantityUnit.internalRefUUID AS quantityUomUuid#21522040, item#21522034.quantityNumerator AS quantityNumerator#21522041, item#21522034.quantityDenominator AS quantityDenominator#21522042, item#21522034.scheduleLines AS scheduleLines#21522043]
Input [4]: [internalUUID#21522026, id#21522027, supplier#21522029, item#21522034]
(1349) BroadcastExchange
Input [9]: [id#21522027, internalUUID#21522026, supplierUuid#21522035, product#21522037, quantityUom#21522039, quantityUomUuid#21522040, quantityNumerator#21522041, quantityDenominator#21522042, scheduleLines#21522043]
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=21265185]
(1350) BroadcastHashJoin
Left keys [4]: [coalesce(product#21521486, ), isnull(product#21521486), coalesce(plant#21521487, ), isnull(plant#21521487)]
Right keys [4]: [coalesce(product#21522037, ), isnull(product#21522037), coalesce(supplierUuid#21522035, ), isnull(supplierUuid#21522035)]
Join type: Inner
Join condition: None
(1351) Project
Output [3]: [product#21522037, plant#21521487, filter(transform(filter(transform(scheduleLines#21522043, lambdafunction(struct(openQty, (greatest((lambda x_1556#21521466.quantity - coalesce(lambda x_1556#21521466.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_1556#21521466.productAvailabilityDateTime, lambda x_1556#21521466.deliveryAt)), lambda x_1556#21521466, false)), lambdafunction((lambda x_1557#21521467.availabilityDatetime < stockDatetime#21521738), lambda x_1557#21521467, false)), lambdafunction(struct(documentId, id#21522027, documentUuid, internalUUID#21522026, openQty, lambda x_1558#21521468.openQty, openQtyInBaseUnit, ((lambda x_1558#21521468.openQty * quantityNumerator#21522041) / quantityDenominator#21522042), qtyUom, quantityUom#21522039, qtyUomUuid, quantityUomUuid#21522040, availabilityDatetime, lambda x_1558#21521468.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_1558#21521468, false)), lambdafunction(NOT (lambda x_1559#21521469.openQty = 0.0), lambda x_1559#21521469, false)) AS openGoodsMovements#21521465]
Input [12]: [product#21521486, plant#21521487, stockDatetime#21521738, id#21522027, internalUUID#21522026, supplierUuid#21522035, product#21522037, quantityUom#21522039, quantityUomUuid#21522040, quantityNumerator#21522041, quantityDenominator#21522042, scheduleLines#21522043]
(1352) ObjectHashAggregate
Input [3]: [product#21522037, plant#21521487, openGoodsMovements#21521465]
Keys [2]: [product#21522037, plant#21521487]
Functions [1]: [partial_collect_list(openGoodsMovements#21521465, 0, 0)]
Aggregate Attributes [1]: [buf#21526576]
Results [3]: [product#21522037, plant#21521487, buf#21526577]
(1353) Exchange
Input [3]: [product#21522037, plant#21521487, buf#21526577]
Arguments: hashpartitioning(product#21522037, plant#21521487, 25), ENSURE_REQUIREMENTS, [plan_id=21265190]
(1354) ObjectHashAggregate
Input [3]: [product#21522037, plant#21521487, buf#21526577]
Keys [2]: [product#21522037, plant#21521487]
Functions [1]: [collect_list(openGoodsMovements#21521465, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#21521465, 0, 0)#21521485]
Results [3]: [product#21522037, plant#21521487, flatten(collect_list(openGoodsMovements#21521465, 0, 0)#21521485) AS openGoodsMovements#21521470]
(1355) Filter
Input [3]: [product#21522037, plant#21521487, openGoodsMovements#21521470]
Condition : (size(openGoodsMovements#21521470, false) > 0)
(1356) Union
(1357) ObjectHashAggregate
Input [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Keys [2]: [product#21519794, plant#21519793]
Functions [1]: [partial_collect_list(openGoodsMovements#21519894, 0, 0)]
Aggregate Attributes [1]: [buf#21526574]
Results [3]: [product#21519794, plant#21519793, buf#21526575]
(1358) Exchange
Input [3]: [product#21519794, plant#21519793, buf#21526575]
Arguments: hashpartitioning(product#21519794, plant#21519793, 25), ENSURE_REQUIREMENTS, [plan_id=21265196]
(1359) ObjectHashAggregate
Input [3]: [product#21519794, plant#21519793, buf#21526575]
Keys [2]: [product#21519794, plant#21519793]
Functions [1]: [collect_list(openGoodsMovements#21519894, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#21519894, 0, 0)#21522090]
Results [3]: [product#21519794, plant#21519793, flatten(collect_list(openGoodsMovements#21519894, 0, 0)#21522090) AS openGoodsMovements#21522086]
(1360) Project
Output [5]: [product#21519794, plant#21519793, openGoodsMovements#21522086.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#21525570, openGoodsMovements#21522086.availabilityDatetime AS _extract_availabilityDatetime#21525571, openGoodsMovements#21522086.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#21525572]
Input [3]: [product#21519794, plant#21519793, openGoodsMovements#21522086]
(1361) Sort
Input [5]: [product#21519794, plant#21519793, _extract_openQtyInBaseUnit#21525570, _extract_availabilityDatetime#21525571, _extract_shelfLifeEndDatetime#21525572]
Arguments: [product#21519794 ASC NULLS FIRST, plant#21519793 ASC NULLS FIRST], false, 0
(1362) SortMergeJoin
Left keys [2]: [product#21517975, plant#21517976]
Right keys [2]: [product#21519794, plant#21519793]
Join type: LeftOuter
Join condition: None
(1363) Project
Output [10]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, coalesce(_extract_openQtyInBaseUnit#21525570, []) AS openGoodsMovementQuantities#21522670, coalesce(_extract_availabilityDatetime#21525571, []) AS openGoodsMovementAvailabilityDatetimes#21522671, coalesce(_extract_shelfLifeEndDatetime#21525572, []) AS openGoodsMovementShelfLifeEndDatetimes#21522672]
Input [12]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, product#21519794, plant#21519793, _extract_openQtyInBaseUnit#21525570, _extract_availabilityDatetime#21525571, _extract_shelfLifeEndDatetime#21525572]
(1364) Scan parquet
Output [3]: [product#21522970, plant#21522971, orderDateTime#21522972]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1365) Exchange
Input [3]: [product#21522970, plant#21522971, orderDateTime#21522972]
Arguments: hashpartitioning(product#21522970, plant#21522971, 25), REPARTITION_BY_NUM, [plan_id=21263267]
(1366) Exchange
Input [3]: [product#21522970, plant#21522971, orderDateTime#21522972]
Arguments: hashpartitioning(coalesce(product#21522970, ), isnull(product#21522970), coalesce(plant#21522971, ), isnull(plant#21522971), 25), ENSURE_REQUIREMENTS, [plan_id=21265207]
(1367) Sort
Input [3]: [product#21522970, plant#21522971, orderDateTime#21522972]
Arguments: [coalesce(product#21522970, ) ASC NULLS FIRST, isnull(product#21522970) ASC NULLS FIRST, coalesce(plant#21522971, ) ASC NULLS FIRST, isnull(plant#21522971) ASC NULLS FIRST], false, 0
(1368) Scan parquet
Output [8]: [internalUUID#21522975, plant#21522976, product#21522977, blockedForReplenishmentStartingFrom#21522978, productionAspect#21522979, salesPlant#21522980, listing#21522981, systemId#21522974]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1369) Project
Output [8]: [systemId#21522974, internalUUID#21522975, plant#21522976, product#21522977, blockedForReplenishmentStartingFrom#21522978, productionAspect#21522979, salesPlant#21522980, listing#21522981]
Input [8]: [internalUUID#21522975, plant#21522976, product#21522977, blockedForReplenishmentStartingFrom#21522978, productionAspect#21522979, salesPlant#21522980, listing#21522981, systemId#21522974]
(1370) Exchange
Input [8]: [systemId#21522974, internalUUID#21522975, plant#21522976, product#21522977, blockedForReplenishmentStartingFrom#21522978, productionAspect#21522979, salesPlant#21522980, listing#21522981]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263270]
(1371) Project
Output [1]: [struct(systemId, systemId#21522974, internalUUID, internalUUID#21522975, plant, plant#21522976, product, product#21522977, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21522978, productionAspect, productionAspect#21522979, salesPlant, salesPlant#21522980, listing, listing#21522981) AS productPlant#21522982]
Input [8]: [systemId#21522974, internalUUID#21522975, plant#21522976, product#21522977, blockedForReplenishmentStartingFrom#21522978, productionAspect#21522979, salesPlant#21522980, listing#21522981]
(1372) Exchange
Input [1]: [productPlant#21522982]
Arguments: hashpartitioning(coalesce(productPlant#21522982.product.internalRefUUID, ), isnull(productPlant#21522982.product.internalRefUUID), coalesce(productPlant#21522982.plant.internalRefUUID, ), isnull(productPlant#21522982.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21265208]
(1373) Sort
Input [1]: [productPlant#21522982]
Arguments: [coalesce(productPlant#21522982.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21522982.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21522982.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21522982.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(1374) SortMergeJoin
Left keys [4]: [coalesce(product#21522970, ), isnull(product#21522970), coalesce(plant#21522971, ), isnull(plant#21522971)]
Right keys [4]: [coalesce(productPlant#21522982.product.internalRefUUID, ), isnull(productPlant#21522982.product.internalRefUUID), coalesce(productPlant#21522982.plant.internalRefUUID, ), isnull(productPlant#21522982.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1375) Scan parquet
Output [4]: [internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990, systemId#21522983]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1376) Filter
Input [4]: [internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990, systemId#21522983]
Condition : isnotnull(internalUUID#21522984)
(1377) Project
Output [3]: [internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990]
Input [4]: [internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990, systemId#21522983]
(1378) Exchange
Input [3]: [internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263276]
(1379) BroadcastExchange
Input [3]: [internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265213]
(1380) BroadcastHashJoin
Left keys [1]: [product#21522970]
Right keys [1]: [internalUUID#21522984]
Join type: LeftOuter
Join condition: None
(1381) Project
Output [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, filter(unitOfMeasureConversions#21522990, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21522982.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21522982.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21522988.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21522988.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21522995]
Input [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, internalUUID#21522984, baseUnitOfMeasure#21522988, unitOfMeasureConversions#21522990]
(1382) Project
Output [6]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, filteredUnitOfMeasureConversions#21522995.quantityDenominator AS _extract_quantityDenominator#21525654, filteredUnitOfMeasureConversions#21522995.quantityNumerator AS _extract_quantityNumerator#21525655]
Input [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, filteredUnitOfMeasureConversions#21522995]
(1383) Generate
Input [6]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, _extract_quantityDenominator#21525654, _extract_quantityNumerator#21525655]
Arguments: explode(_extract_quantityNumerator#21525655), [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, _extract_quantityDenominator#21525654], true, [quantityNumerator#21522996]
(1384) Generate
Input [6]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, _extract_quantityDenominator#21525654, quantityNumerator#21522996]
Arguments: explode(_extract_quantityDenominator#21525654), [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, quantityNumerator#21522996], true, [quantityDenominator#21522997]
(1385) Project
Output [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, (cast(quantityNumerator#21522996 as double) / cast(quantityDenominator#21522997 as double)) AS outboundUnit#21522998]
Input [6]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, quantityNumerator#21522996, quantityDenominator#21522997]
(1386) Project
Output [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, CASE WHEN (isnull(outboundUnit#21522998) OR (outboundUnit#21522998 <= 0.0)) THEN 1.0 ELSE outboundUnit#21522998 END AS outboundUnit#21522999]
Input [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522998]
(1387) Exchange
Input [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999]
Arguments: hashpartitioning(product#21522970, plant#21522971, 25), ENSURE_REQUIREMENTS, [plan_id=21265331]
(1388) Sort
Input [5]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999]
Arguments: [product#21522970 ASC NULLS FIRST, plant#21522971 ASC NULLS FIRST], false, 0
(1389) Scan parquet
Output [6]: [internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005, systemId#21523000]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1390) Filter
Input [6]: [internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005, systemId#21523000]
Condition : (isnotnull(plant#21523003.internalRefUUID) AND isnotnull(product#21523002.internalRefUUID))
(1391) Project
Output [6]: [systemId#21523000, internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005]
Input [6]: [internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005, systemId#21523000]
(1392) Exchange
Input [6]: [systemId#21523000, internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263287]
(1393) BroadcastExchange
Input [6]: [systemId#21523000, internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005]
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=21265241]
(1394) Scan parquet
Output [2]: [marketUnit#21523006, distributionCenters#21523012]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1395) Filter
Input [2]: [marketUnit#21523006, distributionCenters#21523012]
Condition : (((marketUnit#21523006 <=> SS_Test_1) AND (size(distributionCenters#21523012, true) > 0)) AND isnotnull(distributionCenters#21523012))
(1396) Project
Output [1]: [distributionCenters#21523012]
Input [2]: [marketUnit#21523006, distributionCenters#21523012]
(1397) Exchange
Input [1]: [distributionCenters#21523012]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263291]
(1398) Generate
Input [1]: [distributionCenters#21523012]
Arguments: explode(distributionCenters#21523012), false, [distributionCenters#21523028]
(1399) Filter
Input [1]: [distributionCenters#21523028]
Condition : (((size(distributionCenters#21523028.storageLocations, true) > 0) AND isnotnull(distributionCenters#21523028.storageLocations)) AND isnotnull(distributionCenters#21523028.internalRefUUID))
(1400) Project
Output [2]: [distributionCenters#21523028.internalRefUUID AS _extract_internalRefUUID#21525151, distributionCenters#21523028.storageLocations AS _extract_storageLocations#21525152]
Input [1]: [distributionCenters#21523028]
(1401) Generate
Input [2]: [_extract_internalRefUUID#21525151, _extract_storageLocations#21525152]
Arguments: explode(_extract_storageLocations#21525152), [_extract_internalRefUUID#21525151], false, [storageLocations#21523029]
(1402) Project
Output [3]: [_extract_internalRefUUID#21525151 AS plantUuid#21523031, storageLocations#21523029.id AS storageLocId#21523032, storageLocations#21523029.internalRefUUID AS storageLocUuid#21523033]
Input [2]: [_extract_internalRefUUID#21525151, storageLocations#21523029]
(1403) BroadcastExchange
Input [3]: [plantUuid#21523031, storageLocId#21523032, storageLocUuid#21523033]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265237]
(1404) Scan parquet
Output [2]: [product#21523034, plant#21523035]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1405) Filter
Input [2]: [product#21523034, plant#21523035]
Condition : isnotnull(plant#21523035)
(1406) Exchange
Input [2]: [product#21523034, plant#21523035]
Arguments: hashpartitioning(product#21523034, plant#21523035, 25), REPARTITION_BY_NUM, [plan_id=21264295]
(1407) Scan parquet
Output [4]: [plant#21523040, product#21523041, productionAspect#21523043, systemId#21523038]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1408) Project
Output [4]: [plant#21523040.internalRefUUID AS _extract_internalRefUUID#21525659, product#21523041.internalRefUUID AS _extract_internalRefUUID#21525656, productionAspect#21523043.productMovementPlants.unitOfIssue.code AS _extract_code#21525657, productionAspect#21523043.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525658]
Input [4]: [plant#21523040, product#21523041, productionAspect#21523043, systemId#21523038]
(1409) Exchange
Input [4]: [_extract_internalRefUUID#21525659, _extract_internalRefUUID#21525656, _extract_code#21525657, _extract_internalRefUUID#21525658]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263303]
(1410) Project
Output [4]: [_extract_code#21525657, _extract_internalRefUUID#21525658, _extract_internalRefUUID#21525656, _extract_internalRefUUID#21525659]
Input [4]: [_extract_internalRefUUID#21525659, _extract_internalRefUUID#21525656, _extract_code#21525657, _extract_internalRefUUID#21525658]
(1411) BroadcastExchange
Input [4]: [_extract_code#21525657, _extract_internalRefUUID#21525658, _extract_internalRefUUID#21525656, _extract_internalRefUUID#21525659]
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=21265221]
(1412) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523034, ), isnull(product#21523034), coalesce(plant#21523035, ), isnull(plant#21523035)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525656, ), isnull(_extract_internalRefUUID#21525656), coalesce(_extract_internalRefUUID#21525659, ), isnull(_extract_internalRefUUID#21525659)]
Join type: LeftOuter
Join condition: None
(1413) Project
Output [4]: [product#21523034, plant#21523035, _extract_code#21525657, _extract_internalRefUUID#21525658]
Input [6]: [product#21523034, plant#21523035, _extract_code#21525657, _extract_internalRefUUID#21525658, _extract_internalRefUUID#21525656, _extract_internalRefUUID#21525659]
(1414) Scan parquet
Output [4]: [internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054, systemId#21523047]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1415) Filter
Input [4]: [internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054, systemId#21523047]
Condition : isnotnull(internalUUID#21523048)
(1416) Project
Output [3]: [internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054]
Input [4]: [internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054, systemId#21523047]
(1417) Exchange
Input [3]: [internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263310]
(1418) BroadcastExchange
Input [3]: [internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265225]
(1419) BroadcastHashJoin
Left keys [1]: [product#21523034]
Right keys [1]: [internalUUID#21523048]
Join type: LeftOuter
Join condition: None
(1420) Project
Output [2]: [plant#21523035, filter(unitOfMeasureConversions#21523054, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525657) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525658)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523052.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523052.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523059]
Input [7]: [product#21523034, plant#21523035, _extract_code#21525657, _extract_internalRefUUID#21525658, internalUUID#21523048, baseUnitOfMeasure#21523052, unitOfMeasureConversions#21523054]
(1421) Generate
Input [2]: [plant#21523035, filteredUnitOfMeasureConversions#21523059]
Arguments: explode(filteredUnitOfMeasureConversions#21523059.quantityNumerator), [plant#21523035, filteredUnitOfMeasureConversions#21523059], true, [quantityNumerator#21523060]
(1422) Project
Output [2]: [plant#21523035, filteredUnitOfMeasureConversions#21523059.quantityDenominator AS _extract_quantityDenominator#21525153]
Input [3]: [plant#21523035, filteredUnitOfMeasureConversions#21523059, quantityNumerator#21523060]
(1423) Generate
Input [2]: [plant#21523035, _extract_quantityDenominator#21525153]
Arguments: explode(_extract_quantityDenominator#21525153), [plant#21523035], true, [quantityDenominator#21523061]
(1424) Project
Output [1]: [plant#21523035]
Input [2]: [plant#21523035, quantityDenominator#21523061]
(1425) HashAggregate
Input [1]: [plant#21523035]
Keys [1]: [plant#21523035]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523035]
(1426) Exchange
Input [1]: [plant#21523035]
Arguments: hashpartitioning(plant#21523035, 25), ENSURE_REQUIREMENTS, [plan_id=21265234]
(1427) HashAggregate
Input [1]: [plant#21523035]
Keys [1]: [plant#21523035]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523035]
(1428) BroadcastHashJoin
Left keys [1]: [plantUuid#21523031]
Right keys [1]: [plant#21523035]
Join type: Inner
Join condition: None
(1429) Project
Output [3]: [plantUuid#21523031, storageLocId#21523032, storageLocUuid#21523033]
Input [4]: [plantUuid#21523031, storageLocId#21523032, storageLocUuid#21523033, plant#21523035]
(1430) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21523003.internalRefUUID, ), isnull(plant#21523003.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21523031, ), isnull(plantUuid#21523031)]
Join type: Inner
Join condition: None
(1431) Generate
Input [9]: [systemId#21523000, internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, stockQuantities#21523005, plantUuid#21523031, storageLocId#21523032, storageLocUuid#21523033]
Arguments: explode(filter(stockQuantities#21523005, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21523033) AND (lambda x#21518157.storageLocation.Id = storageLocId#21523032)), lambda x#21518157, false))), [systemId#21523000, internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, plantUuid#21523031], false, [stockQuantity#21523064]
(1432) ObjectHashAggregate
Input [7]: [systemId#21523000, internalUUID#21523001, product#21523002, plant#21523003, calculationDateTime#21523004, plantUuid#21523031, stockQuantity#21523064]
Keys [5]: [plantUuid#21523031, internalUUID#21523001, plant#21523003, product#21523002, systemId#21523000]
Functions [2]: [partial_first(calculationDateTime#21523004, false), partial_collect_list(stockQuantity#21523064, 0, 0)]
Aggregate Attributes [3]: [first#21526620, valueSet#21526621, buf#21526622]
Results [8]: [plantUuid#21523031, internalUUID#21523001, plant#21523003, product#21523002, systemId#21523000, first#21526623, valueSet#21526624, buf#21526625]
(1433) ObjectHashAggregate
Input [8]: [plantUuid#21523031, internalUUID#21523001, plant#21523003, product#21523002, systemId#21523000, first#21526623, valueSet#21526624, buf#21526625]
Keys [5]: [plantUuid#21523031, internalUUID#21523001, plant#21523003, product#21523002, systemId#21523000]
Functions [2]: [first(calculationDateTime#21523004, false), collect_list(stockQuantity#21523064, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21523004)()#21518172, collect_list(stockQuantity#21523064, 0, 0)#21518173]
Results [4]: [product#21523002, plant#21523003, first(calculationDateTime#21523004)()#21518172 AS calculationDateTime#21523065, collect_list(stockQuantity#21523064, 0, 0)#21518173 AS stockQuantities#21523066]
(1434) Filter
Input [4]: [product#21523002, plant#21523003, calculationDateTime#21523065, stockQuantities#21523066]
Condition : ((size(stockQuantities#21523066, true) > 0) AND isnotnull(calculationDateTime#21523065))
(1435) Generate
Input [4]: [product#21523002, plant#21523003, calculationDateTime#21523065, stockQuantities#21523066]
Arguments: explode(stockQuantities#21523066), [product#21523002, plant#21523003, calculationDateTime#21523065], false, [stockQuantity#21523067]
(1436) Filter
Input [4]: [product#21523002, plant#21523003, calculationDateTime#21523065, stockQuantity#21523067]
Condition : (((isnotnull(stockQuantity#21523067.specialStockIndicator.code) AND isnotnull(stockQuantity#21523067.stockType.code)) AND (stockQuantity#21523067.specialStockIndicator.code = )) AND (stockQuantity#21523067.stockType.code = 01))
(1437) Project
Output [5]: [plant#21523003.internalRefUUID AS plantUuid#21523069, product#21523002.internalRefUUID AS productUuid#21523071, calculationDateTime#21523065, stockQuantity#21523067.storagelocation.id AS storageLocId#21523072, stockQuantity#21523067.quantity.measure AS quantity#21523074]
Input [4]: [product#21523002, plant#21523003, calculationDateTime#21523065, stockQuantity#21523067]
(1438) Exchange
Input [5]: [plantUuid#21523069, productUuid#21523071, calculationDateTime#21523065, storageLocId#21523072, quantity#21523074]
Arguments: hashpartitioning(productUuid#21523071, plantUuid#21523069, 25), ENSURE_REQUIREMENTS, [plan_id=21265263]
(1439) Sort
Input [5]: [plantUuid#21523069, productUuid#21523071, calculationDateTime#21523065, storageLocId#21523072, quantity#21523074]
Arguments: [productUuid#21523071 ASC NULLS FIRST, plantUuid#21523069 ASC NULLS FIRST], false, 0
(1440) Scan parquet
Output [3]: [product#21523077, plant#21523078, orderDateTime#21523079]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1441) Filter
Input [3]: [product#21523077, plant#21523078, orderDateTime#21523079]
Condition : ((isnotnull(orderDateTime#21523079) AND isnotnull(plant#21523078)) AND isnotnull(product#21523077))
(1442) Exchange
Input [3]: [product#21523077, plant#21523078, orderDateTime#21523079]
Arguments: hashpartitioning(product#21523077, plant#21523078, 25), REPARTITION_BY_NUM, [plan_id=21264316]
(1443) Scan parquet
Output [4]: [plant#21523083, product#21523084, productionAspect#21523086, systemId#21523081]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1444) Project
Output [4]: [plant#21523083.internalRefUUID AS _extract_internalRefUUID#21525660, product#21523084.internalRefUUID AS _extract_internalRefUUID#21525661, productionAspect#21523086.productMovementPlants.unitOfIssue.code AS _extract_code#21525662, productionAspect#21523086.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525663]
Input [4]: [plant#21523083, product#21523084, productionAspect#21523086, systemId#21523081]
(1445) Exchange
Input [4]: [_extract_internalRefUUID#21525660, _extract_internalRefUUID#21525661, _extract_code#21525662, _extract_internalRefUUID#21525663]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263335]
(1446) Project
Output [4]: [_extract_code#21525662, _extract_internalRefUUID#21525663, _extract_internalRefUUID#21525661, _extract_internalRefUUID#21525660]
Input [4]: [_extract_internalRefUUID#21525660, _extract_internalRefUUID#21525661, _extract_code#21525662, _extract_internalRefUUID#21525663]
(1447) BroadcastExchange
Input [4]: [_extract_code#21525662, _extract_internalRefUUID#21525663, _extract_internalRefUUID#21525661, _extract_internalRefUUID#21525660]
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=21265250]
(1448) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523077, ), isnull(product#21523077), coalesce(plant#21523078, ), isnull(plant#21523078)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525661, ), isnull(_extract_internalRefUUID#21525661), coalesce(_extract_internalRefUUID#21525660, ), isnull(_extract_internalRefUUID#21525660)]
Join type: LeftOuter
Join condition: None
(1449) Project
Output [5]: [product#21523077, plant#21523078, orderDateTime#21523079, _extract_code#21525662, _extract_internalRefUUID#21525663]
Input [7]: [product#21523077, plant#21523078, orderDateTime#21523079, _extract_code#21525662, _extract_internalRefUUID#21525663, _extract_internalRefUUID#21525661, _extract_internalRefUUID#21525660]
(1450) Scan parquet
Output [4]: [internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097, systemId#21523090]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1451) Filter
Input [4]: [internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097, systemId#21523090]
Condition : isnotnull(internalUUID#21523091)
(1452) Project
Output [3]: [internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097]
Input [4]: [internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097, systemId#21523090]
(1453) Exchange
Input [3]: [internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263342]
(1454) BroadcastExchange
Input [3]: [internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265254]
(1455) BroadcastHashJoin
Left keys [1]: [product#21523077]
Right keys [1]: [internalUUID#21523091]
Join type: LeftOuter
Join condition: None
(1456) Project
Output [4]: [product#21523077, plant#21523078, orderDateTime#21523079, filter(unitOfMeasureConversions#21523097, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525662) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525663)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523095.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523095.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523102]
Input [8]: [product#21523077, plant#21523078, orderDateTime#21523079, _extract_code#21525662, _extract_internalRefUUID#21525663, internalUUID#21523091, baseUnitOfMeasure#21523095, unitOfMeasureConversions#21523097]
(1457) Generate
Input [4]: [product#21523077, plant#21523078, orderDateTime#21523079, filteredUnitOfMeasureConversions#21523102]
Arguments: explode(filteredUnitOfMeasureConversions#21523102.quantityNumerator), [product#21523077, plant#21523078, orderDateTime#21523079, filteredUnitOfMeasureConversions#21523102], true, [quantityNumerator#21523103]
(1458) Project
Output [4]: [product#21523077, plant#21523078, orderDateTime#21523079, filteredUnitOfMeasureConversions#21523102.quantityDenominator AS _extract_quantityDenominator#21525160]
Input [5]: [product#21523077, plant#21523078, orderDateTime#21523079, filteredUnitOfMeasureConversions#21523102, quantityNumerator#21523103]
(1459) Generate
Input [4]: [product#21523077, plant#21523078, orderDateTime#21523079, _extract_quantityDenominator#21525160]
Arguments: explode(_extract_quantityDenominator#21525160), [product#21523077, plant#21523078, orderDateTime#21523079], true, [quantityDenominator#21523104]
(1460) Project
Output [3]: [product#21523077, plant#21523078, orderDateTime#21523079]
Input [4]: [product#21523077, plant#21523078, orderDateTime#21523079, quantityDenominator#21523104]
(1461) Sort
Input [3]: [product#21523077, plant#21523078, orderDateTime#21523079]
Arguments: [product#21523077 ASC NULLS FIRST, plant#21523078 ASC NULLS FIRST], false, 0
(1462) SortMergeJoin
Left keys [2]: [productUuid#21523071, plantUuid#21523069]
Right keys [2]: [product#21523077, plant#21523078]
Join type: Inner
Join condition: (calculationDateTime#21523065 <= orderDateTime#21523079)
(1463) Project
Output [5]: [plantUuid#21523069 AS plant#21523107, productUuid#21523071 AS product#21523108, storageLocId#21523072, calculationDateTime#21523065, quantity#21523074]
Input [8]: [plantUuid#21523069, productUuid#21523071, calculationDateTime#21523065, storageLocId#21523072, quantity#21523074, product#21523077, plant#21523078, orderDateTime#21523079]
(1464) Exchange
Input [5]: [plant#21523107, product#21523108, storageLocId#21523072, calculationDateTime#21523065, quantity#21523074]
Arguments: hashpartitioning(coalesce(plant#21523107, ), isnull(plant#21523107), coalesce(product#21523108, ), isnull(product#21523108), coalesce(storageLocId#21523072, ), isnull(storageLocId#21523072), coalesce(calculationDateTime#21523065, 1970-01-01 00:00:00), isnull(calculationDateTime#21523065), 25), ENSURE_REQUIREMENTS, [plan_id=21265319]
(1465) Sort
Input [5]: [plant#21523107, product#21523108, storageLocId#21523072, calculationDateTime#21523065, quantity#21523074]
Arguments: [coalesce(plant#21523107, ) ASC NULLS FIRST, isnull(plant#21523107) ASC NULLS FIRST, coalesce(product#21523108, ) ASC NULLS FIRST, isnull(product#21523108) ASC NULLS FIRST, coalesce(storageLocId#21523072, ) ASC NULLS FIRST, isnull(storageLocId#21523072) ASC NULLS FIRST, coalesce(calculationDateTime#21523065, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21523065) ASC NULLS FIRST], false, 0
(1466) Scan parquet
Output [6]: [internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114, systemId#21523109]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1467) Filter
Input [6]: [internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114, systemId#21523109]
Condition : (isnotnull(plant#21523112.internalRefUUID) AND isnotnull(product#21523111.internalRefUUID))
(1468) Project
Output [6]: [systemId#21523109, internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114]
Input [6]: [internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114, systemId#21523109]
(1469) Exchange
Input [6]: [systemId#21523109, internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263354]
(1470) BroadcastExchange
Input [6]: [systemId#21523109, internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114]
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=21265288]
(1471) Scan parquet
Output [2]: [marketUnit#21523115, distributionCenters#21523121]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1472) Filter
Input [2]: [marketUnit#21523115, distributionCenters#21523121]
Condition : (((marketUnit#21523115 <=> SS_Test_1) AND (size(distributionCenters#21523121, true) > 0)) AND isnotnull(distributionCenters#21523121))
(1473) Project
Output [1]: [distributionCenters#21523121]
Input [2]: [marketUnit#21523115, distributionCenters#21523121]
(1474) Exchange
Input [1]: [distributionCenters#21523121]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263358]
(1475) Generate
Input [1]: [distributionCenters#21523121]
Arguments: explode(distributionCenters#21523121), false, [distributionCenters#21523137]
(1476) Filter
Input [1]: [distributionCenters#21523137]
Condition : (((size(distributionCenters#21523137.storageLocations, true) > 0) AND isnotnull(distributionCenters#21523137.storageLocations)) AND isnotnull(distributionCenters#21523137.internalRefUUID))
(1477) Project
Output [2]: [distributionCenters#21523137.internalRefUUID AS _extract_internalRefUUID#21525167, distributionCenters#21523137.storageLocations AS _extract_storageLocations#21525168]
Input [1]: [distributionCenters#21523137]
(1478) Generate
Input [2]: [_extract_internalRefUUID#21525167, _extract_storageLocations#21525168]
Arguments: explode(_extract_storageLocations#21525168), [_extract_internalRefUUID#21525167], false, [storageLocations#21523138]
(1479) Project
Output [3]: [_extract_internalRefUUID#21525167 AS plantUuid#21523140, storageLocations#21523138.id AS storageLocId#21523141, storageLocations#21523138.internalRefUUID AS storageLocUuid#21523142]
Input [2]: [_extract_internalRefUUID#21525167, storageLocations#21523138]
(1480) BroadcastExchange
Input [3]: [plantUuid#21523140, storageLocId#21523141, storageLocUuid#21523142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265284]
(1481) Scan parquet
Output [2]: [product#21523143, plant#21523144]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1482) Filter
Input [2]: [product#21523143, plant#21523144]
Condition : isnotnull(plant#21523144)
(1483) Exchange
Input [2]: [product#21523143, plant#21523144]
Arguments: hashpartitioning(product#21523143, plant#21523144, 25), REPARTITION_BY_NUM, [plan_id=21264327]
(1484) Scan parquet
Output [4]: [plant#21523149, product#21523150, productionAspect#21523152, systemId#21523147]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1485) Project
Output [4]: [plant#21523149.internalRefUUID AS _extract_internalRefUUID#21525666, product#21523150.internalRefUUID AS _extract_internalRefUUID#21525667, productionAspect#21523152.productMovementPlants.unitOfIssue.code AS _extract_code#21525664, productionAspect#21523152.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525665]
Input [4]: [plant#21523149, product#21523150, productionAspect#21523152, systemId#21523147]
(1486) Exchange
Input [4]: [_extract_internalRefUUID#21525666, _extract_internalRefUUID#21525667, _extract_code#21525664, _extract_internalRefUUID#21525665]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263370]
(1487) Project
Output [4]: [_extract_code#21525664, _extract_internalRefUUID#21525665, _extract_internalRefUUID#21525667, _extract_internalRefUUID#21525666]
Input [4]: [_extract_internalRefUUID#21525666, _extract_internalRefUUID#21525667, _extract_code#21525664, _extract_internalRefUUID#21525665]
(1488) BroadcastExchange
Input [4]: [_extract_code#21525664, _extract_internalRefUUID#21525665, _extract_internalRefUUID#21525667, _extract_internalRefUUID#21525666]
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=21265268]
(1489) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523143, ), isnull(product#21523143), coalesce(plant#21523144, ), isnull(plant#21523144)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525667, ), isnull(_extract_internalRefUUID#21525667), coalesce(_extract_internalRefUUID#21525666, ), isnull(_extract_internalRefUUID#21525666)]
Join type: LeftOuter
Join condition: None
(1490) Project
Output [4]: [product#21523143, plant#21523144, _extract_code#21525664, _extract_internalRefUUID#21525665]
Input [6]: [product#21523143, plant#21523144, _extract_code#21525664, _extract_internalRefUUID#21525665, _extract_internalRefUUID#21525667, _extract_internalRefUUID#21525666]
(1491) Scan parquet
Output [4]: [internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163, systemId#21523156]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1492) Filter
Input [4]: [internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163, systemId#21523156]
Condition : isnotnull(internalUUID#21523157)
(1493) Project
Output [3]: [internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163]
Input [4]: [internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163, systemId#21523156]
(1494) Exchange
Input [3]: [internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263377]
(1495) BroadcastExchange
Input [3]: [internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265272]
(1496) BroadcastHashJoin
Left keys [1]: [product#21523143]
Right keys [1]: [internalUUID#21523157]
Join type: LeftOuter
Join condition: None
(1497) Project
Output [2]: [plant#21523144, filter(unitOfMeasureConversions#21523163, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525664) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525665)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523161.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523161.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523168]
Input [7]: [product#21523143, plant#21523144, _extract_code#21525664, _extract_internalRefUUID#21525665, internalUUID#21523157, baseUnitOfMeasure#21523161, unitOfMeasureConversions#21523163]
(1498) Generate
Input [2]: [plant#21523144, filteredUnitOfMeasureConversions#21523168]
Arguments: explode(filteredUnitOfMeasureConversions#21523168.quantityNumerator), [plant#21523144, filteredUnitOfMeasureConversions#21523168], true, [quantityNumerator#21523169]
(1499) Project
Output [2]: [plant#21523144, filteredUnitOfMeasureConversions#21523168.quantityDenominator AS _extract_quantityDenominator#21525169]
Input [3]: [plant#21523144, filteredUnitOfMeasureConversions#21523168, quantityNumerator#21523169]
(1500) Generate
Input [2]: [plant#21523144, _extract_quantityDenominator#21525169]
Arguments: explode(_extract_quantityDenominator#21525169), [plant#21523144], true, [quantityDenominator#21523170]
(1501) Project
Output [1]: [plant#21523144]
Input [2]: [plant#21523144, quantityDenominator#21523170]
(1502) HashAggregate
Input [1]: [plant#21523144]
Keys [1]: [plant#21523144]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523144]
(1503) Exchange
Input [1]: [plant#21523144]
Arguments: hashpartitioning(plant#21523144, 25), ENSURE_REQUIREMENTS, [plan_id=21265281]
(1504) HashAggregate
Input [1]: [plant#21523144]
Keys [1]: [plant#21523144]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523144]
(1505) BroadcastHashJoin
Left keys [1]: [plantUuid#21523140]
Right keys [1]: [plant#21523144]
Join type: Inner
Join condition: None
(1506) Project
Output [3]: [plantUuid#21523140, storageLocId#21523141, storageLocUuid#21523142]
Input [4]: [plantUuid#21523140, storageLocId#21523141, storageLocUuid#21523142, plant#21523144]
(1507) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21523112.internalRefUUID, ), isnull(plant#21523112.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21523140, ), isnull(plantUuid#21523140)]
Join type: Inner
Join condition: None
(1508) Generate
Input [9]: [systemId#21523109, internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, stockQuantities#21523114, plantUuid#21523140, storageLocId#21523141, storageLocUuid#21523142]
Arguments: explode(filter(stockQuantities#21523114, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21523142) AND (lambda x#21518157.storageLocation.Id = storageLocId#21523141)), lambda x#21518157, false))), [systemId#21523109, internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, plantUuid#21523140], false, [stockQuantity#21523173]
(1509) ObjectHashAggregate
Input [7]: [systemId#21523109, internalUUID#21523110, product#21523111, plant#21523112, calculationDateTime#21523113, plantUuid#21523140, stockQuantity#21523173]
Keys [5]: [plantUuid#21523140, internalUUID#21523110, plant#21523112, product#21523111, systemId#21523109]
Functions [2]: [partial_first(calculationDateTime#21523113, false), partial_collect_list(stockQuantity#21523173, 0, 0)]
Aggregate Attributes [3]: [first#21526628, valueSet#21526629, buf#21526630]
Results [8]: [plantUuid#21523140, internalUUID#21523110, plant#21523112, product#21523111, systemId#21523109, first#21526631, valueSet#21526632, buf#21526633]
(1510) ObjectHashAggregate
Input [8]: [plantUuid#21523140, internalUUID#21523110, plant#21523112, product#21523111, systemId#21523109, first#21526631, valueSet#21526632, buf#21526633]
Keys [5]: [plantUuid#21523140, internalUUID#21523110, plant#21523112, product#21523111, systemId#21523109]
Functions [2]: [first(calculationDateTime#21523113, false), collect_list(stockQuantity#21523173, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21523113)()#21518172, collect_list(stockQuantity#21523173, 0, 0)#21518173]
Results [4]: [product#21523111, plant#21523112, first(calculationDateTime#21523113)()#21518172 AS calculationDateTime#21523174, collect_list(stockQuantity#21523173, 0, 0)#21518173 AS stockQuantities#21523175]
(1511) Filter
Input [4]: [product#21523111, plant#21523112, calculationDateTime#21523174, stockQuantities#21523175]
Condition : ((size(stockQuantities#21523175, true) > 0) AND isnotnull(calculationDateTime#21523174))
(1512) Generate
Input [4]: [product#21523111, plant#21523112, calculationDateTime#21523174, stockQuantities#21523175]
Arguments: explode(stockQuantities#21523175), [product#21523111, plant#21523112, calculationDateTime#21523174], false, [stockQuantity#21523176]
(1513) Filter
Input [4]: [product#21523111, plant#21523112, calculationDateTime#21523174, stockQuantity#21523176]
Condition : (((isnotnull(stockQuantity#21523176.specialStockIndicator.code) AND isnotnull(stockQuantity#21523176.stockType.code)) AND (stockQuantity#21523176.specialStockIndicator.code = )) AND (stockQuantity#21523176.stockType.code = 01))
(1514) Project
Output [4]: [plant#21523112.internalRefUUID AS plantUuid#21523178, product#21523111.internalRefUUID AS productUuid#21523180, calculationDateTime#21523174, stockQuantity#21523176.storagelocation.id AS storageLocId#21523181]
Input [4]: [product#21523111, plant#21523112, calculationDateTime#21523174, stockQuantity#21523176]
(1515) Exchange
Input [4]: [plantUuid#21523178, productUuid#21523180, calculationDateTime#21523174, storageLocId#21523181]
Arguments: hashpartitioning(productUuid#21523180, plantUuid#21523178, 25), ENSURE_REQUIREMENTS, [plan_id=21265310]
(1516) Sort
Input [4]: [plantUuid#21523178, productUuid#21523180, calculationDateTime#21523174, storageLocId#21523181]
Arguments: [productUuid#21523180 ASC NULLS FIRST, plantUuid#21523178 ASC NULLS FIRST], false, 0
(1517) Scan parquet
Output [3]: [product#21523186, plant#21523187, orderDateTime#21523188]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1518) Filter
Input [3]: [product#21523186, plant#21523187, orderDateTime#21523188]
Condition : ((isnotnull(orderDateTime#21523188) AND isnotnull(plant#21523187)) AND isnotnull(product#21523186))
(1519) Exchange
Input [3]: [product#21523186, plant#21523187, orderDateTime#21523188]
Arguments: hashpartitioning(product#21523186, plant#21523187, 25), REPARTITION_BY_NUM, [plan_id=21264348]
(1520) Scan parquet
Output [4]: [plant#21523192, product#21523193, productionAspect#21523195, systemId#21523190]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1521) Project
Output [4]: [plant#21523192.internalRefUUID AS _extract_internalRefUUID#21525670, product#21523193.internalRefUUID AS _extract_internalRefUUID#21525671, productionAspect#21523195.productMovementPlants.unitOfIssue.code AS _extract_code#21525668, productionAspect#21523195.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525669]
Input [4]: [plant#21523192, product#21523193, productionAspect#21523195, systemId#21523190]
(1522) Exchange
Input [4]: [_extract_internalRefUUID#21525670, _extract_internalRefUUID#21525671, _extract_code#21525668, _extract_internalRefUUID#21525669]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263402]
(1523) Project
Output [4]: [_extract_code#21525668, _extract_internalRefUUID#21525669, _extract_internalRefUUID#21525671, _extract_internalRefUUID#21525670]
Input [4]: [_extract_internalRefUUID#21525670, _extract_internalRefUUID#21525671, _extract_code#21525668, _extract_internalRefUUID#21525669]
(1524) BroadcastExchange
Input [4]: [_extract_code#21525668, _extract_internalRefUUID#21525669, _extract_internalRefUUID#21525671, _extract_internalRefUUID#21525670]
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=21265297]
(1525) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523186, ), isnull(product#21523186), coalesce(plant#21523187, ), isnull(plant#21523187)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525671, ), isnull(_extract_internalRefUUID#21525671), coalesce(_extract_internalRefUUID#21525670, ), isnull(_extract_internalRefUUID#21525670)]
Join type: LeftOuter
Join condition: None
(1526) Project
Output [5]: [product#21523186, plant#21523187, orderDateTime#21523188, _extract_code#21525668, _extract_internalRefUUID#21525669]
Input [7]: [product#21523186, plant#21523187, orderDateTime#21523188, _extract_code#21525668, _extract_internalRefUUID#21525669, _extract_internalRefUUID#21525671, _extract_internalRefUUID#21525670]
(1527) Scan parquet
Output [4]: [internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206, systemId#21523199]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1528) Filter
Input [4]: [internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206, systemId#21523199]
Condition : isnotnull(internalUUID#21523200)
(1529) Project
Output [3]: [internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206]
Input [4]: [internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206, systemId#21523199]
(1530) Exchange
Input [3]: [internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263409]
(1531) BroadcastExchange
Input [3]: [internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265301]
(1532) BroadcastHashJoin
Left keys [1]: [product#21523186]
Right keys [1]: [internalUUID#21523200]
Join type: LeftOuter
Join condition: None
(1533) Project
Output [4]: [product#21523186, plant#21523187, orderDateTime#21523188, filter(unitOfMeasureConversions#21523206, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525668) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525669)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523204.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523204.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523211]
Input [8]: [product#21523186, plant#21523187, orderDateTime#21523188, _extract_code#21525668, _extract_internalRefUUID#21525669, internalUUID#21523200, baseUnitOfMeasure#21523204, unitOfMeasureConversions#21523206]
(1534) Generate
Input [4]: [product#21523186, plant#21523187, orderDateTime#21523188, filteredUnitOfMeasureConversions#21523211]
Arguments: explode(filteredUnitOfMeasureConversions#21523211.quantityNumerator), [product#21523186, plant#21523187, orderDateTime#21523188, filteredUnitOfMeasureConversions#21523211], true, [quantityNumerator#21523212]
(1535) Project
Output [4]: [product#21523186, plant#21523187, orderDateTime#21523188, filteredUnitOfMeasureConversions#21523211.quantityDenominator AS _extract_quantityDenominator#21525176]
Input [5]: [product#21523186, plant#21523187, orderDateTime#21523188, filteredUnitOfMeasureConversions#21523211, quantityNumerator#21523212]
(1536) Generate
Input [4]: [product#21523186, plant#21523187, orderDateTime#21523188, _extract_quantityDenominator#21525176]
Arguments: explode(_extract_quantityDenominator#21525176), [product#21523186, plant#21523187, orderDateTime#21523188], true, [quantityDenominator#21523213]
(1537) Project
Output [3]: [product#21523186, plant#21523187, orderDateTime#21523188]
Input [4]: [product#21523186, plant#21523187, orderDateTime#21523188, quantityDenominator#21523213]
(1538) Sort
Input [3]: [product#21523186, plant#21523187, orderDateTime#21523188]
Arguments: [product#21523186 ASC NULLS FIRST, plant#21523187 ASC NULLS FIRST], false, 0
(1539) SortMergeJoin
Left keys [2]: [productUuid#21523180, plantUuid#21523178]
Right keys [2]: [product#21523186, plant#21523187]
Join type: Inner
Join condition: (calculationDateTime#21523174 <= orderDateTime#21523188)
(1540) Project
Output [4]: [plantUuid#21523178 AS plant#21523216, productUuid#21523180 AS product#21523217, storageLocId#21523181, calculationDateTime#21523174]
Input [7]: [plantUuid#21523178, productUuid#21523180, calculationDateTime#21523174, storageLocId#21523181, product#21523186, plant#21523187, orderDateTime#21523188]
(1541) HashAggregate
Input [4]: [plant#21523216, product#21523217, storageLocId#21523181, calculationDateTime#21523174]
Keys [3]: [plant#21523216, product#21523217, storageLocId#21523181]
Functions [1]: [partial_max(calculationDateTime#21523174)]
Aggregate Attributes [1]: [max#21526626]
Results [4]: [plant#21523216, product#21523217, storageLocId#21523181, max#21526627]
(1542) HashAggregate
Input [4]: [plant#21523216, product#21523217, storageLocId#21523181, max#21526627]
Keys [3]: [plant#21523216, product#21523217, storageLocId#21523181]
Functions [1]: [max(calculationDateTime#21523174)]
Aggregate Attributes [1]: [max(calculationDateTime#21523174)#21518235]
Results [4]: [plant#21523216, product#21523217, storageLocId#21523181, max(calculationDateTime#21523174)#21518235 AS max_calc_datetime#21523218]
(1543) Exchange
Input [4]: [plant#21523216, product#21523217, storageLocId#21523181, max_calc_datetime#21523218]
Arguments: hashpartitioning(coalesce(plant#21523216, ), isnull(plant#21523216), coalesce(product#21523217, ), isnull(product#21523217), coalesce(storageLocId#21523181, ), isnull(storageLocId#21523181), coalesce(max_calc_datetime#21523218, 1970-01-01 00:00:00), isnull(max_calc_datetime#21523218), 25), ENSURE_REQUIREMENTS, [plan_id=21265320]
(1544) Sort
Input [4]: [plant#21523216, product#21523217, storageLocId#21523181, max_calc_datetime#21523218]
Arguments: [coalesce(plant#21523216, ) ASC NULLS FIRST, isnull(plant#21523216) ASC NULLS FIRST, coalesce(product#21523217, ) ASC NULLS FIRST, isnull(product#21523217) ASC NULLS FIRST, coalesce(storageLocId#21523181, ) ASC NULLS FIRST, isnull(storageLocId#21523181) ASC NULLS FIRST, coalesce(max_calc_datetime#21523218, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21523218) ASC NULLS FIRST], false, 0
(1545) SortMergeJoin
Left keys [8]: [coalesce(plant#21523107, ), isnull(plant#21523107), coalesce(product#21523108, ), isnull(product#21523108), coalesce(storageLocId#21523072, ), isnull(storageLocId#21523072), coalesce(calculationDateTime#21523065, 1970-01-01 00:00:00), isnull(calculationDateTime#21523065)]
Right keys [8]: [coalesce(plant#21523216, ), isnull(plant#21523216), coalesce(product#21523217, ), isnull(product#21523217), coalesce(storageLocId#21523181, ), isnull(storageLocId#21523181), coalesce(max_calc_datetime#21523218, 1970-01-01 00:00:00), isnull(max_calc_datetime#21523218)]
Join type: Inner
Join condition: None
(1546) Project
Output [4]: [plant#21523107, product#21523108, calculationDateTime#21523065, quantity#21523074]
Input [9]: [plant#21523107, product#21523108, storageLocId#21523072, calculationDateTime#21523065, quantity#21523074, plant#21523216, product#21523217, storageLocId#21523181, max_calc_datetime#21523218]
(1547) HashAggregate
Input [4]: [plant#21523107, product#21523108, calculationDateTime#21523065, quantity#21523074]
Keys [2]: [product#21523108, plant#21523107]
Functions [2]: [partial_min(calculationDateTime#21523065), partial_sum(quantity#21523074)]
Aggregate Attributes [2]: [min#21526616, sum#21526617]
Results [4]: [product#21523108, plant#21523107, min#21526618, sum#21526619]
(1548) Exchange
Input [4]: [product#21523108, plant#21523107, min#21526618, sum#21526619]
Arguments: hashpartitioning(product#21523108, plant#21523107, 25), ENSURE_REQUIREMENTS, [plan_id=21265327]
(1549) HashAggregate
Input [4]: [product#21523108, plant#21523107, min#21526618, sum#21526619]
Keys [2]: [product#21523108, plant#21523107]
Functions [2]: [min(calculationDateTime#21523065), sum(quantity#21523074)]
Aggregate Attributes [2]: [min(calculationDateTime#21523065)#21518361, sum(quantity#21523074)#21518360]
Results [4]: [product#21523108, plant#21523107, min(calculationDateTime#21523065)#21518361 AS minCalculationDateTime#21523220, round(sum(quantity#21523074)#21518360, 0) AS roundedQuantitySum#21523221]
(1550) Sort
Input [4]: [product#21523108, plant#21523107, minCalculationDateTime#21523220, roundedQuantitySum#21523221]
Arguments: [product#21523108 ASC NULLS FIRST, plant#21523107 ASC NULLS FIRST], false, 0
(1551) SortMergeJoin
Left keys [2]: [product#21522970, plant#21522971]
Right keys [2]: [product#21523108, plant#21523107]
Join type: LeftOuter
Join condition: None
(1552) Project
Output [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, CASE WHEN isnotnull(minCalculationDateTime#21523220) THEN minCalculationDateTime#21523220 ELSE orderDateTime#21522972 END AS stockDatetime#21523222, CASE WHEN isnotnull(roundedQuantitySum#21523221) THEN array(roundedQuantitySum#21523221) ELSE [0.0] END AS stockBatchQuantities#21523223]
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, product#21523108, plant#21523107, minCalculationDateTime#21523220, roundedQuantitySum#21523221]
(1553) Exchange
Input [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223]
Arguments: hashpartitioning(coalesce(plant#21522971, ), isnull(plant#21522971), coalesce(product#21522970, ), isnull(product#21522970), 25), ENSURE_REQUIREMENTS, [plan_id=21265481]
(1554) Sort
Input [7]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223]
Arguments: [coalesce(plant#21522971, ) ASC NULLS FIRST, isnull(plant#21522971) ASC NULLS FIRST, coalesce(product#21522970, ) ASC NULLS FIRST, isnull(product#21522970) ASC NULLS FIRST], false, 0
(1555) Scan parquet
Output [3]: [product#21523225, plant#21523226, orderDateTime#21523227]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1556) Exchange
Input [3]: [product#21523225, plant#21523226, orderDateTime#21523227]
Arguments: hashpartitioning(product#21523225, plant#21523226, 25), REPARTITION_BY_NUM, [plan_id=21263427]
(1557) Exchange
Input [3]: [product#21523225, plant#21523226, orderDateTime#21523227]
Arguments: hashpartitioning(coalesce(product#21523225, ), isnull(product#21523225), coalesce(plant#21523226, ), isnull(plant#21523226), 25), ENSURE_REQUIREMENTS, [plan_id=21265337]
(1558) Sort
Input [3]: [product#21523225, plant#21523226, orderDateTime#21523227]
Arguments: [coalesce(product#21523225, ) ASC NULLS FIRST, isnull(product#21523225) ASC NULLS FIRST, coalesce(plant#21523226, ) ASC NULLS FIRST, isnull(plant#21523226) ASC NULLS FIRST], false, 0
(1559) Scan parquet
Output [8]: [internalUUID#21523230, plant#21523231, product#21523232, blockedForReplenishmentStartingFrom#21523233, productionAspect#21523234, salesPlant#21523235, listing#21523236, systemId#21523229]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1560) Project
Output [8]: [systemId#21523229, internalUUID#21523230, plant#21523231, product#21523232, blockedForReplenishmentStartingFrom#21523233, productionAspect#21523234, salesPlant#21523235, listing#21523236]
Input [8]: [internalUUID#21523230, plant#21523231, product#21523232, blockedForReplenishmentStartingFrom#21523233, productionAspect#21523234, salesPlant#21523235, listing#21523236, systemId#21523229]
(1561) Exchange
Input [8]: [systemId#21523229, internalUUID#21523230, plant#21523231, product#21523232, blockedForReplenishmentStartingFrom#21523233, productionAspect#21523234, salesPlant#21523235, listing#21523236]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263430]
(1562) Project
Output [1]: [struct(systemId, systemId#21523229, internalUUID, internalUUID#21523230, plant, plant#21523231, product, product#21523232, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21523233, productionAspect, productionAspect#21523234, salesPlant, salesPlant#21523235, listing, listing#21523236) AS productPlant#21523237]
Input [8]: [systemId#21523229, internalUUID#21523230, plant#21523231, product#21523232, blockedForReplenishmentStartingFrom#21523233, productionAspect#21523234, salesPlant#21523235, listing#21523236]
(1563) Exchange
Input [1]: [productPlant#21523237]
Arguments: hashpartitioning(coalesce(productPlant#21523237.product.internalRefUUID, ), isnull(productPlant#21523237.product.internalRefUUID), coalesce(productPlant#21523237.plant.internalRefUUID, ), isnull(productPlant#21523237.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21265338]
(1564) Sort
Input [1]: [productPlant#21523237]
Arguments: [coalesce(productPlant#21523237.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21523237.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21523237.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21523237.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(1565) SortMergeJoin
Left keys [4]: [coalesce(product#21523225, ), isnull(product#21523225), coalesce(plant#21523226, ), isnull(plant#21523226)]
Right keys [4]: [coalesce(productPlant#21523237.product.internalRefUUID, ), isnull(productPlant#21523237.product.internalRefUUID), coalesce(productPlant#21523237.plant.internalRefUUID, ), isnull(productPlant#21523237.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1566) Scan parquet
Output [4]: [internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245, systemId#21523238]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1567) Filter
Input [4]: [internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245, systemId#21523238]
Condition : isnotnull(internalUUID#21523239)
(1568) Project
Output [3]: [internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245]
Input [4]: [internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245, systemId#21523238]
(1569) Exchange
Input [3]: [internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263436]
(1570) BroadcastExchange
Input [3]: [internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265343]
(1571) BroadcastHashJoin
Left keys [1]: [product#21523225]
Right keys [1]: [internalUUID#21523239]
Join type: LeftOuter
Join condition: None
(1572) Project
Output [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, filter(unitOfMeasureConversions#21523245, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21523237.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21523237.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523243.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523243.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523250]
Input [7]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, internalUUID#21523239, baseUnitOfMeasure#21523243, unitOfMeasureConversions#21523245]
(1573) Project
Output [6]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, filteredUnitOfMeasureConversions#21523250.quantityDenominator AS _extract_quantityDenominator#21525672, filteredUnitOfMeasureConversions#21523250.quantityNumerator AS _extract_quantityNumerator#21525673]
Input [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, filteredUnitOfMeasureConversions#21523250]
(1574) Generate
Input [6]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, _extract_quantityDenominator#21525672, _extract_quantityNumerator#21525673]
Arguments: explode(_extract_quantityNumerator#21525673), [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, _extract_quantityDenominator#21525672], true, [quantityNumerator#21523251]
(1575) Generate
Input [6]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, _extract_quantityDenominator#21525672, quantityNumerator#21523251]
Arguments: explode(_extract_quantityDenominator#21525672), [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, quantityNumerator#21523251], true, [quantityDenominator#21523252]
(1576) Project
Output [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, (cast(quantityNumerator#21523251 as double) / cast(quantityDenominator#21523252 as double)) AS outboundUnit#21523253]
Input [6]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, quantityNumerator#21523251, quantityDenominator#21523252]
(1577) Project
Output [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, CASE WHEN (isnull(outboundUnit#21523253) OR (outboundUnit#21523253 <= 0.0)) THEN 1.0 ELSE outboundUnit#21523253 END AS outboundUnit#21523254]
Input [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523253]
(1578) Exchange
Input [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254]
Arguments: hashpartitioning(product#21523225, plant#21523226, 25), ENSURE_REQUIREMENTS, [plan_id=21265461]
(1579) Sort
Input [5]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254]
Arguments: [product#21523225 ASC NULLS FIRST, plant#21523226 ASC NULLS FIRST], false, 0
(1580) Scan parquet
Output [6]: [internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260, systemId#21523255]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1581) Filter
Input [6]: [internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260, systemId#21523255]
Condition : (isnotnull(plant#21523258.internalRefUUID) AND isnotnull(product#21523257.internalRefUUID))
(1582) Project
Output [6]: [systemId#21523255, internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260]
Input [6]: [internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260, systemId#21523255]
(1583) Exchange
Input [6]: [systemId#21523255, internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263447]
(1584) BroadcastExchange
Input [6]: [systemId#21523255, internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260]
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=21265371]
(1585) Scan parquet
Output [2]: [marketUnit#21523261, distributionCenters#21523267]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1586) Filter
Input [2]: [marketUnit#21523261, distributionCenters#21523267]
Condition : (((marketUnit#21523261 <=> SS_Test_1) AND (size(distributionCenters#21523267, true) > 0)) AND isnotnull(distributionCenters#21523267))
(1587) Project
Output [1]: [distributionCenters#21523267]
Input [2]: [marketUnit#21523261, distributionCenters#21523267]
(1588) Exchange
Input [1]: [distributionCenters#21523267]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263451]
(1589) Generate
Input [1]: [distributionCenters#21523267]
Arguments: explode(distributionCenters#21523267), false, [distributionCenters#21523283]
(1590) Filter
Input [1]: [distributionCenters#21523283]
Condition : (((size(distributionCenters#21523283.storageLocations, true) > 0) AND isnotnull(distributionCenters#21523283.storageLocations)) AND isnotnull(distributionCenters#21523283.internalRefUUID))
(1591) Project
Output [2]: [distributionCenters#21523283.internalRefUUID AS _extract_internalRefUUID#21525184, distributionCenters#21523283.storageLocations AS _extract_storageLocations#21525185]
Input [1]: [distributionCenters#21523283]
(1592) Generate
Input [2]: [_extract_internalRefUUID#21525184, _extract_storageLocations#21525185]
Arguments: explode(_extract_storageLocations#21525185), [_extract_internalRefUUID#21525184], false, [storageLocations#21523284]
(1593) Project
Output [3]: [_extract_internalRefUUID#21525184 AS plantUuid#21523286, storageLocations#21523284.id AS storageLocId#21523287, storageLocations#21523284.internalRefUUID AS storageLocUuid#21523288]
Input [2]: [_extract_internalRefUUID#21525184, storageLocations#21523284]
(1594) BroadcastExchange
Input [3]: [plantUuid#21523286, storageLocId#21523287, storageLocUuid#21523288]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265367]
(1595) Scan parquet
Output [2]: [product#21523289, plant#21523290]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1596) Filter
Input [2]: [product#21523289, plant#21523290]
Condition : isnotnull(plant#21523290)
(1597) Exchange
Input [2]: [product#21523289, plant#21523290]
Arguments: hashpartitioning(product#21523289, plant#21523290, 25), REPARTITION_BY_NUM, [plan_id=21264367]
(1598) Scan parquet
Output [4]: [plant#21523295, product#21523296, productionAspect#21523298, systemId#21523293]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1599) Project
Output [4]: [plant#21523295.internalRefUUID AS _extract_internalRefUUID#21525677, product#21523296.internalRefUUID AS _extract_internalRefUUID#21525674, productionAspect#21523298.productMovementPlants.unitOfIssue.code AS _extract_code#21525675, productionAspect#21523298.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525676]
Input [4]: [plant#21523295, product#21523296, productionAspect#21523298, systemId#21523293]
(1600) Exchange
Input [4]: [_extract_internalRefUUID#21525677, _extract_internalRefUUID#21525674, _extract_code#21525675, _extract_internalRefUUID#21525676]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263463]
(1601) Project
Output [4]: [_extract_code#21525675, _extract_internalRefUUID#21525676, _extract_internalRefUUID#21525674, _extract_internalRefUUID#21525677]
Input [4]: [_extract_internalRefUUID#21525677, _extract_internalRefUUID#21525674, _extract_code#21525675, _extract_internalRefUUID#21525676]
(1602) BroadcastExchange
Input [4]: [_extract_code#21525675, _extract_internalRefUUID#21525676, _extract_internalRefUUID#21525674, _extract_internalRefUUID#21525677]
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=21265351]
(1603) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523289, ), isnull(product#21523289), coalesce(plant#21523290, ), isnull(plant#21523290)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525674, ), isnull(_extract_internalRefUUID#21525674), coalesce(_extract_internalRefUUID#21525677, ), isnull(_extract_internalRefUUID#21525677)]
Join type: LeftOuter
Join condition: None
(1604) Project
Output [4]: [product#21523289, plant#21523290, _extract_code#21525675, _extract_internalRefUUID#21525676]
Input [6]: [product#21523289, plant#21523290, _extract_code#21525675, _extract_internalRefUUID#21525676, _extract_internalRefUUID#21525674, _extract_internalRefUUID#21525677]
(1605) Scan parquet
Output [4]: [internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309, systemId#21523302]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1606) Filter
Input [4]: [internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309, systemId#21523302]
Condition : isnotnull(internalUUID#21523303)
(1607) Project
Output [3]: [internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309]
Input [4]: [internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309, systemId#21523302]
(1608) Exchange
Input [3]: [internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263470]
(1609) BroadcastExchange
Input [3]: [internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265355]
(1610) BroadcastHashJoin
Left keys [1]: [product#21523289]
Right keys [1]: [internalUUID#21523303]
Join type: LeftOuter
Join condition: None
(1611) Project
Output [2]: [plant#21523290, filter(unitOfMeasureConversions#21523309, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525675) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525676)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523307.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523307.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523314]
Input [7]: [product#21523289, plant#21523290, _extract_code#21525675, _extract_internalRefUUID#21525676, internalUUID#21523303, baseUnitOfMeasure#21523307, unitOfMeasureConversions#21523309]
(1612) Generate
Input [2]: [plant#21523290, filteredUnitOfMeasureConversions#21523314]
Arguments: explode(filteredUnitOfMeasureConversions#21523314.quantityNumerator), [plant#21523290, filteredUnitOfMeasureConversions#21523314], true, [quantityNumerator#21523315]
(1613) Project
Output [2]: [plant#21523290, filteredUnitOfMeasureConversions#21523314.quantityDenominator AS _extract_quantityDenominator#21525186]
Input [3]: [plant#21523290, filteredUnitOfMeasureConversions#21523314, quantityNumerator#21523315]
(1614) Generate
Input [2]: [plant#21523290, _extract_quantityDenominator#21525186]
Arguments: explode(_extract_quantityDenominator#21525186), [plant#21523290], true, [quantityDenominator#21523316]
(1615) Project
Output [1]: [plant#21523290]
Input [2]: [plant#21523290, quantityDenominator#21523316]
(1616) HashAggregate
Input [1]: [plant#21523290]
Keys [1]: [plant#21523290]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523290]
(1617) Exchange
Input [1]: [plant#21523290]
Arguments: hashpartitioning(plant#21523290, 25), ENSURE_REQUIREMENTS, [plan_id=21265364]
(1618) HashAggregate
Input [1]: [plant#21523290]
Keys [1]: [plant#21523290]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523290]
(1619) BroadcastHashJoin
Left keys [1]: [plantUuid#21523286]
Right keys [1]: [plant#21523290]
Join type: Inner
Join condition: None
(1620) Project
Output [3]: [plantUuid#21523286, storageLocId#21523287, storageLocUuid#21523288]
Input [4]: [plantUuid#21523286, storageLocId#21523287, storageLocUuid#21523288, plant#21523290]
(1621) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21523258.internalRefUUID, ), isnull(plant#21523258.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21523286, ), isnull(plantUuid#21523286)]
Join type: Inner
Join condition: None
(1622) Generate
Input [9]: [systemId#21523255, internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, stockQuantities#21523260, plantUuid#21523286, storageLocId#21523287, storageLocUuid#21523288]
Arguments: explode(filter(stockQuantities#21523260, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21523288) AND (lambda x#21518157.storageLocation.Id = storageLocId#21523287)), lambda x#21518157, false))), [systemId#21523255, internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, plantUuid#21523286], false, [stockQuantity#21523319]
(1623) ObjectHashAggregate
Input [7]: [systemId#21523255, internalUUID#21523256, product#21523257, plant#21523258, calculationDateTime#21523259, plantUuid#21523286, stockQuantity#21523319]
Keys [5]: [plantUuid#21523286, internalUUID#21523256, plant#21523258, product#21523257, systemId#21523255]
Functions [2]: [partial_first(calculationDateTime#21523259, false), partial_collect_list(stockQuantity#21523319, 0, 0)]
Aggregate Attributes [3]: [first#21526642, valueSet#21526643, buf#21526644]
Results [8]: [plantUuid#21523286, internalUUID#21523256, plant#21523258, product#21523257, systemId#21523255, first#21526645, valueSet#21526646, buf#21526647]
(1624) ObjectHashAggregate
Input [8]: [plantUuid#21523286, internalUUID#21523256, plant#21523258, product#21523257, systemId#21523255, first#21526645, valueSet#21526646, buf#21526647]
Keys [5]: [plantUuid#21523286, internalUUID#21523256, plant#21523258, product#21523257, systemId#21523255]
Functions [2]: [first(calculationDateTime#21523259, false), collect_list(stockQuantity#21523319, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21523259)()#21518172, collect_list(stockQuantity#21523319, 0, 0)#21518173]
Results [4]: [product#21523257, plant#21523258, first(calculationDateTime#21523259)()#21518172 AS calculationDateTime#21523320, collect_list(stockQuantity#21523319, 0, 0)#21518173 AS stockQuantities#21523321]
(1625) Filter
Input [4]: [product#21523257, plant#21523258, calculationDateTime#21523320, stockQuantities#21523321]
Condition : ((size(stockQuantities#21523321, true) > 0) AND isnotnull(calculationDateTime#21523320))
(1626) Generate
Input [4]: [product#21523257, plant#21523258, calculationDateTime#21523320, stockQuantities#21523321]
Arguments: explode(stockQuantities#21523321), [product#21523257, plant#21523258, calculationDateTime#21523320], false, [stockQuantity#21523322]
(1627) Filter
Input [4]: [product#21523257, plant#21523258, calculationDateTime#21523320, stockQuantity#21523322]
Condition : (((isnotnull(stockQuantity#21523322.specialStockIndicator.code) AND isnotnull(stockQuantity#21523322.stockType.code)) AND (stockQuantity#21523322.specialStockIndicator.code = )) AND (stockQuantity#21523322.stockType.code = 01))
(1628) Project
Output [5]: [plant#21523258.internalRefUUID AS plantUuid#21523324, product#21523257.internalRefUUID AS productUuid#21523326, calculationDateTime#21523320, stockQuantity#21523322.storagelocation.id AS storageLocId#21523327, stockQuantity#21523322.quantity.measure AS quantity#21523329]
Input [4]: [product#21523257, plant#21523258, calculationDateTime#21523320, stockQuantity#21523322]
(1629) Exchange
Input [5]: [plantUuid#21523324, productUuid#21523326, calculationDateTime#21523320, storageLocId#21523327, quantity#21523329]
Arguments: hashpartitioning(productUuid#21523326, plantUuid#21523324, 25), ENSURE_REQUIREMENTS, [plan_id=21265393]
(1630) Sort
Input [5]: [plantUuid#21523324, productUuid#21523326, calculationDateTime#21523320, storageLocId#21523327, quantity#21523329]
Arguments: [productUuid#21523326 ASC NULLS FIRST, plantUuid#21523324 ASC NULLS FIRST], false, 0
(1631) Scan parquet
Output [3]: [product#21523332, plant#21523333, orderDateTime#21523334]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1632) Filter
Input [3]: [product#21523332, plant#21523333, orderDateTime#21523334]
Condition : ((isnotnull(orderDateTime#21523334) AND isnotnull(plant#21523333)) AND isnotnull(product#21523332))
(1633) Exchange
Input [3]: [product#21523332, plant#21523333, orderDateTime#21523334]
Arguments: hashpartitioning(product#21523332, plant#21523333, 25), REPARTITION_BY_NUM, [plan_id=21264388]
(1634) Scan parquet
Output [4]: [plant#21523338, product#21523339, productionAspect#21523341, systemId#21523336]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1635) Project
Output [4]: [plant#21523338.internalRefUUID AS _extract_internalRefUUID#21525678, product#21523339.internalRefUUID AS _extract_internalRefUUID#21525679, productionAspect#21523341.productMovementPlants.unitOfIssue.code AS _extract_code#21525680, productionAspect#21523341.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525681]
Input [4]: [plant#21523338, product#21523339, productionAspect#21523341, systemId#21523336]
(1636) Exchange
Input [4]: [_extract_internalRefUUID#21525678, _extract_internalRefUUID#21525679, _extract_code#21525680, _extract_internalRefUUID#21525681]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263495]
(1637) Project
Output [4]: [_extract_code#21525680, _extract_internalRefUUID#21525681, _extract_internalRefUUID#21525679, _extract_internalRefUUID#21525678]
Input [4]: [_extract_internalRefUUID#21525678, _extract_internalRefUUID#21525679, _extract_code#21525680, _extract_internalRefUUID#21525681]
(1638) BroadcastExchange
Input [4]: [_extract_code#21525680, _extract_internalRefUUID#21525681, _extract_internalRefUUID#21525679, _extract_internalRefUUID#21525678]
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=21265380]
(1639) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523332, ), isnull(product#21523332), coalesce(plant#21523333, ), isnull(plant#21523333)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525679, ), isnull(_extract_internalRefUUID#21525679), coalesce(_extract_internalRefUUID#21525678, ), isnull(_extract_internalRefUUID#21525678)]
Join type: LeftOuter
Join condition: None
(1640) Project
Output [5]: [product#21523332, plant#21523333, orderDateTime#21523334, _extract_code#21525680, _extract_internalRefUUID#21525681]
Input [7]: [product#21523332, plant#21523333, orderDateTime#21523334, _extract_code#21525680, _extract_internalRefUUID#21525681, _extract_internalRefUUID#21525679, _extract_internalRefUUID#21525678]
(1641) Scan parquet
Output [4]: [internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352, systemId#21523345]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1642) Filter
Input [4]: [internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352, systemId#21523345]
Condition : isnotnull(internalUUID#21523346)
(1643) Project
Output [3]: [internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352]
Input [4]: [internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352, systemId#21523345]
(1644) Exchange
Input [3]: [internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263502]
(1645) BroadcastExchange
Input [3]: [internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265384]
(1646) BroadcastHashJoin
Left keys [1]: [product#21523332]
Right keys [1]: [internalUUID#21523346]
Join type: LeftOuter
Join condition: None
(1647) Project
Output [4]: [product#21523332, plant#21523333, orderDateTime#21523334, filter(unitOfMeasureConversions#21523352, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525680) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525681)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523350.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523350.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523357]
Input [8]: [product#21523332, plant#21523333, orderDateTime#21523334, _extract_code#21525680, _extract_internalRefUUID#21525681, internalUUID#21523346, baseUnitOfMeasure#21523350, unitOfMeasureConversions#21523352]
(1648) Generate
Input [4]: [product#21523332, plant#21523333, orderDateTime#21523334, filteredUnitOfMeasureConversions#21523357]
Arguments: explode(filteredUnitOfMeasureConversions#21523357.quantityNumerator), [product#21523332, plant#21523333, orderDateTime#21523334, filteredUnitOfMeasureConversions#21523357], true, [quantityNumerator#21523358]
(1649) Project
Output [4]: [product#21523332, plant#21523333, orderDateTime#21523334, filteredUnitOfMeasureConversions#21523357.quantityDenominator AS _extract_quantityDenominator#21525193]
Input [5]: [product#21523332, plant#21523333, orderDateTime#21523334, filteredUnitOfMeasureConversions#21523357, quantityNumerator#21523358]
(1650) Generate
Input [4]: [product#21523332, plant#21523333, orderDateTime#21523334, _extract_quantityDenominator#21525193]
Arguments: explode(_extract_quantityDenominator#21525193), [product#21523332, plant#21523333, orderDateTime#21523334], true, [quantityDenominator#21523359]
(1651) Project
Output [3]: [product#21523332, plant#21523333, orderDateTime#21523334]
Input [4]: [product#21523332, plant#21523333, orderDateTime#21523334, quantityDenominator#21523359]
(1652) Sort
Input [3]: [product#21523332, plant#21523333, orderDateTime#21523334]
Arguments: [product#21523332 ASC NULLS FIRST, plant#21523333 ASC NULLS FIRST], false, 0
(1653) SortMergeJoin
Left keys [2]: [productUuid#21523326, plantUuid#21523324]
Right keys [2]: [product#21523332, plant#21523333]
Join type: Inner
Join condition: (calculationDateTime#21523320 <= orderDateTime#21523334)
(1654) Project
Output [5]: [plantUuid#21523324 AS plant#21523362, productUuid#21523326 AS product#21523363, storageLocId#21523327, calculationDateTime#21523320, quantity#21523329]
Input [8]: [plantUuid#21523324, productUuid#21523326, calculationDateTime#21523320, storageLocId#21523327, quantity#21523329, product#21523332, plant#21523333, orderDateTime#21523334]
(1655) Exchange
Input [5]: [plant#21523362, product#21523363, storageLocId#21523327, calculationDateTime#21523320, quantity#21523329]
Arguments: hashpartitioning(coalesce(plant#21523362, ), isnull(plant#21523362), coalesce(product#21523363, ), isnull(product#21523363), coalesce(storageLocId#21523327, ), isnull(storageLocId#21523327), coalesce(calculationDateTime#21523320, 1970-01-01 00:00:00), isnull(calculationDateTime#21523320), 25), ENSURE_REQUIREMENTS, [plan_id=21265449]
(1656) Sort
Input [5]: [plant#21523362, product#21523363, storageLocId#21523327, calculationDateTime#21523320, quantity#21523329]
Arguments: [coalesce(plant#21523362, ) ASC NULLS FIRST, isnull(plant#21523362) ASC NULLS FIRST, coalesce(product#21523363, ) ASC NULLS FIRST, isnull(product#21523363) ASC NULLS FIRST, coalesce(storageLocId#21523327, ) ASC NULLS FIRST, isnull(storageLocId#21523327) ASC NULLS FIRST, coalesce(calculationDateTime#21523320, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21523320) ASC NULLS FIRST], false, 0
(1657) Scan parquet
Output [6]: [internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369, systemId#21523364]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1658) Filter
Input [6]: [internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369, systemId#21523364]
Condition : (isnotnull(plant#21523367.internalRefUUID) AND isnotnull(product#21523366.internalRefUUID))
(1659) Project
Output [6]: [systemId#21523364, internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369]
Input [6]: [internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369, systemId#21523364]
(1660) Exchange
Input [6]: [systemId#21523364, internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263514]
(1661) BroadcastExchange
Input [6]: [systemId#21523364, internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369]
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=21265418]
(1662) Scan parquet
Output [2]: [marketUnit#21523370, distributionCenters#21523376]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1663) Filter
Input [2]: [marketUnit#21523370, distributionCenters#21523376]
Condition : (((marketUnit#21523370 <=> SS_Test_1) AND (size(distributionCenters#21523376, true) > 0)) AND isnotnull(distributionCenters#21523376))
(1664) Project
Output [1]: [distributionCenters#21523376]
Input [2]: [marketUnit#21523370, distributionCenters#21523376]
(1665) Exchange
Input [1]: [distributionCenters#21523376]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263518]
(1666) Generate
Input [1]: [distributionCenters#21523376]
Arguments: explode(distributionCenters#21523376), false, [distributionCenters#21523392]
(1667) Filter
Input [1]: [distributionCenters#21523392]
Condition : (((size(distributionCenters#21523392.storageLocations, true) > 0) AND isnotnull(distributionCenters#21523392.storageLocations)) AND isnotnull(distributionCenters#21523392.internalRefUUID))
(1668) Project
Output [2]: [distributionCenters#21523392.internalRefUUID AS _extract_internalRefUUID#21525200, distributionCenters#21523392.storageLocations AS _extract_storageLocations#21525201]
Input [1]: [distributionCenters#21523392]
(1669) Generate
Input [2]: [_extract_internalRefUUID#21525200, _extract_storageLocations#21525201]
Arguments: explode(_extract_storageLocations#21525201), [_extract_internalRefUUID#21525200], false, [storageLocations#21523393]
(1670) Project
Output [3]: [_extract_internalRefUUID#21525200 AS plantUuid#21523395, storageLocations#21523393.id AS storageLocId#21523396, storageLocations#21523393.internalRefUUID AS storageLocUuid#21523397]
Input [2]: [_extract_internalRefUUID#21525200, storageLocations#21523393]
(1671) BroadcastExchange
Input [3]: [plantUuid#21523395, storageLocId#21523396, storageLocUuid#21523397]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265414]
(1672) Scan parquet
Output [2]: [product#21523398, plant#21523399]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1673) Filter
Input [2]: [product#21523398, plant#21523399]
Condition : isnotnull(plant#21523399)
(1674) Exchange
Input [2]: [product#21523398, plant#21523399]
Arguments: hashpartitioning(product#21523398, plant#21523399, 25), REPARTITION_BY_NUM, [plan_id=21264399]
(1675) Scan parquet
Output [4]: [plant#21523404, product#21523405, productionAspect#21523407, systemId#21523402]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1676) Project
Output [4]: [plant#21523404.internalRefUUID AS _extract_internalRefUUID#21525685, product#21523405.internalRefUUID AS _extract_internalRefUUID#21525682, productionAspect#21523407.productMovementPlants.unitOfIssue.code AS _extract_code#21525683, productionAspect#21523407.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525684]
Input [4]: [plant#21523404, product#21523405, productionAspect#21523407, systemId#21523402]
(1677) Exchange
Input [4]: [_extract_internalRefUUID#21525685, _extract_internalRefUUID#21525682, _extract_code#21525683, _extract_internalRefUUID#21525684]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263530]
(1678) Project
Output [4]: [_extract_code#21525683, _extract_internalRefUUID#21525684, _extract_internalRefUUID#21525682, _extract_internalRefUUID#21525685]
Input [4]: [_extract_internalRefUUID#21525685, _extract_internalRefUUID#21525682, _extract_code#21525683, _extract_internalRefUUID#21525684]
(1679) BroadcastExchange
Input [4]: [_extract_code#21525683, _extract_internalRefUUID#21525684, _extract_internalRefUUID#21525682, _extract_internalRefUUID#21525685]
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=21265398]
(1680) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523398, ), isnull(product#21523398), coalesce(plant#21523399, ), isnull(plant#21523399)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525682, ), isnull(_extract_internalRefUUID#21525682), coalesce(_extract_internalRefUUID#21525685, ), isnull(_extract_internalRefUUID#21525685)]
Join type: LeftOuter
Join condition: None
(1681) Project
Output [4]: [product#21523398, plant#21523399, _extract_code#21525683, _extract_internalRefUUID#21525684]
Input [6]: [product#21523398, plant#21523399, _extract_code#21525683, _extract_internalRefUUID#21525684, _extract_internalRefUUID#21525682, _extract_internalRefUUID#21525685]
(1682) Scan parquet
Output [4]: [internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418, systemId#21523411]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1683) Filter
Input [4]: [internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418, systemId#21523411]
Condition : isnotnull(internalUUID#21523412)
(1684) Project
Output [3]: [internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418]
Input [4]: [internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418, systemId#21523411]
(1685) Exchange
Input [3]: [internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263537]
(1686) BroadcastExchange
Input [3]: [internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265402]
(1687) BroadcastHashJoin
Left keys [1]: [product#21523398]
Right keys [1]: [internalUUID#21523412]
Join type: LeftOuter
Join condition: None
(1688) Project
Output [2]: [plant#21523399, filter(unitOfMeasureConversions#21523418, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525683) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525684)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523416.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523416.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523423]
Input [7]: [product#21523398, plant#21523399, _extract_code#21525683, _extract_internalRefUUID#21525684, internalUUID#21523412, baseUnitOfMeasure#21523416, unitOfMeasureConversions#21523418]
(1689) Generate
Input [2]: [plant#21523399, filteredUnitOfMeasureConversions#21523423]
Arguments: explode(filteredUnitOfMeasureConversions#21523423.quantityNumerator), [plant#21523399, filteredUnitOfMeasureConversions#21523423], true, [quantityNumerator#21523424]
(1690) Project
Output [2]: [plant#21523399, filteredUnitOfMeasureConversions#21523423.quantityDenominator AS _extract_quantityDenominator#21525202]
Input [3]: [plant#21523399, filteredUnitOfMeasureConversions#21523423, quantityNumerator#21523424]
(1691) Generate
Input [2]: [plant#21523399, _extract_quantityDenominator#21525202]
Arguments: explode(_extract_quantityDenominator#21525202), [plant#21523399], true, [quantityDenominator#21523425]
(1692) Project
Output [1]: [plant#21523399]
Input [2]: [plant#21523399, quantityDenominator#21523425]
(1693) HashAggregate
Input [1]: [plant#21523399]
Keys [1]: [plant#21523399]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523399]
(1694) Exchange
Input [1]: [plant#21523399]
Arguments: hashpartitioning(plant#21523399, 25), ENSURE_REQUIREMENTS, [plan_id=21265411]
(1695) HashAggregate
Input [1]: [plant#21523399]
Keys [1]: [plant#21523399]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21523399]
(1696) BroadcastHashJoin
Left keys [1]: [plantUuid#21523395]
Right keys [1]: [plant#21523399]
Join type: Inner
Join condition: None
(1697) Project
Output [3]: [plantUuid#21523395, storageLocId#21523396, storageLocUuid#21523397]
Input [4]: [plantUuid#21523395, storageLocId#21523396, storageLocUuid#21523397, plant#21523399]
(1698) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21523367.internalRefUUID, ), isnull(plant#21523367.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21523395, ), isnull(plantUuid#21523395)]
Join type: Inner
Join condition: None
(1699) Generate
Input [9]: [systemId#21523364, internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, stockQuantities#21523369, plantUuid#21523395, storageLocId#21523396, storageLocUuid#21523397]
Arguments: explode(filter(stockQuantities#21523369, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21523397) AND (lambda x#21518157.storageLocation.Id = storageLocId#21523396)), lambda x#21518157, false))), [systemId#21523364, internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, plantUuid#21523395], false, [stockQuantity#21523428]
(1700) ObjectHashAggregate
Input [7]: [systemId#21523364, internalUUID#21523365, product#21523366, plant#21523367, calculationDateTime#21523368, plantUuid#21523395, stockQuantity#21523428]
Keys [5]: [plantUuid#21523395, internalUUID#21523365, plant#21523367, product#21523366, systemId#21523364]
Functions [2]: [partial_first(calculationDateTime#21523368, false), partial_collect_list(stockQuantity#21523428, 0, 0)]
Aggregate Attributes [3]: [first#21526650, valueSet#21526651, buf#21526652]
Results [8]: [plantUuid#21523395, internalUUID#21523365, plant#21523367, product#21523366, systemId#21523364, first#21526653, valueSet#21526654, buf#21526655]
(1701) ObjectHashAggregate
Input [8]: [plantUuid#21523395, internalUUID#21523365, plant#21523367, product#21523366, systemId#21523364, first#21526653, valueSet#21526654, buf#21526655]
Keys [5]: [plantUuid#21523395, internalUUID#21523365, plant#21523367, product#21523366, systemId#21523364]
Functions [2]: [first(calculationDateTime#21523368, false), collect_list(stockQuantity#21523428, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21523368)()#21518172, collect_list(stockQuantity#21523428, 0, 0)#21518173]
Results [4]: [product#21523366, plant#21523367, first(calculationDateTime#21523368)()#21518172 AS calculationDateTime#21523429, collect_list(stockQuantity#21523428, 0, 0)#21518173 AS stockQuantities#21523430]
(1702) Filter
Input [4]: [product#21523366, plant#21523367, calculationDateTime#21523429, stockQuantities#21523430]
Condition : ((size(stockQuantities#21523430, true) > 0) AND isnotnull(calculationDateTime#21523429))
(1703) Generate
Input [4]: [product#21523366, plant#21523367, calculationDateTime#21523429, stockQuantities#21523430]
Arguments: explode(stockQuantities#21523430), [product#21523366, plant#21523367, calculationDateTime#21523429], false, [stockQuantity#21523431]
(1704) Filter
Input [4]: [product#21523366, plant#21523367, calculationDateTime#21523429, stockQuantity#21523431]
Condition : (((isnotnull(stockQuantity#21523431.specialStockIndicator.code) AND isnotnull(stockQuantity#21523431.stockType.code)) AND (stockQuantity#21523431.specialStockIndicator.code = )) AND (stockQuantity#21523431.stockType.code = 01))
(1705) Project
Output [4]: [plant#21523367.internalRefUUID AS plantUuid#21523433, product#21523366.internalRefUUID AS productUuid#21523435, calculationDateTime#21523429, stockQuantity#21523431.storagelocation.id AS storageLocId#21523436]
Input [4]: [product#21523366, plant#21523367, calculationDateTime#21523429, stockQuantity#21523431]
(1706) Exchange
Input [4]: [plantUuid#21523433, productUuid#21523435, calculationDateTime#21523429, storageLocId#21523436]
Arguments: hashpartitioning(productUuid#21523435, plantUuid#21523433, 25), ENSURE_REQUIREMENTS, [plan_id=21265440]
(1707) Sort
Input [4]: [plantUuid#21523433, productUuid#21523435, calculationDateTime#21523429, storageLocId#21523436]
Arguments: [productUuid#21523435 ASC NULLS FIRST, plantUuid#21523433 ASC NULLS FIRST], false, 0
(1708) Scan parquet
Output [3]: [product#21523441, plant#21523442, orderDateTime#21523443]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1709) Filter
Input [3]: [product#21523441, plant#21523442, orderDateTime#21523443]
Condition : ((isnotnull(orderDateTime#21523443) AND isnotnull(plant#21523442)) AND isnotnull(product#21523441))
(1710) Exchange
Input [3]: [product#21523441, plant#21523442, orderDateTime#21523443]
Arguments: hashpartitioning(product#21523441, plant#21523442, 25), REPARTITION_BY_NUM, [plan_id=21264420]
(1711) Scan parquet
Output [4]: [plant#21523447, product#21523448, productionAspect#21523450, systemId#21523445]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1712) Project
Output [4]: [plant#21523447.internalRefUUID AS _extract_internalRefUUID#21525686, product#21523448.internalRefUUID AS _extract_internalRefUUID#21525687, productionAspect#21523450.productMovementPlants.unitOfIssue.code AS _extract_code#21525688, productionAspect#21523450.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525689]
Input [4]: [plant#21523447, product#21523448, productionAspect#21523450, systemId#21523445]
(1713) Exchange
Input [4]: [_extract_internalRefUUID#21525686, _extract_internalRefUUID#21525687, _extract_code#21525688, _extract_internalRefUUID#21525689]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263562]
(1714) Project
Output [4]: [_extract_code#21525688, _extract_internalRefUUID#21525689, _extract_internalRefUUID#21525687, _extract_internalRefUUID#21525686]
Input [4]: [_extract_internalRefUUID#21525686, _extract_internalRefUUID#21525687, _extract_code#21525688, _extract_internalRefUUID#21525689]
(1715) BroadcastExchange
Input [4]: [_extract_code#21525688, _extract_internalRefUUID#21525689, _extract_internalRefUUID#21525687, _extract_internalRefUUID#21525686]
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=21265427]
(1716) BroadcastHashJoin
Left keys [4]: [coalesce(product#21523441, ), isnull(product#21523441), coalesce(plant#21523442, ), isnull(plant#21523442)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525687, ), isnull(_extract_internalRefUUID#21525687), coalesce(_extract_internalRefUUID#21525686, ), isnull(_extract_internalRefUUID#21525686)]
Join type: LeftOuter
Join condition: None
(1717) Project
Output [5]: [product#21523441, plant#21523442, orderDateTime#21523443, _extract_code#21525688, _extract_internalRefUUID#21525689]
Input [7]: [product#21523441, plant#21523442, orderDateTime#21523443, _extract_code#21525688, _extract_internalRefUUID#21525689, _extract_internalRefUUID#21525687, _extract_internalRefUUID#21525686]
(1718) Scan parquet
Output [4]: [internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461, systemId#21523454]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1719) Filter
Input [4]: [internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461, systemId#21523454]
Condition : isnotnull(internalUUID#21523455)
(1720) Project
Output [3]: [internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461]
Input [4]: [internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461, systemId#21523454]
(1721) Exchange
Input [3]: [internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263569]
(1722) BroadcastExchange
Input [3]: [internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265431]
(1723) BroadcastHashJoin
Left keys [1]: [product#21523441]
Right keys [1]: [internalUUID#21523455]
Join type: LeftOuter
Join condition: None
(1724) Project
Output [4]: [product#21523441, plant#21523442, orderDateTime#21523443, filter(unitOfMeasureConversions#21523461, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525688) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525689)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21523459.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21523459.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21523466]
Input [8]: [product#21523441, plant#21523442, orderDateTime#21523443, _extract_code#21525688, _extract_internalRefUUID#21525689, internalUUID#21523455, baseUnitOfMeasure#21523459, unitOfMeasureConversions#21523461]
(1725) Generate
Input [4]: [product#21523441, plant#21523442, orderDateTime#21523443, filteredUnitOfMeasureConversions#21523466]
Arguments: explode(filteredUnitOfMeasureConversions#21523466.quantityNumerator), [product#21523441, plant#21523442, orderDateTime#21523443, filteredUnitOfMeasureConversions#21523466], true, [quantityNumerator#21523467]
(1726) Project
Output [4]: [product#21523441, plant#21523442, orderDateTime#21523443, filteredUnitOfMeasureConversions#21523466.quantityDenominator AS _extract_quantityDenominator#21525209]
Input [5]: [product#21523441, plant#21523442, orderDateTime#21523443, filteredUnitOfMeasureConversions#21523466, quantityNumerator#21523467]
(1727) Generate
Input [4]: [product#21523441, plant#21523442, orderDateTime#21523443, _extract_quantityDenominator#21525209]
Arguments: explode(_extract_quantityDenominator#21525209), [product#21523441, plant#21523442, orderDateTime#21523443], true, [quantityDenominator#21523468]
(1728) Project
Output [3]: [product#21523441, plant#21523442, orderDateTime#21523443]
Input [4]: [product#21523441, plant#21523442, orderDateTime#21523443, quantityDenominator#21523468]
(1729) Sort
Input [3]: [product#21523441, plant#21523442, orderDateTime#21523443]
Arguments: [product#21523441 ASC NULLS FIRST, plant#21523442 ASC NULLS FIRST], false, 0
(1730) SortMergeJoin
Left keys [2]: [productUuid#21523435, plantUuid#21523433]
Right keys [2]: [product#21523441, plant#21523442]
Join type: Inner
Join condition: (calculationDateTime#21523429 <= orderDateTime#21523443)
(1731) Project
Output [4]: [plantUuid#21523433 AS plant#21523471, productUuid#21523435 AS product#21523472, storageLocId#21523436, calculationDateTime#21523429]
Input [7]: [plantUuid#21523433, productUuid#21523435, calculationDateTime#21523429, storageLocId#21523436, product#21523441, plant#21523442, orderDateTime#21523443]
(1732) HashAggregate
Input [4]: [plant#21523471, product#21523472, storageLocId#21523436, calculationDateTime#21523429]
Keys [3]: [plant#21523471, product#21523472, storageLocId#21523436]
Functions [1]: [partial_max(calculationDateTime#21523429)]
Aggregate Attributes [1]: [max#21526648]
Results [4]: [plant#21523471, product#21523472, storageLocId#21523436, max#21526649]
(1733) HashAggregate
Input [4]: [plant#21523471, product#21523472, storageLocId#21523436, max#21526649]
Keys [3]: [plant#21523471, product#21523472, storageLocId#21523436]
Functions [1]: [max(calculationDateTime#21523429)]
Aggregate Attributes [1]: [max(calculationDateTime#21523429)#21518235]
Results [4]: [plant#21523471, product#21523472, storageLocId#21523436, max(calculationDateTime#21523429)#21518235 AS max_calc_datetime#21523473]
(1734) Exchange
Input [4]: [plant#21523471, product#21523472, storageLocId#21523436, max_calc_datetime#21523473]
Arguments: hashpartitioning(coalesce(plant#21523471, ), isnull(plant#21523471), coalesce(product#21523472, ), isnull(product#21523472), coalesce(storageLocId#21523436, ), isnull(storageLocId#21523436), coalesce(max_calc_datetime#21523473, 1970-01-01 00:00:00), isnull(max_calc_datetime#21523473), 25), ENSURE_REQUIREMENTS, [plan_id=21265450]
(1735) Sort
Input [4]: [plant#21523471, product#21523472, storageLocId#21523436, max_calc_datetime#21523473]
Arguments: [coalesce(plant#21523471, ) ASC NULLS FIRST, isnull(plant#21523471) ASC NULLS FIRST, coalesce(product#21523472, ) ASC NULLS FIRST, isnull(product#21523472) ASC NULLS FIRST, coalesce(storageLocId#21523436, ) ASC NULLS FIRST, isnull(storageLocId#21523436) ASC NULLS FIRST, coalesce(max_calc_datetime#21523473, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21523473) ASC NULLS FIRST], false, 0
(1736) SortMergeJoin
Left keys [8]: [coalesce(plant#21523362, ), isnull(plant#21523362), coalesce(product#21523363, ), isnull(product#21523363), coalesce(storageLocId#21523327, ), isnull(storageLocId#21523327), coalesce(calculationDateTime#21523320, 1970-01-01 00:00:00), isnull(calculationDateTime#21523320)]
Right keys [8]: [coalesce(plant#21523471, ), isnull(plant#21523471), coalesce(product#21523472, ), isnull(product#21523472), coalesce(storageLocId#21523436, ), isnull(storageLocId#21523436), coalesce(max_calc_datetime#21523473, 1970-01-01 00:00:00), isnull(max_calc_datetime#21523473)]
Join type: Inner
Join condition: None
(1737) Project
Output [4]: [plant#21523362, product#21523363, calculationDateTime#21523320, quantity#21523329]
Input [9]: [plant#21523362, product#21523363, storageLocId#21523327, calculationDateTime#21523320, quantity#21523329, plant#21523471, product#21523472, storageLocId#21523436, max_calc_datetime#21523473]
(1738) HashAggregate
Input [4]: [plant#21523362, product#21523363, calculationDateTime#21523320, quantity#21523329]
Keys [2]: [product#21523363, plant#21523362]
Functions [2]: [partial_min(calculationDateTime#21523320), partial_sum(quantity#21523329)]
Aggregate Attributes [2]: [min#21526638, sum#21526639]
Results [4]: [product#21523363, plant#21523362, min#21526640, sum#21526641]
(1739) Exchange
Input [4]: [product#21523363, plant#21523362, min#21526640, sum#21526641]
Arguments: hashpartitioning(product#21523363, plant#21523362, 25), ENSURE_REQUIREMENTS, [plan_id=21265457]
(1740) HashAggregate
Input [4]: [product#21523363, plant#21523362, min#21526640, sum#21526641]
Keys [2]: [product#21523363, plant#21523362]
Functions [2]: [min(calculationDateTime#21523320), sum(quantity#21523329)]
Aggregate Attributes [2]: [min(calculationDateTime#21523320)#21518361, sum(quantity#21523329)#21518360]
Results [4]: [product#21523363, plant#21523362, min(calculationDateTime#21523320)#21518361 AS minCalculationDateTime#21523475, round(sum(quantity#21523329)#21518360, 0) AS roundedQuantitySum#21523476]
(1741) Sort
Input [4]: [product#21523363, plant#21523362, minCalculationDateTime#21523475, roundedQuantitySum#21523476]
Arguments: [product#21523363 ASC NULLS FIRST, plant#21523362 ASC NULLS FIRST], false, 0
(1742) SortMergeJoin
Left keys [2]: [product#21523225, plant#21523226]
Right keys [2]: [product#21523363, plant#21523362]
Join type: LeftOuter
Join condition: None
(1743) Project
Output [7]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, CASE WHEN isnotnull(minCalculationDateTime#21523475) THEN minCalculationDateTime#21523475 ELSE orderDateTime#21523227 END AS stockDatetime#21523477, CASE WHEN isnotnull(roundedQuantitySum#21523476) THEN array(roundedQuantitySum#21523476) ELSE [0.0] END AS stockBatchQuantities#21523478]
Input [9]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, product#21523363, plant#21523362, minCalculationDateTime#21523475, roundedQuantitySum#21523476]
(1744) Scan parquet
Output [9]: [product#21523480, plant#21523481, demandChannel#21523482, demandStream#21523483, considerVariance#21523484, demandTimeBuckets#21523485, demandPointInTimeStart#21523486, demandPointInTimeEnd#21523487, demandPointInTime#21523488]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001651/0_1_10000001651]
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>>>
(1745) BroadcastExchange
Input [9]: [product#21523480, plant#21523481, demandChannel#21523482, demandStream#21523483, considerVariance#21523484, demandTimeBuckets#21523485, demandPointInTimeStart#21523486, demandPointInTimeEnd#21523487, demandPointInTime#21523488]
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=21265467]
(1746) BroadcastHashJoin
Left keys [4]: [coalesce(plant#21523226, ), isnull(plant#21523226), coalesce(product#21523225, ), isnull(product#21523225)]
Right keys [4]: [coalesce(plant#21523481, ), isnull(plant#21523481), coalesce(product#21523480, ), isnull(product#21523480)]
Join type: LeftOuter
Join condition: None
(1747) Project
Output [8]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, CASE WHEN isnotnull(product#21523480) THEN struct(demandChannel, demandChannel#21523482, demandStream, demandStream#21523483, considerVariance, considerVariance#21523484, demandTimeBuckets, demandTimeBuckets#21523485, demandPointInTimeStart, demandPointInTimeStart#21523486, demandPointInTimeEnd, demandPointInTimeEnd#21523487, demandPointInTime, demandPointInTime#21523488) END AS rawDemands#21523489]
Input [16]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, product#21523480, plant#21523481, demandChannel#21523482, demandStream#21523483, considerVariance#21523484, demandTimeBuckets#21523485, demandPointInTimeStart#21523486, demandPointInTimeEnd#21523487, demandPointInTime#21523488]
(1748) ObjectHashAggregate
Input [8]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, rawDemands#21523489]
Keys [8]: [product#21523225, plant#21523226, orderDateTime#21523227, knownfloatingpointnormalized(if (isnull(productPlant#21523237)) null else named_struct(systemId, productPlant#21523237.systemId, internalUUID, productPlant#21523237.internalUUID, plant, productPlant#21523237.plant, product, productPlant#21523237.product, blockedForReplenishmentStartingFrom, productPlant#21523237.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21523237.productionAspect)) null else named_struct(productMovementPlants, productPlant#21523237.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21523237.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21523237.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21523237.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21523237.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21523237.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21523237.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21523237.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21523237.salesPlant, listing, productPlant#21523237.listing)) AS productPlant#21523237, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21523254)) AS outboundUnit#21523254, stockDatetime#21523477, knownfloatingpointnormalized(transform(stockBatchQuantities#21523478, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21526635)), lambda arg#21526635, false))) AS stockBatchQuantities#21523478, [7226582400000000] AS [7226582400000000]#21526634]
Functions [1]: [partial_collect_list(rawDemands#21523489, 0, 0)]
Aggregate Attributes [1]: [buf#21526636]
Results [9]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, [7226582400000000]#21526634, buf#21526637]
(1749) ObjectHashAggregate
Input [9]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, [7226582400000000]#21526634, buf#21526637]
Keys [8]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, [7226582400000000]#21526634]
Functions [1]: [collect_list(rawDemands#21523489, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21523489, 0, 0)#21518429]
Results [8]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, collect_list(rawDemands#21523489, 0, 0)#21518429 AS rawDemands#21523490]
(1750) Scan parquet
Output [3]: [internalUUID#21523492, address#21523498, systemId#21523491]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1751) Project
Output [2]: [internalUUID#21523492, address#21523498.timeZone.code AS timezonecode#21523503]
Input [3]: [internalUUID#21523492, address#21523498, systemId#21523491]
(1752) Exchange
Input [2]: [internalUUID#21523492, timezonecode#21523503]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263593]
(1753) BroadcastExchange
Input [2]: [internalUUID#21523492, timezonecode#21523503]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21265473]
(1754) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21523226, ), isnull(plant#21523226)]
Right keys [2]: [coalesce(internalUUID#21523492, ), isnull(internalUUID#21523492)]
Join type: LeftOuter
Join condition: None
(1755) Project
Output [10]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21523479, rawDemands#21523490, CASE WHEN isnotnull(timezonecode#21523503) THEN timezonecode#21523503 ELSE UTC END AS timezonecode#21523504]
Input [10]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, rawDemands#21523490, internalUUID#21523492, timezonecode#21523503]
(1756) DeserializeToObject
Input [10]: [product#21523225, plant#21523226, orderDateTime#21523227, productPlant#21523237, outboundUnit#21523254, stockDatetime#21523477, stockBatchQuantities#21523478, stockBatchShelfLifeEndDatetimes#21523479, rawDemands#21523490, timezonecode#21523504]
Arguments: createexternalrow(invoke(product#21523225.toString()), invoke(plant#21523226.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21523227)), if (isnull(productPlant#21523237)) null else createexternalrow(invoke(productPlant#21523237.systemId.toString()), invoke(productPlant#21523237.internalUUID.toString()), if (isnull(productPlant#21523237.plant)) null else createexternalrow(invoke(productPlant#21523237.plant.internalRefUUID.toString()), invoke(productPlant#21523237.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21523237.product)) null else createexternalrow(invoke(productPlant#21523237.product.internalRefUUID.toString()), invoke(productPlant#21523237.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21523237.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21523237.productionAspect)) null else createexternalrow(if (isnull(productPlant#21523237.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21523237.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21523237.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21523237.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#21523237.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21523237.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21523237.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21523237.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21523237.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21523237.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21523237.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21523237.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21523237.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21523237.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21523237.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21523237.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21523237.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21523237.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21523237.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21523237.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21523237.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21523237.salesPlant)) null else createexternalrow(if (isnull(productPlant#21523237.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21523237.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21523237.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#21523237.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21523254)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21523477)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#21523478, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#21523479, 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#21523490, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21523504.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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21519488: org.apache.spark.sql.Row
(1757) MapElements
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(1758) SerializeFromObject
Input [1]: [obj#21519493]
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#21523505, 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#21523506, 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#21523507, 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#21523508]
(1759) Exchange
Input [4]: [product#21523505, plant#21523506, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: hashpartitioning(coalesce(plant#21523506, ), isnull(plant#21523506), coalesce(product#21523505, ), isnull(product#21523505), 25), ENSURE_REQUIREMENTS, [plan_id=21265482]
(1760) Sort
Input [4]: [product#21523505, plant#21523506, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: [coalesce(plant#21523506, ) ASC NULLS FIRST, isnull(plant#21523506) ASC NULLS FIRST, coalesce(product#21523505, ) ASC NULLS FIRST, isnull(product#21523505) ASC NULLS FIRST], false, 0
(1761) SortMergeJoin
Left keys [4]: [coalesce(plant#21522971, ), isnull(plant#21522971), coalesce(product#21522970, ), isnull(product#21522970)]
Right keys [4]: [coalesce(plant#21523506, ), isnull(plant#21523506), coalesce(product#21523505, ), isnull(product#21523505)]
Join type: LeftOuter
Join condition: None
(1762) Project
Output [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Input [11]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, product#21523505, plant#21523506, dayBucketDemands#21523507, pointInTimeDemands#21523508]
(1763) Exchange
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: hashpartitioning(product#21522970, plant#21522971, 25), ENSURE_REQUIREMENTS, [plan_id=21265780]
(1764) Sort
Input [9]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508]
Arguments: [product#21522970 ASC NULLS FIRST, plant#21522971 ASC NULLS FIRST], false, 0
(1765) InMemoryTableScan
Output [3]: [product#21524119, plant#21524118, openGoodsMovements#21524130]
Arguments: [product#21524119, plant#21524118, openGoodsMovements#21524130], [isnotnull(product#21524119), isnotnull(plant#21524118)]
(1766) InMemoryRelation
Arguments: [product#21524119, plant#21524118, openGoodsMovements#21524130], StorageLevel(disk, memory, 2 replicas)
(1767) Filter
Input [3]: [product#21524119, plant#21524118, openGoodsMovements#21524130]
Condition : (isnotnull(product#21524119) AND isnotnull(plant#21524118))
(1768) Scan parquet
Output [3]: [product#21524131, plant#21524132, orderDateTime#21524133]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1769) Filter
Input [3]: [product#21524131, plant#21524132, orderDateTime#21524133]
Condition : isnotnull(plant#21524132)
(1770) Exchange
Input [3]: [product#21524131, plant#21524132, orderDateTime#21524133]
Arguments: hashpartitioning(product#21524131, plant#21524132, 25), REPARTITION_BY_NUM, [plan_id=21264450]
(1771) Scan parquet
Output [4]: [plant#21524137, product#21524138, productionAspect#21524140, systemId#21524135]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1772) Project
Output [4]: [plant#21524137.internalRefUUID AS _extract_internalRefUUID#21525693, product#21524138.internalRefUUID AS _extract_internalRefUUID#21525692, productionAspect#21524140.productMovementPlants.unitOfIssue.code AS _extract_code#21525690, productionAspect#21524140.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525691]
Input [4]: [plant#21524137, product#21524138, productionAspect#21524140, systemId#21524135]
(1773) Exchange
Input [4]: [_extract_internalRefUUID#21525693, _extract_internalRefUUID#21525692, _extract_code#21525690, _extract_internalRefUUID#21525691]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263609]
(1774) Project
Output [4]: [_extract_code#21525690, _extract_internalRefUUID#21525691, _extract_internalRefUUID#21525692, _extract_internalRefUUID#21525693]
Input [4]: [_extract_internalRefUUID#21525693, _extract_internalRefUUID#21525692, _extract_code#21525690, _extract_internalRefUUID#21525691]
(1775) BroadcastExchange
Input [4]: [_extract_code#21525690, _extract_internalRefUUID#21525691, _extract_internalRefUUID#21525692, _extract_internalRefUUID#21525693]
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=21265487]
(1776) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524131, ), isnull(product#21524131), coalesce(plant#21524132, ), isnull(plant#21524132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525692, ), isnull(_extract_internalRefUUID#21525692), coalesce(_extract_internalRefUUID#21525693, ), isnull(_extract_internalRefUUID#21525693)]
Join type: LeftOuter
Join condition: None
(1777) Project
Output [5]: [product#21524131, plant#21524132, orderDateTime#21524133, _extract_code#21525690, _extract_internalRefUUID#21525691]
Input [7]: [product#21524131, plant#21524132, orderDateTime#21524133, _extract_code#21525690, _extract_internalRefUUID#21525691, _extract_internalRefUUID#21525692, _extract_internalRefUUID#21525693]
(1778) Scan parquet
Output [4]: [internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151, systemId#21524144]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1779) Filter
Input [4]: [internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151, systemId#21524144]
Condition : isnotnull(internalUUID#21524145)
(1780) Project
Output [3]: [internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151]
Input [4]: [internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151, systemId#21524144]
(1781) Exchange
Input [3]: [internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263616]
(1782) BroadcastExchange
Input [3]: [internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265491]
(1783) BroadcastHashJoin
Left keys [1]: [product#21524131]
Right keys [1]: [internalUUID#21524145]
Join type: LeftOuter
Join condition: None
(1784) Project
Output [4]: [product#21524131, plant#21524132, orderDateTime#21524133, filter(unitOfMeasureConversions#21524151, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525690) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525691)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524149.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524149.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524156]
Input [8]: [product#21524131, plant#21524132, orderDateTime#21524133, _extract_code#21525690, _extract_internalRefUUID#21525691, internalUUID#21524145, baseUnitOfMeasure#21524149, unitOfMeasureConversions#21524151]
(1785) Generate
Input [4]: [product#21524131, plant#21524132, orderDateTime#21524133, filteredUnitOfMeasureConversions#21524156]
Arguments: explode(filteredUnitOfMeasureConversions#21524156.quantityNumerator), [product#21524131, plant#21524132, orderDateTime#21524133, filteredUnitOfMeasureConversions#21524156], true, [quantityNumerator#21524157]
(1786) Project
Output [4]: [product#21524131, plant#21524132, orderDateTime#21524133, filteredUnitOfMeasureConversions#21524156.quantityDenominator AS _extract_quantityDenominator#21525217]
Input [5]: [product#21524131, plant#21524132, orderDateTime#21524133, filteredUnitOfMeasureConversions#21524156, quantityNumerator#21524157]
(1787) Generate
Input [4]: [product#21524131, plant#21524132, orderDateTime#21524133, _extract_quantityDenominator#21525217]
Arguments: explode(_extract_quantityDenominator#21525217), [product#21524131, plant#21524132, orderDateTime#21524133], true, [quantityDenominator#21524158]
(1788) Project
Output [3]: [product#21524131, plant#21524132, orderDateTime#21524133]
Input [4]: [product#21524131, plant#21524132, orderDateTime#21524133, quantityDenominator#21524158]
(1789) Sort
Input [3]: [product#21524131, plant#21524132, orderDateTime#21524133]
Arguments: [product#21524131 ASC NULLS FIRST, plant#21524132 ASC NULLS FIRST], false, 0
(1790) Scan parquet
Output [6]: [internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166, systemId#21524161]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1791) Filter
Input [6]: [internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166, systemId#21524161]
Condition : (isnotnull(plant#21524164.internalRefUUID) AND isnotnull(product#21524163.internalRefUUID))
(1792) Project
Output [6]: [systemId#21524161, internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166]
Input [6]: [internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166, systemId#21524161]
(1793) Exchange
Input [6]: [systemId#21524161, internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263626]
(1794) BroadcastExchange
Input [6]: [systemId#21524161, internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166]
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=21265518]
(1795) Scan parquet
Output [2]: [marketUnit#21524167, distributionCenters#21524173]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1796) Filter
Input [2]: [marketUnit#21524167, distributionCenters#21524173]
Condition : (((marketUnit#21524167 <=> SS_Test_1) AND (size(distributionCenters#21524173, true) > 0)) AND isnotnull(distributionCenters#21524173))
(1797) Project
Output [1]: [distributionCenters#21524173]
Input [2]: [marketUnit#21524167, distributionCenters#21524173]
(1798) Exchange
Input [1]: [distributionCenters#21524173]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263630]
(1799) Generate
Input [1]: [distributionCenters#21524173]
Arguments: explode(distributionCenters#21524173), false, [distributionCenters#21524189]
(1800) Filter
Input [1]: [distributionCenters#21524189]
Condition : (((size(distributionCenters#21524189.storageLocations, true) > 0) AND isnotnull(distributionCenters#21524189.storageLocations)) AND isnotnull(distributionCenters#21524189.internalRefUUID))
(1801) Project
Output [2]: [distributionCenters#21524189.internalRefUUID AS _extract_internalRefUUID#21525224, distributionCenters#21524189.storageLocations AS _extract_storageLocations#21525225]
Input [1]: [distributionCenters#21524189]
(1802) Generate
Input [2]: [_extract_internalRefUUID#21525224, _extract_storageLocations#21525225]
Arguments: explode(_extract_storageLocations#21525225), [_extract_internalRefUUID#21525224], false, [storageLocations#21524190]
(1803) Project
Output [3]: [_extract_internalRefUUID#21525224 AS plantUuid#21524192, storageLocations#21524190.id AS storageLocId#21524193, storageLocations#21524190.internalRefUUID AS storageLocUuid#21524194]
Input [2]: [_extract_internalRefUUID#21525224, storageLocations#21524190]
(1804) BroadcastExchange
Input [3]: [plantUuid#21524192, storageLocId#21524193, storageLocUuid#21524194]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265514]
(1805) Scan parquet
Output [2]: [product#21524195, plant#21524196]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1806) Filter
Input [2]: [product#21524195, plant#21524196]
Condition : isnotnull(plant#21524196)
(1807) Exchange
Input [2]: [product#21524195, plant#21524196]
Arguments: hashpartitioning(product#21524195, plant#21524196, 25), REPARTITION_BY_NUM, [plan_id=21264459]
(1808) Scan parquet
Output [4]: [plant#21524201, product#21524202, productionAspect#21524204, systemId#21524199]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1809) Project
Output [4]: [plant#21524201.internalRefUUID AS _extract_internalRefUUID#21525696, product#21524202.internalRefUUID AS _extract_internalRefUUID#21525697, productionAspect#21524204.productMovementPlants.unitOfIssue.code AS _extract_code#21525694, productionAspect#21524204.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525695]
Input [4]: [plant#21524201, product#21524202, productionAspect#21524204, systemId#21524199]
(1810) Exchange
Input [4]: [_extract_internalRefUUID#21525696, _extract_internalRefUUID#21525697, _extract_code#21525694, _extract_internalRefUUID#21525695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263642]
(1811) Project
Output [4]: [_extract_code#21525694, _extract_internalRefUUID#21525695, _extract_internalRefUUID#21525697, _extract_internalRefUUID#21525696]
Input [4]: [_extract_internalRefUUID#21525696, _extract_internalRefUUID#21525697, _extract_code#21525694, _extract_internalRefUUID#21525695]
(1812) BroadcastExchange
Input [4]: [_extract_code#21525694, _extract_internalRefUUID#21525695, _extract_internalRefUUID#21525697, _extract_internalRefUUID#21525696]
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=21265498]
(1813) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524195, ), isnull(product#21524195), coalesce(plant#21524196, ), isnull(plant#21524196)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525697, ), isnull(_extract_internalRefUUID#21525697), coalesce(_extract_internalRefUUID#21525696, ), isnull(_extract_internalRefUUID#21525696)]
Join type: LeftOuter
Join condition: None
(1814) Project
Output [4]: [product#21524195, plant#21524196, _extract_code#21525694, _extract_internalRefUUID#21525695]
Input [6]: [product#21524195, plant#21524196, _extract_code#21525694, _extract_internalRefUUID#21525695, _extract_internalRefUUID#21525697, _extract_internalRefUUID#21525696]
(1815) Scan parquet
Output [4]: [internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215, systemId#21524208]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1816) Filter
Input [4]: [internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215, systemId#21524208]
Condition : isnotnull(internalUUID#21524209)
(1817) Project
Output [3]: [internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215]
Input [4]: [internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215, systemId#21524208]
(1818) Exchange
Input [3]: [internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263649]
(1819) BroadcastExchange
Input [3]: [internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265502]
(1820) BroadcastHashJoin
Left keys [1]: [product#21524195]
Right keys [1]: [internalUUID#21524209]
Join type: LeftOuter
Join condition: None
(1821) Project
Output [2]: [plant#21524196, filter(unitOfMeasureConversions#21524215, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525694) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525695)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524213.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524213.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524220]
Input [7]: [product#21524195, plant#21524196, _extract_code#21525694, _extract_internalRefUUID#21525695, internalUUID#21524209, baseUnitOfMeasure#21524213, unitOfMeasureConversions#21524215]
(1822) Generate
Input [2]: [plant#21524196, filteredUnitOfMeasureConversions#21524220]
Arguments: explode(filteredUnitOfMeasureConversions#21524220.quantityNumerator), [plant#21524196, filteredUnitOfMeasureConversions#21524220], true, [quantityNumerator#21524221]
(1823) Project
Output [2]: [plant#21524196, filteredUnitOfMeasureConversions#21524220.quantityDenominator AS _extract_quantityDenominator#21525226]
Input [3]: [plant#21524196, filteredUnitOfMeasureConversions#21524220, quantityNumerator#21524221]
(1824) Generate
Input [2]: [plant#21524196, _extract_quantityDenominator#21525226]
Arguments: explode(_extract_quantityDenominator#21525226), [plant#21524196], true, [quantityDenominator#21524222]
(1825) Project
Output [1]: [plant#21524196]
Input [2]: [plant#21524196, quantityDenominator#21524222]
(1826) HashAggregate
Input [1]: [plant#21524196]
Keys [1]: [plant#21524196]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524196]
(1827) Exchange
Input [1]: [plant#21524196]
Arguments: hashpartitioning(plant#21524196, 25), ENSURE_REQUIREMENTS, [plan_id=21265511]
(1828) HashAggregate
Input [1]: [plant#21524196]
Keys [1]: [plant#21524196]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524196]
(1829) BroadcastHashJoin
Left keys [1]: [plantUuid#21524192]
Right keys [1]: [plant#21524196]
Join type: Inner
Join condition: None
(1830) Project
Output [3]: [plantUuid#21524192, storageLocId#21524193, storageLocUuid#21524194]
Input [4]: [plantUuid#21524192, storageLocId#21524193, storageLocUuid#21524194, plant#21524196]
(1831) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21524164.internalRefUUID, ), isnull(plant#21524164.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21524192, ), isnull(plantUuid#21524192)]
Join type: Inner
Join condition: None
(1832) Generate
Input [9]: [systemId#21524161, internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, stockQuantities#21524166, plantUuid#21524192, storageLocId#21524193, storageLocUuid#21524194]
Arguments: explode(filter(stockQuantities#21524166, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21524194) AND (lambda x#21518157.storageLocation.Id = storageLocId#21524193)), lambda x#21518157, false))), [systemId#21524161, internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, plantUuid#21524192], false, [stockQuantity#21524225]
(1833) ObjectHashAggregate
Input [7]: [systemId#21524161, internalUUID#21524162, product#21524163, plant#21524164, calculationDateTime#21524165, plantUuid#21524192, stockQuantity#21524225]
Keys [5]: [plantUuid#21524192, internalUUID#21524162, plant#21524164, product#21524163, systemId#21524161]
Functions [2]: [partial_first(calculationDateTime#21524165, false), partial_collect_list(stockQuantity#21524225, 0, 0)]
Aggregate Attributes [3]: [first#21526662, valueSet#21526663, buf#21526664]
Results [8]: [plantUuid#21524192, internalUUID#21524162, plant#21524164, product#21524163, systemId#21524161, first#21526665, valueSet#21526666, buf#21526667]
(1834) ObjectHashAggregate
Input [8]: [plantUuid#21524192, internalUUID#21524162, plant#21524164, product#21524163, systemId#21524161, first#21526665, valueSet#21526666, buf#21526667]
Keys [5]: [plantUuid#21524192, internalUUID#21524162, plant#21524164, product#21524163, systemId#21524161]
Functions [2]: [first(calculationDateTime#21524165, false), collect_list(stockQuantity#21524225, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21524165)()#21518172, collect_list(stockQuantity#21524225, 0, 0)#21518173]
Results [4]: [product#21524163, plant#21524164, first(calculationDateTime#21524165)()#21518172 AS calculationDateTime#21524226, collect_list(stockQuantity#21524225, 0, 0)#21518173 AS stockQuantities#21524227]
(1835) Filter
Input [4]: [product#21524163, plant#21524164, calculationDateTime#21524226, stockQuantities#21524227]
Condition : ((size(stockQuantities#21524227, true) > 0) AND isnotnull(calculationDateTime#21524226))
(1836) Generate
Input [4]: [product#21524163, plant#21524164, calculationDateTime#21524226, stockQuantities#21524227]
Arguments: explode(stockQuantities#21524227), [product#21524163, plant#21524164, calculationDateTime#21524226], false, [stockQuantity#21524228]
(1837) Filter
Input [4]: [product#21524163, plant#21524164, calculationDateTime#21524226, stockQuantity#21524228]
Condition : (((isnotnull(stockQuantity#21524228.specialStockIndicator.code) AND isnotnull(stockQuantity#21524228.stockType.code)) AND (stockQuantity#21524228.specialStockIndicator.code = )) AND (stockQuantity#21524228.stockType.code = 01))
(1838) Project
Output [4]: [plant#21524164.internalRefUUID AS plantUuid#21524230, product#21524163.internalRefUUID AS productUuid#21524232, calculationDateTime#21524226, stockQuantity#21524228.storagelocation.id AS storageLocId#21524233]
Input [4]: [product#21524163, plant#21524164, calculationDateTime#21524226, stockQuantity#21524228]
(1839) Exchange
Input [4]: [plantUuid#21524230, productUuid#21524232, calculationDateTime#21524226, storageLocId#21524233]
Arguments: hashpartitioning(productUuid#21524232, plantUuid#21524230, 25), ENSURE_REQUIREMENTS, [plan_id=21265540]
(1840) Sort
Input [4]: [plantUuid#21524230, productUuid#21524232, calculationDateTime#21524226, storageLocId#21524233]
Arguments: [productUuid#21524232 ASC NULLS FIRST, plantUuid#21524230 ASC NULLS FIRST], false, 0
(1841) Scan parquet
Output [3]: [product#21524238, plant#21524239, orderDateTime#21524240]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1842) Filter
Input [3]: [product#21524238, plant#21524239, orderDateTime#21524240]
Condition : ((isnotnull(orderDateTime#21524240) AND isnotnull(plant#21524239)) AND isnotnull(product#21524238))
(1843) Exchange
Input [3]: [product#21524238, plant#21524239, orderDateTime#21524240]
Arguments: hashpartitioning(product#21524238, plant#21524239, 25), REPARTITION_BY_NUM, [plan_id=21264480]
(1844) Scan parquet
Output [4]: [plant#21524244, product#21524245, productionAspect#21524247, systemId#21524242]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1845) Project
Output [4]: [plant#21524244.internalRefUUID AS _extract_internalRefUUID#21525698, product#21524245.internalRefUUID AS _extract_internalRefUUID#21525701, productionAspect#21524247.productMovementPlants.unitOfIssue.code AS _extract_code#21525699, productionAspect#21524247.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525700]
Input [4]: [plant#21524244, product#21524245, productionAspect#21524247, systemId#21524242]
(1846) Exchange
Input [4]: [_extract_internalRefUUID#21525698, _extract_internalRefUUID#21525701, _extract_code#21525699, _extract_internalRefUUID#21525700]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263674]
(1847) Project
Output [4]: [_extract_code#21525699, _extract_internalRefUUID#21525700, _extract_internalRefUUID#21525701, _extract_internalRefUUID#21525698]
Input [4]: [_extract_internalRefUUID#21525698, _extract_internalRefUUID#21525701, _extract_code#21525699, _extract_internalRefUUID#21525700]
(1848) BroadcastExchange
Input [4]: [_extract_code#21525699, _extract_internalRefUUID#21525700, _extract_internalRefUUID#21525701, _extract_internalRefUUID#21525698]
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=21265527]
(1849) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524238, ), isnull(product#21524238), coalesce(plant#21524239, ), isnull(plant#21524239)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525701, ), isnull(_extract_internalRefUUID#21525701), coalesce(_extract_internalRefUUID#21525698, ), isnull(_extract_internalRefUUID#21525698)]
Join type: LeftOuter
Join condition: None
(1850) Project
Output [5]: [product#21524238, plant#21524239, orderDateTime#21524240, _extract_code#21525699, _extract_internalRefUUID#21525700]
Input [7]: [product#21524238, plant#21524239, orderDateTime#21524240, _extract_code#21525699, _extract_internalRefUUID#21525700, _extract_internalRefUUID#21525701, _extract_internalRefUUID#21525698]
(1851) Scan parquet
Output [4]: [internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258, systemId#21524251]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1852) Filter
Input [4]: [internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258, systemId#21524251]
Condition : isnotnull(internalUUID#21524252)
(1853) Project
Output [3]: [internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258]
Input [4]: [internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258, systemId#21524251]
(1854) Exchange
Input [3]: [internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263681]
(1855) BroadcastExchange
Input [3]: [internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265531]
(1856) BroadcastHashJoin
Left keys [1]: [product#21524238]
Right keys [1]: [internalUUID#21524252]
Join type: LeftOuter
Join condition: None
(1857) Project
Output [4]: [product#21524238, plant#21524239, orderDateTime#21524240, filter(unitOfMeasureConversions#21524258, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525699) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525700)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524256.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524256.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524263]
Input [8]: [product#21524238, plant#21524239, orderDateTime#21524240, _extract_code#21525699, _extract_internalRefUUID#21525700, internalUUID#21524252, baseUnitOfMeasure#21524256, unitOfMeasureConversions#21524258]
(1858) Generate
Input [4]: [product#21524238, plant#21524239, orderDateTime#21524240, filteredUnitOfMeasureConversions#21524263]
Arguments: explode(filteredUnitOfMeasureConversions#21524263.quantityNumerator), [product#21524238, plant#21524239, orderDateTime#21524240, filteredUnitOfMeasureConversions#21524263], true, [quantityNumerator#21524264]
(1859) Project
Output [4]: [product#21524238, plant#21524239, orderDateTime#21524240, filteredUnitOfMeasureConversions#21524263.quantityDenominator AS _extract_quantityDenominator#21525233]
Input [5]: [product#21524238, plant#21524239, orderDateTime#21524240, filteredUnitOfMeasureConversions#21524263, quantityNumerator#21524264]
(1860) Generate
Input [4]: [product#21524238, plant#21524239, orderDateTime#21524240, _extract_quantityDenominator#21525233]
Arguments: explode(_extract_quantityDenominator#21525233), [product#21524238, plant#21524239, orderDateTime#21524240], true, [quantityDenominator#21524265]
(1861) Project
Output [3]: [product#21524238, plant#21524239, orderDateTime#21524240]
Input [4]: [product#21524238, plant#21524239, orderDateTime#21524240, quantityDenominator#21524265]
(1862) Sort
Input [3]: [product#21524238, plant#21524239, orderDateTime#21524240]
Arguments: [product#21524238 ASC NULLS FIRST, plant#21524239 ASC NULLS FIRST], false, 0
(1863) SortMergeJoin
Left keys [2]: [productUuid#21524232, plantUuid#21524230]
Right keys [2]: [product#21524238, plant#21524239]
Join type: Inner
Join condition: (calculationDateTime#21524226 <= orderDateTime#21524240)
(1864) Project
Output [4]: [plantUuid#21524230 AS plant#21524268, productUuid#21524232 AS product#21524269, storageLocId#21524233, calculationDateTime#21524226]
Input [7]: [plantUuid#21524230, productUuid#21524232, calculationDateTime#21524226, storageLocId#21524233, product#21524238, plant#21524239, orderDateTime#21524240]
(1865) Exchange
Input [4]: [plant#21524268, product#21524269, storageLocId#21524233, calculationDateTime#21524226]
Arguments: hashpartitioning(coalesce(plant#21524268, ), isnull(plant#21524268), coalesce(product#21524269, ), isnull(product#21524269), coalesce(storageLocId#21524233, ), isnull(storageLocId#21524233), coalesce(calculationDateTime#21524226, 1970-01-01 00:00:00), isnull(calculationDateTime#21524226), 25), ENSURE_REQUIREMENTS, [plan_id=21265596]
(1866) Sort
Input [4]: [plant#21524268, product#21524269, storageLocId#21524233, calculationDateTime#21524226]
Arguments: [coalesce(plant#21524268, ) ASC NULLS FIRST, isnull(plant#21524268) ASC NULLS FIRST, coalesce(product#21524269, ) ASC NULLS FIRST, isnull(product#21524269) ASC NULLS FIRST, coalesce(storageLocId#21524233, ) ASC NULLS FIRST, isnull(storageLocId#21524233) ASC NULLS FIRST, coalesce(calculationDateTime#21524226, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21524226) ASC NULLS FIRST], false, 0
(1867) Scan parquet
Output [6]: [internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275, systemId#21524270]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1868) Filter
Input [6]: [internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275, systemId#21524270]
Condition : (isnotnull(plant#21524273.internalRefUUID) AND isnotnull(product#21524272.internalRefUUID))
(1869) Project
Output [6]: [systemId#21524270, internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275]
Input [6]: [internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275, systemId#21524270]
(1870) Exchange
Input [6]: [systemId#21524270, internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263693]
(1871) BroadcastExchange
Input [6]: [systemId#21524270, internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275]
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=21265565]
(1872) Scan parquet
Output [2]: [marketUnit#21524276, distributionCenters#21524282]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1873) Filter
Input [2]: [marketUnit#21524276, distributionCenters#21524282]
Condition : (((marketUnit#21524276 <=> SS_Test_1) AND (size(distributionCenters#21524282, true) > 0)) AND isnotnull(distributionCenters#21524282))
(1874) Project
Output [1]: [distributionCenters#21524282]
Input [2]: [marketUnit#21524276, distributionCenters#21524282]
(1875) Exchange
Input [1]: [distributionCenters#21524282]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263697]
(1876) Generate
Input [1]: [distributionCenters#21524282]
Arguments: explode(distributionCenters#21524282), false, [distributionCenters#21524298]
(1877) Filter
Input [1]: [distributionCenters#21524298]
Condition : (((size(distributionCenters#21524298.storageLocations, true) > 0) AND isnotnull(distributionCenters#21524298.storageLocations)) AND isnotnull(distributionCenters#21524298.internalRefUUID))
(1878) Project
Output [2]: [distributionCenters#21524298.internalRefUUID AS _extract_internalRefUUID#21525240, distributionCenters#21524298.storageLocations AS _extract_storageLocations#21525241]
Input [1]: [distributionCenters#21524298]
(1879) Generate
Input [2]: [_extract_internalRefUUID#21525240, _extract_storageLocations#21525241]
Arguments: explode(_extract_storageLocations#21525241), [_extract_internalRefUUID#21525240], false, [storageLocations#21524299]
(1880) Project
Output [3]: [_extract_internalRefUUID#21525240 AS plantUuid#21524301, storageLocations#21524299.id AS storageLocId#21524302, storageLocations#21524299.internalRefUUID AS storageLocUuid#21524303]
Input [2]: [_extract_internalRefUUID#21525240, storageLocations#21524299]
(1881) BroadcastExchange
Input [3]: [plantUuid#21524301, storageLocId#21524302, storageLocUuid#21524303]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265561]
(1882) Scan parquet
Output [2]: [product#21524304, plant#21524305]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1883) Filter
Input [2]: [product#21524304, plant#21524305]
Condition : isnotnull(plant#21524305)
(1884) Exchange
Input [2]: [product#21524304, plant#21524305]
Arguments: hashpartitioning(product#21524304, plant#21524305, 25), REPARTITION_BY_NUM, [plan_id=21264491]
(1885) Scan parquet
Output [4]: [plant#21524310, product#21524311, productionAspect#21524313, systemId#21524308]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1886) Project
Output [4]: [plant#21524310.internalRefUUID AS _extract_internalRefUUID#21525704, product#21524311.internalRefUUID AS _extract_internalRefUUID#21525705, productionAspect#21524313.productMovementPlants.unitOfIssue.code AS _extract_code#21525702, productionAspect#21524313.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525703]
Input [4]: [plant#21524310, product#21524311, productionAspect#21524313, systemId#21524308]
(1887) Exchange
Input [4]: [_extract_internalRefUUID#21525704, _extract_internalRefUUID#21525705, _extract_code#21525702, _extract_internalRefUUID#21525703]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263709]
(1888) Project
Output [4]: [_extract_code#21525702, _extract_internalRefUUID#21525703, _extract_internalRefUUID#21525705, _extract_internalRefUUID#21525704]
Input [4]: [_extract_internalRefUUID#21525704, _extract_internalRefUUID#21525705, _extract_code#21525702, _extract_internalRefUUID#21525703]
(1889) BroadcastExchange
Input [4]: [_extract_code#21525702, _extract_internalRefUUID#21525703, _extract_internalRefUUID#21525705, _extract_internalRefUUID#21525704]
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=21265545]
(1890) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524304, ), isnull(product#21524304), coalesce(plant#21524305, ), isnull(plant#21524305)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525705, ), isnull(_extract_internalRefUUID#21525705), coalesce(_extract_internalRefUUID#21525704, ), isnull(_extract_internalRefUUID#21525704)]
Join type: LeftOuter
Join condition: None
(1891) Project
Output [4]: [product#21524304, plant#21524305, _extract_code#21525702, _extract_internalRefUUID#21525703]
Input [6]: [product#21524304, plant#21524305, _extract_code#21525702, _extract_internalRefUUID#21525703, _extract_internalRefUUID#21525705, _extract_internalRefUUID#21525704]
(1892) Scan parquet
Output [4]: [internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324, systemId#21524317]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1893) Filter
Input [4]: [internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324, systemId#21524317]
Condition : isnotnull(internalUUID#21524318)
(1894) Project
Output [3]: [internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324]
Input [4]: [internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324, systemId#21524317]
(1895) Exchange
Input [3]: [internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263716]
(1896) BroadcastExchange
Input [3]: [internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265549]
(1897) BroadcastHashJoin
Left keys [1]: [product#21524304]
Right keys [1]: [internalUUID#21524318]
Join type: LeftOuter
Join condition: None
(1898) Project
Output [2]: [plant#21524305, filter(unitOfMeasureConversions#21524324, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525702) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525703)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524322.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524322.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524329]
Input [7]: [product#21524304, plant#21524305, _extract_code#21525702, _extract_internalRefUUID#21525703, internalUUID#21524318, baseUnitOfMeasure#21524322, unitOfMeasureConversions#21524324]
(1899) Generate
Input [2]: [plant#21524305, filteredUnitOfMeasureConversions#21524329]
Arguments: explode(filteredUnitOfMeasureConversions#21524329.quantityNumerator), [plant#21524305, filteredUnitOfMeasureConversions#21524329], true, [quantityNumerator#21524330]
(1900) Project
Output [2]: [plant#21524305, filteredUnitOfMeasureConversions#21524329.quantityDenominator AS _extract_quantityDenominator#21525242]
Input [3]: [plant#21524305, filteredUnitOfMeasureConversions#21524329, quantityNumerator#21524330]
(1901) Generate
Input [2]: [plant#21524305, _extract_quantityDenominator#21525242]
Arguments: explode(_extract_quantityDenominator#21525242), [plant#21524305], true, [quantityDenominator#21524331]
(1902) Project
Output [1]: [plant#21524305]
Input [2]: [plant#21524305, quantityDenominator#21524331]
(1903) HashAggregate
Input [1]: [plant#21524305]
Keys [1]: [plant#21524305]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524305]
(1904) Exchange
Input [1]: [plant#21524305]
Arguments: hashpartitioning(plant#21524305, 25), ENSURE_REQUIREMENTS, [plan_id=21265558]
(1905) HashAggregate
Input [1]: [plant#21524305]
Keys [1]: [plant#21524305]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524305]
(1906) BroadcastHashJoin
Left keys [1]: [plantUuid#21524301]
Right keys [1]: [plant#21524305]
Join type: Inner
Join condition: None
(1907) Project
Output [3]: [plantUuid#21524301, storageLocId#21524302, storageLocUuid#21524303]
Input [4]: [plantUuid#21524301, storageLocId#21524302, storageLocUuid#21524303, plant#21524305]
(1908) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21524273.internalRefUUID, ), isnull(plant#21524273.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21524301, ), isnull(plantUuid#21524301)]
Join type: Inner
Join condition: None
(1909) Generate
Input [9]: [systemId#21524270, internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, stockQuantities#21524275, plantUuid#21524301, storageLocId#21524302, storageLocUuid#21524303]
Arguments: explode(filter(stockQuantities#21524275, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21524303) AND (lambda x#21518157.storageLocation.Id = storageLocId#21524302)), lambda x#21518157, false))), [systemId#21524270, internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, plantUuid#21524301], false, [stockQuantity#21524334]
(1910) ObjectHashAggregate
Input [7]: [systemId#21524270, internalUUID#21524271, product#21524272, plant#21524273, calculationDateTime#21524274, plantUuid#21524301, stockQuantity#21524334]
Keys [5]: [plantUuid#21524301, internalUUID#21524271, plant#21524273, product#21524272, systemId#21524270]
Functions [2]: [partial_first(calculationDateTime#21524274, false), partial_collect_list(stockQuantity#21524334, 0, 0)]
Aggregate Attributes [3]: [first#21526670, valueSet#21526671, buf#21526672]
Results [8]: [plantUuid#21524301, internalUUID#21524271, plant#21524273, product#21524272, systemId#21524270, first#21526673, valueSet#21526674, buf#21526675]
(1911) ObjectHashAggregate
Input [8]: [plantUuid#21524301, internalUUID#21524271, plant#21524273, product#21524272, systemId#21524270, first#21526673, valueSet#21526674, buf#21526675]
Keys [5]: [plantUuid#21524301, internalUUID#21524271, plant#21524273, product#21524272, systemId#21524270]
Functions [2]: [first(calculationDateTime#21524274, false), collect_list(stockQuantity#21524334, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21524274)()#21518172, collect_list(stockQuantity#21524334, 0, 0)#21518173]
Results [4]: [product#21524272, plant#21524273, first(calculationDateTime#21524274)()#21518172 AS calculationDateTime#21524335, collect_list(stockQuantity#21524334, 0, 0)#21518173 AS stockQuantities#21524336]
(1912) Filter
Input [4]: [product#21524272, plant#21524273, calculationDateTime#21524335, stockQuantities#21524336]
Condition : ((size(stockQuantities#21524336, true) > 0) AND isnotnull(calculationDateTime#21524335))
(1913) Generate
Input [4]: [product#21524272, plant#21524273, calculationDateTime#21524335, stockQuantities#21524336]
Arguments: explode(stockQuantities#21524336), [product#21524272, plant#21524273, calculationDateTime#21524335], false, [stockQuantity#21524337]
(1914) Filter
Input [4]: [product#21524272, plant#21524273, calculationDateTime#21524335, stockQuantity#21524337]
Condition : (((isnotnull(stockQuantity#21524337.specialStockIndicator.code) AND isnotnull(stockQuantity#21524337.stockType.code)) AND (stockQuantity#21524337.specialStockIndicator.code = )) AND (stockQuantity#21524337.stockType.code = 01))
(1915) Project
Output [4]: [plant#21524273.internalRefUUID AS plantUuid#21524339, product#21524272.internalRefUUID AS productUuid#21524341, calculationDateTime#21524335, stockQuantity#21524337.storagelocation.id AS storageLocId#21524342]
Input [4]: [product#21524272, plant#21524273, calculationDateTime#21524335, stockQuantity#21524337]
(1916) Exchange
Input [4]: [plantUuid#21524339, productUuid#21524341, calculationDateTime#21524335, storageLocId#21524342]
Arguments: hashpartitioning(productUuid#21524341, plantUuid#21524339, 25), ENSURE_REQUIREMENTS, [plan_id=21265587]
(1917) Sort
Input [4]: [plantUuid#21524339, productUuid#21524341, calculationDateTime#21524335, storageLocId#21524342]
Arguments: [productUuid#21524341 ASC NULLS FIRST, plantUuid#21524339 ASC NULLS FIRST], false, 0
(1918) Scan parquet
Output [3]: [product#21524347, plant#21524348, orderDateTime#21524349]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1919) Filter
Input [3]: [product#21524347, plant#21524348, orderDateTime#21524349]
Condition : ((isnotnull(orderDateTime#21524349) AND isnotnull(plant#21524348)) AND isnotnull(product#21524347))
(1920) Exchange
Input [3]: [product#21524347, plant#21524348, orderDateTime#21524349]
Arguments: hashpartitioning(product#21524347, plant#21524348, 25), REPARTITION_BY_NUM, [plan_id=21264512]
(1921) Scan parquet
Output [4]: [plant#21524353, product#21524354, productionAspect#21524356, systemId#21524351]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(1922) Project
Output [4]: [plant#21524353.internalRefUUID AS _extract_internalRefUUID#21525709, product#21524354.internalRefUUID AS _extract_internalRefUUID#21525706, productionAspect#21524356.productMovementPlants.unitOfIssue.code AS _extract_code#21525707, productionAspect#21524356.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525708]
Input [4]: [plant#21524353, product#21524354, productionAspect#21524356, systemId#21524351]
(1923) Exchange
Input [4]: [_extract_internalRefUUID#21525709, _extract_internalRefUUID#21525706, _extract_code#21525707, _extract_internalRefUUID#21525708]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263741]
(1924) Project
Output [4]: [_extract_code#21525707, _extract_internalRefUUID#21525708, _extract_internalRefUUID#21525706, _extract_internalRefUUID#21525709]
Input [4]: [_extract_internalRefUUID#21525709, _extract_internalRefUUID#21525706, _extract_code#21525707, _extract_internalRefUUID#21525708]
(1925) BroadcastExchange
Input [4]: [_extract_code#21525707, _extract_internalRefUUID#21525708, _extract_internalRefUUID#21525706, _extract_internalRefUUID#21525709]
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=21265574]
(1926) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524347, ), isnull(product#21524347), coalesce(plant#21524348, ), isnull(plant#21524348)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525706, ), isnull(_extract_internalRefUUID#21525706), coalesce(_extract_internalRefUUID#21525709, ), isnull(_extract_internalRefUUID#21525709)]
Join type: LeftOuter
Join condition: None
(1927) Project
Output [5]: [product#21524347, plant#21524348, orderDateTime#21524349, _extract_code#21525707, _extract_internalRefUUID#21525708]
Input [7]: [product#21524347, plant#21524348, orderDateTime#21524349, _extract_code#21525707, _extract_internalRefUUID#21525708, _extract_internalRefUUID#21525706, _extract_internalRefUUID#21525709]
(1928) Scan parquet
Output [4]: [internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367, systemId#21524360]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1929) Filter
Input [4]: [internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367, systemId#21524360]
Condition : isnotnull(internalUUID#21524361)
(1930) Project
Output [3]: [internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367]
Input [4]: [internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367, systemId#21524360]
(1931) Exchange
Input [3]: [internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263748]
(1932) BroadcastExchange
Input [3]: [internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265578]
(1933) BroadcastHashJoin
Left keys [1]: [product#21524347]
Right keys [1]: [internalUUID#21524361]
Join type: LeftOuter
Join condition: None
(1934) Project
Output [4]: [product#21524347, plant#21524348, orderDateTime#21524349, filter(unitOfMeasureConversions#21524367, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525707) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525708)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524365.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524365.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524372]
Input [8]: [product#21524347, plant#21524348, orderDateTime#21524349, _extract_code#21525707, _extract_internalRefUUID#21525708, internalUUID#21524361, baseUnitOfMeasure#21524365, unitOfMeasureConversions#21524367]
(1935) Generate
Input [4]: [product#21524347, plant#21524348, orderDateTime#21524349, filteredUnitOfMeasureConversions#21524372]
Arguments: explode(filteredUnitOfMeasureConversions#21524372.quantityNumerator), [product#21524347, plant#21524348, orderDateTime#21524349, filteredUnitOfMeasureConversions#21524372], true, [quantityNumerator#21524373]
(1936) Project
Output [4]: [product#21524347, plant#21524348, orderDateTime#21524349, filteredUnitOfMeasureConversions#21524372.quantityDenominator AS _extract_quantityDenominator#21525249]
Input [5]: [product#21524347, plant#21524348, orderDateTime#21524349, filteredUnitOfMeasureConversions#21524372, quantityNumerator#21524373]
(1937) Generate
Input [4]: [product#21524347, plant#21524348, orderDateTime#21524349, _extract_quantityDenominator#21525249]
Arguments: explode(_extract_quantityDenominator#21525249), [product#21524347, plant#21524348, orderDateTime#21524349], true, [quantityDenominator#21524374]
(1938) Project
Output [3]: [product#21524347, plant#21524348, orderDateTime#21524349]
Input [4]: [product#21524347, plant#21524348, orderDateTime#21524349, quantityDenominator#21524374]
(1939) Sort
Input [3]: [product#21524347, plant#21524348, orderDateTime#21524349]
Arguments: [product#21524347 ASC NULLS FIRST, plant#21524348 ASC NULLS FIRST], false, 0
(1940) SortMergeJoin
Left keys [2]: [productUuid#21524341, plantUuid#21524339]
Right keys [2]: [product#21524347, plant#21524348]
Join type: Inner
Join condition: (calculationDateTime#21524335 <= orderDateTime#21524349)
(1941) Project
Output [4]: [plantUuid#21524339 AS plant#21524377, productUuid#21524341 AS product#21524378, storageLocId#21524342, calculationDateTime#21524335]
Input [7]: [plantUuid#21524339, productUuid#21524341, calculationDateTime#21524335, storageLocId#21524342, product#21524347, plant#21524348, orderDateTime#21524349]
(1942) HashAggregate
Input [4]: [plant#21524377, product#21524378, storageLocId#21524342, calculationDateTime#21524335]
Keys [3]: [plant#21524377, product#21524378, storageLocId#21524342]
Functions [1]: [partial_max(calculationDateTime#21524335)]
Aggregate Attributes [1]: [max#21526668]
Results [4]: [plant#21524377, product#21524378, storageLocId#21524342, max#21526669]
(1943) HashAggregate
Input [4]: [plant#21524377, product#21524378, storageLocId#21524342, max#21526669]
Keys [3]: [plant#21524377, product#21524378, storageLocId#21524342]
Functions [1]: [max(calculationDateTime#21524335)]
Aggregate Attributes [1]: [max(calculationDateTime#21524335)#21518235]
Results [4]: [plant#21524377, product#21524378, storageLocId#21524342, max(calculationDateTime#21524335)#21518235 AS max_calc_datetime#21524379]
(1944) Exchange
Input [4]: [plant#21524377, product#21524378, storageLocId#21524342, max_calc_datetime#21524379]
Arguments: hashpartitioning(coalesce(plant#21524377, ), isnull(plant#21524377), coalesce(product#21524378, ), isnull(product#21524378), coalesce(storageLocId#21524342, ), isnull(storageLocId#21524342), coalesce(max_calc_datetime#21524379, 1970-01-01 00:00:00), isnull(max_calc_datetime#21524379), 25), ENSURE_REQUIREMENTS, [plan_id=21265597]
(1945) Sort
Input [4]: [plant#21524377, product#21524378, storageLocId#21524342, max_calc_datetime#21524379]
Arguments: [coalesce(plant#21524377, ) ASC NULLS FIRST, isnull(plant#21524377) ASC NULLS FIRST, coalesce(product#21524378, ) ASC NULLS FIRST, isnull(product#21524378) ASC NULLS FIRST, coalesce(storageLocId#21524342, ) ASC NULLS FIRST, isnull(storageLocId#21524342) ASC NULLS FIRST, coalesce(max_calc_datetime#21524379, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21524379) ASC NULLS FIRST], false, 0
(1946) SortMergeJoin
Left keys [8]: [coalesce(plant#21524268, ), isnull(plant#21524268), coalesce(product#21524269, ), isnull(product#21524269), coalesce(storageLocId#21524233, ), isnull(storageLocId#21524233), coalesce(calculationDateTime#21524226, 1970-01-01 00:00:00), isnull(calculationDateTime#21524226)]
Right keys [8]: [coalesce(plant#21524377, ), isnull(plant#21524377), coalesce(product#21524378, ), isnull(product#21524378), coalesce(storageLocId#21524342, ), isnull(storageLocId#21524342), coalesce(max_calc_datetime#21524379, 1970-01-01 00:00:00), isnull(max_calc_datetime#21524379)]
Join type: Inner
Join condition: None
(1947) Project
Output [3]: [plant#21524268, product#21524269, calculationDateTime#21524226]
Input [8]: [plant#21524268, product#21524269, storageLocId#21524233, calculationDateTime#21524226, plant#21524377, product#21524378, storageLocId#21524342, max_calc_datetime#21524379]
(1948) HashAggregate
Input [3]: [plant#21524268, product#21524269, calculationDateTime#21524226]
Keys [2]: [product#21524269, plant#21524268]
Functions [1]: [partial_min(calculationDateTime#21524226)]
Aggregate Attributes [1]: [min#21526660]
Results [3]: [product#21524269, plant#21524268, min#21526661]
(1949) Exchange
Input [3]: [product#21524269, plant#21524268, min#21526661]
Arguments: hashpartitioning(product#21524269, plant#21524268, 25), ENSURE_REQUIREMENTS, [plan_id=21265604]
(1950) HashAggregate
Input [3]: [product#21524269, plant#21524268, min#21526661]
Keys [2]: [product#21524269, plant#21524268]
Functions [1]: [min(calculationDateTime#21524226)]
Aggregate Attributes [1]: [min(calculationDateTime#21524226)#21518361]
Results [3]: [product#21524269, plant#21524268, min(calculationDateTime#21524226)#21518361 AS minCalculationDateTime#21524381]
(1951) Sort
Input [3]: [product#21524269, plant#21524268, minCalculationDateTime#21524381]
Arguments: [product#21524269 ASC NULLS FIRST, plant#21524268 ASC NULLS FIRST], false, 0
(1952) SortMergeJoin
Left keys [2]: [product#21524131, plant#21524132]
Right keys [2]: [product#21524269, plant#21524268]
Join type: LeftOuter
Join condition: None
(1953) Project
Output [3]: [product#21524131, plant#21524132, CASE WHEN isnotnull(minCalculationDateTime#21524381) THEN minCalculationDateTime#21524381 ELSE orderDateTime#21524133 END AS stockDatetime#21524383]
Input [6]: [product#21524131, plant#21524132, orderDateTime#21524133, product#21524269, plant#21524268, minCalculationDateTime#21524381]
(1954) Exchange
Input [3]: [product#21524131, plant#21524132, stockDatetime#21524383]
Arguments: hashpartitioning(coalesce(plant#21524132, ), isnull(plant#21524132), coalesce(product#21524131, ), isnull(product#21524131), 25), ENSURE_REQUIREMENTS, [plan_id=21265757]
(1955) Sort
Input [3]: [product#21524131, plant#21524132, stockDatetime#21524383]
Arguments: [coalesce(plant#21524132, ) ASC NULLS FIRST, isnull(plant#21524132) ASC NULLS FIRST, coalesce(product#21524131, ) ASC NULLS FIRST, isnull(product#21524131) ASC NULLS FIRST], false, 0
(1956) Scan parquet
Output [3]: [product#21524386, plant#21524387, orderDateTime#21524388]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1957) Exchange
Input [3]: [product#21524386, plant#21524387, orderDateTime#21524388]
Arguments: hashpartitioning(product#21524386, plant#21524387, 25), REPARTITION_BY_NUM, [plan_id=21263766]
(1958) Exchange
Input [3]: [product#21524386, plant#21524387, orderDateTime#21524388]
Arguments: hashpartitioning(coalesce(product#21524386, ), isnull(product#21524386), coalesce(plant#21524387, ), isnull(plant#21524387), 25), ENSURE_REQUIREMENTS, [plan_id=21265613]
(1959) Sort
Input [3]: [product#21524386, plant#21524387, orderDateTime#21524388]
Arguments: [coalesce(product#21524386, ) ASC NULLS FIRST, isnull(product#21524386) ASC NULLS FIRST, coalesce(plant#21524387, ) ASC NULLS FIRST, isnull(plant#21524387) ASC NULLS FIRST], false, 0
(1960) Scan parquet
Output [8]: [internalUUID#21524391, plant#21524392, product#21524393, blockedForReplenishmentStartingFrom#21524394, productionAspect#21524395, salesPlant#21524396, listing#21524397, systemId#21524390]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(1961) Project
Output [8]: [systemId#21524390, internalUUID#21524391, plant#21524392, product#21524393, blockedForReplenishmentStartingFrom#21524394, productionAspect#21524395, salesPlant#21524396, listing#21524397]
Input [8]: [internalUUID#21524391, plant#21524392, product#21524393, blockedForReplenishmentStartingFrom#21524394, productionAspect#21524395, salesPlant#21524396, listing#21524397, systemId#21524390]
(1962) Exchange
Input [8]: [systemId#21524390, internalUUID#21524391, plant#21524392, product#21524393, blockedForReplenishmentStartingFrom#21524394, productionAspect#21524395, salesPlant#21524396, listing#21524397]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263769]
(1963) Project
Output [1]: [struct(systemId, systemId#21524390, internalUUID, internalUUID#21524391, plant, plant#21524392, product, product#21524393, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21524394, productionAspect, productionAspect#21524395, salesPlant, salesPlant#21524396, listing, listing#21524397) AS productPlant#21524398]
Input [8]: [systemId#21524390, internalUUID#21524391, plant#21524392, product#21524393, blockedForReplenishmentStartingFrom#21524394, productionAspect#21524395, salesPlant#21524396, listing#21524397]
(1964) Exchange
Input [1]: [productPlant#21524398]
Arguments: hashpartitioning(coalesce(productPlant#21524398.product.internalRefUUID, ), isnull(productPlant#21524398.product.internalRefUUID), coalesce(productPlant#21524398.plant.internalRefUUID, ), isnull(productPlant#21524398.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21265614]
(1965) Sort
Input [1]: [productPlant#21524398]
Arguments: [coalesce(productPlant#21524398.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21524398.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21524398.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21524398.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(1966) SortMergeJoin
Left keys [4]: [coalesce(product#21524386, ), isnull(product#21524386), coalesce(plant#21524387, ), isnull(plant#21524387)]
Right keys [4]: [coalesce(productPlant#21524398.product.internalRefUUID, ), isnull(productPlant#21524398.product.internalRefUUID), coalesce(productPlant#21524398.plant.internalRefUUID, ), isnull(productPlant#21524398.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1967) Scan parquet
Output [4]: [internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406, systemId#21524399]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(1968) Filter
Input [4]: [internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406, systemId#21524399]
Condition : isnotnull(internalUUID#21524400)
(1969) Project
Output [3]: [internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406]
Input [4]: [internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406, systemId#21524399]
(1970) Exchange
Input [3]: [internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263775]
(1971) BroadcastExchange
Input [3]: [internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265619]
(1972) BroadcastHashJoin
Left keys [1]: [product#21524386]
Right keys [1]: [internalUUID#21524400]
Join type: LeftOuter
Join condition: None
(1973) Project
Output [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, filter(unitOfMeasureConversions#21524406, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21524398.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21524398.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524404.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524404.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524411]
Input [7]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, internalUUID#21524400, baseUnitOfMeasure#21524404, unitOfMeasureConversions#21524406]
(1974) Project
Output [6]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, filteredUnitOfMeasureConversions#21524411.quantityDenominator AS _extract_quantityDenominator#21525710, filteredUnitOfMeasureConversions#21524411.quantityNumerator AS _extract_quantityNumerator#21525711]
Input [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, filteredUnitOfMeasureConversions#21524411]
(1975) Generate
Input [6]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, _extract_quantityDenominator#21525710, _extract_quantityNumerator#21525711]
Arguments: explode(_extract_quantityNumerator#21525711), [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, _extract_quantityDenominator#21525710], true, [quantityNumerator#21524412]
(1976) Generate
Input [6]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, _extract_quantityDenominator#21525710, quantityNumerator#21524412]
Arguments: explode(_extract_quantityDenominator#21525710), [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, quantityNumerator#21524412], true, [quantityDenominator#21524413]
(1977) Project
Output [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, (cast(quantityNumerator#21524412 as double) / cast(quantityDenominator#21524413 as double)) AS outboundUnit#21524414]
Input [6]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, quantityNumerator#21524412, quantityDenominator#21524413]
(1978) Project
Output [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, CASE WHEN (isnull(outboundUnit#21524414) OR (outboundUnit#21524414 <= 0.0)) THEN 1.0 ELSE outboundUnit#21524414 END AS outboundUnit#21524415]
Input [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524414]
(1979) Exchange
Input [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415]
Arguments: hashpartitioning(product#21524386, plant#21524387, 25), ENSURE_REQUIREMENTS, [plan_id=21265737]
(1980) Sort
Input [5]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415]
Arguments: [product#21524386 ASC NULLS FIRST, plant#21524387 ASC NULLS FIRST], false, 0
(1981) Scan parquet
Output [6]: [internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421, systemId#21524416]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(1982) Filter
Input [6]: [internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421, systemId#21524416]
Condition : (isnotnull(plant#21524419.internalRefUUID) AND isnotnull(product#21524418.internalRefUUID))
(1983) Project
Output [6]: [systemId#21524416, internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421]
Input [6]: [internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421, systemId#21524416]
(1984) Exchange
Input [6]: [systemId#21524416, internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263786]
(1985) BroadcastExchange
Input [6]: [systemId#21524416, internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421]
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=21265647]
(1986) Scan parquet
Output [2]: [marketUnit#21524422, distributionCenters#21524428]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1987) Filter
Input [2]: [marketUnit#21524422, distributionCenters#21524428]
Condition : (((marketUnit#21524422 <=> SS_Test_1) AND (size(distributionCenters#21524428, true) > 0)) AND isnotnull(distributionCenters#21524428))
(1988) Project
Output [1]: [distributionCenters#21524428]
Input [2]: [marketUnit#21524422, distributionCenters#21524428]
(1989) Exchange
Input [1]: [distributionCenters#21524428]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263790]
(1990) Generate
Input [1]: [distributionCenters#21524428]
Arguments: explode(distributionCenters#21524428), false, [distributionCenters#21524444]
(1991) Filter
Input [1]: [distributionCenters#21524444]
Condition : (((size(distributionCenters#21524444.storageLocations, true) > 0) AND isnotnull(distributionCenters#21524444.storageLocations)) AND isnotnull(distributionCenters#21524444.internalRefUUID))
(1992) Project
Output [2]: [distributionCenters#21524444.internalRefUUID AS _extract_internalRefUUID#21525257, distributionCenters#21524444.storageLocations AS _extract_storageLocations#21525258]
Input [1]: [distributionCenters#21524444]
(1993) Generate
Input [2]: [_extract_internalRefUUID#21525257, _extract_storageLocations#21525258]
Arguments: explode(_extract_storageLocations#21525258), [_extract_internalRefUUID#21525257], false, [storageLocations#21524445]
(1994) Project
Output [3]: [_extract_internalRefUUID#21525257 AS plantUuid#21524447, storageLocations#21524445.id AS storageLocId#21524448, storageLocations#21524445.internalRefUUID AS storageLocUuid#21524449]
Input [2]: [_extract_internalRefUUID#21525257, storageLocations#21524445]
(1995) BroadcastExchange
Input [3]: [plantUuid#21524447, storageLocId#21524448, storageLocUuid#21524449]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265643]
(1996) Scan parquet
Output [2]: [product#21524450, plant#21524451]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1997) Filter
Input [2]: [product#21524450, plant#21524451]
Condition : isnotnull(plant#21524451)
(1998) Exchange
Input [2]: [product#21524450, plant#21524451]
Arguments: hashpartitioning(product#21524450, plant#21524451, 25), REPARTITION_BY_NUM, [plan_id=21264531]
(1999) Scan parquet
Output [4]: [plant#21524456, product#21524457, productionAspect#21524459, systemId#21524454]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(2000) Project
Output [4]: [plant#21524456.internalRefUUID AS _extract_internalRefUUID#21525715, product#21524457.internalRefUUID AS _extract_internalRefUUID#21525714, productionAspect#21524459.productMovementPlants.unitOfIssue.code AS _extract_code#21525712, productionAspect#21524459.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525713]
Input [4]: [plant#21524456, product#21524457, productionAspect#21524459, systemId#21524454]
(2001) Exchange
Input [4]: [_extract_internalRefUUID#21525715, _extract_internalRefUUID#21525714, _extract_code#21525712, _extract_internalRefUUID#21525713]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263802]
(2002) Project
Output [4]: [_extract_code#21525712, _extract_internalRefUUID#21525713, _extract_internalRefUUID#21525714, _extract_internalRefUUID#21525715]
Input [4]: [_extract_internalRefUUID#21525715, _extract_internalRefUUID#21525714, _extract_code#21525712, _extract_internalRefUUID#21525713]
(2003) BroadcastExchange
Input [4]: [_extract_code#21525712, _extract_internalRefUUID#21525713, _extract_internalRefUUID#21525714, _extract_internalRefUUID#21525715]
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=21265627]
(2004) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524450, ), isnull(product#21524450), coalesce(plant#21524451, ), isnull(plant#21524451)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525714, ), isnull(_extract_internalRefUUID#21525714), coalesce(_extract_internalRefUUID#21525715, ), isnull(_extract_internalRefUUID#21525715)]
Join type: LeftOuter
Join condition: None
(2005) Project
Output [4]: [product#21524450, plant#21524451, _extract_code#21525712, _extract_internalRefUUID#21525713]
Input [6]: [product#21524450, plant#21524451, _extract_code#21525712, _extract_internalRefUUID#21525713, _extract_internalRefUUID#21525714, _extract_internalRefUUID#21525715]
(2006) Scan parquet
Output [4]: [internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470, systemId#21524463]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(2007) Filter
Input [4]: [internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470, systemId#21524463]
Condition : isnotnull(internalUUID#21524464)
(2008) Project
Output [3]: [internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470]
Input [4]: [internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470, systemId#21524463]
(2009) Exchange
Input [3]: [internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263809]
(2010) BroadcastExchange
Input [3]: [internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265631]
(2011) BroadcastHashJoin
Left keys [1]: [product#21524450]
Right keys [1]: [internalUUID#21524464]
Join type: LeftOuter
Join condition: None
(2012) Project
Output [2]: [plant#21524451, filter(unitOfMeasureConversions#21524470, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525712) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525713)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524468.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524468.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524475]
Input [7]: [product#21524450, plant#21524451, _extract_code#21525712, _extract_internalRefUUID#21525713, internalUUID#21524464, baseUnitOfMeasure#21524468, unitOfMeasureConversions#21524470]
(2013) Generate
Input [2]: [plant#21524451, filteredUnitOfMeasureConversions#21524475]
Arguments: explode(filteredUnitOfMeasureConversions#21524475.quantityNumerator), [plant#21524451, filteredUnitOfMeasureConversions#21524475], true, [quantityNumerator#21524476]
(2014) Project
Output [2]: [plant#21524451, filteredUnitOfMeasureConversions#21524475.quantityDenominator AS _extract_quantityDenominator#21525259]
Input [3]: [plant#21524451, filteredUnitOfMeasureConversions#21524475, quantityNumerator#21524476]
(2015) Generate
Input [2]: [plant#21524451, _extract_quantityDenominator#21525259]
Arguments: explode(_extract_quantityDenominator#21525259), [plant#21524451], true, [quantityDenominator#21524477]
(2016) Project
Output [1]: [plant#21524451]
Input [2]: [plant#21524451, quantityDenominator#21524477]
(2017) HashAggregate
Input [1]: [plant#21524451]
Keys [1]: [plant#21524451]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524451]
(2018) Exchange
Input [1]: [plant#21524451]
Arguments: hashpartitioning(plant#21524451, 25), ENSURE_REQUIREMENTS, [plan_id=21265640]
(2019) HashAggregate
Input [1]: [plant#21524451]
Keys [1]: [plant#21524451]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524451]
(2020) BroadcastHashJoin
Left keys [1]: [plantUuid#21524447]
Right keys [1]: [plant#21524451]
Join type: Inner
Join condition: None
(2021) Project
Output [3]: [plantUuid#21524447, storageLocId#21524448, storageLocUuid#21524449]
Input [4]: [plantUuid#21524447, storageLocId#21524448, storageLocUuid#21524449, plant#21524451]
(2022) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21524419.internalRefUUID, ), isnull(plant#21524419.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21524447, ), isnull(plantUuid#21524447)]
Join type: Inner
Join condition: None
(2023) Generate
Input [9]: [systemId#21524416, internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, stockQuantities#21524421, plantUuid#21524447, storageLocId#21524448, storageLocUuid#21524449]
Arguments: explode(filter(stockQuantities#21524421, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21524449) AND (lambda x#21518157.storageLocation.Id = storageLocId#21524448)), lambda x#21518157, false))), [systemId#21524416, internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, plantUuid#21524447], false, [stockQuantity#21524480]
(2024) ObjectHashAggregate
Input [7]: [systemId#21524416, internalUUID#21524417, product#21524418, plant#21524419, calculationDateTime#21524420, plantUuid#21524447, stockQuantity#21524480]
Keys [5]: [plantUuid#21524447, internalUUID#21524417, plant#21524419, product#21524418, systemId#21524416]
Functions [2]: [partial_first(calculationDateTime#21524420, false), partial_collect_list(stockQuantity#21524480, 0, 0)]
Aggregate Attributes [3]: [first#21526684, valueSet#21526685, buf#21526686]
Results [8]: [plantUuid#21524447, internalUUID#21524417, plant#21524419, product#21524418, systemId#21524416, first#21526687, valueSet#21526688, buf#21526689]
(2025) ObjectHashAggregate
Input [8]: [plantUuid#21524447, internalUUID#21524417, plant#21524419, product#21524418, systemId#21524416, first#21526687, valueSet#21526688, buf#21526689]
Keys [5]: [plantUuid#21524447, internalUUID#21524417, plant#21524419, product#21524418, systemId#21524416]
Functions [2]: [first(calculationDateTime#21524420, false), collect_list(stockQuantity#21524480, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21524420)()#21518172, collect_list(stockQuantity#21524480, 0, 0)#21518173]
Results [4]: [product#21524418, plant#21524419, first(calculationDateTime#21524420)()#21518172 AS calculationDateTime#21524481, collect_list(stockQuantity#21524480, 0, 0)#21518173 AS stockQuantities#21524482]
(2026) Filter
Input [4]: [product#21524418, plant#21524419, calculationDateTime#21524481, stockQuantities#21524482]
Condition : ((size(stockQuantities#21524482, true) > 0) AND isnotnull(calculationDateTime#21524481))
(2027) Generate
Input [4]: [product#21524418, plant#21524419, calculationDateTime#21524481, stockQuantities#21524482]
Arguments: explode(stockQuantities#21524482), [product#21524418, plant#21524419, calculationDateTime#21524481], false, [stockQuantity#21524483]
(2028) Filter
Input [4]: [product#21524418, plant#21524419, calculationDateTime#21524481, stockQuantity#21524483]
Condition : (((isnotnull(stockQuantity#21524483.specialStockIndicator.code) AND isnotnull(stockQuantity#21524483.stockType.code)) AND (stockQuantity#21524483.specialStockIndicator.code = )) AND (stockQuantity#21524483.stockType.code = 01))
(2029) Project
Output [5]: [plant#21524419.internalRefUUID AS plantUuid#21524485, product#21524418.internalRefUUID AS productUuid#21524487, calculationDateTime#21524481, stockQuantity#21524483.storagelocation.id AS storageLocId#21524488, stockQuantity#21524483.quantity.measure AS quantity#21524490]
Input [4]: [product#21524418, plant#21524419, calculationDateTime#21524481, stockQuantity#21524483]
(2030) Exchange
Input [5]: [plantUuid#21524485, productUuid#21524487, calculationDateTime#21524481, storageLocId#21524488, quantity#21524490]
Arguments: hashpartitioning(productUuid#21524487, plantUuid#21524485, 25), ENSURE_REQUIREMENTS, [plan_id=21265669]
(2031) Sort
Input [5]: [plantUuid#21524485, productUuid#21524487, calculationDateTime#21524481, storageLocId#21524488, quantity#21524490]
Arguments: [productUuid#21524487 ASC NULLS FIRST, plantUuid#21524485 ASC NULLS FIRST], false, 0
(2032) Scan parquet
Output [3]: [product#21524493, plant#21524494, orderDateTime#21524495]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2033) Filter
Input [3]: [product#21524493, plant#21524494, orderDateTime#21524495]
Condition : ((isnotnull(orderDateTime#21524495) AND isnotnull(plant#21524494)) AND isnotnull(product#21524493))
(2034) Exchange
Input [3]: [product#21524493, plant#21524494, orderDateTime#21524495]
Arguments: hashpartitioning(product#21524493, plant#21524494, 25), REPARTITION_BY_NUM, [plan_id=21264552]
(2035) Scan parquet
Output [4]: [plant#21524499, product#21524500, productionAspect#21524502, systemId#21524497]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(2036) Project
Output [4]: [plant#21524499.internalRefUUID AS _extract_internalRefUUID#21525717, product#21524500.internalRefUUID AS _extract_internalRefUUID#21525716, productionAspect#21524502.productMovementPlants.unitOfIssue.code AS _extract_code#21525718, productionAspect#21524502.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525719]
Input [4]: [plant#21524499, product#21524500, productionAspect#21524502, systemId#21524497]
(2037) Exchange
Input [4]: [_extract_internalRefUUID#21525717, _extract_internalRefUUID#21525716, _extract_code#21525718, _extract_internalRefUUID#21525719]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263834]
(2038) Project
Output [4]: [_extract_code#21525718, _extract_internalRefUUID#21525719, _extract_internalRefUUID#21525716, _extract_internalRefUUID#21525717]
Input [4]: [_extract_internalRefUUID#21525717, _extract_internalRefUUID#21525716, _extract_code#21525718, _extract_internalRefUUID#21525719]
(2039) BroadcastExchange
Input [4]: [_extract_code#21525718, _extract_internalRefUUID#21525719, _extract_internalRefUUID#21525716, _extract_internalRefUUID#21525717]
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=21265656]
(2040) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524493, ), isnull(product#21524493), coalesce(plant#21524494, ), isnull(plant#21524494)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525716, ), isnull(_extract_internalRefUUID#21525716), coalesce(_extract_internalRefUUID#21525717, ), isnull(_extract_internalRefUUID#21525717)]
Join type: LeftOuter
Join condition: None
(2041) Project
Output [5]: [product#21524493, plant#21524494, orderDateTime#21524495, _extract_code#21525718, _extract_internalRefUUID#21525719]
Input [7]: [product#21524493, plant#21524494, orderDateTime#21524495, _extract_code#21525718, _extract_internalRefUUID#21525719, _extract_internalRefUUID#21525716, _extract_internalRefUUID#21525717]
(2042) Scan parquet
Output [4]: [internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513, systemId#21524506]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(2043) Filter
Input [4]: [internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513, systemId#21524506]
Condition : isnotnull(internalUUID#21524507)
(2044) Project
Output [3]: [internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513]
Input [4]: [internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513, systemId#21524506]
(2045) Exchange
Input [3]: [internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263841]
(2046) BroadcastExchange
Input [3]: [internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265660]
(2047) BroadcastHashJoin
Left keys [1]: [product#21524493]
Right keys [1]: [internalUUID#21524507]
Join type: LeftOuter
Join condition: None
(2048) Project
Output [4]: [product#21524493, plant#21524494, orderDateTime#21524495, filter(unitOfMeasureConversions#21524513, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525718) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525719)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524511.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524511.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524518]
Input [8]: [product#21524493, plant#21524494, orderDateTime#21524495, _extract_code#21525718, _extract_internalRefUUID#21525719, internalUUID#21524507, baseUnitOfMeasure#21524511, unitOfMeasureConversions#21524513]
(2049) Generate
Input [4]: [product#21524493, plant#21524494, orderDateTime#21524495, filteredUnitOfMeasureConversions#21524518]
Arguments: explode(filteredUnitOfMeasureConversions#21524518.quantityNumerator), [product#21524493, plant#21524494, orderDateTime#21524495, filteredUnitOfMeasureConversions#21524518], true, [quantityNumerator#21524519]
(2050) Project
Output [4]: [product#21524493, plant#21524494, orderDateTime#21524495, filteredUnitOfMeasureConversions#21524518.quantityDenominator AS _extract_quantityDenominator#21525266]
Input [5]: [product#21524493, plant#21524494, orderDateTime#21524495, filteredUnitOfMeasureConversions#21524518, quantityNumerator#21524519]
(2051) Generate
Input [4]: [product#21524493, plant#21524494, orderDateTime#21524495, _extract_quantityDenominator#21525266]
Arguments: explode(_extract_quantityDenominator#21525266), [product#21524493, plant#21524494, orderDateTime#21524495], true, [quantityDenominator#21524520]
(2052) Project
Output [3]: [product#21524493, plant#21524494, orderDateTime#21524495]
Input [4]: [product#21524493, plant#21524494, orderDateTime#21524495, quantityDenominator#21524520]
(2053) Sort
Input [3]: [product#21524493, plant#21524494, orderDateTime#21524495]
Arguments: [product#21524493 ASC NULLS FIRST, plant#21524494 ASC NULLS FIRST], false, 0
(2054) SortMergeJoin
Left keys [2]: [productUuid#21524487, plantUuid#21524485]
Right keys [2]: [product#21524493, plant#21524494]
Join type: Inner
Join condition: (calculationDateTime#21524481 <= orderDateTime#21524495)
(2055) Project
Output [5]: [plantUuid#21524485 AS plant#21524523, productUuid#21524487 AS product#21524524, storageLocId#21524488, calculationDateTime#21524481, quantity#21524490]
Input [8]: [plantUuid#21524485, productUuid#21524487, calculationDateTime#21524481, storageLocId#21524488, quantity#21524490, product#21524493, plant#21524494, orderDateTime#21524495]
(2056) Exchange
Input [5]: [plant#21524523, product#21524524, storageLocId#21524488, calculationDateTime#21524481, quantity#21524490]
Arguments: hashpartitioning(coalesce(plant#21524523, ), isnull(plant#21524523), coalesce(product#21524524, ), isnull(product#21524524), coalesce(storageLocId#21524488, ), isnull(storageLocId#21524488), coalesce(calculationDateTime#21524481, 1970-01-01 00:00:00), isnull(calculationDateTime#21524481), 25), ENSURE_REQUIREMENTS, [plan_id=21265725]
(2057) Sort
Input [5]: [plant#21524523, product#21524524, storageLocId#21524488, calculationDateTime#21524481, quantity#21524490]
Arguments: [coalesce(plant#21524523, ) ASC NULLS FIRST, isnull(plant#21524523) ASC NULLS FIRST, coalesce(product#21524524, ) ASC NULLS FIRST, isnull(product#21524524) ASC NULLS FIRST, coalesce(storageLocId#21524488, ) ASC NULLS FIRST, isnull(storageLocId#21524488) ASC NULLS FIRST, coalesce(calculationDateTime#21524481, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21524481) ASC NULLS FIRST], false, 0
(2058) Scan parquet
Output [6]: [internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530, systemId#21524525]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(2059) Filter
Input [6]: [internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530, systemId#21524525]
Condition : (isnotnull(plant#21524528.internalRefUUID) AND isnotnull(product#21524527.internalRefUUID))
(2060) Project
Output [6]: [systemId#21524525, internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530]
Input [6]: [internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530, systemId#21524525]
(2061) Exchange
Input [6]: [systemId#21524525, internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263853]
(2062) BroadcastExchange
Input [6]: [systemId#21524525, internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530]
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=21265694]
(2063) Scan parquet
Output [2]: [marketUnit#21524531, distributionCenters#21524537]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(2064) Filter
Input [2]: [marketUnit#21524531, distributionCenters#21524537]
Condition : (((marketUnit#21524531 <=> SS_Test_1) AND (size(distributionCenters#21524537, true) > 0)) AND isnotnull(distributionCenters#21524537))
(2065) Project
Output [1]: [distributionCenters#21524537]
Input [2]: [marketUnit#21524531, distributionCenters#21524537]
(2066) Exchange
Input [1]: [distributionCenters#21524537]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263857]
(2067) Generate
Input [1]: [distributionCenters#21524537]
Arguments: explode(distributionCenters#21524537), false, [distributionCenters#21524553]
(2068) Filter
Input [1]: [distributionCenters#21524553]
Condition : (((size(distributionCenters#21524553.storageLocations, true) > 0) AND isnotnull(distributionCenters#21524553.storageLocations)) AND isnotnull(distributionCenters#21524553.internalRefUUID))
(2069) Project
Output [2]: [distributionCenters#21524553.internalRefUUID AS _extract_internalRefUUID#21525273, distributionCenters#21524553.storageLocations AS _extract_storageLocations#21525274]
Input [1]: [distributionCenters#21524553]
(2070) Generate
Input [2]: [_extract_internalRefUUID#21525273, _extract_storageLocations#21525274]
Arguments: explode(_extract_storageLocations#21525274), [_extract_internalRefUUID#21525273], false, [storageLocations#21524554]
(2071) Project
Output [3]: [_extract_internalRefUUID#21525273 AS plantUuid#21524556, storageLocations#21524554.id AS storageLocId#21524557, storageLocations#21524554.internalRefUUID AS storageLocUuid#21524558]
Input [2]: [_extract_internalRefUUID#21525273, storageLocations#21524554]
(2072) BroadcastExchange
Input [3]: [plantUuid#21524556, storageLocId#21524557, storageLocUuid#21524558]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265690]
(2073) Scan parquet
Output [2]: [product#21524559, plant#21524560]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(2074) Filter
Input [2]: [product#21524559, plant#21524560]
Condition : isnotnull(plant#21524560)
(2075) Exchange
Input [2]: [product#21524559, plant#21524560]
Arguments: hashpartitioning(product#21524559, plant#21524560, 25), REPARTITION_BY_NUM, [plan_id=21264563]
(2076) Scan parquet
Output [4]: [plant#21524565, product#21524566, productionAspect#21524568, systemId#21524563]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(2077) Project
Output [4]: [plant#21524565.internalRefUUID AS _extract_internalRefUUID#21525723, product#21524566.internalRefUUID AS _extract_internalRefUUID#21525720, productionAspect#21524568.productMovementPlants.unitOfIssue.code AS _extract_code#21525721, productionAspect#21524568.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525722]
Input [4]: [plant#21524565, product#21524566, productionAspect#21524568, systemId#21524563]
(2078) Exchange
Input [4]: [_extract_internalRefUUID#21525723, _extract_internalRefUUID#21525720, _extract_code#21525721, _extract_internalRefUUID#21525722]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263869]
(2079) Project
Output [4]: [_extract_code#21525721, _extract_internalRefUUID#21525722, _extract_internalRefUUID#21525720, _extract_internalRefUUID#21525723]
Input [4]: [_extract_internalRefUUID#21525723, _extract_internalRefUUID#21525720, _extract_code#21525721, _extract_internalRefUUID#21525722]
(2080) BroadcastExchange
Input [4]: [_extract_code#21525721, _extract_internalRefUUID#21525722, _extract_internalRefUUID#21525720, _extract_internalRefUUID#21525723]
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=21265674]
(2081) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524559, ), isnull(product#21524559), coalesce(plant#21524560, ), isnull(plant#21524560)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525720, ), isnull(_extract_internalRefUUID#21525720), coalesce(_extract_internalRefUUID#21525723, ), isnull(_extract_internalRefUUID#21525723)]
Join type: LeftOuter
Join condition: None
(2082) Project
Output [4]: [product#21524559, plant#21524560, _extract_code#21525721, _extract_internalRefUUID#21525722]
Input [6]: [product#21524559, plant#21524560, _extract_code#21525721, _extract_internalRefUUID#21525722, _extract_internalRefUUID#21525720, _extract_internalRefUUID#21525723]
(2083) Scan parquet
Output [4]: [internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579, systemId#21524572]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(2084) Filter
Input [4]: [internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579, systemId#21524572]
Condition : isnotnull(internalUUID#21524573)
(2085) Project
Output [3]: [internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579]
Input [4]: [internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579, systemId#21524572]
(2086) Exchange
Input [3]: [internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263876]
(2087) BroadcastExchange
Input [3]: [internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265678]
(2088) BroadcastHashJoin
Left keys [1]: [product#21524559]
Right keys [1]: [internalUUID#21524573]
Join type: LeftOuter
Join condition: None
(2089) Project
Output [2]: [plant#21524560, filter(unitOfMeasureConversions#21524579, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525721) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525722)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524577.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524577.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524584]
Input [7]: [product#21524559, plant#21524560, _extract_code#21525721, _extract_internalRefUUID#21525722, internalUUID#21524573, baseUnitOfMeasure#21524577, unitOfMeasureConversions#21524579]
(2090) Generate
Input [2]: [plant#21524560, filteredUnitOfMeasureConversions#21524584]
Arguments: explode(filteredUnitOfMeasureConversions#21524584.quantityNumerator), [plant#21524560, filteredUnitOfMeasureConversions#21524584], true, [quantityNumerator#21524585]
(2091) Project
Output [2]: [plant#21524560, filteredUnitOfMeasureConversions#21524584.quantityDenominator AS _extract_quantityDenominator#21525275]
Input [3]: [plant#21524560, filteredUnitOfMeasureConversions#21524584, quantityNumerator#21524585]
(2092) Generate
Input [2]: [plant#21524560, _extract_quantityDenominator#21525275]
Arguments: explode(_extract_quantityDenominator#21525275), [plant#21524560], true, [quantityDenominator#21524586]
(2093) Project
Output [1]: [plant#21524560]
Input [2]: [plant#21524560, quantityDenominator#21524586]
(2094) HashAggregate
Input [1]: [plant#21524560]
Keys [1]: [plant#21524560]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524560]
(2095) Exchange
Input [1]: [plant#21524560]
Arguments: hashpartitioning(plant#21524560, 25), ENSURE_REQUIREMENTS, [plan_id=21265687]
(2096) HashAggregate
Input [1]: [plant#21524560]
Keys [1]: [plant#21524560]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21524560]
(2097) BroadcastHashJoin
Left keys [1]: [plantUuid#21524556]
Right keys [1]: [plant#21524560]
Join type: Inner
Join condition: None
(2098) Project
Output [3]: [plantUuid#21524556, storageLocId#21524557, storageLocUuid#21524558]
Input [4]: [plantUuid#21524556, storageLocId#21524557, storageLocUuid#21524558, plant#21524560]
(2099) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21524528.internalRefUUID, ), isnull(plant#21524528.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21524556, ), isnull(plantUuid#21524556)]
Join type: Inner
Join condition: None
(2100) Generate
Input [9]: [systemId#21524525, internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, stockQuantities#21524530, plantUuid#21524556, storageLocId#21524557, storageLocUuid#21524558]
Arguments: explode(filter(stockQuantities#21524530, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21524558) AND (lambda x#21518157.storageLocation.Id = storageLocId#21524557)), lambda x#21518157, false))), [systemId#21524525, internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, plantUuid#21524556], false, [stockQuantity#21524589]
(2101) ObjectHashAggregate
Input [7]: [systemId#21524525, internalUUID#21524526, product#21524527, plant#21524528, calculationDateTime#21524529, plantUuid#21524556, stockQuantity#21524589]
Keys [5]: [plantUuid#21524556, internalUUID#21524526, plant#21524528, product#21524527, systemId#21524525]
Functions [2]: [partial_first(calculationDateTime#21524529, false), partial_collect_list(stockQuantity#21524589, 0, 0)]
Aggregate Attributes [3]: [first#21526692, valueSet#21526693, buf#21526694]
Results [8]: [plantUuid#21524556, internalUUID#21524526, plant#21524528, product#21524527, systemId#21524525, first#21526695, valueSet#21526696, buf#21526697]
(2102) ObjectHashAggregate
Input [8]: [plantUuid#21524556, internalUUID#21524526, plant#21524528, product#21524527, systemId#21524525, first#21526695, valueSet#21526696, buf#21526697]
Keys [5]: [plantUuid#21524556, internalUUID#21524526, plant#21524528, product#21524527, systemId#21524525]
Functions [2]: [first(calculationDateTime#21524529, false), collect_list(stockQuantity#21524589, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21524529)()#21518172, collect_list(stockQuantity#21524589, 0, 0)#21518173]
Results [4]: [product#21524527, plant#21524528, first(calculationDateTime#21524529)()#21518172 AS calculationDateTime#21524590, collect_list(stockQuantity#21524589, 0, 0)#21518173 AS stockQuantities#21524591]
(2103) Filter
Input [4]: [product#21524527, plant#21524528, calculationDateTime#21524590, stockQuantities#21524591]
Condition : ((size(stockQuantities#21524591, true) > 0) AND isnotnull(calculationDateTime#21524590))
(2104) Generate
Input [4]: [product#21524527, plant#21524528, calculationDateTime#21524590, stockQuantities#21524591]
Arguments: explode(stockQuantities#21524591), [product#21524527, plant#21524528, calculationDateTime#21524590], false, [stockQuantity#21524592]
(2105) Filter
Input [4]: [product#21524527, plant#21524528, calculationDateTime#21524590, stockQuantity#21524592]
Condition : (((isnotnull(stockQuantity#21524592.specialStockIndicator.code) AND isnotnull(stockQuantity#21524592.stockType.code)) AND (stockQuantity#21524592.specialStockIndicator.code = )) AND (stockQuantity#21524592.stockType.code = 01))
(2106) Project
Output [4]: [plant#21524528.internalRefUUID AS plantUuid#21524594, product#21524527.internalRefUUID AS productUuid#21524596, calculationDateTime#21524590, stockQuantity#21524592.storagelocation.id AS storageLocId#21524597]
Input [4]: [product#21524527, plant#21524528, calculationDateTime#21524590, stockQuantity#21524592]
(2107) Exchange
Input [4]: [plantUuid#21524594, productUuid#21524596, calculationDateTime#21524590, storageLocId#21524597]
Arguments: hashpartitioning(productUuid#21524596, plantUuid#21524594, 25), ENSURE_REQUIREMENTS, [plan_id=21265716]
(2108) Sort
Input [4]: [plantUuid#21524594, productUuid#21524596, calculationDateTime#21524590, storageLocId#21524597]
Arguments: [productUuid#21524596 ASC NULLS FIRST, plantUuid#21524594 ASC NULLS FIRST], false, 0
(2109) Scan parquet
Output [3]: [product#21524602, plant#21524603, orderDateTime#21524604]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2110) Filter
Input [3]: [product#21524602, plant#21524603, orderDateTime#21524604]
Condition : ((isnotnull(orderDateTime#21524604) AND isnotnull(plant#21524603)) AND isnotnull(product#21524602))
(2111) Exchange
Input [3]: [product#21524602, plant#21524603, orderDateTime#21524604]
Arguments: hashpartitioning(product#21524602, plant#21524603, 25), REPARTITION_BY_NUM, [plan_id=21264584]
(2112) Scan parquet
Output [4]: [plant#21524608, product#21524609, productionAspect#21524611, systemId#21524606]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>
(2113) Project
Output [4]: [plant#21524608.internalRefUUID AS _extract_internalRefUUID#21525724, product#21524609.internalRefUUID AS _extract_internalRefUUID#21525725, productionAspect#21524611.productMovementPlants.unitOfIssue.code AS _extract_code#21525726, productionAspect#21524611.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21525727]
Input [4]: [plant#21524608, product#21524609, productionAspect#21524611, systemId#21524606]
(2114) Exchange
Input [4]: [_extract_internalRefUUID#21525724, _extract_internalRefUUID#21525725, _extract_code#21525726, _extract_internalRefUUID#21525727]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263901]
(2115) Project
Output [4]: [_extract_code#21525726, _extract_internalRefUUID#21525727, _extract_internalRefUUID#21525725, _extract_internalRefUUID#21525724]
Input [4]: [_extract_internalRefUUID#21525724, _extract_internalRefUUID#21525725, _extract_code#21525726, _extract_internalRefUUID#21525727]
(2116) BroadcastExchange
Input [4]: [_extract_code#21525726, _extract_internalRefUUID#21525727, _extract_internalRefUUID#21525725, _extract_internalRefUUID#21525724]
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=21265703]
(2117) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524602, ), isnull(product#21524602), coalesce(plant#21524603, ), isnull(plant#21524603)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21525725, ), isnull(_extract_internalRefUUID#21525725), coalesce(_extract_internalRefUUID#21525724, ), isnull(_extract_internalRefUUID#21525724)]
Join type: LeftOuter
Join condition: None
(2118) Project
Output [5]: [product#21524602, plant#21524603, orderDateTime#21524604, _extract_code#21525726, _extract_internalRefUUID#21525727]
Input [7]: [product#21524602, plant#21524603, orderDateTime#21524604, _extract_code#21525726, _extract_internalRefUUID#21525727, _extract_internalRefUUID#21525725, _extract_internalRefUUID#21525724]
(2119) Scan parquet
Output [4]: [internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622, systemId#21524615]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(2120) Filter
Input [4]: [internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622, systemId#21524615]
Condition : isnotnull(internalUUID#21524616)
(2121) Project
Output [3]: [internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622]
Input [4]: [internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622, systemId#21524615]
(2122) Exchange
Input [3]: [internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263908]
(2123) BroadcastExchange
Input [3]: [internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21265707]
(2124) BroadcastHashJoin
Left keys [1]: [product#21524602]
Right keys [1]: [internalUUID#21524616]
Join type: LeftOuter
Join condition: None
(2125) Project
Output [4]: [product#21524602, plant#21524603, orderDateTime#21524604, filter(unitOfMeasureConversions#21524622, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21525726) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21525727)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21524620.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21524620.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21524627]
Input [8]: [product#21524602, plant#21524603, orderDateTime#21524604, _extract_code#21525726, _extract_internalRefUUID#21525727, internalUUID#21524616, baseUnitOfMeasure#21524620, unitOfMeasureConversions#21524622]
(2126) Generate
Input [4]: [product#21524602, plant#21524603, orderDateTime#21524604, filteredUnitOfMeasureConversions#21524627]
Arguments: explode(filteredUnitOfMeasureConversions#21524627.quantityNumerator), [product#21524602, plant#21524603, orderDateTime#21524604, filteredUnitOfMeasureConversions#21524627], true, [quantityNumerator#21524628]
(2127) Project
Output [4]: [product#21524602, plant#21524603, orderDateTime#21524604, filteredUnitOfMeasureConversions#21524627.quantityDenominator AS _extract_quantityDenominator#21525282]
Input [5]: [product#21524602, plant#21524603, orderDateTime#21524604, filteredUnitOfMeasureConversions#21524627, quantityNumerator#21524628]
(2128) Generate
Input [4]: [product#21524602, plant#21524603, orderDateTime#21524604, _extract_quantityDenominator#21525282]
Arguments: explode(_extract_quantityDenominator#21525282), [product#21524602, plant#21524603, orderDateTime#21524604], true, [quantityDenominator#21524629]
(2129) Project
Output [3]: [product#21524602, plant#21524603, orderDateTime#21524604]
Input [4]: [product#21524602, plant#21524603, orderDateTime#21524604, quantityDenominator#21524629]
(2130) Sort
Input [3]: [product#21524602, plant#21524603, orderDateTime#21524604]
Arguments: [product#21524602 ASC NULLS FIRST, plant#21524603 ASC NULLS FIRST], false, 0
(2131) SortMergeJoin
Left keys [2]: [productUuid#21524596, plantUuid#21524594]
Right keys [2]: [product#21524602, plant#21524603]
Join type: Inner
Join condition: (calculationDateTime#21524590 <= orderDateTime#21524604)
(2132) Project
Output [4]: [plantUuid#21524594 AS plant#21524632, productUuid#21524596 AS product#21524633, storageLocId#21524597, calculationDateTime#21524590]
Input [7]: [plantUuid#21524594, productUuid#21524596, calculationDateTime#21524590, storageLocId#21524597, product#21524602, plant#21524603, orderDateTime#21524604]
(2133) HashAggregate
Input [4]: [plant#21524632, product#21524633, storageLocId#21524597, calculationDateTime#21524590]
Keys [3]: [plant#21524632, product#21524633, storageLocId#21524597]
Functions [1]: [partial_max(calculationDateTime#21524590)]
Aggregate Attributes [1]: [max#21526690]
Results [4]: [plant#21524632, product#21524633, storageLocId#21524597, max#21526691]
(2134) HashAggregate
Input [4]: [plant#21524632, product#21524633, storageLocId#21524597, max#21526691]
Keys [3]: [plant#21524632, product#21524633, storageLocId#21524597]
Functions [1]: [max(calculationDateTime#21524590)]
Aggregate Attributes [1]: [max(calculationDateTime#21524590)#21518235]
Results [4]: [plant#21524632, product#21524633, storageLocId#21524597, max(calculationDateTime#21524590)#21518235 AS max_calc_datetime#21524634]
(2135) Exchange
Input [4]: [plant#21524632, product#21524633, storageLocId#21524597, max_calc_datetime#21524634]
Arguments: hashpartitioning(coalesce(plant#21524632, ), isnull(plant#21524632), coalesce(product#21524633, ), isnull(product#21524633), coalesce(storageLocId#21524597, ), isnull(storageLocId#21524597), coalesce(max_calc_datetime#21524634, 1970-01-01 00:00:00), isnull(max_calc_datetime#21524634), 25), ENSURE_REQUIREMENTS, [plan_id=21265726]
(2136) Sort
Input [4]: [plant#21524632, product#21524633, storageLocId#21524597, max_calc_datetime#21524634]
Arguments: [coalesce(plant#21524632, ) ASC NULLS FIRST, isnull(plant#21524632) ASC NULLS FIRST, coalesce(product#21524633, ) ASC NULLS FIRST, isnull(product#21524633) ASC NULLS FIRST, coalesce(storageLocId#21524597, ) ASC NULLS FIRST, isnull(storageLocId#21524597) ASC NULLS FIRST, coalesce(max_calc_datetime#21524634, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21524634) ASC NULLS FIRST], false, 0
(2137) SortMergeJoin
Left keys [8]: [coalesce(plant#21524523, ), isnull(plant#21524523), coalesce(product#21524524, ), isnull(product#21524524), coalesce(storageLocId#21524488, ), isnull(storageLocId#21524488), coalesce(calculationDateTime#21524481, 1970-01-01 00:00:00), isnull(calculationDateTime#21524481)]
Right keys [8]: [coalesce(plant#21524632, ), isnull(plant#21524632), coalesce(product#21524633, ), isnull(product#21524633), coalesce(storageLocId#21524597, ), isnull(storageLocId#21524597), coalesce(max_calc_datetime#21524634, 1970-01-01 00:00:00), isnull(max_calc_datetime#21524634)]
Join type: Inner
Join condition: None
(2138) Project
Output [4]: [plant#21524523, product#21524524, calculationDateTime#21524481, quantity#21524490]
Input [9]: [plant#21524523, product#21524524, storageLocId#21524488, calculationDateTime#21524481, quantity#21524490, plant#21524632, product#21524633, storageLocId#21524597, max_calc_datetime#21524634]
(2139) HashAggregate
Input [4]: [plant#21524523, product#21524524, calculationDateTime#21524481, quantity#21524490]
Keys [2]: [product#21524524, plant#21524523]
Functions [2]: [partial_min(calculationDateTime#21524481), partial_sum(quantity#21524490)]
Aggregate Attributes [2]: [min#21526680, sum#21526681]
Results [4]: [product#21524524, plant#21524523, min#21526682, sum#21526683]
(2140) Exchange
Input [4]: [product#21524524, plant#21524523, min#21526682, sum#21526683]
Arguments: hashpartitioning(product#21524524, plant#21524523, 25), ENSURE_REQUIREMENTS, [plan_id=21265733]
(2141) HashAggregate
Input [4]: [product#21524524, plant#21524523, min#21526682, sum#21526683]
Keys [2]: [product#21524524, plant#21524523]
Functions [2]: [min(calculationDateTime#21524481), sum(quantity#21524490)]
Aggregate Attributes [2]: [min(calculationDateTime#21524481)#21518361, sum(quantity#21524490)#21518360]
Results [4]: [product#21524524, plant#21524523, min(calculationDateTime#21524481)#21518361 AS minCalculationDateTime#21524636, round(sum(quantity#21524490)#21518360, 0) AS roundedQuantitySum#21524637]
(2142) Sort
Input [4]: [product#21524524, plant#21524523, minCalculationDateTime#21524636, roundedQuantitySum#21524637]
Arguments: [product#21524524 ASC NULLS FIRST, plant#21524523 ASC NULLS FIRST], false, 0
(2143) SortMergeJoin
Left keys [2]: [product#21524386, plant#21524387]
Right keys [2]: [product#21524524, plant#21524523]
Join type: LeftOuter
Join condition: None
(2144) Project
Output [7]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, CASE WHEN isnotnull(minCalculationDateTime#21524636) THEN minCalculationDateTime#21524636 ELSE orderDateTime#21524388 END AS stockDatetime#21524638, CASE WHEN isnotnull(roundedQuantitySum#21524637) THEN array(roundedQuantitySum#21524637) ELSE [0.0] END AS stockBatchQuantities#21524639]
Input [9]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, product#21524524, plant#21524523, minCalculationDateTime#21524636, roundedQuantitySum#21524637]
(2145) Scan parquet
Output [9]: [product#21524641, plant#21524642, demandChannel#21524643, demandStream#21524644, considerVariance#21524645, demandTimeBuckets#21524646, demandPointInTimeStart#21524647, demandPointInTimeEnd#21524648, demandPointInTime#21524649]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001651/0_1_10000001651]
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>>>
(2146) BroadcastExchange
Input [9]: [product#21524641, plant#21524642, demandChannel#21524643, demandStream#21524644, considerVariance#21524645, demandTimeBuckets#21524646, demandPointInTimeStart#21524647, demandPointInTimeEnd#21524648, demandPointInTime#21524649]
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=21265743]
(2147) BroadcastHashJoin
Left keys [4]: [coalesce(plant#21524387, ), isnull(plant#21524387), coalesce(product#21524386, ), isnull(product#21524386)]
Right keys [4]: [coalesce(plant#21524642, ), isnull(plant#21524642), coalesce(product#21524641, ), isnull(product#21524641)]
Join type: LeftOuter
Join condition: None
(2148) Project
Output [8]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, CASE WHEN isnotnull(product#21524641) THEN struct(demandChannel, demandChannel#21524643, demandStream, demandStream#21524644, considerVariance, considerVariance#21524645, demandTimeBuckets, demandTimeBuckets#21524646, demandPointInTimeStart, demandPointInTimeStart#21524647, demandPointInTimeEnd, demandPointInTimeEnd#21524648, demandPointInTime, demandPointInTime#21524649) END AS rawDemands#21524650]
Input [16]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, product#21524641, plant#21524642, demandChannel#21524643, demandStream#21524644, considerVariance#21524645, demandTimeBuckets#21524646, demandPointInTimeStart#21524647, demandPointInTimeEnd#21524648, demandPointInTime#21524649]
(2149) ObjectHashAggregate
Input [8]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, rawDemands#21524650]
Keys [8]: [product#21524386, plant#21524387, orderDateTime#21524388, knownfloatingpointnormalized(if (isnull(productPlant#21524398)) null else named_struct(systemId, productPlant#21524398.systemId, internalUUID, productPlant#21524398.internalUUID, plant, productPlant#21524398.plant, product, productPlant#21524398.product, blockedForReplenishmentStartingFrom, productPlant#21524398.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21524398.productionAspect)) null else named_struct(productMovementPlants, productPlant#21524398.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21524398.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21524398.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21524398.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21524398.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21524398.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21524398.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21524398.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21524398.salesPlant, listing, productPlant#21524398.listing)) AS productPlant#21524398, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21524415)) AS outboundUnit#21524415, stockDatetime#21524638, knownfloatingpointnormalized(transform(stockBatchQuantities#21524639, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21526677)), lambda arg#21526677, false))) AS stockBatchQuantities#21524639, [7226582400000000] AS [7226582400000000]#21526676]
Functions [1]: [partial_collect_list(rawDemands#21524650, 0, 0)]
Aggregate Attributes [1]: [buf#21526678]
Results [9]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, [7226582400000000]#21526676, buf#21526679]
(2150) ObjectHashAggregate
Input [9]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, [7226582400000000]#21526676, buf#21526679]
Keys [8]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, [7226582400000000]#21526676]
Functions [1]: [collect_list(rawDemands#21524650, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21524650, 0, 0)#21518429]
Results [8]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, collect_list(rawDemands#21524650, 0, 0)#21518429 AS rawDemands#21524651]
(2151) Scan parquet
Output [3]: [internalUUID#21524653, address#21524659, systemId#21524652]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>
(2152) Project
Output [2]: [internalUUID#21524653, address#21524659.timeZone.code AS timezonecode#21524664]
Input [3]: [internalUUID#21524653, address#21524659, systemId#21524652]
(2153) Exchange
Input [2]: [internalUUID#21524653, timezonecode#21524664]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263932]
(2154) BroadcastExchange
Input [2]: [internalUUID#21524653, timezonecode#21524664]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21265749]
(2155) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21524387, ), isnull(plant#21524387)]
Right keys [2]: [coalesce(internalUUID#21524653, ), isnull(internalUUID#21524653)]
Join type: LeftOuter
Join condition: None
(2156) Project
Output [10]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21524640, rawDemands#21524651, CASE WHEN isnotnull(timezonecode#21524664) THEN timezonecode#21524664 ELSE UTC END AS timezonecode#21524665]
Input [10]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, rawDemands#21524651, internalUUID#21524653, timezonecode#21524664]
(2157) DeserializeToObject
Input [10]: [product#21524386, plant#21524387, orderDateTime#21524388, productPlant#21524398, outboundUnit#21524415, stockDatetime#21524638, stockBatchQuantities#21524639, stockBatchShelfLifeEndDatetimes#21524640, rawDemands#21524651, timezonecode#21524665]
Arguments: createexternalrow(invoke(product#21524386.toString()), invoke(plant#21524387.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21524388)), if (isnull(productPlant#21524398)) null else createexternalrow(invoke(productPlant#21524398.systemId.toString()), invoke(productPlant#21524398.internalUUID.toString()), if (isnull(productPlant#21524398.plant)) null else createexternalrow(invoke(productPlant#21524398.plant.internalRefUUID.toString()), invoke(productPlant#21524398.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21524398.product)) null else createexternalrow(invoke(productPlant#21524398.product.internalRefUUID.toString()), invoke(productPlant#21524398.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21524398.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21524398.productionAspect)) null else createexternalrow(if (isnull(productPlant#21524398.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21524398.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21524398.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21524398.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#21524398.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21524398.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21524398.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21524398.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21524398.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21524398.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21524398.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21524398.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21524398.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21524398.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21524398.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21524398.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21524398.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21524398.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21524398.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21524398.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21524398.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21524398.salesPlant)) null else createexternalrow(if (isnull(productPlant#21524398.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21524398.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21524398.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#21524398.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21524415)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21524638)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#21524639, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#21524640, 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#21524651, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21524665.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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21519488: org.apache.spark.sql.Row
(2158) MapElements
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(2159) SerializeFromObject
Input [1]: [obj#21519493]
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#21524666, 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#21524667]
(2160) Exchange
Input [2]: [product#21524666, plant#21524667]
Arguments: hashpartitioning(coalesce(plant#21524667, ), isnull(plant#21524667), coalesce(product#21524666, ), isnull(product#21524666), 25), ENSURE_REQUIREMENTS, [plan_id=21265758]
(2161) Sort
Input [2]: [product#21524666, plant#21524667]
Arguments: [coalesce(plant#21524667, ) ASC NULLS FIRST, isnull(plant#21524667) ASC NULLS FIRST, coalesce(product#21524666, ) ASC NULLS FIRST, isnull(product#21524666) ASC NULLS FIRST], false, 0
(2162) SortMergeJoin
Left keys [4]: [coalesce(plant#21524132, ), isnull(plant#21524132), coalesce(product#21524131, ), isnull(product#21524131)]
Right keys [4]: [coalesce(plant#21524667, ), isnull(plant#21524667), coalesce(product#21524666, ), isnull(product#21524666)]
Join type: LeftOuter
Join condition: None
(2163) Project
Output [3]: [product#21524131, plant#21524132, stockDatetime#21524383]
Input [5]: [product#21524131, plant#21524132, stockDatetime#21524383, product#21524666, plant#21524667]
(2164) Scan parquet
Output [6]: [internalUUID#21524671, id#21524672, supplier#21524674, isMarkedForDeletion#21524677, items#21524678, systemId#21524670]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.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>>>>>
(2165) Filter
Input [6]: [internalUUID#21524671, id#21524672, supplier#21524674, isMarkedForDeletion#21524677, items#21524678, systemId#21524670]
Condition : (((isnotnull(isMarkedForDeletion#21524677) AND NOT isMarkedForDeletion#21524677) AND (size(items#21524678, true) > 0)) AND isnotnull(items#21524678))
(2166) Project
Output [4]: [internalUUID#21524671, id#21524672, supplier#21524674, items#21524678]
Input [6]: [internalUUID#21524671, id#21524672, supplier#21524674, isMarkedForDeletion#21524677, items#21524678, systemId#21524670]
(2167) Exchange
Input [4]: [internalUUID#21524671, id#21524672, supplier#21524674, items#21524678]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21263943]
(2168) Generate
Input [4]: [internalUUID#21524671, id#21524672, supplier#21524674, items#21524678]
Arguments: explode(items#21524678), [internalUUID#21524671, id#21524672, supplier#21524674], false, [item#21524679]
(2169) Filter
Input [4]: [internalUUID#21524671, id#21524672, supplier#21524674, item#21524679]
Condition : ((((isnotnull(item#21524679.deletionIndicator) AND isnotnull(item#21524679.completeIndicator)) AND isnotnull(item#21524679.returnIndicator)) AND ((NOT item#21524679.deletionIndicator AND NOT item#21524679.completeIndicator) AND NOT item#21524679.returnIndicator)) AND isnotnull(item#21524679.product.internalRefUUID))
(2170) Project
Output [9]: [id#21524672, internalUUID#21524671, supplier#21524674.internalRefUUID AS supplierUuid#21524680, item#21524679.product.internalRefUUID AS product#21524682, item#21524679.quantityUnit.code AS quantityUom#21524684, item#21524679.quantityUnit.internalRefUUID AS quantityUomUuid#21524685, item#21524679.quantityNumerator AS quantityNumerator#21524686, item#21524679.quantityDenominator AS quantityDenominator#21524687, item#21524679.scheduleLines AS scheduleLines#21524688]
Input [4]: [internalUUID#21524671, id#21524672, supplier#21524674, item#21524679]
(2171) BroadcastExchange
Input [9]: [id#21524672, internalUUID#21524671, supplierUuid#21524680, product#21524682, quantityUom#21524684, quantityUomUuid#21524685, quantityNumerator#21524686, quantityDenominator#21524687, scheduleLines#21524688]
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=21265764]
(2172) BroadcastHashJoin
Left keys [4]: [coalesce(product#21524131, ), isnull(product#21524131), coalesce(plant#21524132, ), isnull(plant#21524132)]
Right keys [4]: [coalesce(product#21524682, ), isnull(product#21524682), coalesce(supplierUuid#21524680, ), isnull(supplierUuid#21524680)]
Join type: Inner
Join condition: None
(2173) Project
Output [3]: [product#21524682, plant#21524132, filter(transform(filter(transform(scheduleLines#21524688, lambdafunction(struct(openQty, (greatest((lambda x_1556#21521466.quantity - coalesce(lambda x_1556#21521466.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_1556#21521466.productAvailabilityDateTime, lambda x_1556#21521466.deliveryAt)), lambda x_1556#21521466, false)), lambdafunction((lambda x_1557#21521467.availabilityDatetime < stockDatetime#21524383), lambda x_1557#21521467, false)), lambdafunction(struct(documentId, id#21524672, documentUuid, internalUUID#21524671, openQty, lambda x_1558#21521468.openQty, openQtyInBaseUnit, ((lambda x_1558#21521468.openQty * quantityNumerator#21524686) / quantityDenominator#21524687), qtyUom, quantityUom#21524684, qtyUomUuid, quantityUomUuid#21524685, availabilityDatetime, lambda x_1558#21521468.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_1558#21521468, false)), lambdafunction(NOT (lambda x_1559#21521469.openQty = 0.0), lambda x_1559#21521469, false)) AS openGoodsMovements#21524690]
Input [12]: [product#21524131, plant#21524132, stockDatetime#21524383, id#21524672, internalUUID#21524671, supplierUuid#21524680, product#21524682, quantityUom#21524684, quantityUomUuid#21524685, quantityNumerator#21524686, quantityDenominator#21524687, scheduleLines#21524688]
(2174) ObjectHashAggregate
Input [3]: [product#21524682, plant#21524132, openGoodsMovements#21524690]
Keys [2]: [product#21524682, plant#21524132]
Functions [1]: [partial_collect_list(openGoodsMovements#21524690, 0, 0)]
Aggregate Attributes [1]: [buf#21526658]
Results [3]: [product#21524682, plant#21524132, buf#21526659]
(2175) Exchange
Input [3]: [product#21524682, plant#21524132, buf#21526659]
Arguments: hashpartitioning(product#21524682, plant#21524132, 25), ENSURE_REQUIREMENTS, [plan_id=21265769]
(2176) ObjectHashAggregate
Input [3]: [product#21524682, plant#21524132, buf#21526659]
Keys [2]: [product#21524682, plant#21524132]
Functions [1]: [collect_list(openGoodsMovements#21524690, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#21524690, 0, 0)#21521485]
Results [3]: [product#21524682, plant#21524132, flatten(collect_list(openGoodsMovements#21524690, 0, 0)#21521485) AS openGoodsMovements#21524691]
(2177) Filter
Input [3]: [product#21524682, plant#21524132, openGoodsMovements#21524691]
Condition : (size(openGoodsMovements#21524691, false) > 0)
(2178) Union
(2179) ObjectHashAggregate
Input [3]: [product#21524119, plant#21524118, openGoodsMovements#21524130]
Keys [2]: [product#21524119, plant#21524118]
Functions [1]: [partial_collect_list(openGoodsMovements#21524130, 0, 0)]
Aggregate Attributes [1]: [buf#21526656]
Results [3]: [product#21524119, plant#21524118, buf#21526657]
(2180) Exchange
Input [3]: [product#21524119, plant#21524118, buf#21526657]
Arguments: hashpartitioning(product#21524119, plant#21524118, 25), ENSURE_REQUIREMENTS, [plan_id=21265775]
(2181) ObjectHashAggregate
Input [3]: [product#21524119, plant#21524118, buf#21526657]
Keys [2]: [product#21524119, plant#21524118]
Functions [1]: [collect_list(openGoodsMovements#21524130, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#21524130, 0, 0)#21522090]
Results [3]: [product#21524119, plant#21524118, flatten(collect_list(openGoodsMovements#21524130, 0, 0)#21522090) AS openGoodsMovements#21524692]
(2182) Project
Output [5]: [product#21524119, plant#21524118, openGoodsMovements#21524692.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#21525651, openGoodsMovements#21524692.availabilityDatetime AS _extract_availabilityDatetime#21525652, openGoodsMovements#21524692.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#21525653]
Input [3]: [product#21524119, plant#21524118, openGoodsMovements#21524692]
(2183) Sort
Input [5]: [product#21524119, plant#21524118, _extract_openQtyInBaseUnit#21525651, _extract_availabilityDatetime#21525652, _extract_shelfLifeEndDatetime#21525653]
Arguments: [product#21524119 ASC NULLS FIRST, plant#21524118 ASC NULLS FIRST], false, 0
(2184) SortMergeJoin
Left keys [2]: [product#21522970, plant#21522971]
Right keys [2]: [product#21524119, plant#21524118]
Join type: LeftOuter
Join condition: None
(2185) Project
Output [15]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21523224, dayBucketDemands#21523507, pointInTimeDemands#21523508, coalesce(_extract_openQtyInBaseUnit#21525651, []) AS openGoodsMovementQuantities#21524693, coalesce(_extract_availabilityDatetime#21525652, []) AS openGoodsMovementAvailabilityDatetimes#21524694, coalesce(_extract_shelfLifeEndDatetime#21525653, []) AS openGoodsMovementShelfLifeEndDatetimes#21524695, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#21524696, array_sort(filter(CASE WHEN isnotnull(productPlant#21522982.listing) THEN productPlant#21522982.listing ELSE [] END, lambdafunction(lambda listing#21522916.isListed, lambda listing#21522916, false)), lambdafunction(if ((isnull(lambda left#21522918) AND isnull(lambda right#21522919))) 0 else if (isnull(lambda left#21522918)) 1 else if (isnull(lambda right#21522919)) -1 else if ((lambda left#21522918 < lambda right#21522919)) -1 else if ((lambda left#21522918 > lambda right#21522919)) 1 else 0, lambda left#21522918, lambda right#21522919, false), false) AS listing#21522917]
Input [14]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, dayBucketDemands#21523507, pointInTimeDemands#21523508, product#21524119, plant#21524118, _extract_openQtyInBaseUnit#21525651, _extract_availabilityDatetime#21525652, _extract_shelfLifeEndDatetime#21525653]
(2186) DeserializeToObject
Input [15]: [product#21522970, plant#21522971, orderDateTime#21522972, productPlant#21522982, outboundUnit#21522999, stockDatetime#21523222, stockBatchQuantities#21523223, stockBatchShelfLifeEndDatetimes#21523224, dayBucketDemands#21523507, pointInTimeDemands#21523508, openGoodsMovementQuantities#21524693, openGoodsMovementAvailabilityDatetimes#21524694, openGoodsMovementShelfLifeEndDatetimes#21524695, configuration#21524696, listing#21522917]
Arguments: createexternalrow(invoke(product#21522970.toString()), invoke(plant#21522971.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21522972)), if (isnull(productPlant#21522982)) null else createexternalrow(invoke(productPlant#21522982.systemId.toString()), invoke(productPlant#21522982.internalUUID.toString()), if (isnull(productPlant#21522982.plant)) null else createexternalrow(invoke(productPlant#21522982.plant.internalRefUUID.toString()), invoke(productPlant#21522982.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21522982.product)) null else createexternalrow(invoke(productPlant#21522982.product.internalRefUUID.toString()), invoke(productPlant#21522982.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21522982.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21522982.productionAspect)) null else createexternalrow(if (isnull(productPlant#21522982.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21522982.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21522982.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#21522982.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21522982.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21522982.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21522982.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21522982.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21522982.salesPlant)) null else createexternalrow(if (isnull(productPlant#21522982.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21522982.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21522982.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#21522982.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21522999)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21523222)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#21523223, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#21523224, 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#21523507, 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#21523508, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#21524693, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#21524694, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#21524695, 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#21524696, 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#21522917, 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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(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#21522950: org.apache.spark.sql.Row
(2187) MapElements
Input [1]: [obj#21522950]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801fa9788@49eab929, obj#21522957: org.apache.spark.sql.Row
(2188) SerializeFromObject
Input [1]: [obj#21522957]
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#21522964, 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#21522965, 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#21522966, 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#21522967, 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#21522968, 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#21522969]
(2189) Filter
Input [6]: [product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
Condition : (isnotnull(product#21522964) AND isnotnull(plant#21522965))
(2190) Exchange
Input [6]: [product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
Arguments: hashpartitioning(product#21522964, plant#21522965, 25), ENSURE_REQUIREMENTS, [plan_id=21265791]
(2191) Sort
Input [6]: [product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
Arguments: [product#21522964 ASC NULLS FIRST, plant#21522965 ASC NULLS FIRST], false, 0
(2192) SortMergeJoin
Left keys [2]: [product#21517975, plant#21517976]
Right keys [2]: [product#21522964, plant#21522965]
Join type: LeftOuter
Join condition: None
(2193) Project
Output [16]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21518398, dayBucketDemands#21519500, pointInTimeDemands#21519501, openGoodsMovementQuantities#21522670, openGoodsMovementAvailabilityDatetimes#21522671, openGoodsMovementShelfLifeEndDatetimes#21522672, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#21522773, CASE WHEN isnotnull(timeDependentSettingsName#21522966) THEN timeDependentSettingsName#21522966 ELSE [] END AS timeDependentSettingsName#21524823, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#21522967) THEN timeDependentSettingsStartDatetime#21522967 ELSE [] END AS timeDependentSettingsStartDatetime#21524824, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#21522968) THEN timeDependentSettingsEndDatetime#21522968 ELSE [] END AS timeDependentSettingsEndDatetime#21524825, CASE WHEN isnotnull(timeDependentSettingsValue#21522969) THEN timeDependentSettingsValue#21522969 ELSE [] END AS timeDependentSettingsValue#21524826]
Input [16]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, dayBucketDemands#21519500, pointInTimeDemands#21519501, openGoodsMovementQuantities#21522670, openGoodsMovementAvailabilityDatetimes#21522671, openGoodsMovementShelfLifeEndDatetimes#21522672, product#21522964, plant#21522965, timeDependentSettingsName#21522966, timeDependentSettingsStartDatetime#21522967, timeDependentSettingsEndDatetime#21522968, timeDependentSettingsValue#21522969]
(2194) AdaptiveSparkPlan
Output [16]: [product#21517975, plant#21517976, outboundUnit#21518060, stockDatetime#21518396, stockBatchQuantities#21518397, stockBatchShelfLifeEndDatetimes#21518398, dayBucketDemands#21519500, pointInTimeDemands#21519501, openGoodsMovementQuantities#21522670, openGoodsMovementAvailabilityDatetimes#21522671, openGoodsMovementShelfLifeEndDatetimes#21522672, configuration#21522773, timeDependentSettingsName#21524823, timeDependentSettingsStartDatetime#21524824, timeDependentSettingsEndDatetime#21524825, timeDependentSettingsValue#21524826]
Arguments: isFinalPlan=false