== Physical Plan ==
AdaptiveSparkPlan (1983)
+- == Current Plan ==
ResultQueryStage (248)
+- * Project (247)
+- * Project (246)
+- AQEShuffleRead (245)
+- ShuffleQueryStage (244), Statistics(sizeInBytes=419.0 KiB, rowCount=1.29E+3)
+- Exchange (243)
+- * Project (242)
+- * BroadcastHashJoin LeftOuter BuildRight (241)
:- AQEShuffleRead (190)
: +- ShuffleQueryStage (189), Statistics(sizeInBytes=171.9 KiB, rowCount=1.29E+3)
: +- Exchange (188)
: +- * Project (187)
: +- * BroadcastHashJoin LeftOuter BuildRight (186)
: :- * Project (38)
: : +- * Project (37)
: : +- * Generate (36)
: : +- * Generate (35)
: : +- * Project (34)
: : +- Project (33)
: : +- * BroadcastHashJoin LeftOuter BuildRight (32)
: : :- * Project (23)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (22)
: : : :- * Project (14)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : +- Exchange (3)
: : : : : +- * ColumnarToRow (2)
: : : : : +- Scan parquet (1)
: : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : +- BroadcastExchange (11)
: : : : +- * Project (10)
: : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=197.7 KiB, rowCount=1.43E+3)
: : : : +- Exchange (8)
: : : : +- * Project (7)
: : : : +- * ColumnarToRow (6)
: : : : +- Scan parquet (5)
: : : +- BroadcastQueryStage (21), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : +- BroadcastExchange (20)
: : : +- ShuffleQueryStage (19), Statistics(sizeInBytes=1152.0 B, rowCount=24)
: : : +- Exchange (18)
: : : +- * Project (17)
: : : +- * ColumnarToRow (16)
: : : +- Scan parquet (15)
: : +- BroadcastQueryStage (31), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : +- BroadcastExchange (30)
: : +- ShuffleQueryStage (29), Statistics(sizeInBytes=87.9 KiB, rowCount=145)
: : +- Exchange (28)
: : +- * Project (27)
: : +- * Filter (26)
: : +- * ColumnarToRow (25)
: : +- Scan parquet (24)
: +- BroadcastQueryStage (185), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: +- BroadcastExchange (184)
: +- * HashAggregate (183)
: +- AQEShuffleRead (182)
: +- ShuffleQueryStage (181), Statistics(sizeInBytes=38.4 KiB, rowCount=378)
: +- Exchange (180)
: +- * HashAggregate (179)
: +- * Project (178)
: +- * BroadcastHashJoin Inner BuildRight (177)
: :- AQEShuffleRead (126)
: : +- ShuffleQueryStage (125), Statistics(sizeInBytes=44.3 KiB, rowCount=378)
: : +- Exchange (124)
: : +- * Project (123)
: : +- * BroadcastHashJoin Inner BuildLeft (122)
: : :- BroadcastQueryStage (100), Statistics(sizeInBytes=2.0 MiB, rowCount=415)
: : : +- BroadcastExchange (99)
: : : +- AQEShuffleRead (98)
: : : +- ShuffleQueryStage (97), Statistics(sizeInBytes=48.6 KiB, rowCount=415)
: : : +- Exchange (96)
: : : +- * Project (95)
: : : +- * Filter (94)
: : : +- * Generate (93)
: : : +- * Filter (92)
: : : +- ObjectHashAggregate (91)
: : : +- ObjectHashAggregate (90)
: : : +- Generate (89)
: : : +- * BroadcastHashJoin Inner BuildLeft (88)
: : : :- BroadcastQueryStage (46), Statistics(sizeInBytes=2.0 MiB, rowCount=419)
: : : : +- BroadcastExchange (45)
: : : : +- ShuffleQueryStage (44), Statistics(sizeInBytes=252.4 KiB, rowCount=419)
: : : : +- Exchange (43)
: : : : +- * Project (42)
: : : : +- * Filter (41)
: : : : +- * ColumnarToRow (40)
: : : : +- Scan parquet (39)
: : : +- * Project (87)
: : : +- * BroadcastHashJoin Inner BuildLeft (86)
: : : :- BroadcastQueryStage (59), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : +- BroadcastExchange (58)
: : : : +- * Project (57)
: : : : +- * Generate (56)
: : : : +- * Project (55)
: : : : +- * Filter (54)
: : : : +- * Generate (53)
: : : : +- ShuffleQueryStage (52), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : +- Exchange (51)
: : : : +- * Project (50)
: : : : +- * Filter (49)
: : : : +- * ColumnarToRow (48)
: : : : +- Scan parquet (47)
: : : +- * HashAggregate (85)
: : : +- AQEShuffleRead (84)
: : : +- ShuffleQueryStage (83), Statistics(sizeInBytes=16.5 KiB, rowCount=353)
: : : +- Exchange (82)
: : : +- * HashAggregate (81)
: : : +- * Project (80)
: : : +- * Generate (79)
: : : +- * Project (78)
: : : +- * Generate (77)
: : : +- Project (76)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (75)
: : : :- * Project (72)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (71)
: : : : :- * Project (68)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (67)
: : : : : :- ShuffleQueryStage (64), Statistics(sizeInBytes=111.2 KiB, rowCount=1.29E+3)
: : : : : : +- Exchange (63)
: : : : : : +- * Filter (62)
: : : : : : +- * ColumnarToRow (61)
: : : : : : +- Scan parquet (60)
: : : : : +- BroadcastQueryStage (66), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- ReusedExchange (65)
: : : : +- BroadcastQueryStage (70), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : +- ReusedExchange (69)
: : : +- BroadcastQueryStage (74), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- ReusedExchange (73)
: : +- * Project (121)
: : +- * Generate (120)
: : +- * Project (119)
: : +- * Generate (118)
: : +- Project (117)
: : +- * BroadcastHashJoin LeftOuter BuildRight (116)
: : :- * Project (113)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (112)
: : : :- * Project (109)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (108)
: : : : :- ShuffleQueryStage (105), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : +- Exchange (104)
: : : : : +- * Filter (103)
: : : : : +- * ColumnarToRow (102)
: : : : : +- Scan parquet (101)
: : : : +- BroadcastQueryStage (107), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : +- ReusedExchange (106)
: : : +- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : +- ReusedExchange (110)
: : +- BroadcastQueryStage (115), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : +- ReusedExchange (114)
: +- BroadcastQueryStage (176), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: +- BroadcastExchange (175)
: +- AQEShuffleRead (174)
: +- ShuffleQueryStage (173), Statistics(sizeInBytes=41.3 KiB, rowCount=378)
: +- Exchange (172)
: +- * HashAggregate (171)
: +- * HashAggregate (170)
: +- * Project (169)
: +- * BroadcastHashJoin Inner BuildLeft (168)
: :- BroadcastQueryStage (149), Statistics(sizeInBytes=2.0 MiB, rowCount=415)
: : +- BroadcastExchange (148)
: : +- AQEShuffleRead (147)
: : +- ShuffleQueryStage (146), Statistics(sizeInBytes=45.4 KiB, rowCount=415)
: : +- Exchange (145)
: : +- * Project (144)
: : +- * Filter (143)
: : +- * Generate (142)
: : +- * Filter (141)
: : +- ObjectHashAggregate (140)
: : +- ObjectHashAggregate (139)
: : +- Generate (138)
: : +- * BroadcastHashJoin Inner BuildLeft (137)
: : :- BroadcastQueryStage (128), Statistics(sizeInBytes=2.0 MiB, rowCount=419)
: : : +- ReusedExchange (127)
: : +- * Project (136)
: : +- * BroadcastHashJoin Inner BuildLeft (135)
: : :- BroadcastQueryStage (130), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : +- ReusedExchange (129)
: : +- * HashAggregate (134)
: : +- AQEShuffleRead (133)
: : +- ShuffleQueryStage (132), Statistics(sizeInBytes=16.5 KiB, rowCount=353)
: : +- ReusedExchange (131)
: +- * Project (167)
: +- * Generate (166)
: +- * Project (165)
: +- * Generate (164)
: +- Project (163)
: +- * BroadcastHashJoin LeftOuter BuildRight (162)
: :- * Project (159)
: : +- * BroadcastHashJoin LeftOuter BuildRight (158)
: : :- * Project (155)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (154)
: : : :- ShuffleQueryStage (151), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : +- ReusedExchange (150)
: : : +- BroadcastQueryStage (153), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : +- ReusedExchange (152)
: : +- BroadcastQueryStage (157), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : +- ReusedExchange (156)
: +- BroadcastQueryStage (161), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: +- ReusedExchange (160)
+- BroadcastQueryStage (240), Statistics(sizeInBytes=2.1 MiB, rowCount=1.29E+3)
+- BroadcastExchange (239)
+- AQEShuffleRead (238)
+- ShuffleQueryStage (237), Statistics(sizeInBytes=358.4 KiB, rowCount=1.29E+3)
+- Exchange (236)
+- * SerializeFromObject (235)
+- * MapElements (234)
+- * DeserializeToObject (233)
+- ObjectHashAggregate (232)
+- ObjectHashAggregate (231)
+- * Project (230)
+- * BroadcastHashJoin LeftOuter BuildRight (229)
:- * Project (223)
: +- * BroadcastHashJoin LeftOuter BuildRight (222)
: :- * Project (219)
: : +- * Project (218)
: : +- * Generate (217)
: : +- * Generate (216)
: : +- * Project (215)
: : +- Project (214)
: : +- * BroadcastHashJoin LeftOuter BuildRight (213)
: : :- * Project (210)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (209)
: : : :- * BroadcastHashJoin LeftOuter BuildRight (201)
: : : : :- ShuffleQueryStage (192), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : +- ReusedExchange (191)
: : : : +- BroadcastQueryStage (200), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : +- BroadcastExchange (199)
: : : : +- * Project (198)
: : : : +- ShuffleQueryStage (197), Statistics(sizeInBytes=1115.4 KiB, rowCount=1.43E+3)
: : : : +- Exchange (196)
: : : : +- * Project (195)
: : : : +- * ColumnarToRow (194)
: : : : +- Scan parquet (193)
: : : +- BroadcastQueryStage (208), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : +- BroadcastExchange (207)
: : : +- ShuffleQueryStage (206), Statistics(sizeInBytes=1728.0 B, rowCount=24)
: : : +- Exchange (205)
: : : +- * Project (204)
: : : +- * ColumnarToRow (203)
: : : +- Scan parquet (202)
: : +- BroadcastQueryStage (212), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : +- ReusedExchange (211)
: +- BroadcastQueryStage (221), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: +- ReusedExchange (220)
+- BroadcastQueryStage (228), Statistics(sizeInBytes=2.1 MiB, rowCount=1.29E+3)
+- BroadcastExchange (227)
+- * Filter (226)
+- * ColumnarToRow (225)
+- Scan parquet (224)
+- == Initial Plan ==
Project (1982)
+- SortMergeJoin LeftOuter (1981)
:- Sort (686)
: +- Exchange (685)
: +- Project (684)
: +- SortMergeJoin LeftOuter (683)
: :- Sort (458)
: : +- Exchange (457)
: : +- Project (456)
: : +- SortMergeJoin LeftOuter (455)
: : :- Sort (272)
: : : +- Project (271)
: : : +- Project (270)
: : : +- Generate (269)
: : : +- Generate (268)
: : : +- Project (267)
: : : +- Project (266)
: : : +- BroadcastHashJoin LeftOuter BuildRight (265)
: : : :- Project (260)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (259)
: : : : :- Project (255)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (254)
: : : : : :- Exchange (249)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (253)
: : : : : +- Project (252)
: : : : : +- Exchange (251)
: : : : : +- Project (250)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (258)
: : : : +- Exchange (257)
: : : : +- Project (256)
: : : : +- Scan parquet (15)
: : : +- BroadcastExchange (264)
: : : +- Exchange (263)
: : : +- Project (262)
: : : +- Filter (261)
: : : +- Scan parquet (24)
: : +- Sort (454)
: : +- HashAggregate (453)
: : +- Exchange (452)
: : +- HashAggregate (451)
: : +- Project (450)
: : +- SortMergeJoin Inner (449)
: : :- Sort (357)
: : : +- Exchange (356)
: : : +- Project (355)
: : : +- SortMergeJoin Inner (354)
: : : :- Sort (326)
: : : : +- Exchange (325)
: : : : +- Project (324)
: : : : +- Filter (323)
: : : : +- Generate (322)
: : : : +- Filter (321)
: : : : +- ObjectHashAggregate (320)
: : : : +- ObjectHashAggregate (319)
: : : : +- Generate (318)
: : : : +- BroadcastHashJoin Inner BuildLeft (317)
: : : : :- BroadcastExchange (276)
: : : : : +- Exchange (275)
: : : : : +- Project (274)
: : : : : +- Filter (273)
: : : : : +- Scan parquet (39)
: : : : +- Project (316)
: : : : +- BroadcastHashJoin Inner BuildLeft (315)
: : : : :- BroadcastExchange (285)
: : : : : +- Project (284)
: : : : : +- Generate (283)
: : : : : +- Project (282)
: : : : : +- Filter (281)
: : : : : +- Generate (280)
: : : : : +- Exchange (279)
: : : : : +- Project (278)
: : : : : +- Filter (277)
: : : : : +- Scan parquet (47)
: : : : +- HashAggregate (314)
: : : : +- Exchange (313)
: : : : +- HashAggregate (312)
: : : : +- Project (311)
: : : : +- Generate (310)
: : : : +- Project (309)
: : : : +- Generate (308)
: : : : +- Project (307)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (306)
: : : : :- Project (300)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (299)
: : : : : :- Project (294)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (293)
: : : : : : :- Exchange (287)
: : : : : : : +- Filter (286)
: : : : : : : +- Scan parquet (60)
: : : : : : +- BroadcastExchange (292)
: : : : : : +- Project (291)
: : : : : : +- Exchange (290)
: : : : : : +- Project (289)
: : : : : : +- Scan parquet (288)
: : : : : +- BroadcastExchange (298)
: : : : : +- Exchange (297)
: : : : : +- Project (296)
: : : : : +- Scan parquet (295)
: : : : +- BroadcastExchange (305)
: : : : +- Exchange (304)
: : : : +- Project (303)
: : : : +- Filter (302)
: : : : +- Scan parquet (301)
: : : +- Sort (353)
: : : +- Project (352)
: : : +- Generate (351)
: : : +- Project (350)
: : : +- Generate (349)
: : : +- Project (348)
: : : +- BroadcastHashJoin LeftOuter BuildRight (347)
: : : :- Project (341)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (340)
: : : : :- Project (335)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (334)
: : : : : :- Exchange (328)
: : : : : : +- Filter (327)
: : : : : : +- Scan parquet (101)
: : : : : +- BroadcastExchange (333)
: : : : : +- Project (332)
: : : : : +- Exchange (331)
: : : : : +- Project (330)
: : : : : +- Scan parquet (329)
: : : : +- BroadcastExchange (339)
: : : : +- Exchange (338)
: : : : +- Project (337)
: : : : +- Scan parquet (336)
: : : +- BroadcastExchange (346)
: : : +- Exchange (345)
: : : +- Project (344)
: : : +- Filter (343)
: : : +- Scan parquet (342)
: : +- Sort (448)
: : +- Exchange (447)
: : +- HashAggregate (446)
: : +- HashAggregate (445)
: : +- Project (444)
: : +- SortMergeJoin Inner (443)
: : :- Sort (414)
: : : +- Exchange (413)
: : : +- Project (412)
: : : +- Filter (411)
: : : +- Generate (410)
: : : +- Filter (409)
: : : +- ObjectHashAggregate (408)
: : : +- ObjectHashAggregate (407)
: : : +- Generate (406)
: : : +- BroadcastHashJoin Inner BuildLeft (405)
: : : :- BroadcastExchange (362)
: : : : +- Exchange (361)
: : : : +- Project (360)
: : : : +- Filter (359)
: : : : +- Scan parquet (358)
: : : +- Project (404)
: : : +- BroadcastHashJoin Inner BuildLeft (403)
: : : :- BroadcastExchange (372)
: : : : +- Project (371)
: : : : +- Generate (370)
: : : : +- Project (369)
: : : : +- Filter (368)
: : : : +- Generate (367)
: : : : +- Exchange (366)
: : : : +- Project (365)
: : : : +- Filter (364)
: : : : +- Scan parquet (363)
: : : +- HashAggregate (402)
: : : +- Exchange (401)
: : : +- HashAggregate (400)
: : : +- Project (399)
: : : +- Generate (398)
: : : +- Project (397)
: : : +- Generate (396)
: : : +- Project (395)
: : : +- BroadcastHashJoin LeftOuter BuildRight (394)
: : : :- Project (388)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (387)
: : : : :- Project (382)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (381)
: : : : : :- Exchange (375)
: : : : : : +- Filter (374)
: : : : : : +- Scan parquet (373)
: : : : : +- BroadcastExchange (380)
: : : : : +- Project (379)
: : : : : +- Exchange (378)
: : : : : +- Project (377)
: : : : : +- Scan parquet (376)
: : : : +- BroadcastExchange (386)
: : : : +- Exchange (385)
: : : : +- Project (384)
: : : : +- Scan parquet (383)
: : : +- BroadcastExchange (393)
: : : +- Exchange (392)
: : : +- Project (391)
: : : +- Filter (390)
: : : +- Scan parquet (389)
: : +- Sort (442)
: : +- Project (441)
: : +- Generate (440)
: : +- Project (439)
: : +- Generate (438)
: : +- Project (437)
: : +- BroadcastHashJoin LeftOuter BuildRight (436)
: : :- Project (430)
: : : +- BroadcastHashJoin LeftOuter BuildRight (429)
: : : :- Project (424)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (423)
: : : : :- Exchange (417)
: : : : : +- Filter (416)
: : : : : +- Scan parquet (415)
: : : : +- BroadcastExchange (422)
: : : : +- Project (421)
: : : : +- Exchange (420)
: : : : +- Project (419)
: : : : +- Scan parquet (418)
: : : +- BroadcastExchange (428)
: : : +- Exchange (427)
: : : +- Project (426)
: : : +- Scan parquet (425)
: : +- BroadcastExchange (435)
: : +- Exchange (434)
: : +- Project (433)
: : +- Filter (432)
: : +- Scan parquet (431)
: +- Sort (682)
: +- Exchange (681)
: +- SerializeFromObject (680)
: +- MapElements (679)
: +- DeserializeToObject (678)
: +- ObjectHashAggregate (677)
: +- ObjectHashAggregate (676)
: +- Project (675)
: +- BroadcastHashJoin LeftOuter BuildRight (674)
: :- Project (671)
: : +- SortMergeJoin LeftOuter (670)
: : :- Sort (483)
: : : +- Project (482)
: : : +- Project (481)
: : : +- Generate (480)
: : : +- Generate (479)
: : : +- Project (478)
: : : +- Project (477)
: : : +- BroadcastHashJoin LeftOuter BuildRight (476)
: : : :- Project (470)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (469)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (465)
: : : : : :- Exchange (460)
: : : : : : +- Scan parquet (459)
: : : : : +- BroadcastExchange (464)
: : : : : +- Project (463)
: : : : : +- Exchange (462)
: : : : : +- Project (461)
: : : : : +- Scan parquet (193)
: : : : +- BroadcastExchange (468)
: : : : +- Exchange (467)
: : : : +- Project (466)
: : : : +- Scan parquet (202)
: : : +- BroadcastExchange (475)
: : : +- Exchange (474)
: : : +- Project (473)
: : : +- Filter (472)
: : : +- Scan parquet (471)
: : +- Sort (669)
: : +- HashAggregate (668)
: : +- Exchange (667)
: : +- HashAggregate (666)
: : +- Project (665)
: : +- SortMergeJoin Inner (664)
: : :- Sort (572)
: : : +- Exchange (571)
: : : +- Project (570)
: : : +- SortMergeJoin Inner (569)
: : : :- Sort (540)
: : : : +- Exchange (539)
: : : : +- Project (538)
: : : : +- Filter (537)
: : : : +- Generate (536)
: : : : +- Filter (535)
: : : : +- ObjectHashAggregate (534)
: : : : +- ObjectHashAggregate (533)
: : : : +- Generate (532)
: : : : +- BroadcastHashJoin Inner BuildLeft (531)
: : : : :- BroadcastExchange (488)
: : : : : +- Exchange (487)
: : : : : +- Project (486)
: : : : : +- Filter (485)
: : : : : +- Scan parquet (484)
: : : : +- Project (530)
: : : : +- BroadcastHashJoin Inner BuildLeft (529)
: : : : :- BroadcastExchange (498)
: : : : : +- Project (497)
: : : : : +- Generate (496)
: : : : : +- Project (495)
: : : : : +- Filter (494)
: : : : : +- Generate (493)
: : : : : +- Exchange (492)
: : : : : +- Project (491)
: : : : : +- Filter (490)
: : : : : +- Scan parquet (489)
: : : : +- HashAggregate (528)
: : : : +- Exchange (527)
: : : : +- HashAggregate (526)
: : : : +- Project (525)
: : : : +- Generate (524)
: : : : +- Project (523)
: : : : +- Generate (522)
: : : : +- Project (521)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (520)
: : : : :- Project (514)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (513)
: : : : : :- Project (508)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (507)
: : : : : : :- Exchange (501)
: : : : : : : +- Filter (500)
: : : : : : : +- Scan parquet (499)
: : : : : : +- BroadcastExchange (506)
: : : : : : +- Project (505)
: : : : : : +- Exchange (504)
: : : : : : +- Project (503)
: : : : : : +- Scan parquet (502)
: : : : : +- BroadcastExchange (512)
: : : : : +- Exchange (511)
: : : : : +- Project (510)
: : : : : +- Scan parquet (509)
: : : : +- BroadcastExchange (519)
: : : : +- Exchange (518)
: : : : +- Project (517)
: : : : +- Filter (516)
: : : : +- Scan parquet (515)
: : : +- Sort (568)
: : : +- Project (567)
: : : +- Generate (566)
: : : +- Project (565)
: : : +- Generate (564)
: : : +- Project (563)
: : : +- BroadcastHashJoin LeftOuter BuildRight (562)
: : : :- Project (556)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (555)
: : : : :- Project (550)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (549)
: : : : : :- Exchange (543)
: : : : : : +- Filter (542)
: : : : : : +- Scan parquet (541)
: : : : : +- BroadcastExchange (548)
: : : : : +- Project (547)
: : : : : +- Exchange (546)
: : : : : +- Project (545)
: : : : : +- Scan parquet (544)
: : : : +- BroadcastExchange (554)
: : : : +- Exchange (553)
: : : : +- Project (552)
: : : : +- Scan parquet (551)
: : : +- BroadcastExchange (561)
: : : +- Exchange (560)
: : : +- Project (559)
: : : +- Filter (558)
: : : +- Scan parquet (557)
: : +- Sort (663)
: : +- Exchange (662)
: : +- HashAggregate (661)
: : +- HashAggregate (660)
: : +- Project (659)
: : +- SortMergeJoin Inner (658)
: : :- Sort (629)
: : : +- Exchange (628)
: : : +- Project (627)
: : : +- Filter (626)
: : : +- Generate (625)
: : : +- Filter (624)
: : : +- ObjectHashAggregate (623)
: : : +- ObjectHashAggregate (622)
: : : +- Generate (621)
: : : +- BroadcastHashJoin Inner BuildLeft (620)
: : : :- BroadcastExchange (577)
: : : : +- Exchange (576)
: : : : +- Project (575)
: : : : +- Filter (574)
: : : : +- Scan parquet (573)
: : : +- Project (619)
: : : +- BroadcastHashJoin Inner BuildLeft (618)
: : : :- BroadcastExchange (587)
: : : : +- Project (586)
: : : : +- Generate (585)
: : : : +- Project (584)
: : : : +- Filter (583)
: : : : +- Generate (582)
: : : : +- Exchange (581)
: : : : +- Project (580)
: : : : +- Filter (579)
: : : : +- Scan parquet (578)
: : : +- HashAggregate (617)
: : : +- Exchange (616)
: : : +- HashAggregate (615)
: : : +- Project (614)
: : : +- Generate (613)
: : : +- Project (612)
: : : +- Generate (611)
: : : +- Project (610)
: : : +- BroadcastHashJoin LeftOuter BuildRight (609)
: : : :- Project (603)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (602)
: : : : :- Project (597)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (596)
: : : : : :- Exchange (590)
: : : : : : +- Filter (589)
: : : : : : +- Scan parquet (588)
: : : : : +- BroadcastExchange (595)
: : : : : +- Project (594)
: : : : : +- Exchange (593)
: : : : : +- Project (592)
: : : : : +- Scan parquet (591)
: : : : +- BroadcastExchange (601)
: : : : +- Exchange (600)
: : : : +- Project (599)
: : : : +- Scan parquet (598)
: : : +- BroadcastExchange (608)
: : : +- Exchange (607)
: : : +- Project (606)
: : : +- Filter (605)
: : : +- Scan parquet (604)
: : +- Sort (657)
: : +- Project (656)
: : +- Generate (655)
: : +- Project (654)
: : +- Generate (653)
: : +- Project (652)
: : +- BroadcastHashJoin LeftOuter BuildRight (651)
: : :- Project (645)
: : : +- BroadcastHashJoin LeftOuter BuildRight (644)
: : : :- Project (639)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (638)
: : : : :- Exchange (632)
: : : : : +- Filter (631)
: : : : : +- Scan parquet (630)
: : : : +- BroadcastExchange (637)
: : : : +- Project (636)
: : : : +- Exchange (635)
: : : : +- Project (634)
: : : : +- Scan parquet (633)
: : : +- BroadcastExchange (643)
: : : +- Exchange (642)
: : : +- Project (641)
: : : +- Scan parquet (640)
: : +- BroadcastExchange (650)
: : +- Exchange (649)
: : +- Project (648)
: : +- Filter (647)
: : +- Scan parquet (646)
: +- BroadcastExchange (673)
: +- Filter (672)
: +- Scan parquet (224)
+- Sort (1980)
+- Project (1979)
+- ObjectHashAggregate (1978)
+- Exchange (1977)
+- ObjectHashAggregate (1976)
+- Union (1975)
:- Filter (1513)
: +- InMemoryTableScan (687)
: +- InMemoryRelation (688)
: +- AdaptiveSparkPlan (1512)
+- == Final Plan ==
ResultQueryStage (690)
+- EmptyRelation (689)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (1511)
+- ObjectHashAggregate (1510)
+- Exchange (1509)
+- ObjectHashAggregate (1508)
+- Project (1507)
+- Window (1506)
+- Sort (1505)
+- Exchange (1504)
+- Project (1503)
+- InMemoryTableScan (691)
+- InMemoryRelation (692)
+- AdaptiveSparkPlan (1502)
+- == Final Plan ==
ResultQueryStage (1009)
+- Project (1008)
+- * BroadcastHashJoin Inner BuildRight (1007)
:- * Project (995)
: +- * BroadcastHashJoin Inner BuildLeft (994)
: :- BroadcastQueryStage (978), Statistics(sizeInBytes=2.0 MiB, rowCount=1.29E+3)
: : +- BroadcastExchange (977)
: : +- AQEShuffleRead (976)
: : +- ShuffleQueryStage (975), Statistics(sizeInBytes=151.6 KiB, rowCount=1.29E+3)
: : +- Exchange (974)
: : +- * Project (973)
: : +- * BroadcastHashJoin LeftOuter BuildRight (972)
: : :- AQEShuffleRead (866)
: : : +- ShuffleQueryStage (865), Statistics(sizeInBytes=151.6 KiB, rowCount=1.29E+3)
: : : +- Exchange (864)
: : : +- * Project (863)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (862)
: : : :- * Project (730)
: : : : +- * Generate (729)
: : : : +- * Project (728)
: : : : +- * Generate (727)
: : : : +- Project (726)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (725)
: : : : :- * Project (716)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (715)
: : : : : :- * Project (707)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (706)
: : : : : : :- ShuffleQueryStage (697), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : : : +- Exchange (696)
: : : : : : : +- * Filter (695)
: : : : : : : +- * ColumnarToRow (694)
: : : : : : : +- Scan parquet (693)
: : : : : : +- BroadcastQueryStage (705), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : : +- BroadcastExchange (704)
: : : : : : +- * Project (703)
: : : : : : +- ShuffleQueryStage (702), Statistics(sizeInBytes=197.7 KiB, rowCount=1.43E+3)
: : : : : : +- Exchange (701)
: : : : : : +- * Project (700)
: : : : : : +- * ColumnarToRow (699)
: : : : : : +- Scan parquet (698)
: : : : : +- BroadcastQueryStage (714), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : : +- BroadcastExchange (713)
: : : : : +- ShuffleQueryStage (712), Statistics(sizeInBytes=1728.0 B, rowCount=24)
: : : : : +- Exchange (711)
: : : : : +- * Project (710)
: : : : : +- * ColumnarToRow (709)
: : : : : +- Scan parquet (708)
: : : : +- BroadcastQueryStage (724), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- BroadcastExchange (723)
: : : : +- ShuffleQueryStage (722), Statistics(sizeInBytes=87.9 KiB, rowCount=145)
: : : : +- Exchange (721)
: : : : +- * Project (720)
: : : : +- * Filter (719)
: : : : +- * ColumnarToRow (718)
: : : : +- Scan parquet (717)
: : : +- BroadcastQueryStage (861), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: : : +- BroadcastExchange (860)
: : : +- * HashAggregate (859)
: : : +- AQEShuffleRead (858)
: : : +- ShuffleQueryStage (857), Statistics(sizeInBytes=35.4 KiB, rowCount=378)
: : : +- Exchange (856)
: : : +- * HashAggregate (855)
: : : +- * Project (854)
: : : +- * BroadcastHashJoin Inner BuildLeft (853)
: : : :- BroadcastQueryStage (825), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: : : : +- BroadcastExchange (824)
: : : : +- AQEShuffleRead (823)
: : : : +- ShuffleQueryStage (822), Statistics(sizeInBytes=41.3 KiB, rowCount=378)
: : : : +- Exchange (821)
: : : : +- * Project (820)
: : : : +- * BroadcastHashJoin Inner BuildLeft (819)
: : : : :- BroadcastQueryStage (797), Statistics(sizeInBytes=2.0 MiB, rowCount=415)
: : : : : +- BroadcastExchange (796)
: : : : : +- AQEShuffleRead (795)
: : : : : +- ShuffleQueryStage (794), Statistics(sizeInBytes=45.4 KiB, rowCount=415)
: : : : : +- Exchange (793)
: : : : : +- * Project (792)
: : : : : +- * Filter (791)
: : : : : +- * Generate (790)
: : : : : +- * Filter (789)
: : : : : +- ObjectHashAggregate (788)
: : : : : +- ObjectHashAggregate (787)
: : : : : +- Generate (786)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (785)
: : : : : :- BroadcastQueryStage (738), Statistics(sizeInBytes=2.0 MiB, rowCount=419)
: : : : : : +- BroadcastExchange (737)
: : : : : : +- ShuffleQueryStage (736), Statistics(sizeInBytes=252.4 KiB, rowCount=419)
: : : : : : +- Exchange (735)
: : : : : : +- * Project (734)
: : : : : : +- * Filter (733)
: : : : : : +- * ColumnarToRow (732)
: : : : : : +- Scan parquet (731)
: : : : : +- * Project (784)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (783)
: : : : : :- BroadcastQueryStage (751), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- BroadcastExchange (750)
: : : : : : +- * Project (749)
: : : : : : +- * Generate (748)
: : : : : : +- * Project (747)
: : : : : : +- * Filter (746)
: : : : : : +- * Generate (745)
: : : : : : +- ShuffleQueryStage (744), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : : +- Exchange (743)
: : : : : : +- * Project (742)
: : : : : : +- * Filter (741)
: : : : : : +- * ColumnarToRow (740)
: : : : : : +- Scan parquet (739)
: : : : : +- * HashAggregate (782)
: : : : : +- AQEShuffleRead (781)
: : : : : +- ShuffleQueryStage (780), Statistics(sizeInBytes=16.5 KiB, rowCount=353)
: : : : : +- Exchange (779)
: : : : : +- * HashAggregate (778)
: : : : : +- * Project (777)
: : : : : +- * Generate (776)
: : : : : +- * Project (775)
: : : : : +- * Generate (774)
: : : : : +- Project (773)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (772)
: : : : : :- * Project (769)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (768)
: : : : : : :- * Project (760)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (759)
: : : : : : : :- ShuffleQueryStage (756), Statistics(sizeInBytes=111.2 KiB, rowCount=1.29E+3)
: : : : : : : : +- Exchange (755)
: : : : : : : : +- * Filter (754)
: : : : : : : : +- * ColumnarToRow (753)
: : : : : : : : +- Scan parquet (752)
: : : : : : : +- BroadcastQueryStage (758), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : : : +- ReusedExchange (757)
: : : : : : +- BroadcastQueryStage (767), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : : : +- BroadcastExchange (766)
: : : : : : +- ShuffleQueryStage (765), Statistics(sizeInBytes=1152.0 B, rowCount=24)
: : : : : : +- Exchange (764)
: : : : : : +- * Project (763)
: : : : : : +- * ColumnarToRow (762)
: : : : : : +- Scan parquet (761)
: : : : : +- BroadcastQueryStage (771), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (770)
: : : : +- * Project (818)
: : : : +- * Generate (817)
: : : : +- * Project (816)
: : : : +- * Generate (815)
: : : : +- Project (814)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (813)
: : : : :- * Project (810)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (809)
: : : : : :- * Project (806)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (805)
: : : : : : :- ShuffleQueryStage (802), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : : : +- Exchange (801)
: : : : : : : +- * Filter (800)
: : : : : : : +- * ColumnarToRow (799)
: : : : : : : +- Scan parquet (798)
: : : : : : +- BroadcastQueryStage (804), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : : +- ReusedExchange (803)
: : : : : +- BroadcastQueryStage (808), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : : +- ReusedExchange (807)
: : : : +- BroadcastQueryStage (812), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (811)
: : : +- AQEShuffleRead (852)
: : : +- ShuffleQueryStage (851), Statistics(sizeInBytes=41.3 KiB, rowCount=378)
: : : +- Exchange (850)
: : : +- * HashAggregate (849)
: : : +- * HashAggregate (848)
: : : +- * Project (847)
: : : +- * BroadcastHashJoin Inner BuildLeft (846)
: : : :- BroadcastQueryStage (827), Statistics(sizeInBytes=2.0 MiB, rowCount=415)
: : : : +- ReusedExchange (826)
: : : +- * Project (845)
: : : +- * Generate (844)
: : : +- * Project (843)
: : : +- * Generate (842)
: : : +- Project (841)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (840)
: : : :- * Project (837)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (836)
: : : : :- * Project (833)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (832)
: : : : : :- ShuffleQueryStage (829), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : : +- ReusedExchange (828)
: : : : : +- BroadcastQueryStage (831), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- ReusedExchange (830)
: : : : +- BroadcastQueryStage (835), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : +- ReusedExchange (834)
: : : +- BroadcastQueryStage (839), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- ReusedExchange (838)
: : +- BroadcastQueryStage (971), Statistics(sizeInBytes=2.1 MiB, rowCount=1.29E+3)
: : +- BroadcastExchange (970)
: : +- AQEShuffleRead (969)
: : +- ShuffleQueryStage (968), Statistics(sizeInBytes=111.2 KiB, rowCount=1.29E+3)
: : +- Exchange (967)
: : +- * SerializeFromObject (966)
: : +- * MapElements (965)
: : +- * DeserializeToObject (964)
: : +- ObjectHashAggregate (963)
: : +- ObjectHashAggregate (962)
: : +- * Project (961)
: : +- * BroadcastHashJoin LeftOuter BuildRight (960)
: : :- * Project (954)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (953)
: : : :- * Project (892)
: : : : +- * Project (891)
: : : : +- * Generate (890)
: : : : +- * Generate (889)
: : : : +- * Project (888)
: : : : +- Project (887)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (886)
: : : : :- * Project (883)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (882)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (879)
: : : : : : :- ShuffleQueryStage (870), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : : : +- Exchange (869)
: : : : : : : +- * ColumnarToRow (868)
: : : : : : : +- Scan parquet (867)
: : : : : : +- BroadcastQueryStage (878), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : : +- BroadcastExchange (877)
: : : : : : +- * Project (876)
: : : : : : +- ShuffleQueryStage (875), Statistics(sizeInBytes=1115.4 KiB, rowCount=1.43E+3)
: : : : : : +- Exchange (874)
: : : : : : +- * Project (873)
: : : : : : +- * ColumnarToRow (872)
: : : : : : +- Scan parquet (871)
: : : : : +- BroadcastQueryStage (881), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : : +- ReusedExchange (880)
: : : : +- BroadcastQueryStage (885), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (884)
: : : +- BroadcastQueryStage (952), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: : : +- BroadcastExchange (951)
: : : +- * HashAggregate (950)
: : : +- AQEShuffleRead (949)
: : : +- ShuffleQueryStage (948), Statistics(sizeInBytes=38.4 KiB, rowCount=378)
: : : +- Exchange (947)
: : : +- * HashAggregate (946)
: : : +- * Project (945)
: : : +- * BroadcastHashJoin Inner BuildLeft (944)
: : : :- BroadcastQueryStage (940), Statistics(sizeInBytes=2.0 MiB, rowCount=378)
: : : : +- BroadcastExchange (939)
: : : : +- AQEShuffleRead (938)
: : : : +- ShuffleQueryStage (937), Statistics(sizeInBytes=44.3 KiB, rowCount=378)
: : : : +- Exchange (936)
: : : : +- * Project (935)
: : : : +- * BroadcastHashJoin Inner BuildLeft (934)
: : : : :- BroadcastQueryStage (915), Statistics(sizeInBytes=2.0 MiB, rowCount=415)
: : : : : +- BroadcastExchange (914)
: : : : : +- AQEShuffleRead (913)
: : : : : +- ShuffleQueryStage (912), Statistics(sizeInBytes=48.6 KiB, rowCount=415)
: : : : : +- Exchange (911)
: : : : : +- * Project (910)
: : : : : +- * Filter (909)
: : : : : +- * Generate (908)
: : : : : +- * Filter (907)
: : : : : +- ObjectHashAggregate (906)
: : : : : +- ObjectHashAggregate (905)
: : : : : +- Generate (904)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (903)
: : : : : :- BroadcastQueryStage (894), Statistics(sizeInBytes=2.0 MiB, rowCount=419)
: : : : : : +- ReusedExchange (893)
: : : : : +- * Project (902)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (901)
: : : : : :- BroadcastQueryStage (896), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : : +- ReusedExchange (895)
: : : : : +- * HashAggregate (900)
: : : : : +- AQEShuffleRead (899)
: : : : : +- ShuffleQueryStage (898), Statistics(sizeInBytes=16.5 KiB, rowCount=353)
: : : : : +- ReusedExchange (897)
: : : : +- * Project (933)
: : : : +- * Generate (932)
: : : : +- * Project (931)
: : : : +- * Generate (930)
: : : : +- Project (929)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (928)
: : : : :- * Project (925)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (924)
: : : : : :- * Project (921)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (920)
: : : : : : :- ShuffleQueryStage (917), Statistics(sizeInBytes=121.3 KiB, rowCount=1.29E+3)
: : : : : : : +- ReusedExchange (916)
: : : : : : +- BroadcastQueryStage (919), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : : +- ReusedExchange (918)
: : : : : +- BroadcastQueryStage (923), Statistics(sizeInBytes=2.0 MiB, rowCount=24)
: : : : : +- ReusedExchange (922)
: : : : +- BroadcastQueryStage (927), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (926)
: : : +- AQEShuffleRead (943)
: : : +- ShuffleQueryStage (942), Statistics(sizeInBytes=41.3 KiB, rowCount=378)
: : : +- ReusedExchange (941)
: : +- BroadcastQueryStage (959), Statistics(sizeInBytes=2.1 MiB, rowCount=1.29E+3)
: : +- BroadcastExchange (958)
: : +- * Filter (957)
: : +- * ColumnarToRow (956)
: : +- Scan parquet (955)
: +- * Project (993)
: +- * BroadcastHashJoin Inner BuildLeft (992)
: :- BroadcastQueryStage (988), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : +- BroadcastExchange (987)
: : +- * Project (986)
: : +- * Filter (985)
: : +- * Generate (984)
: : +- * Project (983)
: : +- * Filter (982)
: : +- * Generate (981)
: : +- ShuffleQueryStage (980), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : +- ReusedExchange (979)
: +- * HashAggregate (991)
: +- ShuffleQueryStage (990), Statistics(sizeInBytes=16.5 KiB, rowCount=353)
: +- ReusedExchange (989)
+- BroadcastQueryStage (1006), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
+- BroadcastExchange (1005)
+- * Project (1004)
+- * Filter (1003)
+- * Generate (1002)
+- ShuffleQueryStage (1001), Statistics(sizeInBytes=2.9 KiB, rowCount=4)
+- Exchange (1000)
+- * Project (999)
+- * Filter (998)
+- * ColumnarToRow (997)
+- Scan parquet (996)
+- == Initial Plan ==
Project (1501)
+- BroadcastHashJoin Inner BuildRight (1500)
:- Project (1492)
: +- SortMergeJoin Inner (1491)
: :- Sort (1446)
: : +- Exchange (1445)
: : +- Project (1444)
: : +- SortMergeJoin LeftOuter (1443)
: : :- Sort (1218)
: : : +- Exchange (1217)
: : : +- Project (1216)
: : : +- SortMergeJoin LeftOuter (1215)
: : : :- Sort (1033)
: : : : +- Project (1032)
: : : : +- Generate (1031)
: : : : +- Project (1030)
: : : : +- Generate (1029)
: : : : +- Project (1028)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1027)
: : : : :- Project (1022)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1021)
: : : : : :- Project (1017)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1016)
: : : : : : :- Exchange (1011)
: : : : : : : +- Filter (1010)
: : : : : : : +- Scan parquet (693)
: : : : : : +- BroadcastExchange (1015)
: : : : : : +- Project (1014)
: : : : : : +- Exchange (1013)
: : : : : : +- Project (1012)
: : : : : : +- Scan parquet (698)
: : : : : +- BroadcastExchange (1020)
: : : : : +- Exchange (1019)
: : : : : +- Project (1018)
: : : : : +- Scan parquet (708)
: : : : +- BroadcastExchange (1026)
: : : : +- Exchange (1025)
: : : : +- Project (1024)
: : : : +- Filter (1023)
: : : : +- Scan parquet (717)
: : : +- Sort (1214)
: : : +- HashAggregate (1213)
: : : +- Exchange (1212)
: : : +- HashAggregate (1211)
: : : +- Project (1210)
: : : +- SortMergeJoin Inner (1209)
: : : :- Sort (1117)
: : : : +- Exchange (1116)
: : : : +- Project (1115)
: : : : +- SortMergeJoin Inner (1114)
: : : : :- Sort (1086)
: : : : : +- Exchange (1085)
: : : : : +- Project (1084)
: : : : : +- Filter (1083)
: : : : : +- Generate (1082)
: : : : : +- Filter (1081)
: : : : : +- ObjectHashAggregate (1080)
: : : : : +- ObjectHashAggregate (1079)
: : : : : +- Generate (1078)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1077)
: : : : : :- BroadcastExchange (1037)
: : : : : : +- Exchange (1036)
: : : : : : +- Project (1035)
: : : : : : +- Filter (1034)
: : : : : : +- Scan parquet (731)
: : : : : +- Project (1076)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1075)
: : : : : :- BroadcastExchange (1046)
: : : : : : +- Project (1045)
: : : : : : +- Generate (1044)
: : : : : : +- Project (1043)
: : : : : : +- Filter (1042)
: : : : : : +- Generate (1041)
: : : : : : +- Exchange (1040)
: : : : : : +- Project (1039)
: : : : : : +- Filter (1038)
: : : : : : +- Scan parquet (739)
: : : : : +- HashAggregate (1074)
: : : : : +- Exchange (1073)
: : : : : +- HashAggregate (1072)
: : : : : +- Project (1071)
: : : : : +- Generate (1070)
: : : : : +- Project (1069)
: : : : : +- Generate (1068)
: : : : : +- Project (1067)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1066)
: : : : : :- Project (1060)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1059)
: : : : : : :- Project (1055)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1054)
: : : : : : : :- Exchange (1048)
: : : : : : : : +- Filter (1047)
: : : : : : : : +- Scan parquet (752)
: : : : : : : +- BroadcastExchange (1053)
: : : : : : : +- Project (1052)
: : : : : : : +- Exchange (1051)
: : : : : : : +- Project (1050)
: : : : : : : +- Scan parquet (1049)
: : : : : : +- BroadcastExchange (1058)
: : : : : : +- Exchange (1057)
: : : : : : +- Project (1056)
: : : : : : +- Scan parquet (761)
: : : : : +- BroadcastExchange (1065)
: : : : : +- Exchange (1064)
: : : : : +- Project (1063)
: : : : : +- Filter (1062)
: : : : : +- Scan parquet (1061)
: : : : +- Sort (1113)
: : : : +- Project (1112)
: : : : +- Generate (1111)
: : : : +- Project (1110)
: : : : +- Generate (1109)
: : : : +- Project (1108)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1107)
: : : : :- Project (1101)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1100)
: : : : : :- Project (1095)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1094)
: : : : : : :- Exchange (1088)
: : : : : : : +- Filter (1087)
: : : : : : : +- Scan parquet (798)
: : : : : : +- BroadcastExchange (1093)
: : : : : : +- Project (1092)
: : : : : : +- Exchange (1091)
: : : : : : +- Project (1090)
: : : : : : +- Scan parquet (1089)
: : : : : +- BroadcastExchange (1099)
: : : : : +- Exchange (1098)
: : : : : +- Project (1097)
: : : : : +- Scan parquet (1096)
: : : : +- BroadcastExchange (1106)
: : : : +- Exchange (1105)
: : : : +- Project (1104)
: : : : +- Filter (1103)
: : : : +- Scan parquet (1102)
: : : +- Sort (1208)
: : : +- Exchange (1207)
: : : +- HashAggregate (1206)
: : : +- HashAggregate (1205)
: : : +- Project (1204)
: : : +- SortMergeJoin Inner (1203)
: : : :- Sort (1174)
: : : : +- Exchange (1173)
: : : : +- Project (1172)
: : : : +- Filter (1171)
: : : : +- Generate (1170)
: : : : +- Filter (1169)
: : : : +- ObjectHashAggregate (1168)
: : : : +- ObjectHashAggregate (1167)
: : : : +- Generate (1166)
: : : : +- BroadcastHashJoin Inner BuildLeft (1165)
: : : : :- BroadcastExchange (1122)
: : : : : +- Exchange (1121)
: : : : : +- Project (1120)
: : : : : +- Filter (1119)
: : : : : +- Scan parquet (1118)
: : : : +- Project (1164)
: : : : +- BroadcastHashJoin Inner BuildLeft (1163)
: : : : :- BroadcastExchange (1132)
: : : : : +- Project (1131)
: : : : : +- Generate (1130)
: : : : : +- Project (1129)
: : : : : +- Filter (1128)
: : : : : +- Generate (1127)
: : : : : +- Exchange (1126)
: : : : : +- Project (1125)
: : : : : +- Filter (1124)
: : : : : +- Scan parquet (1123)
: : : : +- HashAggregate (1162)
: : : : +- Exchange (1161)
: : : : +- HashAggregate (1160)
: : : : +- Project (1159)
: : : : +- Generate (1158)
: : : : +- Project (1157)
: : : : +- Generate (1156)
: : : : +- Project (1155)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1154)
: : : : :- Project (1148)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1147)
: : : : : :- Project (1142)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1141)
: : : : : : :- Exchange (1135)
: : : : : : : +- Filter (1134)
: : : : : : : +- Scan parquet (1133)
: : : : : : +- BroadcastExchange (1140)
: : : : : : +- Project (1139)
: : : : : : +- Exchange (1138)
: : : : : : +- Project (1137)
: : : : : : +- Scan parquet (1136)
: : : : : +- BroadcastExchange (1146)
: : : : : +- Exchange (1145)
: : : : : +- Project (1144)
: : : : : +- Scan parquet (1143)
: : : : +- BroadcastExchange (1153)
: : : : +- Exchange (1152)
: : : : +- Project (1151)
: : : : +- Filter (1150)
: : : : +- Scan parquet (1149)
: : : +- Sort (1202)
: : : +- Project (1201)
: : : +- Generate (1200)
: : : +- Project (1199)
: : : +- Generate (1198)
: : : +- Project (1197)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1196)
: : : :- Project (1190)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1189)
: : : : :- Project (1184)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1183)
: : : : : :- Exchange (1177)
: : : : : : +- Filter (1176)
: : : : : : +- Scan parquet (1175)
: : : : : +- BroadcastExchange (1182)
: : : : : +- Project (1181)
: : : : : +- Exchange (1180)
: : : : : +- Project (1179)
: : : : : +- Scan parquet (1178)
: : : : +- BroadcastExchange (1188)
: : : : +- Exchange (1187)
: : : : +- Project (1186)
: : : : +- Scan parquet (1185)
: : : +- BroadcastExchange (1195)
: : : +- Exchange (1194)
: : : +- Project (1193)
: : : +- Filter (1192)
: : : +- Scan parquet (1191)
: : +- Sort (1442)
: : +- Exchange (1441)
: : +- SerializeFromObject (1440)
: : +- MapElements (1439)
: : +- DeserializeToObject (1438)
: : +- ObjectHashAggregate (1437)
: : +- ObjectHashAggregate (1436)
: : +- Project (1435)
: : +- BroadcastHashJoin LeftOuter BuildRight (1434)
: : :- Project (1431)
: : : +- SortMergeJoin LeftOuter (1430)
: : : :- Sort (1243)
: : : : +- Project (1242)
: : : : +- Project (1241)
: : : : +- Generate (1240)
: : : : +- Generate (1239)
: : : : +- Project (1238)
: : : : +- Project (1237)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1236)
: : : : :- Project (1230)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1229)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (1224)
: : : : : : :- Exchange (1219)
: : : : : : : +- Scan parquet (867)
: : : : : : +- BroadcastExchange (1223)
: : : : : : +- Project (1222)
: : : : : : +- Exchange (1221)
: : : : : : +- Project (1220)
: : : : : : +- Scan parquet (871)
: : : : : +- BroadcastExchange (1228)
: : : : : +- Exchange (1227)
: : : : : +- Project (1226)
: : : : : +- Scan parquet (1225)
: : : : +- BroadcastExchange (1235)
: : : : +- Exchange (1234)
: : : : +- Project (1233)
: : : : +- Filter (1232)
: : : : +- Scan parquet (1231)
: : : +- Sort (1429)
: : : +- HashAggregate (1428)
: : : +- Exchange (1427)
: : : +- HashAggregate (1426)
: : : +- Project (1425)
: : : +- SortMergeJoin Inner (1424)
: : : :- Sort (1332)
: : : : +- Exchange (1331)
: : : : +- Project (1330)
: : : : +- SortMergeJoin Inner (1329)
: : : : :- Sort (1300)
: : : : : +- Exchange (1299)
: : : : : +- Project (1298)
: : : : : +- Filter (1297)
: : : : : +- Generate (1296)
: : : : : +- Filter (1295)
: : : : : +- ObjectHashAggregate (1294)
: : : : : +- ObjectHashAggregate (1293)
: : : : : +- Generate (1292)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1291)
: : : : : :- BroadcastExchange (1248)
: : : : : : +- Exchange (1247)
: : : : : : +- Project (1246)
: : : : : : +- Filter (1245)
: : : : : : +- Scan parquet (1244)
: : : : : +- Project (1290)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1289)
: : : : : :- BroadcastExchange (1258)
: : : : : : +- Project (1257)
: : : : : : +- Generate (1256)
: : : : : : +- Project (1255)
: : : : : : +- Filter (1254)
: : : : : : +- Generate (1253)
: : : : : : +- Exchange (1252)
: : : : : : +- Project (1251)
: : : : : : +- Filter (1250)
: : : : : : +- Scan parquet (1249)
: : : : : +- HashAggregate (1288)
: : : : : +- Exchange (1287)
: : : : : +- HashAggregate (1286)
: : : : : +- Project (1285)
: : : : : +- Generate (1284)
: : : : : +- Project (1283)
: : : : : +- Generate (1282)
: : : : : +- Project (1281)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1280)
: : : : : :- Project (1274)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1273)
: : : : : : :- Project (1268)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1267)
: : : : : : : :- Exchange (1261)
: : : : : : : : +- Filter (1260)
: : : : : : : : +- Scan parquet (1259)
: : : : : : : +- BroadcastExchange (1266)
: : : : : : : +- Project (1265)
: : : : : : : +- Exchange (1264)
: : : : : : : +- Project (1263)
: : : : : : : +- Scan parquet (1262)
: : : : : : +- BroadcastExchange (1272)
: : : : : : +- Exchange (1271)
: : : : : : +- Project (1270)
: : : : : : +- Scan parquet (1269)
: : : : : +- BroadcastExchange (1279)
: : : : : +- Exchange (1278)
: : : : : +- Project (1277)
: : : : : +- Filter (1276)
: : : : : +- Scan parquet (1275)
: : : : +- Sort (1328)
: : : : +- Project (1327)
: : : : +- Generate (1326)
: : : : +- Project (1325)
: : : : +- Generate (1324)
: : : : +- Project (1323)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1322)
: : : : :- Project (1316)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1315)
: : : : : :- Project (1310)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1309)
: : : : : : :- Exchange (1303)
: : : : : : : +- Filter (1302)
: : : : : : : +- Scan parquet (1301)
: : : : : : +- BroadcastExchange (1308)
: : : : : : +- Project (1307)
: : : : : : +- Exchange (1306)
: : : : : : +- Project (1305)
: : : : : : +- Scan parquet (1304)
: : : : : +- BroadcastExchange (1314)
: : : : : +- Exchange (1313)
: : : : : +- Project (1312)
: : : : : +- Scan parquet (1311)
: : : : +- BroadcastExchange (1321)
: : : : +- Exchange (1320)
: : : : +- Project (1319)
: : : : +- Filter (1318)
: : : : +- Scan parquet (1317)
: : : +- Sort (1423)
: : : +- Exchange (1422)
: : : +- HashAggregate (1421)
: : : +- HashAggregate (1420)
: : : +- Project (1419)
: : : +- SortMergeJoin Inner (1418)
: : : :- Sort (1389)
: : : : +- Exchange (1388)
: : : : +- Project (1387)
: : : : +- Filter (1386)
: : : : +- Generate (1385)
: : : : +- Filter (1384)
: : : : +- ObjectHashAggregate (1383)
: : : : +- ObjectHashAggregate (1382)
: : : : +- Generate (1381)
: : : : +- BroadcastHashJoin Inner BuildLeft (1380)
: : : : :- BroadcastExchange (1337)
: : : : : +- Exchange (1336)
: : : : : +- Project (1335)
: : : : : +- Filter (1334)
: : : : : +- Scan parquet (1333)
: : : : +- Project (1379)
: : : : +- BroadcastHashJoin Inner BuildLeft (1378)
: : : : :- BroadcastExchange (1347)
: : : : : +- Project (1346)
: : : : : +- Generate (1345)
: : : : : +- Project (1344)
: : : : : +- Filter (1343)
: : : : : +- Generate (1342)
: : : : : +- Exchange (1341)
: : : : : +- Project (1340)
: : : : : +- Filter (1339)
: : : : : +- Scan parquet (1338)
: : : : +- HashAggregate (1377)
: : : : +- Exchange (1376)
: : : : +- HashAggregate (1375)
: : : : +- Project (1374)
: : : : +- Generate (1373)
: : : : +- Project (1372)
: : : : +- Generate (1371)
: : : : +- Project (1370)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1369)
: : : : :- Project (1363)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1362)
: : : : : :- Project (1357)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1356)
: : : : : : :- Exchange (1350)
: : : : : : : +- Filter (1349)
: : : : : : : +- Scan parquet (1348)
: : : : : : +- BroadcastExchange (1355)
: : : : : : +- Project (1354)
: : : : : : +- Exchange (1353)
: : : : : : +- Project (1352)
: : : : : : +- Scan parquet (1351)
: : : : : +- BroadcastExchange (1361)
: : : : : +- Exchange (1360)
: : : : : +- Project (1359)
: : : : : +- Scan parquet (1358)
: : : : +- BroadcastExchange (1368)
: : : : +- Exchange (1367)
: : : : +- Project (1366)
: : : : +- Filter (1365)
: : : : +- Scan parquet (1364)
: : : +- Sort (1417)
: : : +- Project (1416)
: : : +- Generate (1415)
: : : +- Project (1414)
: : : +- Generate (1413)
: : : +- Project (1412)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1411)
: : : :- Project (1405)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1404)
: : : : :- Project (1399)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1398)
: : : : : :- Exchange (1392)
: : : : : : +- Filter (1391)
: : : : : : +- Scan parquet (1390)
: : : : : +- BroadcastExchange (1397)
: : : : : +- Project (1396)
: : : : : +- Exchange (1395)
: : : : : +- Project (1394)
: : : : : +- Scan parquet (1393)
: : : : +- BroadcastExchange (1403)
: : : : +- Exchange (1402)
: : : : +- Project (1401)
: : : : +- Scan parquet (1400)
: : : +- BroadcastExchange (1410)
: : : +- Exchange (1409)
: : : +- Project (1408)
: : : +- Filter (1407)
: : : +- Scan parquet (1406)
: : +- BroadcastExchange (1433)
: : +- Filter (1432)
: : +- Scan parquet (955)
: +- Sort (1490)
: +- Project (1489)
: +- BroadcastHashJoin Inner BuildLeft (1488)
: :- BroadcastExchange (1457)
: : +- Project (1456)
: : +- Filter (1455)
: : +- Generate (1454)
: : +- Project (1453)
: : +- Filter (1452)
: : +- Generate (1451)
: : +- Exchange (1450)
: : +- Project (1449)
: : +- Filter (1448)
: : +- Scan parquet (1447)
: +- HashAggregate (1487)
: +- Exchange (1486)
: +- HashAggregate (1485)
: +- Project (1484)
: +- Generate (1483)
: +- Project (1482)
: +- Generate (1481)
: +- Project (1480)
: +- BroadcastHashJoin LeftOuter BuildRight (1479)
: :- Project (1473)
: : +- BroadcastHashJoin LeftOuter BuildRight (1472)
: : :- Project (1467)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1466)
: : : :- Exchange (1460)
: : : : +- Filter (1459)
: : : : +- Scan parquet (1458)
: : : +- BroadcastExchange (1465)
: : : +- Project (1464)
: : : +- Exchange (1463)
: : : +- Project (1462)
: : : +- Scan parquet (1461)
: : +- BroadcastExchange (1471)
: : +- Exchange (1470)
: : +- Project (1469)
: : +- Scan parquet (1468)
: +- BroadcastExchange (1478)
: +- Exchange (1477)
: +- Project (1476)
: +- Filter (1475)
: +- Scan parquet (1474)
+- BroadcastExchange (1499)
+- Project (1498)
+- Filter (1497)
+- Generate (1496)
+- Exchange (1495)
+- Project (1494)
+- Filter (1493)
+- Scan parquet (996)
+- Filter (1974)
+- ObjectHashAggregate (1973)
+- Exchange (1972)
+- ObjectHashAggregate (1971)
+- Project (1970)
+- BroadcastHashJoin Inner BuildRight (1969)
:- Project (1960)
: +- SortMergeJoin LeftOuter (1959)
: :- Sort (1731)
: : +- Exchange (1730)
: : +- Project (1729)
: : +- SortMergeJoin LeftOuter (1728)
: : :- Sort (1541)
: : : +- Project (1540)
: : : +- Generate (1539)
: : : +- Project (1538)
: : : +- Generate (1537)
: : : +- Project (1536)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1535)
: : : :- Project (1529)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1528)
: : : : :- Project (1523)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1522)
: : : : : :- Exchange (1516)
: : : : : : +- Filter (1515)
: : : : : : +- Scan parquet (1514)
: : : : : +- BroadcastExchange (1521)
: : : : : +- Project (1520)
: : : : : +- Exchange (1519)
: : : : : +- Project (1518)
: : : : : +- Scan parquet (1517)
: : : : +- BroadcastExchange (1527)
: : : : +- Exchange (1526)
: : : : +- Project (1525)
: : : : +- Scan parquet (1524)
: : : +- BroadcastExchange (1534)
: : : +- Exchange (1533)
: : : +- Project (1532)
: : : +- Filter (1531)
: : : +- Scan parquet (1530)
: : +- Sort (1727)
: : +- HashAggregate (1726)
: : +- Exchange (1725)
: : +- HashAggregate (1724)
: : +- Project (1723)
: : +- SortMergeJoin Inner (1722)
: : :- Sort (1630)
: : : +- Exchange (1629)
: : : +- Project (1628)
: : : +- SortMergeJoin Inner (1627)
: : : :- Sort (1598)
: : : : +- Exchange (1597)
: : : : +- Project (1596)
: : : : +- Filter (1595)
: : : : +- Generate (1594)
: : : : +- Filter (1593)
: : : : +- ObjectHashAggregate (1592)
: : : : +- ObjectHashAggregate (1591)
: : : : +- Generate (1590)
: : : : +- BroadcastHashJoin Inner BuildLeft (1589)
: : : : :- BroadcastExchange (1546)
: : : : : +- Exchange (1545)
: : : : : +- Project (1544)
: : : : : +- Filter (1543)
: : : : : +- Scan parquet (1542)
: : : : +- Project (1588)
: : : : +- BroadcastHashJoin Inner BuildLeft (1587)
: : : : :- BroadcastExchange (1556)
: : : : : +- Project (1555)
: : : : : +- Generate (1554)
: : : : : +- Project (1553)
: : : : : +- Filter (1552)
: : : : : +- Generate (1551)
: : : : : +- Exchange (1550)
: : : : : +- Project (1549)
: : : : : +- Filter (1548)
: : : : : +- Scan parquet (1547)
: : : : +- HashAggregate (1586)
: : : : +- Exchange (1585)
: : : : +- HashAggregate (1584)
: : : : +- Project (1583)
: : : : +- Generate (1582)
: : : : +- Project (1581)
: : : : +- Generate (1580)
: : : : +- Project (1579)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1578)
: : : : :- Project (1572)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1571)
: : : : : :- Project (1566)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1565)
: : : : : : :- Exchange (1559)
: : : : : : : +- Filter (1558)
: : : : : : : +- Scan parquet (1557)
: : : : : : +- BroadcastExchange (1564)
: : : : : : +- Project (1563)
: : : : : : +- Exchange (1562)
: : : : : : +- Project (1561)
: : : : : : +- Scan parquet (1560)
: : : : : +- BroadcastExchange (1570)
: : : : : +- Exchange (1569)
: : : : : +- Project (1568)
: : : : : +- Scan parquet (1567)
: : : : +- BroadcastExchange (1577)
: : : : +- Exchange (1576)
: : : : +- Project (1575)
: : : : +- Filter (1574)
: : : : +- Scan parquet (1573)
: : : +- Sort (1626)
: : : +- Project (1625)
: : : +- Generate (1624)
: : : +- Project (1623)
: : : +- Generate (1622)
: : : +- Project (1621)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1620)
: : : :- Project (1614)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1613)
: : : : :- Project (1608)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1607)
: : : : : :- Exchange (1601)
: : : : : : +- Filter (1600)
: : : : : : +- Scan parquet (1599)
: : : : : +- BroadcastExchange (1606)
: : : : : +- Project (1605)
: : : : : +- Exchange (1604)
: : : : : +- Project (1603)
: : : : : +- Scan parquet (1602)
: : : : +- BroadcastExchange (1612)
: : : : +- Exchange (1611)
: : : : +- Project (1610)
: : : : +- Scan parquet (1609)
: : : +- BroadcastExchange (1619)
: : : +- Exchange (1618)
: : : +- Project (1617)
: : : +- Filter (1616)
: : : +- Scan parquet (1615)
: : +- Sort (1721)
: : +- Exchange (1720)
: : +- HashAggregate (1719)
: : +- HashAggregate (1718)
: : +- Project (1717)
: : +- SortMergeJoin Inner (1716)
: : :- Sort (1687)
: : : +- Exchange (1686)
: : : +- Project (1685)
: : : +- Filter (1684)
: : : +- Generate (1683)
: : : +- Filter (1682)
: : : +- ObjectHashAggregate (1681)
: : : +- ObjectHashAggregate (1680)
: : : +- Generate (1679)
: : : +- BroadcastHashJoin Inner BuildLeft (1678)
: : : :- BroadcastExchange (1635)
: : : : +- Exchange (1634)
: : : : +- Project (1633)
: : : : +- Filter (1632)
: : : : +- Scan parquet (1631)
: : : +- Project (1677)
: : : +- BroadcastHashJoin Inner BuildLeft (1676)
: : : :- BroadcastExchange (1645)
: : : : +- Project (1644)
: : : : +- Generate (1643)
: : : : +- Project (1642)
: : : : +- Filter (1641)
: : : : +- Generate (1640)
: : : : +- Exchange (1639)
: : : : +- Project (1638)
: : : : +- Filter (1637)
: : : : +- Scan parquet (1636)
: : : +- HashAggregate (1675)
: : : +- Exchange (1674)
: : : +- HashAggregate (1673)
: : : +- Project (1672)
: : : +- Generate (1671)
: : : +- Project (1670)
: : : +- Generate (1669)
: : : +- Project (1668)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1667)
: : : :- Project (1661)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1660)
: : : : :- Project (1655)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1654)
: : : : : :- Exchange (1648)
: : : : : : +- Filter (1647)
: : : : : : +- Scan parquet (1646)
: : : : : +- BroadcastExchange (1653)
: : : : : +- Project (1652)
: : : : : +- Exchange (1651)
: : : : : +- Project (1650)
: : : : : +- Scan parquet (1649)
: : : : +- BroadcastExchange (1659)
: : : : +- Exchange (1658)
: : : : +- Project (1657)
: : : : +- Scan parquet (1656)
: : : +- BroadcastExchange (1666)
: : : +- Exchange (1665)
: : : +- Project (1664)
: : : +- Filter (1663)
: : : +- Scan parquet (1662)
: : +- Sort (1715)
: : +- Project (1714)
: : +- Generate (1713)
: : +- Project (1712)
: : +- Generate (1711)
: : +- Project (1710)
: : +- BroadcastHashJoin LeftOuter BuildRight (1709)
: : :- Project (1703)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1702)
: : : :- Project (1697)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1696)
: : : : :- Exchange (1690)
: : : : : +- Filter (1689)
: : : : : +- Scan parquet (1688)
: : : : +- BroadcastExchange (1695)
: : : : +- Project (1694)
: : : : +- Exchange (1693)
: : : : +- Project (1692)
: : : : +- Scan parquet (1691)
: : : +- BroadcastExchange (1701)
: : : +- Exchange (1700)
: : : +- Project (1699)
: : : +- Scan parquet (1698)
: : +- BroadcastExchange (1708)
: : +- Exchange (1707)
: : +- Project (1706)
: : +- Filter (1705)
: : +- Scan parquet (1704)
: +- Sort (1958)
: +- Exchange (1957)
: +- SerializeFromObject (1956)
: +- MapElements (1955)
: +- DeserializeToObject (1954)
: +- ObjectHashAggregate (1953)
: +- ObjectHashAggregate (1952)
: +- Project (1951)
: +- BroadcastHashJoin LeftOuter BuildRight (1950)
: :- Project (1946)
: : +- SortMergeJoin LeftOuter (1945)
: : :- Sort (1758)
: : : +- Project (1757)
: : : +- Project (1756)
: : : +- Generate (1755)
: : : +- Generate (1754)
: : : +- Project (1753)
: : : +- Project (1752)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1751)
: : : :- Project (1745)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1744)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (1739)
: : : : : :- Exchange (1733)
: : : : : : +- Scan parquet (1732)
: : : : : +- BroadcastExchange (1738)
: : : : : +- Project (1737)
: : : : : +- Exchange (1736)
: : : : : +- Project (1735)
: : : : : +- Scan parquet (1734)
: : : : +- BroadcastExchange (1743)
: : : : +- Exchange (1742)
: : : : +- Project (1741)
: : : : +- Scan parquet (1740)
: : : +- BroadcastExchange (1750)
: : : +- Exchange (1749)
: : : +- Project (1748)
: : : +- Filter (1747)
: : : +- Scan parquet (1746)
: : +- Sort (1944)
: : +- HashAggregate (1943)
: : +- Exchange (1942)
: : +- HashAggregate (1941)
: : +- Project (1940)
: : +- SortMergeJoin Inner (1939)
: : :- Sort (1847)
: : : +- Exchange (1846)
: : : +- Project (1845)
: : : +- SortMergeJoin Inner (1844)
: : : :- Sort (1815)
: : : : +- Exchange (1814)
: : : : +- Project (1813)
: : : : +- Filter (1812)
: : : : +- Generate (1811)
: : : : +- Filter (1810)
: : : : +- ObjectHashAggregate (1809)
: : : : +- ObjectHashAggregate (1808)
: : : : +- Generate (1807)
: : : : +- BroadcastHashJoin Inner BuildLeft (1806)
: : : : :- BroadcastExchange (1763)
: : : : : +- Exchange (1762)
: : : : : +- Project (1761)
: : : : : +- Filter (1760)
: : : : : +- Scan parquet (1759)
: : : : +- Project (1805)
: : : : +- BroadcastHashJoin Inner BuildLeft (1804)
: : : : :- BroadcastExchange (1773)
: : : : : +- Project (1772)
: : : : : +- Generate (1771)
: : : : : +- Project (1770)
: : : : : +- Filter (1769)
: : : : : +- Generate (1768)
: : : : : +- Exchange (1767)
: : : : : +- Project (1766)
: : : : : +- Filter (1765)
: : : : : +- Scan parquet (1764)
: : : : +- HashAggregate (1803)
: : : : +- Exchange (1802)
: : : : +- HashAggregate (1801)
: : : : +- Project (1800)
: : : : +- Generate (1799)
: : : : +- Project (1798)
: : : : +- Generate (1797)
: : : : +- Project (1796)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1795)
: : : : :- Project (1789)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1788)
: : : : : :- Project (1783)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (1782)
: : : : : : :- Exchange (1776)
: : : : : : : +- Filter (1775)
: : : : : : : +- Scan parquet (1774)
: : : : : : +- BroadcastExchange (1781)
: : : : : : +- Project (1780)
: : : : : : +- Exchange (1779)
: : : : : : +- Project (1778)
: : : : : : +- Scan parquet (1777)
: : : : : +- BroadcastExchange (1787)
: : : : : +- Exchange (1786)
: : : : : +- Project (1785)
: : : : : +- Scan parquet (1784)
: : : : +- BroadcastExchange (1794)
: : : : +- Exchange (1793)
: : : : +- Project (1792)
: : : : +- Filter (1791)
: : : : +- Scan parquet (1790)
: : : +- Sort (1843)
: : : +- Project (1842)
: : : +- Generate (1841)
: : : +- Project (1840)
: : : +- Generate (1839)
: : : +- Project (1838)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1837)
: : : :- Project (1831)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1830)
: : : : :- Project (1825)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1824)
: : : : : :- Exchange (1818)
: : : : : : +- Filter (1817)
: : : : : : +- Scan parquet (1816)
: : : : : +- BroadcastExchange (1823)
: : : : : +- Project (1822)
: : : : : +- Exchange (1821)
: : : : : +- Project (1820)
: : : : : +- Scan parquet (1819)
: : : : +- BroadcastExchange (1829)
: : : : +- Exchange (1828)
: : : : +- Project (1827)
: : : : +- Scan parquet (1826)
: : : +- BroadcastExchange (1836)
: : : +- Exchange (1835)
: : : +- Project (1834)
: : : +- Filter (1833)
: : : +- Scan parquet (1832)
: : +- Sort (1938)
: : +- Exchange (1937)
: : +- HashAggregate (1936)
: : +- HashAggregate (1935)
: : +- Project (1934)
: : +- SortMergeJoin Inner (1933)
: : :- Sort (1904)
: : : +- Exchange (1903)
: : : +- Project (1902)
: : : +- Filter (1901)
: : : +- Generate (1900)
: : : +- Filter (1899)
: : : +- ObjectHashAggregate (1898)
: : : +- ObjectHashAggregate (1897)
: : : +- Generate (1896)
: : : +- BroadcastHashJoin Inner BuildLeft (1895)
: : : :- BroadcastExchange (1852)
: : : : +- Exchange (1851)
: : : : +- Project (1850)
: : : : +- Filter (1849)
: : : : +- Scan parquet (1848)
: : : +- Project (1894)
: : : +- BroadcastHashJoin Inner BuildLeft (1893)
: : : :- BroadcastExchange (1862)
: : : : +- Project (1861)
: : : : +- Generate (1860)
: : : : +- Project (1859)
: : : : +- Filter (1858)
: : : : +- Generate (1857)
: : : : +- Exchange (1856)
: : : : +- Project (1855)
: : : : +- Filter (1854)
: : : : +- Scan parquet (1853)
: : : +- HashAggregate (1892)
: : : +- Exchange (1891)
: : : +- HashAggregate (1890)
: : : +- Project (1889)
: : : +- Generate (1888)
: : : +- Project (1887)
: : : +- Generate (1886)
: : : +- Project (1885)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1884)
: : : :- Project (1878)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1877)
: : : : :- Project (1872)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1871)
: : : : : :- Exchange (1865)
: : : : : : +- Filter (1864)
: : : : : : +- Scan parquet (1863)
: : : : : +- BroadcastExchange (1870)
: : : : : +- Project (1869)
: : : : : +- Exchange (1868)
: : : : : +- Project (1867)
: : : : : +- Scan parquet (1866)
: : : : +- BroadcastExchange (1876)
: : : : +- Exchange (1875)
: : : : +- Project (1874)
: : : : +- Scan parquet (1873)
: : : +- BroadcastExchange (1883)
: : : +- Exchange (1882)
: : : +- Project (1881)
: : : +- Filter (1880)
: : : +- Scan parquet (1879)
: : +- Sort (1932)
: : +- Project (1931)
: : +- Generate (1930)
: : +- Project (1929)
: : +- Generate (1928)
: : +- Project (1927)
: : +- BroadcastHashJoin LeftOuter BuildRight (1926)
: : :- Project (1920)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1919)
: : : :- Project (1914)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1913)
: : : : :- Exchange (1907)
: : : : : +- Filter (1906)
: : : : : +- Scan parquet (1905)
: : : : +- BroadcastExchange (1912)
: : : : +- Project (1911)
: : : : +- Exchange (1910)
: : : : +- Project (1909)
: : : : +- Scan parquet (1908)
: : : +- BroadcastExchange (1918)
: : : +- Exchange (1917)
: : : +- Project (1916)
: : : +- Scan parquet (1915)
: : +- BroadcastExchange (1925)
: : +- Exchange (1924)
: : +- Project (1923)
: : +- Filter (1922)
: : +- Scan parquet (1921)
: +- BroadcastExchange (1949)
: +- Filter (1948)
: +- Scan parquet (1947)
+- BroadcastExchange (1968)
+- Project (1967)
+- Filter (1966)
+- Generate (1965)
+- Exchange (1964)
+- Project (1963)
+- Filter (1962)
+- Scan parquet (1961)
(1) Scan parquet
Output [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
(3) Exchange
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Arguments: hashpartitioning(product#1199942, plant#1199943, 37), REPARTITION_BY_NUM, [plan_id=1843795]
(4) ShuffleQueryStage
Output [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
(7) Project [codegen id : 2]
Output [4]: [plant#1199949.internalRefUUID AS _extract_internalRefUUID#1204628, product#1199950.internalRefUUID AS _extract_internalRefUUID#1204625, productionAspect#1199952.productMovementPlants.unitOfIssue.code AS _extract_code#1204626, productionAspect#1199952.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204627]
Input [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
(8) Exchange
Input [4]: [_extract_internalRefUUID#1204628, _extract_internalRefUUID#1204625, _extract_code#1204626, _extract_internalRefUUID#1204627]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1843809]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#1204628, _extract_internalRefUUID#1204625, _extract_code#1204626, _extract_internalRefUUID#1204627]
Arguments: 1
(10) Project [codegen id : 100]
Output [4]: [_extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
Input [4]: [_extract_internalRefUUID#1204628, _extract_internalRefUUID#1204625, _extract_code#1204626, _extract_internalRefUUID#1204627]
(11) BroadcastExchange
Input [4]: [_extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
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=1889554]
(12) BroadcastQueryStage
Output [4]: [_extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
Arguments: 186
(13) BroadcastHashJoin [codegen id : 187]
Left keys [4]: [coalesce(product#1199942, ), isnull(product#1199942), coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204625, ), isnull(_extract_internalRefUUID#1204625), coalesce(_extract_internalRefUUID#1204628, ), isnull(_extract_internalRefUUID#1204628)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 187]
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
(15) Scan parquet
Output [2]: [internalUUID#1199960, systemId#1199959]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(16) ColumnarToRow [codegen id : 3]
Input [2]: [internalUUID#1199960, systemId#1199959]
(17) Project [codegen id : 3]
Output [1]: [internalUUID#1199960]
Input [2]: [internalUUID#1199960, systemId#1199959]
(18) Exchange
Input [1]: [internalUUID#1199960]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1843828]
(19) ShuffleQueryStage
Output [1]: [internalUUID#1199960]
Arguments: 2
(20) BroadcastExchange
Input [1]: [internalUUID#1199960]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1843836]
(21) BroadcastQueryStage
Output [1]: [internalUUID#1199960]
Arguments: 187
(22) BroadcastHashJoin [codegen id : 187]
Left keys [2]: [coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [2]: [coalesce(internalUUID#1199960, ), isnull(internalUUID#1199960)]
Join type: LeftOuter
Join condition: None
(23) Project [codegen id : 187]
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627]
Input [6]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627, internalUUID#1199960]
(24) Scan parquet
Output [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(25) ColumnarToRow [codegen id : 4]
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
(26) Filter [codegen id : 4]
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
Condition : isnotnull(internalUUID#1199976)
(27) Project [codegen id : 4]
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
(28) Exchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1843848]
(29) ShuffleQueryStage
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: 3
(30) BroadcastExchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1843858]
(31) BroadcastQueryStage
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: 188
(32) BroadcastHashJoin [codegen id : 187]
Left keys [1]: [product#1199942]
Right keys [1]: [internalUUID#1199976]
Join type: LeftOuter
Join condition: None
(33) Project
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, filter(unitOfMeasureConversions#1199982, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204626) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204627)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1199980.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1199980.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1199988]
Input [8]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627, internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
(34) Project [codegen id : 188]
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, filteredUnitOfMeasureConversions#1199988.quantityDenominator AS _extract_quantityDenominator#1204367, filteredUnitOfMeasureConversions#1199988.quantityNumerator AS _extract_quantityNumerator#1204368]
Input [4]: [product#1199942, plant#1199943, orderDateTime#1199944, filteredUnitOfMeasureConversions#1199988]
(35) Generate [codegen id : 188]
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_quantityDenominator#1204367, _extract_quantityNumerator#1204368]
Arguments: explode(_extract_quantityNumerator#1204368), [product#1199942, plant#1199943, orderDateTime#1199944, _extract_quantityDenominator#1204367], true, [quantityNumerator#1199996]
(36) Generate [codegen id : 188]
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_quantityDenominator#1204367, quantityNumerator#1199996]
Arguments: explode(_extract_quantityDenominator#1204367), [product#1199942, plant#1199943, orderDateTime#1199944, quantityNumerator#1199996], true, [quantityDenominator#1199999]
(37) Project [codegen id : 188]
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, (cast(quantityNumerator#1199996 as double) / cast(quantityDenominator#1199999 as double)) AS outboundUnit#1200000]
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, quantityNumerator#1199996, quantityDenominator#1199999]
(38) Project [codegen id : 188]
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, CASE WHEN (isnull(outboundUnit#1200000) OR (outboundUnit#1200000 <= 0.0)) THEN 1.0 ELSE outboundUnit#1200000 END AS outboundUnit#1200001]
Input [4]: [product#1199942, plant#1199943, orderDateTime#1199944, outboundUnit#1200000]
(39) Scan parquet
Output [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(40) ColumnarToRow [codegen id : 5]
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
(41) Filter [codegen id : 5]
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
Condition : (isnotnull(plant#1200041.internalRefUUID) AND isnotnull(product#1200040.internalRefUUID))
(42) Project [codegen id : 5]
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
(43) Exchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1843876]
(44) ShuffleQueryStage
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: 4
(45) BroadcastExchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
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=1843886]
(46) BroadcastQueryStage
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: 189
(47) Scan parquet
Output [2]: [marketUnit#1200002, distributionCenters#1200008]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(48) ColumnarToRow [codegen id : 6]
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
(49) Filter [codegen id : 6]
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
Condition : (((marketUnit#1200002 <=> Grocery_SS) AND (size(distributionCenters#1200008, true) > 0)) AND isnotnull(distributionCenters#1200008))
(50) Project [codegen id : 6]
Output [1]: [distributionCenters#1200008]
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
(51) Exchange
Input [1]: [distributionCenters#1200008]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1843896]
(52) ShuffleQueryStage
Output [1]: [distributionCenters#1200008]
Arguments: 5
(53) Generate [codegen id : 101]
Input [1]: [distributionCenters#1200008]
Arguments: explode(distributionCenters#1200008), false, [distributionCenters#1200026]
(54) Filter [codegen id : 101]
Input [1]: [distributionCenters#1200026]
Condition : (((size(distributionCenters#1200026.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200026.storageLocations)) AND isnotnull(distributionCenters#1200026.internalRefUUID))
(55) Project [codegen id : 101]
Output [2]: [distributionCenters#1200026.internalRefUUID AS _extract_internalRefUUID#1204276, distributionCenters#1200026.storageLocations AS _extract_storageLocations#1204277]
Input [1]: [distributionCenters#1200026]
(56) Generate [codegen id : 101]
Input [2]: [_extract_internalRefUUID#1204276, _extract_storageLocations#1204277]
Arguments: explode(_extract_storageLocations#1204277), [_extract_internalRefUUID#1204276], false, [storageLocations#1200033]
(57) Project [codegen id : 101]
Output [3]: [_extract_internalRefUUID#1204276 AS plantUuid#1200028, storageLocations#1200033.id AS storageLocId#1200034, storageLocations#1200033.internalRefUUID AS storageLocUuid#1200035]
Input [2]: [_extract_internalRefUUID#1204276, storageLocations#1200033]
(58) BroadcastExchange
Input [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1889583]
(59) BroadcastQueryStage
Output [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: 190
(60) Scan parquet
Output [2]: [product#1200298, plant#1200299]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(61) ColumnarToRow [codegen id : 7]
Input [2]: [product#1200298, plant#1200299]
(62) Filter [codegen id : 7]
Input [2]: [product#1200298, plant#1200299]
Condition : isnotnull(plant#1200299)
(63) Exchange
Input [2]: [product#1200298, plant#1200299]
Arguments: hashpartitioning(product#1200298, plant#1200299, 37), REPARTITION_BY_NUM, [plan_id=1843919]
(64) ShuffleQueryStage
Output [2]: [product#1200298, plant#1200299]
Arguments: 6
(65) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1204629, _extract_internalRefUUID#1204630, _extract_internalRefUUID#1204631, _extract_internalRefUUID#1204632]
(66) BroadcastQueryStage
Output [4]: [_extract_code#1204629, _extract_internalRefUUID#1204630, _extract_internalRefUUID#1204631, _extract_internalRefUUID#1204632]
Arguments: 192
(67) BroadcastHashJoin [codegen id : 128]
Left keys [4]: [coalesce(product#1200298, ), isnull(product#1200298), coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204631, ), isnull(_extract_internalRefUUID#1204631), coalesce(_extract_internalRefUUID#1204632, ), isnull(_extract_internalRefUUID#1204632)]
Join type: LeftOuter
Join condition: None
(68) Project [codegen id : 128]
Output [4]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630]
Input [6]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630, _extract_internalRefUUID#1204631, _extract_internalRefUUID#1204632]
(69) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#1200312]
(70) BroadcastQueryStage
Output [1]: [internalUUID#1200312]
Arguments: 193
(71) BroadcastHashJoin [codegen id : 128]
Left keys [2]: [coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [2]: [coalesce(internalUUID#1200312, ), isnull(internalUUID#1200312)]
Join type: LeftOuter
Join condition: None
(72) Project [codegen id : 128]
Output [4]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630]
Input [5]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630, internalUUID#1200312]
(73) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
(74) BroadcastQueryStage
Output [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Arguments: 194
(75) BroadcastHashJoin [codegen id : 128]
Left keys [1]: [product#1200298]
Right keys [1]: [internalUUID#1200326]
Join type: LeftOuter
Join condition: None
(76) Project
Output [2]: [plant#1200299, filter(unitOfMeasureConversions#1200332, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204629) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204630)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200330.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200330.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200337]
Input [7]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630, internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
(77) Generate [codegen id : 129]
Input [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337]
Arguments: explode(filteredUnitOfMeasureConversions#1200337.quantityNumerator), [plant#1200299, filteredUnitOfMeasureConversions#1200337], true, [quantityNumerator#1200338]
(78) Project [codegen id : 129]
Output [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337.quantityDenominator AS _extract_quantityDenominator#1204278]
Input [3]: [plant#1200299, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338]
(79) Generate [codegen id : 129]
Input [2]: [plant#1200299, _extract_quantityDenominator#1204278]
Arguments: explode(_extract_quantityDenominator#1204278), [plant#1200299], true, [quantityDenominator#1200339]
(80) Project [codegen id : 129]
Output [1]: [plant#1200299]
Input [2]: [plant#1200299, quantityDenominator#1200339]
(81) HashAggregate [codegen id : 129]
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(82) Exchange
Input [1]: [plant#1200299]
Arguments: hashpartitioning(plant#1200299, 37), ENSURE_REQUIREMENTS, [plan_id=1895582]
(83) ShuffleQueryStage
Output [1]: [plant#1200299]
Arguments: 287
(84) AQEShuffleRead
Input [1]: [plant#1200299]
Arguments: coalesced
(85) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(86) BroadcastHashJoin
Left keys [1]: [plantUuid#1200028]
Right keys [1]: [plant#1200299]
Join type: Inner
Join condition: None
(87) Project
Output [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Input [4]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035, plant#1200299]
(88) BroadcastHashJoin [codegen id : 145]
Left keys [2]: [coalesce(plant#1200041.internalRefUUID, ), isnull(plant#1200041.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200028, ), isnull(plantUuid#1200028)]
Join type: Inner
Join condition: None
(89) Generate
Input [9]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: explode(filter(stockQuantities#1200043, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200035) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200034)), lambda x#1200047, false))), [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028], false, [stockQuantity#1200048]
(90) ObjectHashAggregate
Input [7]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028, stockQuantity#1200048]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [partial_first(calculationDateTime#1200042, false), partial_collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [3]: [first#1201961, valueSet#1201962, buf#1201963]
Results [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
(91) ObjectHashAggregate
Input [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [first(calculationDateTime#1200042, false), collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200042)()#1200062, collect_list(stockQuantity#1200048, 0, 0)#1200063]
Results [4]: [product#1200040, plant#1200041, first(calculationDateTime#1200042)()#1200062 AS calculationDateTime#1200049, collect_list(stockQuantity#1200048, 0, 0)#1200063 AS stockQuantities#1200050]
(92) Filter [codegen id : 146]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Condition : ((size(stockQuantities#1200050, true) > 0) AND isnotnull(calculationDateTime#1200049))
(93) Generate [codegen id : 146]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Arguments: explode(stockQuantities#1200050), [product#1200040, plant#1200041, calculationDateTime#1200049], false, [stockQuantity#1200065]
(94) Filter [codegen id : 146]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
Condition : (((isnotnull(stockQuantity#1200065.specialStockIndicator.code) AND isnotnull(stockQuantity#1200065.stockType.code)) AND (stockQuantity#1200065.specialStockIndicator.code = )) AND (stockQuantity#1200065.stockType.code = 01))
(95) Project [codegen id : 146]
Output [5]: [plant#1200041.internalRefUUID AS plantUuid#1200067, product#1200040.internalRefUUID AS productUuid#1200069, calculationDateTime#1200049, stockQuantity#1200065.storagelocation.id AS storageLocId#1200070, stockQuantity#1200065.quantity.measure AS quantity#1200072]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
(96) Exchange
Input [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: hashpartitioning(productUuid#1200069, plantUuid#1200067, 37), ENSURE_REQUIREMENTS, [plan_id=1901825]
(97) ShuffleQueryStage
Output [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: 303
(98) AQEShuffleRead
Input [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: local
(99) BroadcastExchange
Input [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1906718]
(100) BroadcastQueryStage
Output [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: 334
(101) Scan parquet
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(102) ColumnarToRow [codegen id : 11]
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
(103) Filter [codegen id : 11]
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Condition : ((isnotnull(orderDateTime#1200086) AND isnotnull(plant#1200085)) AND isnotnull(product#1200084))
(104) Exchange
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: hashpartitioning(product#1200084, plant#1200085, 37), REPARTITION_BY_NUM, [plan_id=1844019]
(105) ShuffleQueryStage
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: 13
(106) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1204634, _extract_internalRefUUID#1204635, _extract_internalRefUUID#1204633, _extract_internalRefUUID#1204636]
(107) BroadcastQueryStage
Output [4]: [_extract_code#1204634, _extract_internalRefUUID#1204635, _extract_internalRefUUID#1204633, _extract_internalRefUUID#1204636]
Arguments: 196
(108) BroadcastHashJoin [codegen id : 171]
Left keys [4]: [coalesce(product#1200084, ), isnull(product#1200084), coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204633, ), isnull(_extract_internalRefUUID#1204633), coalesce(_extract_internalRefUUID#1204636, ), isnull(_extract_internalRefUUID#1204636)]
Join type: LeftOuter
Join condition: None
(109) Project [codegen id : 171]
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635]
Input [7]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635, _extract_internalRefUUID#1204633, _extract_internalRefUUID#1204636]
(110) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#1200098]
(111) BroadcastQueryStage
Output [1]: [internalUUID#1200098]
Arguments: 197
(112) BroadcastHashJoin [codegen id : 171]
Left keys [2]: [coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [2]: [coalesce(internalUUID#1200098, ), isnull(internalUUID#1200098)]
Join type: LeftOuter
Join condition: None
(113) Project [codegen id : 171]
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635]
Input [6]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635, internalUUID#1200098]
(114) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
(115) BroadcastQueryStage
Output [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Arguments: 198
(116) BroadcastHashJoin [codegen id : 171]
Left keys [1]: [product#1200084]
Right keys [1]: [internalUUID#1200112]
Join type: LeftOuter
Join condition: None
(117) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filter(unitOfMeasureConversions#1200118, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204634) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204635)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200116.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200116.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200123]
Input [8]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635, internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
(118) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123]
Arguments: explode(filteredUnitOfMeasureConversions#1200123.quantityNumerator), [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123], true, [quantityNumerator#1200124]
(119) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123.quantityDenominator AS _extract_quantityDenominator#1204282]
Input [5]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124]
(120) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_quantityDenominator#1204282]
Arguments: explode(_extract_quantityDenominator#1204282), [product#1200084, plant#1200085, orderDateTime#1200086], true, [quantityDenominator#1200125]
(121) Project
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, quantityDenominator#1200125]
(122) BroadcastHashJoin [codegen id : 172]
Left keys [2]: [plantUuid#1200067, productUuid#1200069]
Right keys [2]: [plant#1200085, product#1200084]
Join type: Inner
Join condition: (calculationDateTime#1200049 <= orderDateTime#1200086)
(123) Project [codegen id : 172]
Output [5]: [plantUuid#1200067 AS plant#1200132, productUuid#1200069 AS product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Input [8]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072, product#1200084, plant#1200085, orderDateTime#1200086]
(124) Exchange
Input [5]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Arguments: hashpartitioning(coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049), 37), ENSURE_REQUIREMENTS, [plan_id=1907728]
(125) ShuffleQueryStage
Output [5]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Arguments: 339
(126) AQEShuffleRead
Input [5]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Arguments: local
(127) ReusedExchange [Reuses operator id: 45]
Output [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
(128) BroadcastQueryStage
Output [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
Arguments: 199
(129) ReusedExchange [Reuses operator id: 58]
Output [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
(130) BroadcastQueryStage
Output [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Arguments: 201
(131) ReusedExchange [Reuses operator id: 82]
Output [1]: [plant#1200176]
(132) ShuffleQueryStage
Output [1]: [plant#1200176]
Arguments: 289
(133) AQEShuffleRead
Input [1]: [plant#1200176]
Arguments: coalesced
(134) HashAggregate
Input [1]: [plant#1200176]
Keys [1]: [plant#1200176]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200176]
(135) BroadcastHashJoin
Left keys [1]: [plantUuid#1200172]
Right keys [1]: [plant#1200176]
Join type: Inner
Join condition: None
(136) Project
Output [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Input [4]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174, plant#1200176]
(137) BroadcastHashJoin [codegen id : 147]
Left keys [2]: [coalesce(plant#1200144.internalRefUUID, ), isnull(plant#1200144.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200172, ), isnull(plantUuid#1200172)]
Join type: Inner
Join condition: None
(138) Generate
Input [9]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Arguments: explode(filter(stockQuantities#1200146, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200174) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200173)), lambda x#1200047, false))), [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, plantUuid#1200172], false, [stockQuantity#1200219]
(139) ObjectHashAggregate
Input [7]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, plantUuid#1200172, stockQuantity#1200219]
Keys [5]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141]
Functions [2]: [partial_first(calculationDateTime#1200145, false), partial_collect_list(stockQuantity#1200219, 0, 0)]
Aggregate Attributes [3]: [first#1201969, valueSet#1201970, buf#1201971]
Results [8]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first#1201972, valueSet#1201973, buf#1201974]
(140) ObjectHashAggregate
Input [8]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first#1201972, valueSet#1201973, buf#1201974]
Keys [5]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141]
Functions [2]: [first(calculationDateTime#1200145, false), collect_list(stockQuantity#1200219, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200145)()#1200062, collect_list(stockQuantity#1200219, 0, 0)#1200063]
Results [4]: [product#1200143, plant#1200144, first(calculationDateTime#1200145)()#1200062 AS calculationDateTime#1200220, collect_list(stockQuantity#1200219, 0, 0)#1200063 AS stockQuantities#1200221]
(141) Filter [codegen id : 148]
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
Condition : ((size(stockQuantities#1200221, true) > 0) AND isnotnull(calculationDateTime#1200220))
(142) Generate [codegen id : 148]
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
Arguments: explode(stockQuantities#1200221), [product#1200143, plant#1200144, calculationDateTime#1200220], false, [stockQuantity#1200222]
(143) Filter [codegen id : 148]
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantity#1200222]
Condition : (((isnotnull(stockQuantity#1200222.specialStockIndicator.code) AND isnotnull(stockQuantity#1200222.stockType.code)) AND (stockQuantity#1200222.specialStockIndicator.code = )) AND (stockQuantity#1200222.stockType.code = 01))
(144) Project [codegen id : 148]
Output [4]: [plant#1200144.internalRefUUID AS plantUuid#1200224, product#1200143.internalRefUUID AS productUuid#1200226, calculationDateTime#1200220, stockQuantity#1200222.storagelocation.id AS storageLocId#1200227]
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantity#1200222]
(145) Exchange
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: hashpartitioning(productUuid#1200226, plantUuid#1200224, 37), ENSURE_REQUIREMENTS, [plan_id=1901893]
(146) ShuffleQueryStage
Output [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: 304
(147) AQEShuffleRead
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: local
(148) BroadcastExchange
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1903875]
(149) BroadcastQueryStage
Output [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: 317
(150) ReusedExchange [Reuses operator id: 104]
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
(151) ShuffleQueryStage
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Arguments: 33
(152) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1204642, _extract_internalRefUUID#1204643, _extract_internalRefUUID#1204644, _extract_internalRefUUID#1204641]
(153) BroadcastQueryStage
Output [4]: [_extract_code#1204642, _extract_internalRefUUID#1204643, _extract_internalRefUUID#1204644, _extract_internalRefUUID#1204641]
Arguments: 207
(154) BroadcastHashJoin [codegen id : 161]
Left keys [4]: [coalesce(product#1200232, ), isnull(product#1200232), coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204644, ), isnull(_extract_internalRefUUID#1204644), coalesce(_extract_internalRefUUID#1204641, ), isnull(_extract_internalRefUUID#1204641)]
Join type: LeftOuter
Join condition: None
(155) Project [codegen id : 161]
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643]
Input [7]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643, _extract_internalRefUUID#1204644, _extract_internalRefUUID#1204641]
(156) ReusedExchange [Reuses operator id: 20]
Output [1]: [internalUUID#1200246]
(157) BroadcastQueryStage
Output [1]: [internalUUID#1200246]
Arguments: 208
(158) BroadcastHashJoin [codegen id : 161]
Left keys [2]: [coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [2]: [coalesce(internalUUID#1200246, ), isnull(internalUUID#1200246)]
Join type: LeftOuter
Join condition: None
(159) Project [codegen id : 161]
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643]
Input [6]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643, internalUUID#1200246]
(160) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
(161) BroadcastQueryStage
Output [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Arguments: 209
(162) BroadcastHashJoin [codegen id : 161]
Left keys [1]: [product#1200232]
Right keys [1]: [internalUUID#1200260]
Join type: LeftOuter
Join condition: None
(163) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filter(unitOfMeasureConversions#1200266, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204642) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204643)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200264.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200264.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200271]
Input [8]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643, internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
(164) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271]
Arguments: explode(filteredUnitOfMeasureConversions#1200271.quantityNumerator), [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271], true, [quantityNumerator#1200272]
(165) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271.quantityDenominator AS _extract_quantityDenominator#1204292]
Input [5]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272]
(166) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_quantityDenominator#1204292]
Arguments: explode(_extract_quantityDenominator#1204292), [product#1200232, plant#1200233, orderDateTime#1200234], true, [quantityDenominator#1200273]
(167) Project
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, quantityDenominator#1200273]
(168) BroadcastHashJoin [codegen id : 162]
Left keys [2]: [plantUuid#1200224, productUuid#1200226]
Right keys [2]: [plant#1200233, product#1200232]
Join type: Inner
Join condition: (calculationDateTime#1200220 <= orderDateTime#1200234)
(169) Project [codegen id : 162]
Output [4]: [plantUuid#1200224 AS plant#1200276, productUuid#1200226 AS product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Input [7]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227, product#1200232, plant#1200233, orderDateTime#1200234]
(170) HashAggregate [codegen id : 162]
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [partial_max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max#1201967]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
(171) HashAggregate [codegen id : 162]
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max(calculationDateTime#1200220)#1200140]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max(calculationDateTime#1200220)#1200140 AS max_calc_datetime#1200134]
(172) Exchange
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: hashpartitioning(coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134), 37), ENSURE_REQUIREMENTS, [plan_id=1905352]
(173) ShuffleQueryStage
Output [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: 326
(174) AQEShuffleRead
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: local
(175) BroadcastExchange
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
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=1909343]
(176) BroadcastQueryStage
Output [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: 345
(177) BroadcastHashJoin [codegen id : 178]
Left keys [8]: [coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049)]
Right keys [8]: [coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134)]
Join type: Inner
Join condition: None
(178) Project [codegen id : 178]
Output [4]: [plant#1200132, product#1200133, calculationDateTime#1200049, quantity#1200072]
Input [9]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072, plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
(179) HashAggregate [codegen id : 178]
Input [4]: [plant#1200132, product#1200133, calculationDateTime#1200049, quantity#1200072]
Keys [2]: [product#1200133, plant#1200132]
Functions [2]: [partial_min(calculationDateTime#1200049), partial_sum(quantity#1200072)]
Aggregate Attributes [2]: [min#1201959, sum#1205416]
Results [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
(180) Exchange
Input [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
Arguments: hashpartitioning(product#1200133, plant#1200132, 37), ENSURE_REQUIREMENTS, [plan_id=1910750]
(181) ShuffleQueryStage
Output [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
Arguments: 351
(182) AQEShuffleRead
Input [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
Arguments: coalesced
(183) HashAggregate [codegen id : 182]
Input [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
Keys [2]: [product#1200133, plant#1200132]
Functions [2]: [min(calculationDateTime#1200049), sum(quantity#1200072)]
Aggregate Attributes [2]: [min(calculationDateTime#1200049)#1200296, sum(quantity#1200072)#1200295]
Results [4]: [product#1200133, plant#1200132, min(calculationDateTime#1200049)#1200296 AS minCalculationDateTime#1200289, round(sum(quantity#1200072)#1200295, 0) AS roundedQuantitySum#1200297]
(184) BroadcastExchange
Input [4]: [product#1200133, plant#1200132, minCalculationDateTime#1200289, roundedQuantitySum#1200297]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1911978]
(185) BroadcastQueryStage
Output [4]: [product#1200133, plant#1200132, minCalculationDateTime#1200289, roundedQuantitySum#1200297]
Arguments: 357
(186) BroadcastHashJoin [codegen id : 188]
Left keys [2]: [plant#1199943, product#1199942]
Right keys [2]: [plant#1200132, product#1200133]
Join type: LeftOuter
Join condition: None
(187) Project [codegen id : 188]
Output [5]: [product#1199942, plant#1199943, outboundUnit#1200001, CASE WHEN isnotnull(minCalculationDateTime#1200289) THEN minCalculationDateTime#1200289 ELSE orderDateTime#1199944 END AS stockDatetime#1200346, CASE WHEN isnotnull(roundedQuantitySum#1200297) THEN array(roundedQuantitySum#1200297) ELSE [0.0] END AS stockBatchQuantities#1200347]
Input [8]: [product#1199942, plant#1199943, orderDateTime#1199944, outboundUnit#1200001, product#1200133, plant#1200132, minCalculationDateTime#1200289, roundedQuantitySum#1200297]
(188) Exchange
Input [5]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347]
Arguments: hashpartitioning(coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942), 37), ENSURE_REQUIREMENTS, [plan_id=1913074]
(189) ShuffleQueryStage
Output [5]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347]
Arguments: 363
(190) AQEShuffleRead
Input [5]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347]
Arguments: local
(191) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
(192) ShuffleQueryStage
Output [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Arguments: 41
(193) Scan parquet
Output [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(194) ColumnarToRow [codegen id : 26]
Input [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
(195) Project [codegen id : 26]
Output [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Input [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
(196) Exchange
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1844378]
(197) ShuffleQueryStage
Output [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Arguments: 42
(198) Project [codegen id : 107]
Output [1]: [struct(systemId, systemId#1200428, internalUUID, internalUUID#1200429, plant, plant#1200430, product, product#1200431, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200432, productionAspect, productionAspect#1200433, salesPlant, salesPlant#1200434, listing, listing#1200435) AS productPlant#1200436]
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
(199) BroadcastExchange
Input [1]: [productPlant#1200436]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=1889783]
(200) BroadcastQueryStage
Output [1]: [productPlant#1200436]
Arguments: 210
(201) BroadcastHashJoin [codegen id : 189]
Left keys [4]: [coalesce(product#1200424, ), isnull(product#1200424), coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [4]: [coalesce(productPlant#1200436.product.internalRefUUID, ), isnull(productPlant#1200436.product.internalRefUUID), coalesce(productPlant#1200436.plant.internalRefUUID, ), isnull(productPlant#1200436.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(202) Scan parquet
Output [3]: [internalUUID#1200438, address#1200444, systemId#1200437]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(203) ColumnarToRow [codegen id : 27]
Input [3]: [internalUUID#1200438, address#1200444, systemId#1200437]
(204) Project [codegen id : 27]
Output [2]: [internalUUID#1200438, address#1200444.timeZone.code AS timezonecode#1200449]
Input [3]: [internalUUID#1200438, address#1200444, systemId#1200437]
(205) Exchange
Input [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1844396]
(206) ShuffleQueryStage
Output [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: 43
(207) BroadcastExchange
Input [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1844404]
(208) BroadcastQueryStage
Output [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: 211
(209) BroadcastHashJoin [codegen id : 189]
Left keys [2]: [coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [2]: [coalesce(internalUUID#1200438, ), isnull(internalUUID#1200438)]
Join type: LeftOuter
Join condition: None
(210) Project [codegen id : 189]
Output [5]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, CASE WHEN isnotnull(timezonecode#1200449) THEN timezonecode#1200449 ELSE UTC END AS timezonecode#1200450]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, internalUUID#1200438, timezonecode#1200449]
(211) ReusedExchange [Reuses operator id: 30]
Output [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
(212) BroadcastQueryStage
Output [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Arguments: 212
(213) BroadcastHashJoin [codegen id : 189]
Left keys [1]: [product#1200424]
Right keys [1]: [internalUUID#1200452]
Join type: LeftOuter
Join condition: None
(214) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filter(unitOfMeasureConversions#1200458, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200456.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200456.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200463]
Input [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
(215) Project [codegen id : 190]
Output [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463.quantityDenominator AS _extract_quantityDenominator#1204399, filteredUnitOfMeasureConversions#1200463.quantityNumerator AS _extract_quantityNumerator#1204400]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463]
(216) Generate [codegen id : 190]
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1204399, _extract_quantityNumerator#1204400]
Arguments: explode(_extract_quantityNumerator#1204400), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1204399], true, [quantityNumerator#1200464]
(217) Generate [codegen id : 190]
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1204399, quantityNumerator#1200464]
Arguments: explode(_extract_quantityDenominator#1204399), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464], true, [quantityDenominator#1200465]
(218) Project [codegen id : 190]
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, (cast(quantityNumerator#1200464 as double) / cast(quantityDenominator#1200465 as double)) AS outboundUnit#1200466]
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464, quantityDenominator#1200465]
(219) Project [codegen id : 190]
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, CASE WHEN (isnull(outboundUnit#1200466) OR (outboundUnit#1200466 <= 0.0)) THEN 1.0 ELSE outboundUnit#1200466 END AS outboundUnit#1200467]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200466]
(220) ReusedExchange [Reuses operator id: 184]
Output [4]: [product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
(221) BroadcastQueryStage
Output [4]: [product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
Arguments: 359
(222) BroadcastHashJoin [codegen id : 190]
Left keys [2]: [plant#1200425, product#1200424]
Right keys [2]: [plant#1200603, product#1200604]
Join type: LeftOuter
Join condition: None
(223) Project [codegen id : 190]
Output [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, CASE WHEN isnotnull(minCalculationDateTime#1200744) THEN minCalculationDateTime#1200744 ELSE orderDateTime#1200426 END AS stockDatetime#1200746, CASE WHEN isnotnull(roundedQuantitySum#1200745) THEN array(roundedQuantitySum#1200745) ELSE [0.0] END AS stockBatchQuantities#1200747]
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
(224) Scan parquet
Output [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001355/0_1_10000001355]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(225) ColumnarToRow [codegen id : 49]
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
(226) Filter [codegen id : 49]
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Condition : (isnotnull(product#1200349) AND isnotnull(plant#1200350))
(227) BroadcastExchange
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1844940]
(228) BroadcastQueryStage
Output [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Arguments: 86
(229) BroadcastHashJoin [codegen id : 190]
Left keys [2]: [product#1200424, plant#1200425]
Right keys [2]: [product#1200349, plant#1200350]
Join type: LeftOuter
Join condition: None
(230) Project [codegen id : 190]
Output [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, CASE WHEN isnotnull(product#1200349) THEN struct(demandChannel, demandChannel#1200351, demandStream, demandStream#1200352, considerVariance, considerVariance#1200353, demandTimeBuckets, demandTimeBuckets#1200354, demandPointInTimeStart, demandPointInTimeStart#1200355, demandPointInTimeEnd, demandPointInTimeEnd#1200356, demandPointInTime, demandPointInTime#1200357) END AS rawDemands#1200370]
Input [17]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
(231) ObjectHashAggregate
Input [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, rawDemands#1200370]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, knownfloatingpointnormalized(if (isnull(productPlant#1200436)) null else named_struct(systemId, productPlant#1200436.systemId, internalUUID, productPlant#1200436.internalUUID, plant, productPlant#1200436.plant, product, productPlant#1200436.product, blockedForReplenishmentStartingFrom, productPlant#1200436.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect)) null else named_struct(productMovementPlants, productPlant#1200436.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1200436.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1200436.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1200436.salesPlant, listing, productPlant#1200436.listing)) AS productPlant#1200436, timezonecode#1200450, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1200467)) AS outboundUnit#1200467, stockDatetime#1200746, knownfloatingpointnormalized(transform(stockBatchQuantities#1200747, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1208216)), lambda arg#1208216, false))) AS stockBatchQuantities#1200747, [7226582400000000] AS [7226582400000000]#1208215]
Functions [1]: [partial_collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [buf#1201977]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1208215, buf#1201978]
(232) ObjectHashAggregate
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1208215, buf#1201978]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1208215]
Functions [1]: [collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1200370, 0, 0)#1200389]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1200748, collect_list(rawDemands#1200370, 0, 0)#1200389 AS rawDemands#1200371]
(233) DeserializeToObject [codegen id : 191]
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, rawDemands#1200371]
Arguments: createexternalrow(invoke(product#1200424.toString()), invoke(plant#1200425.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1200426)), if (isnull(productPlant#1200436)) null else createexternalrow(invoke(productPlant#1200436.systemId.toString()), invoke(productPlant#1200436.internalUUID.toString()), if (isnull(productPlant#1200436.plant)) null else createexternalrow(invoke(productPlant#1200436.plant.internalRefUUID.toString()), invoke(productPlant#1200436.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1200436.product)) null else createexternalrow(invoke(productPlant#1200436.product.internalRefUUID.toString()), invoke(productPlant#1200436.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1200436.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1200436.productionAspect)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.salesPlant)) null else createexternalrow(if (isnull(productPlant#1200436.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1200436.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.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)), invoke(timezonecode#1200450.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1200467)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1200746)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1200747, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1200748, 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#1200371, 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(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(234) MapElements [codegen id : 191]
Input [1]: [obj#1200410]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, obj#1200415: org.apache.spark.sql.Row
(235) SerializeFromObject [codegen id : 191]
Input [1]: [obj#1200415]
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#1200420, 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#1200421, 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#1200422, 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#1200423]
(236) Exchange
Input [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: hashpartitioning(coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420), 37), ENSURE_REQUIREMENTS, [plan_id=1913143]
(237) ShuffleQueryStage
Output [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: 364
(238) AQEShuffleRead
Input [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: local
(239) BroadcastExchange
Input [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
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=1913989]
(240) BroadcastQueryStage
Output [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: 368
(241) BroadcastHashJoin [codegen id : 196]
Left keys [4]: [coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942)]
Right keys [4]: [coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420)]
Join type: LeftOuter
Join condition: None
(242) Project [codegen id : 196]
Output [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Input [9]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
(243) Exchange
Input [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: hashpartitioning(product#1199942, plant#1199943, 37), ENSURE_REQUIREMENTS, [plan_id=1914069]
(244) ShuffleQueryStage
Output [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: 369
(245) AQEShuffleRead
Input [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: coalesced
(246) Project [codegen id : 198]
Output [12]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423, cast(null as string) AS product#1200791, cast(null as string) AS plant#1200790, cast(null as array<double>) AS _extract_openQtyInBaseUnit#1204364, cast(null as array<timestamp>) AS _extract_availabilityDatetime#1204365, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#1204366]
Input [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
(247) Project [codegen id : 198]
Output [16]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, coalesce(_extract_openQtyInBaseUnit#1204364, []) AS openGoodsMovementQuantities#1203879, coalesce(_extract_availabilityDatetime#1204365, []) AS openGoodsMovementAvailabilityDatetimes#1203880, coalesce(_extract_shelfLifeEndDatetime#1204366, []) AS openGoodsMovementShelfLifeEndDatetimes#1203881, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1203982, [ListingPeriod] AS timeDependentSettingsName#1204121, [-2208988800000000] AS timeDependentSettingsStartDatetime#1204122, [7226582400000000] AS timeDependentSettingsEndDatetime#1204123, [1.0] AS timeDependentSettingsValue#1204124]
Input [12]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423, product#1200791, plant#1200790, _extract_openQtyInBaseUnit#1204364, _extract_availabilityDatetime#1204365, _extract_shelfLifeEndDatetime#1204366]
(248) ResultQueryStage
Output [16]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, timeDependentSettingsEndDatetime#1204123, timeDependentSettingsValue#1204124]
Arguments: 372
(249) Exchange
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Arguments: hashpartitioning(product#1199942, plant#1199943, 37), REPARTITION_BY_NUM, [plan_id=1841235]
(250) Project
Output [4]: [plant#1199949.internalRefUUID AS _extract_internalRefUUID#1204628, product#1199950.internalRefUUID AS _extract_internalRefUUID#1204625, productionAspect#1199952.productMovementPlants.unitOfIssue.code AS _extract_code#1204626, productionAspect#1199952.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204627]
Input [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
(251) Exchange
Input [4]: [_extract_internalRefUUID#1204628, _extract_internalRefUUID#1204625, _extract_code#1204626, _extract_internalRefUUID#1204627]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841238]
(252) Project
Output [4]: [_extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
Input [4]: [_extract_internalRefUUID#1204628, _extract_internalRefUUID#1204625, _extract_code#1204626, _extract_internalRefUUID#1204627]
(253) BroadcastExchange
Input [4]: [_extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
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=1842382]
(254) BroadcastHashJoin
Left keys [4]: [coalesce(product#1199942, ), isnull(product#1199942), coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204625, ), isnull(_extract_internalRefUUID#1204625), coalesce(_extract_internalRefUUID#1204628, ), isnull(_extract_internalRefUUID#1204628)]
Join type: LeftOuter
Join condition: None
(255) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627, _extract_internalRefUUID#1204625, _extract_internalRefUUID#1204628]
(256) Project
Output [1]: [internalUUID#1199960]
Input [2]: [internalUUID#1199960, systemId#1199959]
(257) Exchange
Input [1]: [internalUUID#1199960]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841244]
(258) BroadcastExchange
Input [1]: [internalUUID#1199960]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842386]
(259) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [2]: [coalesce(internalUUID#1199960, ), isnull(internalUUID#1199960)]
Join type: LeftOuter
Join condition: None
(260) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627]
Input [6]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627, internalUUID#1199960]
(261) Filter
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
Condition : isnotnull(internalUUID#1199976)
(262) Project
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
(263) Exchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841250]
(264) BroadcastExchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842390]
(265) BroadcastHashJoin
Left keys [1]: [product#1199942]
Right keys [1]: [internalUUID#1199976]
Join type: LeftOuter
Join condition: None
(266) Project
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, filter(unitOfMeasureConversions#1199982, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204626) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204627)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1199980.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1199980.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1199988]
Input [8]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1204626, _extract_internalRefUUID#1204627, internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
(267) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, filteredUnitOfMeasureConversions#1199988.quantityDenominator AS _extract_quantityDenominator#1204367, filteredUnitOfMeasureConversions#1199988.quantityNumerator AS _extract_quantityNumerator#1204368]
Input [4]: [product#1199942, plant#1199943, orderDateTime#1199944, filteredUnitOfMeasureConversions#1199988]
(268) Generate
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_quantityDenominator#1204367, _extract_quantityNumerator#1204368]
Arguments: explode(_extract_quantityNumerator#1204368), [product#1199942, plant#1199943, orderDateTime#1199944, _extract_quantityDenominator#1204367], true, [quantityNumerator#1199996]
(269) Generate
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_quantityDenominator#1204367, quantityNumerator#1199996]
Arguments: explode(_extract_quantityDenominator#1204367), [product#1199942, plant#1199943, orderDateTime#1199944, quantityNumerator#1199996], true, [quantityDenominator#1199999]
(270) Project
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, (cast(quantityNumerator#1199996 as double) / cast(quantityDenominator#1199999 as double)) AS outboundUnit#1200000]
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, quantityNumerator#1199996, quantityDenominator#1199999]
(271) Project
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, CASE WHEN (isnull(outboundUnit#1200000) OR (outboundUnit#1200000 <= 0.0)) THEN 1.0 ELSE outboundUnit#1200000 END AS outboundUnit#1200001]
Input [4]: [product#1199942, plant#1199943, orderDateTime#1199944, outboundUnit#1200000]
(272) Sort
Input [4]: [product#1199942, plant#1199943, orderDateTime#1199944, outboundUnit#1200001]
Arguments: [product#1199942 ASC NULLS FIRST, plant#1199943 ASC NULLS FIRST], false, 0
(273) Filter
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
Condition : (isnotnull(plant#1200041.internalRefUUID) AND isnotnull(product#1200040.internalRefUUID))
(274) Project
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
(275) Exchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841261]
(276) BroadcastExchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
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=1842422]
(277) Filter
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
Condition : (((marketUnit#1200002 <=> Grocery_SS) AND (size(distributionCenters#1200008, true) > 0)) AND isnotnull(distributionCenters#1200008))
(278) Project
Output [1]: [distributionCenters#1200008]
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
(279) Exchange
Input [1]: [distributionCenters#1200008]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841265]
(280) Generate
Input [1]: [distributionCenters#1200008]
Arguments: explode(distributionCenters#1200008), false, [distributionCenters#1200026]
(281) Filter
Input [1]: [distributionCenters#1200026]
Condition : (((size(distributionCenters#1200026.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200026.storageLocations)) AND isnotnull(distributionCenters#1200026.internalRefUUID))
(282) Project
Output [2]: [distributionCenters#1200026.internalRefUUID AS _extract_internalRefUUID#1204276, distributionCenters#1200026.storageLocations AS _extract_storageLocations#1204277]
Input [1]: [distributionCenters#1200026]
(283) Generate
Input [2]: [_extract_internalRefUUID#1204276, _extract_storageLocations#1204277]
Arguments: explode(_extract_storageLocations#1204277), [_extract_internalRefUUID#1204276], false, [storageLocations#1200033]
(284) Project
Output [3]: [_extract_internalRefUUID#1204276 AS plantUuid#1200028, storageLocations#1200033.id AS storageLocId#1200034, storageLocations#1200033.internalRefUUID AS storageLocUuid#1200035]
Input [2]: [_extract_internalRefUUID#1204276, storageLocations#1200033]
(285) BroadcastExchange
Input [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842418]
(286) Filter
Input [2]: [product#1200298, plant#1200299]
Condition : isnotnull(plant#1200299)
(287) Exchange
Input [2]: [product#1200298, plant#1200299]
Arguments: hashpartitioning(product#1200298, plant#1200299, 37), REPARTITION_BY_NUM, [plan_id=1842022]
(288) Scan parquet
Output [4]: [plant#1200304, product#1200305, productionAspect#1200307, systemId#1200302]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(289) Project
Output [4]: [plant#1200304.internalRefUUID AS _extract_internalRefUUID#1204632, product#1200305.internalRefUUID AS _extract_internalRefUUID#1204631, productionAspect#1200307.productMovementPlants.unitOfIssue.code AS _extract_code#1204629, productionAspect#1200307.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204630]
Input [4]: [plant#1200304, product#1200305, productionAspect#1200307, systemId#1200302]
(290) Exchange
Input [4]: [_extract_internalRefUUID#1204632, _extract_internalRefUUID#1204631, _extract_code#1204629, _extract_internalRefUUID#1204630]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841277]
(291) Project
Output [4]: [_extract_code#1204629, _extract_internalRefUUID#1204630, _extract_internalRefUUID#1204631, _extract_internalRefUUID#1204632]
Input [4]: [_extract_internalRefUUID#1204632, _extract_internalRefUUID#1204631, _extract_code#1204629, _extract_internalRefUUID#1204630]
(292) BroadcastExchange
Input [4]: [_extract_code#1204629, _extract_internalRefUUID#1204630, _extract_internalRefUUID#1204631, _extract_internalRefUUID#1204632]
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=1842398]
(293) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200298, ), isnull(product#1200298), coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204631, ), isnull(_extract_internalRefUUID#1204631), coalesce(_extract_internalRefUUID#1204632, ), isnull(_extract_internalRefUUID#1204632)]
Join type: LeftOuter
Join condition: None
(294) Project
Output [4]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630]
Input [6]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630, _extract_internalRefUUID#1204631, _extract_internalRefUUID#1204632]
(295) Scan parquet
Output [2]: [internalUUID#1200312, systemId#1200311]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(296) Project
Output [1]: [internalUUID#1200312]
Input [2]: [internalUUID#1200312, systemId#1200311]
(297) Exchange
Input [1]: [internalUUID#1200312]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841283]
(298) BroadcastExchange
Input [1]: [internalUUID#1200312]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842402]
(299) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [2]: [coalesce(internalUUID#1200312, ), isnull(internalUUID#1200312)]
Join type: LeftOuter
Join condition: None
(300) Project
Output [4]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630]
Input [5]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630, internalUUID#1200312]
(301) Scan parquet
Output [4]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332, systemId#1200325]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(302) Filter
Input [4]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332, systemId#1200325]
Condition : isnotnull(internalUUID#1200326)
(303) Project
Output [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Input [4]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332, systemId#1200325]
(304) Exchange
Input [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841289]
(305) BroadcastExchange
Input [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842406]
(306) BroadcastHashJoin
Left keys [1]: [product#1200298]
Right keys [1]: [internalUUID#1200326]
Join type: LeftOuter
Join condition: None
(307) Project
Output [2]: [plant#1200299, filter(unitOfMeasureConversions#1200332, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204629) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204630)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200330.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200330.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200337]
Input [7]: [product#1200298, plant#1200299, _extract_code#1204629, _extract_internalRefUUID#1204630, internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
(308) Generate
Input [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337]
Arguments: explode(filteredUnitOfMeasureConversions#1200337.quantityNumerator), [plant#1200299, filteredUnitOfMeasureConversions#1200337], true, [quantityNumerator#1200338]
(309) Project
Output [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337.quantityDenominator AS _extract_quantityDenominator#1204278]
Input [3]: [plant#1200299, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338]
(310) Generate
Input [2]: [plant#1200299, _extract_quantityDenominator#1204278]
Arguments: explode(_extract_quantityDenominator#1204278), [plant#1200299], true, [quantityDenominator#1200339]
(311) Project
Output [1]: [plant#1200299]
Input [2]: [plant#1200299, quantityDenominator#1200339]
(312) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(313) Exchange
Input [1]: [plant#1200299]
Arguments: hashpartitioning(plant#1200299, 37), ENSURE_REQUIREMENTS, [plan_id=1842415]
(314) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(315) BroadcastHashJoin
Left keys [1]: [plantUuid#1200028]
Right keys [1]: [plant#1200299]
Join type: Inner
Join condition: None
(316) Project
Output [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Input [4]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035, plant#1200299]
(317) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200041.internalRefUUID, ), isnull(plant#1200041.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200028, ), isnull(plantUuid#1200028)]
Join type: Inner
Join condition: None
(318) Generate
Input [9]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: explode(filter(stockQuantities#1200043, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200035) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200034)), lambda x#1200047, false))), [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028], false, [stockQuantity#1200048]
(319) ObjectHashAggregate
Input [7]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028, stockQuantity#1200048]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [partial_first(calculationDateTime#1200042, false), partial_collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [3]: [first#1201961, valueSet#1201962, buf#1201963]
Results [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
(320) ObjectHashAggregate
Input [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [first(calculationDateTime#1200042, false), collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200042)()#1200062, collect_list(stockQuantity#1200048, 0, 0)#1200063]
Results [4]: [product#1200040, plant#1200041, first(calculationDateTime#1200042)()#1200062 AS calculationDateTime#1200049, collect_list(stockQuantity#1200048, 0, 0)#1200063 AS stockQuantities#1200050]
(321) Filter
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Condition : ((size(stockQuantities#1200050, true) > 0) AND isnotnull(calculationDateTime#1200049))
(322) Generate
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Arguments: explode(stockQuantities#1200050), [product#1200040, plant#1200041, calculationDateTime#1200049], false, [stockQuantity#1200065]
(323) Filter
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
Condition : (((isnotnull(stockQuantity#1200065.specialStockIndicator.code) AND isnotnull(stockQuantity#1200065.stockType.code)) AND (stockQuantity#1200065.specialStockIndicator.code = )) AND (stockQuantity#1200065.stockType.code = 01))
(324) Project
Output [5]: [plant#1200041.internalRefUUID AS plantUuid#1200067, product#1200040.internalRefUUID AS productUuid#1200069, calculationDateTime#1200049, stockQuantity#1200065.storagelocation.id AS storageLocId#1200070, stockQuantity#1200065.quantity.measure AS quantity#1200072]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
(325) Exchange
Input [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: hashpartitioning(productUuid#1200069, plantUuid#1200067, 37), ENSURE_REQUIREMENTS, [plan_id=1842448]
(326) Sort
Input [5]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072]
Arguments: [productUuid#1200069 ASC NULLS FIRST, plantUuid#1200067 ASC NULLS FIRST], false, 0
(327) Filter
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Condition : ((isnotnull(orderDateTime#1200086) AND isnotnull(plant#1200085)) AND isnotnull(product#1200084))
(328) Exchange
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: hashpartitioning(product#1200084, plant#1200085, 37), REPARTITION_BY_NUM, [plan_id=1842045]
(329) Scan parquet
Output [4]: [plant#1200090, product#1200091, productionAspect#1200093, systemId#1200088]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(330) Project
Output [4]: [plant#1200090.internalRefUUID AS _extract_internalRefUUID#1204636, product#1200091.internalRefUUID AS _extract_internalRefUUID#1204633, productionAspect#1200093.productMovementPlants.unitOfIssue.code AS _extract_code#1204634, productionAspect#1200093.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204635]
Input [4]: [plant#1200090, product#1200091, productionAspect#1200093, systemId#1200088]
(331) Exchange
Input [4]: [_extract_internalRefUUID#1204636, _extract_internalRefUUID#1204633, _extract_code#1204634, _extract_internalRefUUID#1204635]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841314]
(332) Project
Output [4]: [_extract_code#1204634, _extract_internalRefUUID#1204635, _extract_internalRefUUID#1204633, _extract_internalRefUUID#1204636]
Input [4]: [_extract_internalRefUUID#1204636, _extract_internalRefUUID#1204633, _extract_code#1204634, _extract_internalRefUUID#1204635]
(333) BroadcastExchange
Input [4]: [_extract_code#1204634, _extract_internalRefUUID#1204635, _extract_internalRefUUID#1204633, _extract_internalRefUUID#1204636]
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=1842431]
(334) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200084, ), isnull(product#1200084), coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204633, ), isnull(_extract_internalRefUUID#1204633), coalesce(_extract_internalRefUUID#1204636, ), isnull(_extract_internalRefUUID#1204636)]
Join type: LeftOuter
Join condition: None
(335) Project
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635]
Input [7]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635, _extract_internalRefUUID#1204633, _extract_internalRefUUID#1204636]
(336) Scan parquet
Output [2]: [internalUUID#1200098, systemId#1200097]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(337) Project
Output [1]: [internalUUID#1200098]
Input [2]: [internalUUID#1200098, systemId#1200097]
(338) Exchange
Input [1]: [internalUUID#1200098]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841320]
(339) BroadcastExchange
Input [1]: [internalUUID#1200098]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842435]
(340) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [2]: [coalesce(internalUUID#1200098, ), isnull(internalUUID#1200098)]
Join type: LeftOuter
Join condition: None
(341) Project
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635]
Input [6]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635, internalUUID#1200098]
(342) Scan parquet
Output [4]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118, systemId#1200111]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(343) Filter
Input [4]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118, systemId#1200111]
Condition : isnotnull(internalUUID#1200112)
(344) Project
Output [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Input [4]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118, systemId#1200111]
(345) Exchange
Input [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841326]
(346) BroadcastExchange
Input [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842439]
(347) BroadcastHashJoin
Left keys [1]: [product#1200084]
Right keys [1]: [internalUUID#1200112]
Join type: LeftOuter
Join condition: None
(348) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filter(unitOfMeasureConversions#1200118, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204634) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204635)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200116.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200116.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200123]
Input [8]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1204634, _extract_internalRefUUID#1204635, internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
(349) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123]
Arguments: explode(filteredUnitOfMeasureConversions#1200123.quantityNumerator), [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123], true, [quantityNumerator#1200124]
(350) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123.quantityDenominator AS _extract_quantityDenominator#1204282]
Input [5]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124]
(351) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_quantityDenominator#1204282]
Arguments: explode(_extract_quantityDenominator#1204282), [product#1200084, plant#1200085, orderDateTime#1200086], true, [quantityDenominator#1200125]
(352) Project
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, quantityDenominator#1200125]
(353) Sort
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: [product#1200084 ASC NULLS FIRST, plant#1200085 ASC NULLS FIRST], false, 0
(354) SortMergeJoin
Left keys [2]: [productUuid#1200069, plantUuid#1200067]
Right keys [2]: [product#1200084, plant#1200085]
Join type: Inner
Join condition: (calculationDateTime#1200049 <= orderDateTime#1200086)
(355) Project
Output [5]: [plantUuid#1200067 AS plant#1200132, productUuid#1200069 AS product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Input [8]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, quantity#1200072, product#1200084, plant#1200085, orderDateTime#1200086]
(356) Exchange
Input [5]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Arguments: hashpartitioning(coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049), 37), ENSURE_REQUIREMENTS, [plan_id=1842512]
(357) Sort
Input [5]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
Arguments: [coalesce(plant#1200132, ) ASC NULLS FIRST, isnull(plant#1200132) ASC NULLS FIRST, coalesce(product#1200133, ) ASC NULLS FIRST, isnull(product#1200133) ASC NULLS FIRST, coalesce(storageLocId#1200070, ) ASC NULLS FIRST, isnull(storageLocId#1200070) ASC NULLS FIRST, coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1200049) ASC NULLS FIRST], false, 0
(358) Scan parquet
Output [6]: [internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, systemId#1200141]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(359) Filter
Input [6]: [internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, systemId#1200141]
Condition : (isnotnull(plant#1200144.internalRefUUID) AND isnotnull(product#1200143.internalRefUUID))
(360) Project
Output [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
Input [6]: [internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, systemId#1200141]
(361) Exchange
Input [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841338]
(362) BroadcastExchange
Input [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
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=1842477]
(363) Scan parquet
Output [2]: [marketUnit#1200147, distributionCenters#1200153]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(364) Filter
Input [2]: [marketUnit#1200147, distributionCenters#1200153]
Condition : (((marketUnit#1200147 <=> Grocery_SS) AND (size(distributionCenters#1200153, true) > 0)) AND isnotnull(distributionCenters#1200153))
(365) Project
Output [1]: [distributionCenters#1200153]
Input [2]: [marketUnit#1200147, distributionCenters#1200153]
(366) Exchange
Input [1]: [distributionCenters#1200153]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841342]
(367) Generate
Input [1]: [distributionCenters#1200153]
Arguments: explode(distributionCenters#1200153), false, [distributionCenters#1200169]
(368) Filter
Input [1]: [distributionCenters#1200169]
Condition : (((size(distributionCenters#1200169.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200169.storageLocations)) AND isnotnull(distributionCenters#1200169.internalRefUUID))
(369) Project
Output [2]: [distributionCenters#1200169.internalRefUUID AS _extract_internalRefUUID#1204286, distributionCenters#1200169.storageLocations AS _extract_storageLocations#1204287]
Input [1]: [distributionCenters#1200169]
(370) Generate
Input [2]: [_extract_internalRefUUID#1204286, _extract_storageLocations#1204287]
Arguments: explode(_extract_storageLocations#1204287), [_extract_internalRefUUID#1204286], false, [storageLocations#1200170]
(371) Project
Output [3]: [_extract_internalRefUUID#1204286 AS plantUuid#1200172, storageLocations#1200170.id AS storageLocId#1200173, storageLocations#1200170.internalRefUUID AS storageLocUuid#1200174]
Input [2]: [_extract_internalRefUUID#1204286, storageLocations#1200170]
(372) BroadcastExchange
Input [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842473]
(373) Scan parquet
Output [2]: [product#1200175, plant#1200176]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(374) Filter
Input [2]: [product#1200175, plant#1200176]
Condition : isnotnull(plant#1200176)
(375) Exchange
Input [2]: [product#1200175, plant#1200176]
Arguments: hashpartitioning(product#1200175, plant#1200176, 37), REPARTITION_BY_NUM, [plan_id=1842058]
(376) Scan parquet
Output [4]: [plant#1200181, product#1200182, productionAspect#1200184, systemId#1200179]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(377) Project
Output [4]: [plant#1200181.internalRefUUID AS _extract_internalRefUUID#1204637, product#1200182.internalRefUUID AS _extract_internalRefUUID#1204638, productionAspect#1200184.productMovementPlants.unitOfIssue.code AS _extract_code#1204639, productionAspect#1200184.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204640]
Input [4]: [plant#1200181, product#1200182, productionAspect#1200184, systemId#1200179]
(378) Exchange
Input [4]: [_extract_internalRefUUID#1204637, _extract_internalRefUUID#1204638, _extract_code#1204639, _extract_internalRefUUID#1204640]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841354]
(379) Project
Output [4]: [_extract_code#1204639, _extract_internalRefUUID#1204640, _extract_internalRefUUID#1204638, _extract_internalRefUUID#1204637]
Input [4]: [_extract_internalRefUUID#1204637, _extract_internalRefUUID#1204638, _extract_code#1204639, _extract_internalRefUUID#1204640]
(380) BroadcastExchange
Input [4]: [_extract_code#1204639, _extract_internalRefUUID#1204640, _extract_internalRefUUID#1204638, _extract_internalRefUUID#1204637]
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=1842453]
(381) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200175, ), isnull(product#1200175), coalesce(plant#1200176, ), isnull(plant#1200176)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204638, ), isnull(_extract_internalRefUUID#1204638), coalesce(_extract_internalRefUUID#1204637, ), isnull(_extract_internalRefUUID#1204637)]
Join type: LeftOuter
Join condition: None
(382) Project
Output [4]: [product#1200175, plant#1200176, _extract_code#1204639, _extract_internalRefUUID#1204640]
Input [6]: [product#1200175, plant#1200176, _extract_code#1204639, _extract_internalRefUUID#1204640, _extract_internalRefUUID#1204638, _extract_internalRefUUID#1204637]
(383) Scan parquet
Output [2]: [internalUUID#1200189, systemId#1200188]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(384) Project
Output [1]: [internalUUID#1200189]
Input [2]: [internalUUID#1200189, systemId#1200188]
(385) Exchange
Input [1]: [internalUUID#1200189]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841360]
(386) BroadcastExchange
Input [1]: [internalUUID#1200189]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842457]
(387) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200176, ), isnull(plant#1200176)]
Right keys [2]: [coalesce(internalUUID#1200189, ), isnull(internalUUID#1200189)]
Join type: LeftOuter
Join condition: None
(388) Project
Output [4]: [product#1200175, plant#1200176, _extract_code#1204639, _extract_internalRefUUID#1204640]
Input [5]: [product#1200175, plant#1200176, _extract_code#1204639, _extract_internalRefUUID#1204640, internalUUID#1200189]
(389) Scan parquet
Output [4]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209, systemId#1200202]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(390) Filter
Input [4]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209, systemId#1200202]
Condition : isnotnull(internalUUID#1200203)
(391) Project
Output [3]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
Input [4]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209, systemId#1200202]
(392) Exchange
Input [3]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841366]
(393) BroadcastExchange
Input [3]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842461]
(394) BroadcastHashJoin
Left keys [1]: [product#1200175]
Right keys [1]: [internalUUID#1200203]
Join type: LeftOuter
Join condition: None
(395) Project
Output [2]: [plant#1200176, filter(unitOfMeasureConversions#1200209, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204639) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204640)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200207.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200207.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200214]
Input [7]: [product#1200175, plant#1200176, _extract_code#1204639, _extract_internalRefUUID#1204640, internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
(396) Generate
Input [2]: [plant#1200176, filteredUnitOfMeasureConversions#1200214]
Arguments: explode(filteredUnitOfMeasureConversions#1200214.quantityNumerator), [plant#1200176, filteredUnitOfMeasureConversions#1200214], true, [quantityNumerator#1200215]
(397) Project
Output [2]: [plant#1200176, filteredUnitOfMeasureConversions#1200214.quantityDenominator AS _extract_quantityDenominator#1204288]
Input [3]: [plant#1200176, filteredUnitOfMeasureConversions#1200214, quantityNumerator#1200215]
(398) Generate
Input [2]: [plant#1200176, _extract_quantityDenominator#1204288]
Arguments: explode(_extract_quantityDenominator#1204288), [plant#1200176], true, [quantityDenominator#1200216]
(399) Project
Output [1]: [plant#1200176]
Input [2]: [plant#1200176, quantityDenominator#1200216]
(400) HashAggregate
Input [1]: [plant#1200176]
Keys [1]: [plant#1200176]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200176]
(401) Exchange
Input [1]: [plant#1200176]
Arguments: hashpartitioning(plant#1200176, 37), ENSURE_REQUIREMENTS, [plan_id=1842470]
(402) HashAggregate
Input [1]: [plant#1200176]
Keys [1]: [plant#1200176]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200176]
(403) BroadcastHashJoin
Left keys [1]: [plantUuid#1200172]
Right keys [1]: [plant#1200176]
Join type: Inner
Join condition: None
(404) Project
Output [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Input [4]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174, plant#1200176]
(405) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200144.internalRefUUID, ), isnull(plant#1200144.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200172, ), isnull(plantUuid#1200172)]
Join type: Inner
Join condition: None
(406) Generate
Input [9]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Arguments: explode(filter(stockQuantities#1200146, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200174) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200173)), lambda x#1200047, false))), [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, plantUuid#1200172], false, [stockQuantity#1200219]
(407) ObjectHashAggregate
Input [7]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, plantUuid#1200172, stockQuantity#1200219]
Keys [5]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141]
Functions [2]: [partial_first(calculationDateTime#1200145, false), partial_collect_list(stockQuantity#1200219, 0, 0)]
Aggregate Attributes [3]: [first#1201969, valueSet#1201970, buf#1201971]
Results [8]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first#1201972, valueSet#1201973, buf#1201974]
(408) ObjectHashAggregate
Input [8]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first#1201972, valueSet#1201973, buf#1201974]
Keys [5]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141]
Functions [2]: [first(calculationDateTime#1200145, false), collect_list(stockQuantity#1200219, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200145)()#1200062, collect_list(stockQuantity#1200219, 0, 0)#1200063]
Results [4]: [product#1200143, plant#1200144, first(calculationDateTime#1200145)()#1200062 AS calculationDateTime#1200220, collect_list(stockQuantity#1200219, 0, 0)#1200063 AS stockQuantities#1200221]
(409) Filter
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
Condition : ((size(stockQuantities#1200221, true) > 0) AND isnotnull(calculationDateTime#1200220))
(410) Generate
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
Arguments: explode(stockQuantities#1200221), [product#1200143, plant#1200144, calculationDateTime#1200220], false, [stockQuantity#1200222]
(411) Filter
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantity#1200222]
Condition : (((isnotnull(stockQuantity#1200222.specialStockIndicator.code) AND isnotnull(stockQuantity#1200222.stockType.code)) AND (stockQuantity#1200222.specialStockIndicator.code = )) AND (stockQuantity#1200222.stockType.code = 01))
(412) Project
Output [4]: [plant#1200144.internalRefUUID AS plantUuid#1200224, product#1200143.internalRefUUID AS productUuid#1200226, calculationDateTime#1200220, stockQuantity#1200222.storagelocation.id AS storageLocId#1200227]
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantity#1200222]
(413) Exchange
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: hashpartitioning(productUuid#1200226, plantUuid#1200224, 37), ENSURE_REQUIREMENTS, [plan_id=1842503]
(414) Sort
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: [productUuid#1200226 ASC NULLS FIRST, plantUuid#1200224 ASC NULLS FIRST], false, 0
(415) Scan parquet
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(416) Filter
Input [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Condition : ((isnotnull(orderDateTime#1200234) AND isnotnull(plant#1200233)) AND isnotnull(product#1200232))
(417) Exchange
Input [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Arguments: hashpartitioning(product#1200232, plant#1200233, 37), REPARTITION_BY_NUM, [plan_id=1842081]
(418) Scan parquet
Output [4]: [plant#1200238, product#1200239, productionAspect#1200241, systemId#1200236]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(419) Project
Output [4]: [plant#1200238.internalRefUUID AS _extract_internalRefUUID#1204641, product#1200239.internalRefUUID AS _extract_internalRefUUID#1204644, productionAspect#1200241.productMovementPlants.unitOfIssue.code AS _extract_code#1204642, productionAspect#1200241.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204643]
Input [4]: [plant#1200238, product#1200239, productionAspect#1200241, systemId#1200236]
(420) Exchange
Input [4]: [_extract_internalRefUUID#1204641, _extract_internalRefUUID#1204644, _extract_code#1204642, _extract_internalRefUUID#1204643]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841391]
(421) Project
Output [4]: [_extract_code#1204642, _extract_internalRefUUID#1204643, _extract_internalRefUUID#1204644, _extract_internalRefUUID#1204641]
Input [4]: [_extract_internalRefUUID#1204641, _extract_internalRefUUID#1204644, _extract_code#1204642, _extract_internalRefUUID#1204643]
(422) BroadcastExchange
Input [4]: [_extract_code#1204642, _extract_internalRefUUID#1204643, _extract_internalRefUUID#1204644, _extract_internalRefUUID#1204641]
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=1842486]
(423) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200232, ), isnull(product#1200232), coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204644, ), isnull(_extract_internalRefUUID#1204644), coalesce(_extract_internalRefUUID#1204641, ), isnull(_extract_internalRefUUID#1204641)]
Join type: LeftOuter
Join condition: None
(424) Project
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643]
Input [7]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643, _extract_internalRefUUID#1204644, _extract_internalRefUUID#1204641]
(425) Scan parquet
Output [2]: [internalUUID#1200246, systemId#1200245]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(426) Project
Output [1]: [internalUUID#1200246]
Input [2]: [internalUUID#1200246, systemId#1200245]
(427) Exchange
Input [1]: [internalUUID#1200246]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841397]
(428) BroadcastExchange
Input [1]: [internalUUID#1200246]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842490]
(429) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [2]: [coalesce(internalUUID#1200246, ), isnull(internalUUID#1200246)]
Join type: LeftOuter
Join condition: None
(430) Project
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643]
Input [6]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643, internalUUID#1200246]
(431) Scan parquet
Output [4]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266, systemId#1200259]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(432) Filter
Input [4]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266, systemId#1200259]
Condition : isnotnull(internalUUID#1200260)
(433) Project
Output [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Input [4]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266, systemId#1200259]
(434) Exchange
Input [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841403]
(435) BroadcastExchange
Input [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842494]
(436) BroadcastHashJoin
Left keys [1]: [product#1200232]
Right keys [1]: [internalUUID#1200260]
Join type: LeftOuter
Join condition: None
(437) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filter(unitOfMeasureConversions#1200266, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204642) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204643)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200264.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200264.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200271]
Input [8]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1204642, _extract_internalRefUUID#1204643, internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
(438) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271]
Arguments: explode(filteredUnitOfMeasureConversions#1200271.quantityNumerator), [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271], true, [quantityNumerator#1200272]
(439) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271.quantityDenominator AS _extract_quantityDenominator#1204292]
Input [5]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272]
(440) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_quantityDenominator#1204292]
Arguments: explode(_extract_quantityDenominator#1204292), [product#1200232, plant#1200233, orderDateTime#1200234], true, [quantityDenominator#1200273]
(441) Project
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, quantityDenominator#1200273]
(442) Sort
Input [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Arguments: [product#1200232 ASC NULLS FIRST, plant#1200233 ASC NULLS FIRST], false, 0
(443) SortMergeJoin
Left keys [2]: [productUuid#1200226, plantUuid#1200224]
Right keys [2]: [product#1200232, plant#1200233]
Join type: Inner
Join condition: (calculationDateTime#1200220 <= orderDateTime#1200234)
(444) Project
Output [4]: [plantUuid#1200224 AS plant#1200276, productUuid#1200226 AS product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Input [7]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227, product#1200232, plant#1200233, orderDateTime#1200234]
(445) HashAggregate
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [partial_max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max#1201967]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
(446) HashAggregate
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max(calculationDateTime#1200220)#1200140]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max(calculationDateTime#1200220)#1200140 AS max_calc_datetime#1200134]
(447) Exchange
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: hashpartitioning(coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134), 37), ENSURE_REQUIREMENTS, [plan_id=1842513]
(448) Sort
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: [coalesce(plant#1200276, ) ASC NULLS FIRST, isnull(plant#1200276) ASC NULLS FIRST, coalesce(product#1200277, ) ASC NULLS FIRST, isnull(product#1200277) ASC NULLS FIRST, coalesce(storageLocId#1200227, ) ASC NULLS FIRST, isnull(storageLocId#1200227) ASC NULLS FIRST, coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1200134) ASC NULLS FIRST], false, 0
(449) SortMergeJoin
Left keys [8]: [coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049)]
Right keys [8]: [coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134)]
Join type: Inner
Join condition: None
(450) Project
Output [4]: [plant#1200132, product#1200133, calculationDateTime#1200049, quantity#1200072]
Input [9]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072, plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
(451) HashAggregate
Input [4]: [plant#1200132, product#1200133, calculationDateTime#1200049, quantity#1200072]
Keys [2]: [product#1200133, plant#1200132]
Functions [2]: [partial_min(calculationDateTime#1200049), partial_sum(quantity#1200072)]
Aggregate Attributes [2]: [min#1201959, sum#1205416]
Results [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
(452) Exchange
Input [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
Arguments: hashpartitioning(product#1200133, plant#1200132, 37), ENSURE_REQUIREMENTS, [plan_id=1842520]
(453) HashAggregate
Input [4]: [product#1200133, plant#1200132, min#1201960, sum#1205417]
Keys [2]: [product#1200133, plant#1200132]
Functions [2]: [min(calculationDateTime#1200049), sum(quantity#1200072)]
Aggregate Attributes [2]: [min(calculationDateTime#1200049)#1200296, sum(quantity#1200072)#1200295]
Results [4]: [product#1200133, plant#1200132, min(calculationDateTime#1200049)#1200296 AS minCalculationDateTime#1200289, round(sum(quantity#1200072)#1200295, 0) AS roundedQuantitySum#1200297]
(454) Sort
Input [4]: [product#1200133, plant#1200132, minCalculationDateTime#1200289, roundedQuantitySum#1200297]
Arguments: [product#1200133 ASC NULLS FIRST, plant#1200132 ASC NULLS FIRST], false, 0
(455) SortMergeJoin
Left keys [2]: [product#1199942, plant#1199943]
Right keys [2]: [product#1200133, plant#1200132]
Join type: LeftOuter
Join condition: None
(456) Project
Output [5]: [product#1199942, plant#1199943, outboundUnit#1200001, CASE WHEN isnotnull(minCalculationDateTime#1200289) THEN minCalculationDateTime#1200289 ELSE orderDateTime#1199944 END AS stockDatetime#1200346, CASE WHEN isnotnull(roundedQuantitySum#1200297) THEN array(roundedQuantitySum#1200297) ELSE [0.0] END AS stockBatchQuantities#1200347]
Input [8]: [product#1199942, plant#1199943, orderDateTime#1199944, outboundUnit#1200001, product#1200133, plant#1200132, minCalculationDateTime#1200289, roundedQuantitySum#1200297]
(457) Exchange
Input [5]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347]
Arguments: hashpartitioning(coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942), 37), ENSURE_REQUIREMENTS, [plan_id=1842684]
(458) Sort
Input [5]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347]
Arguments: [coalesce(plant#1199943, ) ASC NULLS FIRST, isnull(plant#1199943) ASC NULLS FIRST, coalesce(product#1199942, ) ASC NULLS FIRST, isnull(product#1199942) ASC NULLS FIRST], false, 0
(459) Scan parquet
Output [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(460) Exchange
Input [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Arguments: hashpartitioning(product#1200424, plant#1200425, 37), REPARTITION_BY_NUM, [plan_id=1841421]
(461) Project
Output [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Input [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
(462) Exchange
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841424]
(463) Project
Output [1]: [struct(systemId, systemId#1200428, internalUUID, internalUUID#1200429, plant, plant#1200430, product, product#1200431, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200432, productionAspect, productionAspect#1200433, salesPlant, salesPlant#1200434, listing, listing#1200435) AS productPlant#1200436]
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
(464) BroadcastExchange
Input [1]: [productPlant#1200436]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=1842528]
(465) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200424, ), isnull(product#1200424), coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [4]: [coalesce(productPlant#1200436.product.internalRefUUID, ), isnull(productPlant#1200436.product.internalRefUUID), coalesce(productPlant#1200436.plant.internalRefUUID, ), isnull(productPlant#1200436.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(466) Project
Output [2]: [internalUUID#1200438, address#1200444.timeZone.code AS timezonecode#1200449]
Input [3]: [internalUUID#1200438, address#1200444, systemId#1200437]
(467) Exchange
Input [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841429]
(468) BroadcastExchange
Input [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842531]
(469) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [2]: [coalesce(internalUUID#1200438, ), isnull(internalUUID#1200438)]
Join type: LeftOuter
Join condition: None
(470) Project
Output [5]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, CASE WHEN isnotnull(timezonecode#1200449) THEN timezonecode#1200449 ELSE UTC END AS timezonecode#1200450]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, internalUUID#1200438, timezonecode#1200449]
(471) Scan parquet
Output [4]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458, systemId#1200451]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(472) Filter
Input [4]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458, systemId#1200451]
Condition : isnotnull(internalUUID#1200452)
(473) Project
Output [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Input [4]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458, systemId#1200451]
(474) Exchange
Input [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841435]
(475) BroadcastExchange
Input [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842535]
(476) BroadcastHashJoin
Left keys [1]: [product#1200424]
Right keys [1]: [internalUUID#1200452]
Join type: LeftOuter
Join condition: None
(477) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filter(unitOfMeasureConversions#1200458, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200456.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200456.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200463]
Input [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
(478) Project
Output [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463.quantityDenominator AS _extract_quantityDenominator#1204399, filteredUnitOfMeasureConversions#1200463.quantityNumerator AS _extract_quantityNumerator#1204400]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463]
(479) Generate
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1204399, _extract_quantityNumerator#1204400]
Arguments: explode(_extract_quantityNumerator#1204400), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1204399], true, [quantityNumerator#1200464]
(480) Generate
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1204399, quantityNumerator#1200464]
Arguments: explode(_extract_quantityDenominator#1204399), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464], true, [quantityDenominator#1200465]
(481) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, (cast(quantityNumerator#1200464 as double) / cast(quantityDenominator#1200465 as double)) AS outboundUnit#1200466]
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464, quantityDenominator#1200465]
(482) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, CASE WHEN (isnull(outboundUnit#1200466) OR (outboundUnit#1200466 <= 0.0)) THEN 1.0 ELSE outboundUnit#1200466 END AS outboundUnit#1200467]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200466]
(483) Sort
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467]
Arguments: [product#1200424 ASC NULLS FIRST, plant#1200425 ASC NULLS FIRST], false, 0
(484) Scan parquet
Output [6]: [internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, systemId#1200468]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(485) Filter
Input [6]: [internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, systemId#1200468]
Condition : (isnotnull(plant#1200471.internalRefUUID) AND isnotnull(product#1200470.internalRefUUID))
(486) Project
Output [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
Input [6]: [internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, systemId#1200468]
(487) Exchange
Input [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841446]
(488) BroadcastExchange
Input [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
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=1842567]
(489) Scan parquet
Output [2]: [marketUnit#1200474, distributionCenters#1200480]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(490) Filter
Input [2]: [marketUnit#1200474, distributionCenters#1200480]
Condition : (((marketUnit#1200474 <=> Grocery_SS) AND (size(distributionCenters#1200480, true) > 0)) AND isnotnull(distributionCenters#1200480))
(491) Project
Output [1]: [distributionCenters#1200480]
Input [2]: [marketUnit#1200474, distributionCenters#1200480]
(492) Exchange
Input [1]: [distributionCenters#1200480]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841450]
(493) Generate
Input [1]: [distributionCenters#1200480]
Arguments: explode(distributionCenters#1200480), false, [distributionCenters#1200496]
(494) Filter
Input [1]: [distributionCenters#1200496]
Condition : (((size(distributionCenters#1200496.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200496.storageLocations)) AND isnotnull(distributionCenters#1200496.internalRefUUID))
(495) Project
Output [2]: [distributionCenters#1200496.internalRefUUID AS _extract_internalRefUUID#1204298, distributionCenters#1200496.storageLocations AS _extract_storageLocations#1204299]
Input [1]: [distributionCenters#1200496]
(496) Generate
Input [2]: [_extract_internalRefUUID#1204298, _extract_storageLocations#1204299]
Arguments: explode(_extract_storageLocations#1204299), [_extract_internalRefUUID#1204298], false, [storageLocations#1200497]
(497) Project
Output [3]: [_extract_internalRefUUID#1204298 AS plantUuid#1200499, storageLocations#1200497.id AS storageLocId#1200500, storageLocations#1200497.internalRefUUID AS storageLocUuid#1200501]
Input [2]: [_extract_internalRefUUID#1204298, storageLocations#1200497]
(498) BroadcastExchange
Input [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842563]
(499) Scan parquet
Output [2]: [product#1200502, plant#1200503]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(500) Filter
Input [2]: [product#1200502, plant#1200503]
Condition : isnotnull(plant#1200503)
(501) Exchange
Input [2]: [product#1200502, plant#1200503]
Arguments: hashpartitioning(product#1200502, plant#1200503, 37), REPARTITION_BY_NUM, [plan_id=1842102]
(502) Scan parquet
Output [4]: [plant#1200508, product#1200509, productionAspect#1200511, systemId#1200506]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(503) Project
Output [4]: [plant#1200508.internalRefUUID AS _extract_internalRefUUID#1204645, product#1200509.internalRefUUID AS _extract_internalRefUUID#1204646, productionAspect#1200511.productMovementPlants.unitOfIssue.code AS _extract_code#1204647, productionAspect#1200511.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204648]
Input [4]: [plant#1200508, product#1200509, productionAspect#1200511, systemId#1200506]
(504) Exchange
Input [4]: [_extract_internalRefUUID#1204645, _extract_internalRefUUID#1204646, _extract_code#1204647, _extract_internalRefUUID#1204648]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841462]
(505) Project
Output [4]: [_extract_code#1204647, _extract_internalRefUUID#1204648, _extract_internalRefUUID#1204646, _extract_internalRefUUID#1204645]
Input [4]: [_extract_internalRefUUID#1204645, _extract_internalRefUUID#1204646, _extract_code#1204647, _extract_internalRefUUID#1204648]
(506) BroadcastExchange
Input [4]: [_extract_code#1204647, _extract_internalRefUUID#1204648, _extract_internalRefUUID#1204646, _extract_internalRefUUID#1204645]
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=1842543]
(507) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200502, ), isnull(product#1200502), coalesce(plant#1200503, ), isnull(plant#1200503)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204646, ), isnull(_extract_internalRefUUID#1204646), coalesce(_extract_internalRefUUID#1204645, ), isnull(_extract_internalRefUUID#1204645)]
Join type: LeftOuter
Join condition: None
(508) Project
Output [4]: [product#1200502, plant#1200503, _extract_code#1204647, _extract_internalRefUUID#1204648]
Input [6]: [product#1200502, plant#1200503, _extract_code#1204647, _extract_internalRefUUID#1204648, _extract_internalRefUUID#1204646, _extract_internalRefUUID#1204645]
(509) Scan parquet
Output [2]: [internalUUID#1200516, systemId#1200515]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(510) Project
Output [1]: [internalUUID#1200516]
Input [2]: [internalUUID#1200516, systemId#1200515]
(511) Exchange
Input [1]: [internalUUID#1200516]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841468]
(512) BroadcastExchange
Input [1]: [internalUUID#1200516]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842547]
(513) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200503, ), isnull(plant#1200503)]
Right keys [2]: [coalesce(internalUUID#1200516, ), isnull(internalUUID#1200516)]
Join type: LeftOuter
Join condition: None
(514) Project
Output [4]: [product#1200502, plant#1200503, _extract_code#1204647, _extract_internalRefUUID#1204648]
Input [5]: [product#1200502, plant#1200503, _extract_code#1204647, _extract_internalRefUUID#1204648, internalUUID#1200516]
(515) Scan parquet
Output [4]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536, systemId#1200529]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(516) Filter
Input [4]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536, systemId#1200529]
Condition : isnotnull(internalUUID#1200530)
(517) Project
Output [3]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
Input [4]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536, systemId#1200529]
(518) Exchange
Input [3]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841474]
(519) BroadcastExchange
Input [3]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842551]
(520) BroadcastHashJoin
Left keys [1]: [product#1200502]
Right keys [1]: [internalUUID#1200530]
Join type: LeftOuter
Join condition: None
(521) Project
Output [2]: [plant#1200503, filter(unitOfMeasureConversions#1200536, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204647) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204648)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200534.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200534.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200541]
Input [7]: [product#1200502, plant#1200503, _extract_code#1204647, _extract_internalRefUUID#1204648, internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
(522) Generate
Input [2]: [plant#1200503, filteredUnitOfMeasureConversions#1200541]
Arguments: explode(filteredUnitOfMeasureConversions#1200541.quantityNumerator), [plant#1200503, filteredUnitOfMeasureConversions#1200541], true, [quantityNumerator#1200542]
(523) Project
Output [2]: [plant#1200503, filteredUnitOfMeasureConversions#1200541.quantityDenominator AS _extract_quantityDenominator#1204300]
Input [3]: [plant#1200503, filteredUnitOfMeasureConversions#1200541, quantityNumerator#1200542]
(524) Generate
Input [2]: [plant#1200503, _extract_quantityDenominator#1204300]
Arguments: explode(_extract_quantityDenominator#1204300), [plant#1200503], true, [quantityDenominator#1200543]
(525) Project
Output [1]: [plant#1200503]
Input [2]: [plant#1200503, quantityDenominator#1200543]
(526) HashAggregate
Input [1]: [plant#1200503]
Keys [1]: [plant#1200503]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200503]
(527) Exchange
Input [1]: [plant#1200503]
Arguments: hashpartitioning(plant#1200503, 37), ENSURE_REQUIREMENTS, [plan_id=1842560]
(528) HashAggregate
Input [1]: [plant#1200503]
Keys [1]: [plant#1200503]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200503]
(529) BroadcastHashJoin
Left keys [1]: [plantUuid#1200499]
Right keys [1]: [plant#1200503]
Join type: Inner
Join condition: None
(530) Project
Output [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Input [4]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501, plant#1200503]
(531) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200471.internalRefUUID, ), isnull(plant#1200471.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200499, ), isnull(plantUuid#1200499)]
Join type: Inner
Join condition: None
(532) Generate
Input [9]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Arguments: explode(filter(stockQuantities#1200473, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200501) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200500)), lambda x#1200047, false))), [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, plantUuid#1200499], false, [stockQuantity#1200546]
(533) ObjectHashAggregate
Input [7]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, plantUuid#1200499, stockQuantity#1200546]
Keys [5]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468]
Functions [2]: [partial_first(calculationDateTime#1200472, false), partial_collect_list(stockQuantity#1200546, 0, 0)]
Aggregate Attributes [3]: [first#1201983, valueSet#1201984, buf#1201985]
Results [8]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first#1201986, valueSet#1201987, buf#1201988]
(534) ObjectHashAggregate
Input [8]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first#1201986, valueSet#1201987, buf#1201988]
Keys [5]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468]
Functions [2]: [first(calculationDateTime#1200472, false), collect_list(stockQuantity#1200546, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200472)()#1200062, collect_list(stockQuantity#1200546, 0, 0)#1200063]
Results [4]: [product#1200470, plant#1200471, first(calculationDateTime#1200472)()#1200062 AS calculationDateTime#1200547, collect_list(stockQuantity#1200546, 0, 0)#1200063 AS stockQuantities#1200548]
(535) Filter
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
Condition : ((size(stockQuantities#1200548, true) > 0) AND isnotnull(calculationDateTime#1200547))
(536) Generate
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
Arguments: explode(stockQuantities#1200548), [product#1200470, plant#1200471, calculationDateTime#1200547], false, [stockQuantity#1200549]
(537) Filter
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantity#1200549]
Condition : (((isnotnull(stockQuantity#1200549.specialStockIndicator.code) AND isnotnull(stockQuantity#1200549.stockType.code)) AND (stockQuantity#1200549.specialStockIndicator.code = )) AND (stockQuantity#1200549.stockType.code = 01))
(538) Project
Output [5]: [plant#1200471.internalRefUUID AS plantUuid#1200551, product#1200470.internalRefUUID AS productUuid#1200553, calculationDateTime#1200547, stockQuantity#1200549.storagelocation.id AS storageLocId#1200554, stockQuantity#1200549.quantity.measure AS quantity#1200556]
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantity#1200549]
(539) Exchange
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: hashpartitioning(productUuid#1200553, plantUuid#1200551, 37), ENSURE_REQUIREMENTS, [plan_id=1842593]
(540) Sort
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: [productUuid#1200553 ASC NULLS FIRST, plantUuid#1200551 ASC NULLS FIRST], false, 0
(541) Scan parquet
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(542) Filter
Input [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Condition : ((isnotnull(orderDateTime#1200561) AND isnotnull(plant#1200560)) AND isnotnull(product#1200559))
(543) Exchange
Input [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Arguments: hashpartitioning(product#1200559, plant#1200560, 37), REPARTITION_BY_NUM, [plan_id=1842125]
(544) Scan parquet
Output [4]: [plant#1200565, product#1200566, productionAspect#1200568, systemId#1200563]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(545) Project
Output [4]: [plant#1200565.internalRefUUID AS _extract_internalRefUUID#1204651, product#1200566.internalRefUUID AS _extract_internalRefUUID#1204652, productionAspect#1200568.productMovementPlants.unitOfIssue.code AS _extract_code#1204649, productionAspect#1200568.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204650]
Input [4]: [plant#1200565, product#1200566, productionAspect#1200568, systemId#1200563]
(546) Exchange
Input [4]: [_extract_internalRefUUID#1204651, _extract_internalRefUUID#1204652, _extract_code#1204649, _extract_internalRefUUID#1204650]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841499]
(547) Project
Output [4]: [_extract_code#1204649, _extract_internalRefUUID#1204650, _extract_internalRefUUID#1204652, _extract_internalRefUUID#1204651]
Input [4]: [_extract_internalRefUUID#1204651, _extract_internalRefUUID#1204652, _extract_code#1204649, _extract_internalRefUUID#1204650]
(548) BroadcastExchange
Input [4]: [_extract_code#1204649, _extract_internalRefUUID#1204650, _extract_internalRefUUID#1204652, _extract_internalRefUUID#1204651]
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=1842576]
(549) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200559, ), isnull(product#1200559), coalesce(plant#1200560, ), isnull(plant#1200560)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204652, ), isnull(_extract_internalRefUUID#1204652), coalesce(_extract_internalRefUUID#1204651, ), isnull(_extract_internalRefUUID#1204651)]
Join type: LeftOuter
Join condition: None
(550) Project
Output [5]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1204649, _extract_internalRefUUID#1204650]
Input [7]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1204649, _extract_internalRefUUID#1204650, _extract_internalRefUUID#1204652, _extract_internalRefUUID#1204651]
(551) Scan parquet
Output [2]: [internalUUID#1200573, systemId#1200572]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(552) Project
Output [1]: [internalUUID#1200573]
Input [2]: [internalUUID#1200573, systemId#1200572]
(553) Exchange
Input [1]: [internalUUID#1200573]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841505]
(554) BroadcastExchange
Input [1]: [internalUUID#1200573]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842580]
(555) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200560, ), isnull(plant#1200560)]
Right keys [2]: [coalesce(internalUUID#1200573, ), isnull(internalUUID#1200573)]
Join type: LeftOuter
Join condition: None
(556) Project
Output [5]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1204649, _extract_internalRefUUID#1204650]
Input [6]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1204649, _extract_internalRefUUID#1204650, internalUUID#1200573]
(557) Scan parquet
Output [4]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593, systemId#1200586]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(558) Filter
Input [4]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593, systemId#1200586]
Condition : isnotnull(internalUUID#1200587)
(559) Project
Output [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Input [4]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593, systemId#1200586]
(560) Exchange
Input [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841511]
(561) BroadcastExchange
Input [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842584]
(562) BroadcastHashJoin
Left keys [1]: [product#1200559]
Right keys [1]: [internalUUID#1200587]
Join type: LeftOuter
Join condition: None
(563) Project
Output [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filter(unitOfMeasureConversions#1200593, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204649) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204650)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200591.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200591.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200598]
Input [8]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1204649, _extract_internalRefUUID#1204650, internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
(564) Generate
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598]
Arguments: explode(filteredUnitOfMeasureConversions#1200598.quantityNumerator), [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598], true, [quantityNumerator#1200599]
(565) Project
Output [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598.quantityDenominator AS _extract_quantityDenominator#1204304]
Input [5]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599]
(566) Generate
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_quantityDenominator#1204304]
Arguments: explode(_extract_quantityDenominator#1204304), [product#1200559, plant#1200560, orderDateTime#1200561], true, [quantityDenominator#1200600]
(567) Project
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, quantityDenominator#1200600]
(568) Sort
Input [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Arguments: [product#1200559 ASC NULLS FIRST, plant#1200560 ASC NULLS FIRST], false, 0
(569) SortMergeJoin
Left keys [2]: [productUuid#1200553, plantUuid#1200551]
Right keys [2]: [product#1200559, plant#1200560]
Join type: Inner
Join condition: (calculationDateTime#1200547 <= orderDateTime#1200561)
(570) Project
Output [5]: [plantUuid#1200551 AS plant#1200603, productUuid#1200553 AS product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Input [8]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556, product#1200559, plant#1200560, orderDateTime#1200561]
(571) Exchange
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: hashpartitioning(coalesce(plant#1200603, ), isnull(plant#1200603), coalesce(product#1200604, ), isnull(product#1200604), coalesce(storageLocId#1200554, ), isnull(storageLocId#1200554), coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00), isnull(calculationDateTime#1200547), 37), ENSURE_REQUIREMENTS, [plan_id=1842657]
(572) Sort
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: [coalesce(plant#1200603, ) ASC NULLS FIRST, isnull(plant#1200603) ASC NULLS FIRST, coalesce(product#1200604, ) ASC NULLS FIRST, isnull(product#1200604) ASC NULLS FIRST, coalesce(storageLocId#1200554, ) ASC NULLS FIRST, isnull(storageLocId#1200554) ASC NULLS FIRST, coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1200547) ASC NULLS FIRST], false, 0
(573) Scan parquet
Output [6]: [internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, systemId#1200605]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(574) Filter
Input [6]: [internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, systemId#1200605]
Condition : (isnotnull(plant#1200608.internalRefUUID) AND isnotnull(product#1200607.internalRefUUID))
(575) Project
Output [6]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610]
Input [6]: [internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, systemId#1200605]
(576) Exchange
Input [6]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841523]
(577) BroadcastExchange
Input [6]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610]
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=1842622]
(578) Scan parquet
Output [2]: [marketUnit#1200611, distributionCenters#1200617]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(579) Filter
Input [2]: [marketUnit#1200611, distributionCenters#1200617]
Condition : (((marketUnit#1200611 <=> Grocery_SS) AND (size(distributionCenters#1200617, true) > 0)) AND isnotnull(distributionCenters#1200617))
(580) Project
Output [1]: [distributionCenters#1200617]
Input [2]: [marketUnit#1200611, distributionCenters#1200617]
(581) Exchange
Input [1]: [distributionCenters#1200617]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841527]
(582) Generate
Input [1]: [distributionCenters#1200617]
Arguments: explode(distributionCenters#1200617), false, [distributionCenters#1200633]
(583) Filter
Input [1]: [distributionCenters#1200633]
Condition : (((size(distributionCenters#1200633.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200633.storageLocations)) AND isnotnull(distributionCenters#1200633.internalRefUUID))
(584) Project
Output [2]: [distributionCenters#1200633.internalRefUUID AS _extract_internalRefUUID#1204308, distributionCenters#1200633.storageLocations AS _extract_storageLocations#1204309]
Input [1]: [distributionCenters#1200633]
(585) Generate
Input [2]: [_extract_internalRefUUID#1204308, _extract_storageLocations#1204309]
Arguments: explode(_extract_storageLocations#1204309), [_extract_internalRefUUID#1204308], false, [storageLocations#1200634]
(586) Project
Output [3]: [_extract_internalRefUUID#1204308 AS plantUuid#1200636, storageLocations#1200634.id AS storageLocId#1200637, storageLocations#1200634.internalRefUUID AS storageLocUuid#1200638]
Input [2]: [_extract_internalRefUUID#1204308, storageLocations#1200634]
(587) BroadcastExchange
Input [3]: [plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842618]
(588) Scan parquet
Output [2]: [product#1200639, plant#1200640]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(589) Filter
Input [2]: [product#1200639, plant#1200640]
Condition : isnotnull(plant#1200640)
(590) Exchange
Input [2]: [product#1200639, plant#1200640]
Arguments: hashpartitioning(product#1200639, plant#1200640, 37), REPARTITION_BY_NUM, [plan_id=1842138]
(591) Scan parquet
Output [4]: [plant#1200645, product#1200646, productionAspect#1200648, systemId#1200643]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(592) Project
Output [4]: [plant#1200645.internalRefUUID AS _extract_internalRefUUID#1204654, product#1200646.internalRefUUID AS _extract_internalRefUUID#1204653, productionAspect#1200648.productMovementPlants.unitOfIssue.code AS _extract_code#1204655, productionAspect#1200648.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204656]
Input [4]: [plant#1200645, product#1200646, productionAspect#1200648, systemId#1200643]
(593) Exchange
Input [4]: [_extract_internalRefUUID#1204654, _extract_internalRefUUID#1204653, _extract_code#1204655, _extract_internalRefUUID#1204656]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841539]
(594) Project
Output [4]: [_extract_code#1204655, _extract_internalRefUUID#1204656, _extract_internalRefUUID#1204653, _extract_internalRefUUID#1204654]
Input [4]: [_extract_internalRefUUID#1204654, _extract_internalRefUUID#1204653, _extract_code#1204655, _extract_internalRefUUID#1204656]
(595) BroadcastExchange
Input [4]: [_extract_code#1204655, _extract_internalRefUUID#1204656, _extract_internalRefUUID#1204653, _extract_internalRefUUID#1204654]
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=1842598]
(596) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200639, ), isnull(product#1200639), coalesce(plant#1200640, ), isnull(plant#1200640)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204653, ), isnull(_extract_internalRefUUID#1204653), coalesce(_extract_internalRefUUID#1204654, ), isnull(_extract_internalRefUUID#1204654)]
Join type: LeftOuter
Join condition: None
(597) Project
Output [4]: [product#1200639, plant#1200640, _extract_code#1204655, _extract_internalRefUUID#1204656]
Input [6]: [product#1200639, plant#1200640, _extract_code#1204655, _extract_internalRefUUID#1204656, _extract_internalRefUUID#1204653, _extract_internalRefUUID#1204654]
(598) Scan parquet
Output [2]: [internalUUID#1200653, systemId#1200652]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(599) Project
Output [1]: [internalUUID#1200653]
Input [2]: [internalUUID#1200653, systemId#1200652]
(600) Exchange
Input [1]: [internalUUID#1200653]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841545]
(601) BroadcastExchange
Input [1]: [internalUUID#1200653]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842602]
(602) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200640, ), isnull(plant#1200640)]
Right keys [2]: [coalesce(internalUUID#1200653, ), isnull(internalUUID#1200653)]
Join type: LeftOuter
Join condition: None
(603) Project
Output [4]: [product#1200639, plant#1200640, _extract_code#1204655, _extract_internalRefUUID#1204656]
Input [5]: [product#1200639, plant#1200640, _extract_code#1204655, _extract_internalRefUUID#1204656, internalUUID#1200653]
(604) Scan parquet
Output [4]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673, systemId#1200666]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673, systemId#1200666]
Condition : isnotnull(internalUUID#1200667)
(606) Project
Output [3]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
Input [4]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673, systemId#1200666]
(607) Exchange
Input [3]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841551]
(608) BroadcastExchange
Input [3]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842606]
(609) BroadcastHashJoin
Left keys [1]: [product#1200639]
Right keys [1]: [internalUUID#1200667]
Join type: LeftOuter
Join condition: None
(610) Project
Output [2]: [plant#1200640, filter(unitOfMeasureConversions#1200673, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204655) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204656)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200671.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200671.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200678]
Input [7]: [product#1200639, plant#1200640, _extract_code#1204655, _extract_internalRefUUID#1204656, internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
(611) Generate
Input [2]: [plant#1200640, filteredUnitOfMeasureConversions#1200678]
Arguments: explode(filteredUnitOfMeasureConversions#1200678.quantityNumerator), [plant#1200640, filteredUnitOfMeasureConversions#1200678], true, [quantityNumerator#1200679]
(612) Project
Output [2]: [plant#1200640, filteredUnitOfMeasureConversions#1200678.quantityDenominator AS _extract_quantityDenominator#1204310]
Input [3]: [plant#1200640, filteredUnitOfMeasureConversions#1200678, quantityNumerator#1200679]
(613) Generate
Input [2]: [plant#1200640, _extract_quantityDenominator#1204310]
Arguments: explode(_extract_quantityDenominator#1204310), [plant#1200640], true, [quantityDenominator#1200680]
(614) Project
Output [1]: [plant#1200640]
Input [2]: [plant#1200640, quantityDenominator#1200680]
(615) HashAggregate
Input [1]: [plant#1200640]
Keys [1]: [plant#1200640]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200640]
(616) Exchange
Input [1]: [plant#1200640]
Arguments: hashpartitioning(plant#1200640, 37), ENSURE_REQUIREMENTS, [plan_id=1842615]
(617) HashAggregate
Input [1]: [plant#1200640]
Keys [1]: [plant#1200640]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200640]
(618) BroadcastHashJoin
Left keys [1]: [plantUuid#1200636]
Right keys [1]: [plant#1200640]
Join type: Inner
Join condition: None
(619) Project
Output [3]: [plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
Input [4]: [plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638, plant#1200640]
(620) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200608.internalRefUUID, ), isnull(plant#1200608.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200636, ), isnull(plantUuid#1200636)]
Join type: Inner
Join condition: None
(621) Generate
Input [9]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
Arguments: explode(filter(stockQuantities#1200610, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200638) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200637)), lambda x#1200047, false))), [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, plantUuid#1200636], false, [stockQuantity#1200683]
(622) ObjectHashAggregate
Input [7]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, plantUuid#1200636, stockQuantity#1200683]
Keys [5]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605]
Functions [2]: [partial_first(calculationDateTime#1200609, false), partial_collect_list(stockQuantity#1200683, 0, 0)]
Aggregate Attributes [3]: [first#1201991, valueSet#1201992, buf#1201993]
Results [8]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605, first#1201994, valueSet#1201995, buf#1201996]
(623) ObjectHashAggregate
Input [8]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605, first#1201994, valueSet#1201995, buf#1201996]
Keys [5]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605]
Functions [2]: [first(calculationDateTime#1200609, false), collect_list(stockQuantity#1200683, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200609)()#1200062, collect_list(stockQuantity#1200683, 0, 0)#1200063]
Results [4]: [product#1200607, plant#1200608, first(calculationDateTime#1200609)()#1200062 AS calculationDateTime#1200684, collect_list(stockQuantity#1200683, 0, 0)#1200063 AS stockQuantities#1200685]
(624) Filter
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantities#1200685]
Condition : ((size(stockQuantities#1200685, true) > 0) AND isnotnull(calculationDateTime#1200684))
(625) Generate
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantities#1200685]
Arguments: explode(stockQuantities#1200685), [product#1200607, plant#1200608, calculationDateTime#1200684], false, [stockQuantity#1200686]
(626) Filter
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantity#1200686]
Condition : (((isnotnull(stockQuantity#1200686.specialStockIndicator.code) AND isnotnull(stockQuantity#1200686.stockType.code)) AND (stockQuantity#1200686.specialStockIndicator.code = )) AND (stockQuantity#1200686.stockType.code = 01))
(627) Project
Output [4]: [plant#1200608.internalRefUUID AS plantUuid#1200688, product#1200607.internalRefUUID AS productUuid#1200690, calculationDateTime#1200684, stockQuantity#1200686.storagelocation.id AS storageLocId#1200691]
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantity#1200686]
(628) Exchange
Input [4]: [plantUuid#1200688, productUuid#1200690, calculationDateTime#1200684, storageLocId#1200691]
Arguments: hashpartitioning(productUuid#1200690, plantUuid#1200688, 37), ENSURE_REQUIREMENTS, [plan_id=1842648]
(629) Sort
Input [4]: [plantUuid#1200688, productUuid#1200690, calculationDateTime#1200684, storageLocId#1200691]
Arguments: [productUuid#1200690 ASC NULLS FIRST, plantUuid#1200688 ASC NULLS FIRST], false, 0
(630) Scan parquet
Output [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(631) Filter
Input [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Condition : ((isnotnull(orderDateTime#1200698) AND isnotnull(plant#1200697)) AND isnotnull(product#1200696))
(632) Exchange
Input [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Arguments: hashpartitioning(product#1200696, plant#1200697, 37), REPARTITION_BY_NUM, [plan_id=1842161]
(633) Scan parquet
Output [4]: [plant#1200702, product#1200703, productionAspect#1200705, systemId#1200700]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(634) Project
Output [4]: [plant#1200702.internalRefUUID AS _extract_internalRefUUID#1204657, product#1200703.internalRefUUID AS _extract_internalRefUUID#1204658, productionAspect#1200705.productMovementPlants.unitOfIssue.code AS _extract_code#1204659, productionAspect#1200705.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204660]
Input [4]: [plant#1200702, product#1200703, productionAspect#1200705, systemId#1200700]
(635) Exchange
Input [4]: [_extract_internalRefUUID#1204657, _extract_internalRefUUID#1204658, _extract_code#1204659, _extract_internalRefUUID#1204660]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841576]
(636) Project
Output [4]: [_extract_code#1204659, _extract_internalRefUUID#1204660, _extract_internalRefUUID#1204658, _extract_internalRefUUID#1204657]
Input [4]: [_extract_internalRefUUID#1204657, _extract_internalRefUUID#1204658, _extract_code#1204659, _extract_internalRefUUID#1204660]
(637) BroadcastExchange
Input [4]: [_extract_code#1204659, _extract_internalRefUUID#1204660, _extract_internalRefUUID#1204658, _extract_internalRefUUID#1204657]
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=1842631]
(638) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200696, ), isnull(product#1200696), coalesce(plant#1200697, ), isnull(plant#1200697)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204658, ), isnull(_extract_internalRefUUID#1204658), coalesce(_extract_internalRefUUID#1204657, ), isnull(_extract_internalRefUUID#1204657)]
Join type: LeftOuter
Join condition: None
(639) Project
Output [5]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1204659, _extract_internalRefUUID#1204660]
Input [7]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1204659, _extract_internalRefUUID#1204660, _extract_internalRefUUID#1204658, _extract_internalRefUUID#1204657]
(640) Scan parquet
Output [2]: [internalUUID#1200710, systemId#1200709]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(641) Project
Output [1]: [internalUUID#1200710]
Input [2]: [internalUUID#1200710, systemId#1200709]
(642) Exchange
Input [1]: [internalUUID#1200710]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841582]
(643) BroadcastExchange
Input [1]: [internalUUID#1200710]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842635]
(644) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200697, ), isnull(plant#1200697)]
Right keys [2]: [coalesce(internalUUID#1200710, ), isnull(internalUUID#1200710)]
Join type: LeftOuter
Join condition: None
(645) Project
Output [5]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1204659, _extract_internalRefUUID#1204660]
Input [6]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1204659, _extract_internalRefUUID#1204660, internalUUID#1200710]
(646) Scan parquet
Output [4]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730, systemId#1200723]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(647) Filter
Input [4]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730, systemId#1200723]
Condition : isnotnull(internalUUID#1200724)
(648) Project
Output [3]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
Input [4]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730, systemId#1200723]
(649) Exchange
Input [3]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841588]
(650) BroadcastExchange
Input [3]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842639]
(651) BroadcastHashJoin
Left keys [1]: [product#1200696]
Right keys [1]: [internalUUID#1200724]
Join type: LeftOuter
Join condition: None
(652) Project
Output [4]: [product#1200696, plant#1200697, orderDateTime#1200698, filter(unitOfMeasureConversions#1200730, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204659) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204660)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200728.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200728.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200735]
Input [8]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1204659, _extract_internalRefUUID#1204660, internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
(653) Generate
Input [4]: [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735]
Arguments: explode(filteredUnitOfMeasureConversions#1200735.quantityNumerator), [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735], true, [quantityNumerator#1200736]
(654) Project
Output [4]: [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735.quantityDenominator AS _extract_quantityDenominator#1204314]
Input [5]: [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735, quantityNumerator#1200736]
(655) Generate
Input [4]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_quantityDenominator#1204314]
Arguments: explode(_extract_quantityDenominator#1204314), [product#1200696, plant#1200697, orderDateTime#1200698], true, [quantityDenominator#1200737]
(656) Project
Output [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Input [4]: [product#1200696, plant#1200697, orderDateTime#1200698, quantityDenominator#1200737]
(657) Sort
Input [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Arguments: [product#1200696 ASC NULLS FIRST, plant#1200697 ASC NULLS FIRST], false, 0
(658) SortMergeJoin
Left keys [2]: [productUuid#1200690, plantUuid#1200688]
Right keys [2]: [product#1200696, plant#1200697]
Join type: Inner
Join condition: (calculationDateTime#1200684 <= orderDateTime#1200698)
(659) Project
Output [4]: [plantUuid#1200688 AS plant#1200740, productUuid#1200690 AS product#1200741, storageLocId#1200691, calculationDateTime#1200684]
Input [7]: [plantUuid#1200688, productUuid#1200690, calculationDateTime#1200684, storageLocId#1200691, product#1200696, plant#1200697, orderDateTime#1200698]
(660) HashAggregate
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, calculationDateTime#1200684]
Keys [3]: [plant#1200740, product#1200741, storageLocId#1200691]
Functions [1]: [partial_max(calculationDateTime#1200684)]
Aggregate Attributes [1]: [max#1201989]
Results [4]: [plant#1200740, product#1200741, storageLocId#1200691, max#1201990]
(661) HashAggregate
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max#1201990]
Keys [3]: [plant#1200740, product#1200741, storageLocId#1200691]
Functions [1]: [max(calculationDateTime#1200684)]
Aggregate Attributes [1]: [max(calculationDateTime#1200684)#1200140]
Results [4]: [plant#1200740, product#1200741, storageLocId#1200691, max(calculationDateTime#1200684)#1200140 AS max_calc_datetime#1200742]
(662) Exchange
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
Arguments: hashpartitioning(coalesce(plant#1200740, ), isnull(plant#1200740), coalesce(product#1200741, ), isnull(product#1200741), coalesce(storageLocId#1200691, ), isnull(storageLocId#1200691), coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200742), 37), ENSURE_REQUIREMENTS, [plan_id=1842658]
(663) Sort
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
Arguments: [coalesce(plant#1200740, ) ASC NULLS FIRST, isnull(plant#1200740) ASC NULLS FIRST, coalesce(product#1200741, ) ASC NULLS FIRST, isnull(product#1200741) ASC NULLS FIRST, coalesce(storageLocId#1200691, ) ASC NULLS FIRST, isnull(storageLocId#1200691) ASC NULLS FIRST, coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1200742) ASC NULLS FIRST], false, 0
(664) SortMergeJoin
Left keys [8]: [coalesce(plant#1200603, ), isnull(plant#1200603), coalesce(product#1200604, ), isnull(product#1200604), coalesce(storageLocId#1200554, ), isnull(storageLocId#1200554), coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00), isnull(calculationDateTime#1200547)]
Right keys [8]: [coalesce(plant#1200740, ), isnull(plant#1200740), coalesce(product#1200741, ), isnull(product#1200741), coalesce(storageLocId#1200691, ), isnull(storageLocId#1200691), coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200742)]
Join type: Inner
Join condition: None
(665) Project
Output [4]: [plant#1200603, product#1200604, calculationDateTime#1200547, quantity#1200556]
Input [9]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556, plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
(666) HashAggregate
Input [4]: [plant#1200603, product#1200604, calculationDateTime#1200547, quantity#1200556]
Keys [2]: [product#1200604, plant#1200603]
Functions [2]: [partial_min(calculationDateTime#1200547), partial_sum(quantity#1200556)]
Aggregate Attributes [2]: [min#1201979, sum#1201980]
Results [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
(667) Exchange
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Arguments: hashpartitioning(product#1200604, plant#1200603, 37), ENSURE_REQUIREMENTS, [plan_id=1842665]
(668) HashAggregate
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Keys [2]: [product#1200604, plant#1200603]
Functions [2]: [min(calculationDateTime#1200547), sum(quantity#1200556)]
Aggregate Attributes [2]: [min(calculationDateTime#1200547)#1200296, sum(quantity#1200556)#1200295]
Results [4]: [product#1200604, plant#1200603, min(calculationDateTime#1200547)#1200296 AS minCalculationDateTime#1200744, round(sum(quantity#1200556)#1200295, 0) AS roundedQuantitySum#1200745]
(669) Sort
Input [4]: [product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
Arguments: [product#1200604 ASC NULLS FIRST, plant#1200603 ASC NULLS FIRST], false, 0
(670) SortMergeJoin
Left keys [2]: [product#1200424, plant#1200425]
Right keys [2]: [product#1200604, plant#1200603]
Join type: LeftOuter
Join condition: None
(671) Project
Output [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, CASE WHEN isnotnull(minCalculationDateTime#1200744) THEN minCalculationDateTime#1200744 ELSE orderDateTime#1200426 END AS stockDatetime#1200746, CASE WHEN isnotnull(roundedQuantitySum#1200745) THEN array(roundedQuantitySum#1200745) ELSE [0.0] END AS stockBatchQuantities#1200747]
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
(672) Filter
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Condition : (isnotnull(product#1200349) AND isnotnull(plant#1200350))
(673) BroadcastExchange
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1842674]
(674) BroadcastHashJoin
Left keys [2]: [product#1200424, plant#1200425]
Right keys [2]: [product#1200349, plant#1200350]
Join type: LeftOuter
Join condition: None
(675) Project
Output [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, CASE WHEN isnotnull(product#1200349) THEN struct(demandChannel, demandChannel#1200351, demandStream, demandStream#1200352, considerVariance, considerVariance#1200353, demandTimeBuckets, demandTimeBuckets#1200354, demandPointInTimeStart, demandPointInTimeStart#1200355, demandPointInTimeEnd, demandPointInTimeEnd#1200356, demandPointInTime, demandPointInTime#1200357) END AS rawDemands#1200370]
Input [17]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
(676) ObjectHashAggregate
Input [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, rawDemands#1200370]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, knownfloatingpointnormalized(if (isnull(productPlant#1200436)) null else named_struct(systemId, productPlant#1200436.systemId, internalUUID, productPlant#1200436.internalUUID, plant, productPlant#1200436.plant, product, productPlant#1200436.product, blockedForReplenishmentStartingFrom, productPlant#1200436.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect)) null else named_struct(productMovementPlants, productPlant#1200436.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1200436.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1200436.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1200436.salesPlant, listing, productPlant#1200436.listing)) AS productPlant#1200436, timezonecode#1200450, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1200467)) AS outboundUnit#1200467, stockDatetime#1200746, knownfloatingpointnormalized(transform(stockBatchQuantities#1200747, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1205419)), lambda arg#1205419, false))) AS stockBatchQuantities#1200747, [7226582400000000] AS [7226582400000000]#1205418]
Functions [1]: [partial_collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [buf#1201977]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1205418, buf#1201978]
(677) ObjectHashAggregate
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1205418, buf#1201978]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1205418]
Functions [1]: [collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1200370, 0, 0)#1200389]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1200748, collect_list(rawDemands#1200370, 0, 0)#1200389 AS rawDemands#1200371]
(678) DeserializeToObject
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, rawDemands#1200371]
Arguments: createexternalrow(invoke(product#1200424.toString()), invoke(plant#1200425.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1200426)), if (isnull(productPlant#1200436)) null else createexternalrow(invoke(productPlant#1200436.systemId.toString()), invoke(productPlant#1200436.internalUUID.toString()), if (isnull(productPlant#1200436.plant)) null else createexternalrow(invoke(productPlant#1200436.plant.internalRefUUID.toString()), invoke(productPlant#1200436.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1200436.product)) null else createexternalrow(invoke(productPlant#1200436.product.internalRefUUID.toString()), invoke(productPlant#1200436.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1200436.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1200436.productionAspect)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.salesPlant)) null else createexternalrow(if (isnull(productPlant#1200436.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1200436.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.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)), invoke(timezonecode#1200450.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1200467)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1200746)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1200747, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1200748, 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#1200371, 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(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(679) MapElements
Input [1]: [obj#1200410]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, obj#1200415: org.apache.spark.sql.Row
(680) SerializeFromObject
Input [1]: [obj#1200415]
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#1200420, 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#1200421, 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#1200422, 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#1200423]
(681) Exchange
Input [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: hashpartitioning(coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420), 37), ENSURE_REQUIREMENTS, [plan_id=1842685]
(682) Sort
Input [4]: [product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: [coalesce(plant#1200421, ) ASC NULLS FIRST, isnull(plant#1200421) ASC NULLS FIRST, coalesce(product#1200420, ) ASC NULLS FIRST, isnull(product#1200420) ASC NULLS FIRST], false, 0
(683) SortMergeJoin
Left keys [4]: [coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942)]
Right keys [4]: [coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420)]
Join type: LeftOuter
Join condition: None
(684) Project
Output [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Input [9]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, product#1200420, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
(685) Exchange
Input [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: hashpartitioning(product#1199942, plant#1199943, 37), ENSURE_REQUIREMENTS, [plan_id=1843014]
(686) Sort
Input [7]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423]
Arguments: [product#1199942 ASC NULLS FIRST, plant#1199943 ASC NULLS FIRST], false, 0
(687) InMemoryTableScan
Output [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Arguments: [product#1200791, plant#1200790, openGoodsMovements#1202100], [isnotnull(product#1200791), isnotnull(plant#1200790)]
(688) InMemoryRelation
Arguments: [product#1200791, plant#1200790, openGoodsMovements#1202100], StorageLevel(disk, memory, 2 replicas)
(689) EmptyRelation
Output [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Arguments: [plan_id=1886892]
(690) ResultQueryStage
Output [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Arguments: 2
(691) InMemoryTableScan
Output [10]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityDenominator#1200798, quantityNumerator#1200797, quantityUom#1200795, quantityUomUuid#1200796, scheduleLines#1200799, validConfirmations#1200890]
Arguments: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityDenominator#1200798, quantityNumerator#1200797, quantityUom#1200795, quantityUomUuid#1200796, scheduleLines#1200799, validConfirmations#1200890]
(692) InMemoryRelation
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1200346, timezonecode#1199974, validConfirmations#1200890], StorageLevel(disk, memory, deserialized, 1 replicas)
(693) Scan parquet
Output [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(694) ColumnarToRow
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
(695) Filter
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Condition : (isnotnull(plant#1199943) AND isnotnull(product#1199942))
(696) Exchange
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Arguments: hashpartitioning(product#1199942, plant#1199943, 37), REPARTITION_BY_NUM, [plan_id=1847795]
(697) ShuffleQueryStage
Output [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Arguments: 0
(698) Scan parquet
Output [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(699) ColumnarToRow
Input [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
(700) Project
Output [4]: [plant#1199949.internalRefUUID AS _extract_internalRefUUID#1201089, product#1199950.internalRefUUID AS _extract_internalRefUUID#1201086, productionAspect#1199952.productMovementPlants.unitOfIssue.code AS _extract_code#1201087, productionAspect#1199952.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201088]
Input [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
(701) Exchange
Input [4]: [_extract_internalRefUUID#1201089, _extract_internalRefUUID#1201086, _extract_code#1201087, _extract_internalRefUUID#1201088]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1847811]
(702) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#1201089, _extract_internalRefUUID#1201086, _extract_code#1201087, _extract_internalRefUUID#1201088]
Arguments: 1
(703) Project
Output [4]: [_extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
Input [4]: [_extract_internalRefUUID#1201089, _extract_internalRefUUID#1201086, _extract_code#1201087, _extract_internalRefUUID#1201088]
(704) BroadcastExchange
Input [4]: [_extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
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=1850872]
(705) BroadcastQueryStage
Output [4]: [_extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
Arguments: 97
(706) BroadcastHashJoin
Left keys [4]: [coalesce(product#1199942, ), isnull(product#1199942), coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201086, ), isnull(_extract_internalRefUUID#1201086), coalesce(_extract_internalRefUUID#1201089, ), isnull(_extract_internalRefUUID#1201089)]
Join type: LeftOuter
Join condition: None
(707) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
(708) Scan parquet
Output [3]: [internalUUID#1199960, address#1199966, systemId#1199959]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(709) ColumnarToRow
Input [3]: [internalUUID#1199960, address#1199966, systemId#1199959]
(710) Project
Output [2]: [internalUUID#1199960, address#1199966.timeZone.code AS timezonecode#1199971]
Input [3]: [internalUUID#1199960, address#1199966, systemId#1199959]
(711) Exchange
Input [2]: [internalUUID#1199960, timezonecode#1199971]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1847830]
(712) ShuffleQueryStage
Output [2]: [internalUUID#1199960, timezonecode#1199971]
Arguments: 2
(713) BroadcastExchange
Input [2]: [internalUUID#1199960, timezonecode#1199971]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1857014]
(714) BroadcastQueryStage
Output [2]: [internalUUID#1199960, timezonecode#1199971]
Arguments: 128
(715) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [2]: [coalesce(internalUUID#1199960, ), isnull(internalUUID#1199960)]
Join type: LeftOuter
Join condition: None
(716) Project
Output [6]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, CASE WHEN isnotnull(timezonecode#1199971) THEN timezonecode#1199971 ELSE UTC END AS timezonecode#1199974]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, internalUUID#1199960, timezonecode#1199971]
(717) Scan parquet
Output [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(718) ColumnarToRow
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
(719) Filter
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
Condition : isnotnull(internalUUID#1199976)
(720) Project
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
(721) Exchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1847850]
(722) ShuffleQueryStage
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: 3
(723) BroadcastExchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1861295]
(724) BroadcastQueryStage
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: 140
(725) BroadcastHashJoin
Left keys [1]: [product#1199942]
Right keys [1]: [internalUUID#1199976]
Join type: LeftOuter
Join condition: None
(726) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filter(unitOfMeasureConversions#1199982, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201087) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201088)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1199980.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1199980.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1199988]
Input [9]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, timezonecode#1199974, internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
(727) Generate
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988]
Arguments: explode(filteredUnitOfMeasureConversions#1199988.quantityNumerator), [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988], true, [quantityNumerator#1199996]
(728) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988.quantityDenominator AS _extract_quantityDenominator#1200892]
Input [6]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988, quantityNumerator#1199996]
(729) Generate
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, _extract_quantityDenominator#1200892]
Arguments: explode(_extract_quantityDenominator#1200892), [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974], true, [quantityDenominator#1199999]
(730) Project
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974]
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, quantityDenominator#1199999]
(731) Scan parquet
Output [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(732) ColumnarToRow
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
(733) Filter
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
Condition : (isnotnull(plant#1200041.internalRefUUID) AND isnotnull(product#1200040.internalRefUUID))
(734) Project
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
(735) Exchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1847877]
(736) ShuffleQueryStage
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: 4
(737) BroadcastExchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
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=1852075]
(738) BroadcastQueryStage
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: 116
(739) Scan parquet
Output [2]: [marketUnit#1200002, distributionCenters#1200008]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(740) ColumnarToRow
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
(741) Filter
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
Condition : (((marketUnit#1200002 <=> Grocery_SS) AND (size(distributionCenters#1200008, true) > 0)) AND isnotnull(distributionCenters#1200008))
(742) Project
Output [1]: [distributionCenters#1200008]
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
(743) Exchange
Input [1]: [distributionCenters#1200008]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1847897]
(744) ShuffleQueryStage
Output [1]: [distributionCenters#1200008]
Arguments: 5
(745) Generate
Input [1]: [distributionCenters#1200008]
Arguments: explode(distributionCenters#1200008), false, [distributionCenters#1200026]
(746) Filter
Input [1]: [distributionCenters#1200026]
Condition : (((size(distributionCenters#1200026.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200026.storageLocations)) AND isnotnull(distributionCenters#1200026.internalRefUUID))
(747) Project
Output [2]: [distributionCenters#1200026.internalRefUUID AS _extract_internalRefUUID#1200896, distributionCenters#1200026.storageLocations AS _extract_storageLocations#1200897]
Input [1]: [distributionCenters#1200026]
(748) Generate
Input [2]: [_extract_internalRefUUID#1200896, _extract_storageLocations#1200897]
Arguments: explode(_extract_storageLocations#1200897), [_extract_internalRefUUID#1200896], false, [storageLocations#1200033]
(749) Project
Output [3]: [_extract_internalRefUUID#1200896 AS plantUuid#1200028, storageLocations#1200033.id AS storageLocId#1200034, storageLocations#1200033.internalRefUUID AS storageLocUuid#1200035]
Input [2]: [_extract_internalRefUUID#1200896, storageLocations#1200033]
(750) BroadcastExchange
Input [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1854573]
(751) BroadcastQueryStage
Output [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: 120
(752) Scan parquet
Output [2]: [product#1200298, plant#1200299]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(753) ColumnarToRow
Input [2]: [product#1200298, plant#1200299]
(754) Filter
Input [2]: [product#1200298, plant#1200299]
Condition : isnotnull(plant#1200299)
(755) Exchange
Input [2]: [product#1200298, plant#1200299]
Arguments: hashpartitioning(product#1200298, plant#1200299, 37), REPARTITION_BY_NUM, [plan_id=1847920]
(756) ShuffleQueryStage
Output [2]: [product#1200298, plant#1200299]
Arguments: 6
(757) ReusedExchange [Reuses operator id: 704]
Output [4]: [_extract_code#1201090, _extract_internalRefUUID#1201091, _extract_internalRefUUID#1201092, _extract_internalRefUUID#1201093]
(758) BroadcastQueryStage
Output [4]: [_extract_code#1201090, _extract_internalRefUUID#1201091, _extract_internalRefUUID#1201092, _extract_internalRefUUID#1201093]
Arguments: 99
(759) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200298, ), isnull(product#1200298), coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201092, ), isnull(_extract_internalRefUUID#1201092), coalesce(_extract_internalRefUUID#1201093, ), isnull(_extract_internalRefUUID#1201093)]
Join type: LeftOuter
Join condition: None
(760) Project
Output [4]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091]
Input [6]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091, _extract_internalRefUUID#1201092, _extract_internalRefUUID#1201093]
(761) Scan parquet
Output [2]: [internalUUID#1200312, systemId#1200311]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(762) ColumnarToRow
Input [2]: [internalUUID#1200312, systemId#1200311]
(763) Project
Output [1]: [internalUUID#1200312]
Input [2]: [internalUUID#1200312, systemId#1200311]
(764) Exchange
Input [1]: [internalUUID#1200312]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1847957]
(765) ShuffleQueryStage
Output [1]: [internalUUID#1200312]
Arguments: 9
(766) BroadcastExchange
Input [1]: [internalUUID#1200312]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1859634]
(767) BroadcastQueryStage
Output [1]: [internalUUID#1200312]
Arguments: 131
(768) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [2]: [coalesce(internalUUID#1200312, ), isnull(internalUUID#1200312)]
Join type: LeftOuter
Join condition: None
(769) Project
Output [4]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091]
Input [5]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091, internalUUID#1200312]
(770) ReusedExchange [Reuses operator id: 723]
Output [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
(771) BroadcastQueryStage
Output [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Arguments: 141
(772) BroadcastHashJoin
Left keys [1]: [product#1200298]
Right keys [1]: [internalUUID#1200326]
Join type: LeftOuter
Join condition: None
(773) Project
Output [2]: [plant#1200299, filter(unitOfMeasureConversions#1200332, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201090) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201091)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200330.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200330.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200337]
Input [7]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091, internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
(774) Generate
Input [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337]
Arguments: explode(filteredUnitOfMeasureConversions#1200337.quantityNumerator), [plant#1200299, filteredUnitOfMeasureConversions#1200337], true, [quantityNumerator#1200338]
(775) Project
Output [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337.quantityDenominator AS _extract_quantityDenominator#1200898]
Input [3]: [plant#1200299, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338]
(776) Generate
Input [2]: [plant#1200299, _extract_quantityDenominator#1200898]
Arguments: explode(_extract_quantityDenominator#1200898), [plant#1200299], true, [quantityDenominator#1200339]
(777) Project
Output [1]: [plant#1200299]
Input [2]: [plant#1200299, quantityDenominator#1200339]
(778) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(779) Exchange
Input [1]: [plant#1200299]
Arguments: hashpartitioning(plant#1200299, 37), ENSURE_REQUIREMENTS, [plan_id=1877752]
(780) ShuffleQueryStage
Output [1]: [plant#1200299]
Arguments: 152
(781) AQEShuffleRead
Input [1]: [plant#1200299]
Arguments: coalesced
(782) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(783) BroadcastHashJoin
Left keys [1]: [plantUuid#1200028]
Right keys [1]: [plant#1200299]
Join type: Inner
Join condition: None
(784) Project
Output [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Input [4]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035, plant#1200299]
(785) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200041.internalRefUUID, ), isnull(plant#1200041.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200028, ), isnull(plantUuid#1200028)]
Join type: Inner
Join condition: None
(786) Generate
Input [9]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: explode(filter(stockQuantities#1200043, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200035) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200034)), lambda x#1200047, false))), [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028], false, [stockQuantity#1200048]
(787) ObjectHashAggregate
Input [7]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028, stockQuantity#1200048]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [partial_first(calculationDateTime#1200042, false), partial_collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [3]: [first#1201961, valueSet#1201962, buf#1201963]
Results [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
(788) ObjectHashAggregate
Input [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [first(calculationDateTime#1200042, false), collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200042)()#1200062, collect_list(stockQuantity#1200048, 0, 0)#1200063]
Results [4]: [product#1200040, plant#1200041, first(calculationDateTime#1200042)()#1200062 AS calculationDateTime#1200049, collect_list(stockQuantity#1200048, 0, 0)#1200063 AS stockQuantities#1200050]
(789) Filter
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Condition : ((size(stockQuantities#1200050, true) > 0) AND isnotnull(calculationDateTime#1200049))
(790) Generate
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Arguments: explode(stockQuantities#1200050), [product#1200040, plant#1200041, calculationDateTime#1200049], false, [stockQuantity#1200065]
(791) Filter
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
Condition : (((isnotnull(stockQuantity#1200065.specialStockIndicator.code) AND isnotnull(stockQuantity#1200065.stockType.code)) AND (stockQuantity#1200065.specialStockIndicator.code = )) AND (stockQuantity#1200065.stockType.code = 01))
(792) Project
Output [4]: [plant#1200041.internalRefUUID AS plantUuid#1200067, product#1200040.internalRefUUID AS productUuid#1200069, calculationDateTime#1200049, stockQuantity#1200065.storagelocation.id AS storageLocId#1200070]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
(793) Exchange
Input [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: hashpartitioning(productUuid#1200069, plantUuid#1200067, 37), ENSURE_REQUIREMENTS, [plan_id=1879976]
(794) ShuffleQueryStage
Output [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: 161
(795) AQEShuffleRead
Input [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: local
(796) BroadcastExchange
Input [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1881606]
(797) BroadcastQueryStage
Output [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: 167
(798) Scan parquet
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(799) ColumnarToRow
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
(800) Filter
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Condition : ((isnotnull(orderDateTime#1200086) AND isnotnull(plant#1200085)) AND isnotnull(product#1200084))
(801) Exchange
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: hashpartitioning(product#1200084, plant#1200085, 37), REPARTITION_BY_NUM, [plan_id=1848018]
(802) ShuffleQueryStage
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: 12
(803) ReusedExchange [Reuses operator id: 704]
Output [4]: [_extract_code#1201095, _extract_internalRefUUID#1201096, _extract_internalRefUUID#1201094, _extract_internalRefUUID#1201097]
(804) BroadcastQueryStage
Output [4]: [_extract_code#1201095, _extract_internalRefUUID#1201096, _extract_internalRefUUID#1201094, _extract_internalRefUUID#1201097]
Arguments: 101
(805) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200084, ), isnull(product#1200084), coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201094, ), isnull(_extract_internalRefUUID#1201094), coalesce(_extract_internalRefUUID#1201097, ), isnull(_extract_internalRefUUID#1201097)]
Join type: LeftOuter
Join condition: None
(806) Project
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096]
Input [7]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096, _extract_internalRefUUID#1201094, _extract_internalRefUUID#1201097]
(807) ReusedExchange [Reuses operator id: 766]
Output [1]: [internalUUID#1200098]
(808) BroadcastQueryStage
Output [1]: [internalUUID#1200098]
Arguments: 132
(809) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [2]: [coalesce(internalUUID#1200098, ), isnull(internalUUID#1200098)]
Join type: LeftOuter
Join condition: None
(810) Project
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096]
Input [6]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096, internalUUID#1200098]
(811) ReusedExchange [Reuses operator id: 723]
Output [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
(812) BroadcastQueryStage
Output [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Arguments: 142
(813) BroadcastHashJoin
Left keys [1]: [product#1200084]
Right keys [1]: [internalUUID#1200112]
Join type: LeftOuter
Join condition: None
(814) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filter(unitOfMeasureConversions#1200118, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201095) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201096)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200116.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200116.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200123]
Input [8]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096, internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
(815) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123]
Arguments: explode(filteredUnitOfMeasureConversions#1200123.quantityNumerator), [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123], true, [quantityNumerator#1200124]
(816) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123.quantityDenominator AS _extract_quantityDenominator#1200902]
Input [5]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124]
(817) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_quantityDenominator#1200902]
Arguments: explode(_extract_quantityDenominator#1200902), [product#1200084, plant#1200085, orderDateTime#1200086], true, [quantityDenominator#1200125]
(818) Project
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, quantityDenominator#1200125]
(819) BroadcastHashJoin
Left keys [2]: [plantUuid#1200067, productUuid#1200069]
Right keys [2]: [plant#1200085, product#1200084]
Join type: Inner
Join condition: (calculationDateTime#1200049 <= orderDateTime#1200086)
(820) Project
Output [4]: [plantUuid#1200067 AS plant#1200132, productUuid#1200069 AS product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Input [7]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, product#1200084, plant#1200085, orderDateTime#1200086]
(821) Exchange
Input [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Arguments: hashpartitioning(coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049), 37), ENSURE_REQUIREMENTS, [plan_id=1883011]
(822) ShuffleQueryStage
Output [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Arguments: 173
(823) AQEShuffleRead
Input [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Arguments: local
(824) BroadcastExchange
Input [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
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=1884031]
(825) BroadcastQueryStage
Output [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Arguments: 178
(826) ReusedExchange [Reuses operator id: 796]
Output [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
(827) BroadcastQueryStage
Output [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: 169
(828) ReusedExchange [Reuses operator id: 801]
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
(829) ShuffleQueryStage
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Arguments: 32
(830) ReusedExchange [Reuses operator id: 704]
Output [4]: [_extract_code#1201103, _extract_internalRefUUID#1201104, _extract_internalRefUUID#1201105, _extract_internalRefUUID#1201102]
(831) BroadcastQueryStage
Output [4]: [_extract_code#1201103, _extract_internalRefUUID#1201104, _extract_internalRefUUID#1201105, _extract_internalRefUUID#1201102]
Arguments: 105
(832) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200232, ), isnull(product#1200232), coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201105, ), isnull(_extract_internalRefUUID#1201105), coalesce(_extract_internalRefUUID#1201102, ), isnull(_extract_internalRefUUID#1201102)]
Join type: LeftOuter
Join condition: None
(833) Project
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104]
Input [7]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104, _extract_internalRefUUID#1201105, _extract_internalRefUUID#1201102]
(834) ReusedExchange [Reuses operator id: 766]
Output [1]: [internalUUID#1200246]
(835) BroadcastQueryStage
Output [1]: [internalUUID#1200246]
Arguments: 134
(836) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [2]: [coalesce(internalUUID#1200246, ), isnull(internalUUID#1200246)]
Join type: LeftOuter
Join condition: None
(837) Project
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104]
Input [6]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104, internalUUID#1200246]
(838) ReusedExchange [Reuses operator id: 723]
Output [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
(839) BroadcastQueryStage
Output [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Arguments: 144
(840) BroadcastHashJoin
Left keys [1]: [product#1200232]
Right keys [1]: [internalUUID#1200260]
Join type: LeftOuter
Join condition: None
(841) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filter(unitOfMeasureConversions#1200266, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201103) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201104)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200264.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200264.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200271]
Input [8]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104, internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
(842) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271]
Arguments: explode(filteredUnitOfMeasureConversions#1200271.quantityNumerator), [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271], true, [quantityNumerator#1200272]
(843) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271.quantityDenominator AS _extract_quantityDenominator#1200912]
Input [5]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272]
(844) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_quantityDenominator#1200912]
Arguments: explode(_extract_quantityDenominator#1200912), [product#1200232, plant#1200233, orderDateTime#1200234], true, [quantityDenominator#1200273]
(845) Project
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, quantityDenominator#1200273]
(846) BroadcastHashJoin
Left keys [2]: [plantUuid#1200224, productUuid#1200226]
Right keys [2]: [plant#1200233, product#1200232]
Join type: Inner
Join condition: (calculationDateTime#1200220 <= orderDateTime#1200234)
(847) Project
Output [4]: [plantUuid#1200224 AS plant#1200276, productUuid#1200226 AS product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Input [7]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227, product#1200232, plant#1200233, orderDateTime#1200234]
(848) HashAggregate
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [partial_max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max#1201967]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
(849) HashAggregate
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max(calculationDateTime#1200220)#1200140]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max(calculationDateTime#1200220)#1200140 AS max_calc_datetime#1200134]
(850) Exchange
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: hashpartitioning(coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134), 37), ENSURE_REQUIREMENTS, [plan_id=1883070]
(851) ShuffleQueryStage
Output [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: 174
(852) AQEShuffleRead
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: local
(853) BroadcastHashJoin
Left keys [8]: [coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049)]
Right keys [8]: [coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134)]
Join type: Inner
Join condition: None
(854) Project
Output [3]: [plant#1200132, product#1200133, calculationDateTime#1200049]
Input [8]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
(855) HashAggregate
Input [3]: [plant#1200132, product#1200133, calculationDateTime#1200049]
Keys [2]: [product#1200133, plant#1200132]
Functions [1]: [partial_min(calculationDateTime#1200049)]
Aggregate Attributes [1]: [min#1201959]
Results [3]: [product#1200133, plant#1200132, min#1201960]
(856) Exchange
Input [3]: [product#1200133, plant#1200132, min#1201960]
Arguments: hashpartitioning(product#1200133, plant#1200132, 37), ENSURE_REQUIREMENTS, [plan_id=1885368]
(857) ShuffleQueryStage
Output [3]: [product#1200133, plant#1200132, min#1201960]
Arguments: 180
(858) AQEShuffleRead
Input [3]: [product#1200133, plant#1200132, min#1201960]
Arguments: coalesced
(859) HashAggregate
Input [3]: [product#1200133, plant#1200132, min#1201960]
Keys [2]: [product#1200133, plant#1200132]
Functions [1]: [min(calculationDateTime#1200049)]
Aggregate Attributes [1]: [min(calculationDateTime#1200049)#1200296]
Results [3]: [product#1200133, plant#1200132, min(calculationDateTime#1200049)#1200296 AS minCalculationDateTime#1200289]
(860) BroadcastExchange
Input [3]: [product#1200133, plant#1200132, minCalculationDateTime#1200289]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1885704]
(861) BroadcastQueryStage
Output [3]: [product#1200133, plant#1200132, minCalculationDateTime#1200289]
Arguments: 182
(862) BroadcastHashJoin
Left keys [2]: [plant#1199943, product#1199942]
Right keys [2]: [plant#1200132, product#1200133]
Join type: LeftOuter
Join condition: None
(863) Project
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, CASE WHEN isnotnull(minCalculationDateTime#1200289) THEN minCalculationDateTime#1200289 ELSE orderDateTime#1199944 END AS stockDatetime#1200346]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, product#1200133, plant#1200132, minCalculationDateTime#1200289]
(864) Exchange
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: hashpartitioning(coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942), 37), ENSURE_REQUIREMENTS, [plan_id=1886259]
(865) ShuffleQueryStage
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: 184
(866) AQEShuffleRead
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: local
(867) Scan parquet
Output [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(868) ColumnarToRow
Input [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
(869) Exchange
Input [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Arguments: hashpartitioning(product#1200424, plant#1200425, 37), REPARTITION_BY_NUM, [plan_id=1848361]
(870) ShuffleQueryStage
Output [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Arguments: 39
(871) Scan parquet
Output [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(872) ColumnarToRow
Input [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
(873) Project
Output [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Input [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
(874) Exchange
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1848375]
(875) ShuffleQueryStage
Output [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Arguments: 40
(876) Project
Output [1]: [struct(systemId, systemId#1200428, internalUUID, internalUUID#1200429, plant, plant#1200430, product, product#1200431, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200432, productionAspect, productionAspect#1200433, salesPlant, salesPlant#1200434, listing, listing#1200435) AS productPlant#1200436]
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
(877) BroadcastExchange
Input [1]: [productPlant#1200436]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=1858889]
(878) BroadcastQueryStage
Output [1]: [productPlant#1200436]
Arguments: 130
(879) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200424, ), isnull(product#1200424), coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [4]: [coalesce(productPlant#1200436.product.internalRefUUID, ), isnull(productPlant#1200436.product.internalRefUUID), coalesce(productPlant#1200436.plant.internalRefUUID, ), isnull(productPlant#1200436.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(880) ReusedExchange [Reuses operator id: 713]
Output [2]: [internalUUID#1200438, timezonecode#1200449]
(881) BroadcastQueryStage
Output [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: 129
(882) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [2]: [coalesce(internalUUID#1200438, ), isnull(internalUUID#1200438)]
Join type: LeftOuter
Join condition: None
(883) Project
Output [5]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, CASE WHEN isnotnull(timezonecode#1200449) THEN timezonecode#1200449 ELSE UTC END AS timezonecode#1200450]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, internalUUID#1200438, timezonecode#1200449]
(884) ReusedExchange [Reuses operator id: 723]
Output [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
(885) BroadcastQueryStage
Output [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Arguments: 145
(886) BroadcastHashJoin
Left keys [1]: [product#1200424]
Right keys [1]: [internalUUID#1200452]
Join type: LeftOuter
Join condition: None
(887) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filter(unitOfMeasureConversions#1200458, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200456.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200456.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200463]
Input [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
(888) Project
Output [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463.quantityDenominator AS _extract_quantityDenominator#1200974, filteredUnitOfMeasureConversions#1200463.quantityNumerator AS _extract_quantityNumerator#1200975]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463]
(889) Generate
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1200974, _extract_quantityNumerator#1200975]
Arguments: explode(_extract_quantityNumerator#1200975), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1200974], true, [quantityNumerator#1200464]
(890) Generate
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1200974, quantityNumerator#1200464]
Arguments: explode(_extract_quantityDenominator#1200974), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464], true, [quantityDenominator#1200465]
(891) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, (cast(quantityNumerator#1200464 as double) / cast(quantityDenominator#1200465 as double)) AS outboundUnit#1200466]
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464, quantityDenominator#1200465]
(892) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, CASE WHEN (isnull(outboundUnit#1200466) OR (outboundUnit#1200466 <= 0.0)) THEN 1.0 ELSE outboundUnit#1200466 END AS outboundUnit#1200467]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200466]
(893) ReusedExchange [Reuses operator id: 737]
Output [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
(894) BroadcastQueryStage
Output [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
Arguments: 118
(895) ReusedExchange [Reuses operator id: 750]
Output [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
(896) BroadcastQueryStage
Output [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Arguments: 124
(897) ReusedExchange [Reuses operator id: 779]
Output [1]: [plant#1200503]
(898) ShuffleQueryStage
Output [1]: [plant#1200503]
Arguments: 156
(899) AQEShuffleRead
Input [1]: [plant#1200503]
Arguments: coalesced
(900) HashAggregate
Input [1]: [plant#1200503]
Keys [1]: [plant#1200503]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200503]
(901) BroadcastHashJoin
Left keys [1]: [plantUuid#1200499]
Right keys [1]: [plant#1200503]
Join type: Inner
Join condition: None
(902) Project
Output [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Input [4]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501, plant#1200503]
(903) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200471.internalRefUUID, ), isnull(plant#1200471.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200499, ), isnull(plantUuid#1200499)]
Join type: Inner
Join condition: None
(904) Generate
Input [9]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Arguments: explode(filter(stockQuantities#1200473, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200501) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200500)), lambda x#1200047, false))), [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, plantUuid#1200499], false, [stockQuantity#1200546]
(905) ObjectHashAggregate
Input [7]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, plantUuid#1200499, stockQuantity#1200546]
Keys [5]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468]
Functions [2]: [partial_first(calculationDateTime#1200472, false), partial_collect_list(stockQuantity#1200546, 0, 0)]
Aggregate Attributes [3]: [first#1201983, valueSet#1201984, buf#1201985]
Results [8]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first#1201986, valueSet#1201987, buf#1201988]
(906) ObjectHashAggregate
Input [8]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first#1201986, valueSet#1201987, buf#1201988]
Keys [5]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468]
Functions [2]: [first(calculationDateTime#1200472, false), collect_list(stockQuantity#1200546, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200472)()#1200062, collect_list(stockQuantity#1200546, 0, 0)#1200063]
Results [4]: [product#1200470, plant#1200471, first(calculationDateTime#1200472)()#1200062 AS calculationDateTime#1200547, collect_list(stockQuantity#1200546, 0, 0)#1200063 AS stockQuantities#1200548]
(907) Filter
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
Condition : ((size(stockQuantities#1200548, true) > 0) AND isnotnull(calculationDateTime#1200547))
(908) Generate
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
Arguments: explode(stockQuantities#1200548), [product#1200470, plant#1200471, calculationDateTime#1200547], false, [stockQuantity#1200549]
(909) Filter
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantity#1200549]
Condition : (((isnotnull(stockQuantity#1200549.specialStockIndicator.code) AND isnotnull(stockQuantity#1200549.stockType.code)) AND (stockQuantity#1200549.specialStockIndicator.code = )) AND (stockQuantity#1200549.stockType.code = 01))
(910) Project
Output [5]: [plant#1200471.internalRefUUID AS plantUuid#1200551, product#1200470.internalRefUUID AS productUuid#1200553, calculationDateTime#1200547, stockQuantity#1200549.storagelocation.id AS storageLocId#1200554, stockQuantity#1200549.quantity.measure AS quantity#1200556]
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantity#1200549]
(911) Exchange
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: hashpartitioning(productUuid#1200553, plantUuid#1200551, 37), ENSURE_REQUIREMENTS, [plan_id=1880126]
(912) ShuffleQueryStage
Output [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: 164
(913) AQEShuffleRead
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: local
(914) BroadcastExchange
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1882321]
(915) BroadcastQueryStage
Output [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: 172
(916) ReusedExchange [Reuses operator id: 801]
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
(917) ShuffleQueryStage
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Arguments: 58
(918) ReusedExchange [Reuses operator id: 704]
Output [4]: [_extract_code#1201110, _extract_internalRefUUID#1201111, _extract_internalRefUUID#1201113, _extract_internalRefUUID#1201112]
(919) BroadcastQueryStage
Output [4]: [_extract_code#1201110, _extract_internalRefUUID#1201111, _extract_internalRefUUID#1201113, _extract_internalRefUUID#1201112]
Arguments: 109
(920) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200559, ), isnull(product#1200559), coalesce(plant#1200560, ), isnull(plant#1200560)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201113, ), isnull(_extract_internalRefUUID#1201113), coalesce(_extract_internalRefUUID#1201112, ), isnull(_extract_internalRefUUID#1201112)]
Join type: LeftOuter
Join condition: None
(921) Project
Output [5]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111]
Input [7]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111, _extract_internalRefUUID#1201113, _extract_internalRefUUID#1201112]
(922) ReusedExchange [Reuses operator id: 766]
Output [1]: [internalUUID#1200573]
(923) BroadcastQueryStage
Output [1]: [internalUUID#1200573]
Arguments: 136
(924) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200560, ), isnull(plant#1200560)]
Right keys [2]: [coalesce(internalUUID#1200573, ), isnull(internalUUID#1200573)]
Join type: LeftOuter
Join condition: None
(925) Project
Output [5]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111]
Input [6]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111, internalUUID#1200573]
(926) ReusedExchange [Reuses operator id: 723]
Output [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
(927) BroadcastQueryStage
Output [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Arguments: 147
(928) BroadcastHashJoin
Left keys [1]: [product#1200559]
Right keys [1]: [internalUUID#1200587]
Join type: LeftOuter
Join condition: None
(929) Project
Output [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filter(unitOfMeasureConversions#1200593, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201110) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201111)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200591.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200591.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200598]
Input [8]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111, internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
(930) Generate
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598]
Arguments: explode(filteredUnitOfMeasureConversions#1200598.quantityNumerator), [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598], true, [quantityNumerator#1200599]
(931) Project
Output [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598.quantityDenominator AS _extract_quantityDenominator#1200924]
Input [5]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599]
(932) Generate
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_quantityDenominator#1200924]
Arguments: explode(_extract_quantityDenominator#1200924), [product#1200559, plant#1200560, orderDateTime#1200561], true, [quantityDenominator#1200600]
(933) Project
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, quantityDenominator#1200600]
(934) BroadcastHashJoin
Left keys [2]: [plantUuid#1200551, productUuid#1200553]
Right keys [2]: [plant#1200560, product#1200559]
Join type: Inner
Join condition: (calculationDateTime#1200547 <= orderDateTime#1200561)
(935) Project
Output [5]: [plantUuid#1200551 AS plant#1200603, productUuid#1200553 AS product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Input [8]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556, product#1200559, plant#1200560, orderDateTime#1200561]
(936) Exchange
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: hashpartitioning(coalesce(plant#1200603, ), isnull(plant#1200603), coalesce(product#1200604, ), isnull(product#1200604), coalesce(storageLocId#1200554, ), isnull(storageLocId#1200554), coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00), isnull(calculationDateTime#1200547), 37), ENSURE_REQUIREMENTS, [plan_id=1883637]
(937) ShuffleQueryStage
Output [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: 177
(938) AQEShuffleRead
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: local
(939) BroadcastExchange
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
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=1884698]
(940) BroadcastQueryStage
Output [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: 179
(941) ReusedExchange [Reuses operator id: 850]
Output [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
(942) ShuffleQueryStage
Output [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
Arguments: 176
(943) AQEShuffleRead
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
Arguments: local
(944) BroadcastHashJoin
Left keys [8]: [coalesce(plant#1200603, ), isnull(plant#1200603), coalesce(product#1200604, ), isnull(product#1200604), coalesce(storageLocId#1200554, ), isnull(storageLocId#1200554), coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00), isnull(calculationDateTime#1200547)]
Right keys [8]: [coalesce(plant#1200740, ), isnull(plant#1200740), coalesce(product#1200741, ), isnull(product#1200741), coalesce(storageLocId#1200691, ), isnull(storageLocId#1200691), coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200742)]
Join type: Inner
Join condition: None
(945) Project
Output [4]: [plant#1200603, product#1200604, calculationDateTime#1200547, quantity#1200556]
Input [9]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556, plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
(946) HashAggregate
Input [4]: [plant#1200603, product#1200604, calculationDateTime#1200547, quantity#1200556]
Keys [2]: [product#1200604, plant#1200603]
Functions [2]: [partial_min(calculationDateTime#1200547), partial_sum(quantity#1200556)]
Aggregate Attributes [2]: [min#1201979, sum#1201980]
Results [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
(947) Exchange
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Arguments: hashpartitioning(product#1200604, plant#1200603, 37), ENSURE_REQUIREMENTS, [plan_id=1885403]
(948) ShuffleQueryStage
Output [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Arguments: 181
(949) AQEShuffleRead
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Arguments: coalesced
(950) HashAggregate
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Keys [2]: [product#1200604, plant#1200603]
Functions [2]: [min(calculationDateTime#1200547), sum(quantity#1200556)]
Aggregate Attributes [2]: [min(calculationDateTime#1200547)#1200296, sum(quantity#1200556)#1200295]
Results [4]: [product#1200604, plant#1200603, min(calculationDateTime#1200547)#1200296 AS minCalculationDateTime#1200744, round(sum(quantity#1200556)#1200295, 0) AS roundedQuantitySum#1200745]
(951) BroadcastExchange
Input [4]: [product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1885977]
(952) BroadcastQueryStage
Output [4]: [product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
Arguments: 183
(953) BroadcastHashJoin
Left keys [2]: [plant#1200425, product#1200424]
Right keys [2]: [plant#1200603, product#1200604]
Join type: LeftOuter
Join condition: None
(954) Project
Output [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, CASE WHEN isnotnull(minCalculationDateTime#1200744) THEN minCalculationDateTime#1200744 ELSE orderDateTime#1200426 END AS stockDatetime#1200746, CASE WHEN isnotnull(roundedQuantitySum#1200745) THEN array(roundedQuantitySum#1200745) ELSE [0.0] END AS stockBatchQuantities#1200747]
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
(955) Scan parquet
Output [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001355/0_1_10000001355]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(956) ColumnarToRow
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
(957) Filter
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Condition : (isnotnull(product#1200349) AND isnotnull(plant#1200350))
(958) BroadcastExchange
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1848939]
(959) BroadcastQueryStage
Output [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Arguments: 85
(960) BroadcastHashJoin
Left keys [2]: [product#1200424, plant#1200425]
Right keys [2]: [product#1200349, plant#1200350]
Join type: LeftOuter
Join condition: None
(961) Project
Output [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, CASE WHEN isnotnull(product#1200349) THEN struct(demandChannel, demandChannel#1200351, demandStream, demandStream#1200352, considerVariance, considerVariance#1200353, demandTimeBuckets, demandTimeBuckets#1200354, demandPointInTimeStart, demandPointInTimeStart#1200355, demandPointInTimeEnd, demandPointInTimeEnd#1200356, demandPointInTime, demandPointInTime#1200357) END AS rawDemands#1200370]
Input [17]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
(962) ObjectHashAggregate
Input [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, rawDemands#1200370]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, knownfloatingpointnormalized(if (isnull(productPlant#1200436)) null else named_struct(systemId, productPlant#1200436.systemId, internalUUID, productPlant#1200436.internalUUID, plant, productPlant#1200436.plant, product, productPlant#1200436.product, blockedForReplenishmentStartingFrom, productPlant#1200436.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect)) null else named_struct(productMovementPlants, productPlant#1200436.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1200436.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1200436.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1200436.salesPlant, listing, productPlant#1200436.listing)) AS productPlant#1200436, timezonecode#1200450, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1200467)) AS outboundUnit#1200467, stockDatetime#1200746, knownfloatingpointnormalized(transform(stockBatchQuantities#1200747, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1207108)), lambda arg#1207108, false))) AS stockBatchQuantities#1200747, [7226582400000000] AS [7226582400000000]#1207107]
Functions [1]: [partial_collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [buf#1201977]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1207107, buf#1201978]
(963) ObjectHashAggregate
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1207107, buf#1201978]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1207107]
Functions [1]: [collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1200370, 0, 0)#1200389]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1200748, collect_list(rawDemands#1200370, 0, 0)#1200389 AS rawDemands#1200371]
(964) DeserializeToObject
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, rawDemands#1200371]
Arguments: createexternalrow(invoke(product#1200424.toString()), invoke(plant#1200425.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1200426)), if (isnull(productPlant#1200436)) null else createexternalrow(invoke(productPlant#1200436.systemId.toString()), invoke(productPlant#1200436.internalUUID.toString()), if (isnull(productPlant#1200436.plant)) null else createexternalrow(invoke(productPlant#1200436.plant.internalRefUUID.toString()), invoke(productPlant#1200436.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1200436.product)) null else createexternalrow(invoke(productPlant#1200436.product.internalRefUUID.toString()), invoke(productPlant#1200436.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1200436.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1200436.productionAspect)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.salesPlant)) null else createexternalrow(if (isnull(productPlant#1200436.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1200436.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.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)), invoke(timezonecode#1200450.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1200467)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1200746)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#1200747, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#1200748, 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#1200371, 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(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(965) MapElements
Input [1]: [obj#1200410]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, obj#1200415: org.apache.spark.sql.Row
(966) SerializeFromObject
Input [1]: [obj#1200415]
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#1200420, 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#1200421]
(967) Exchange
Input [2]: [product#1200420, plant#1200421]
Arguments: hashpartitioning(coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420), 37), ENSURE_REQUIREMENTS, [plan_id=1886498]
(968) ShuffleQueryStage
Output [2]: [product#1200420, plant#1200421]
Arguments: 185
(969) AQEShuffleRead
Input [2]: [product#1200420, plant#1200421]
Arguments: local
(970) BroadcastExchange
Input [2]: [product#1200420, plant#1200421]
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=1886669]
(971) BroadcastQueryStage
Output [2]: [product#1200420, plant#1200421]
Arguments: 186
(972) BroadcastHashJoin
Left keys [4]: [coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942)]
Right keys [4]: [coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420)]
Join type: LeftOuter
Join condition: None
(973) Project
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Input [6]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346, product#1200420, plant#1200421]
(974) Exchange
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: hashpartitioning(plant#1199943, 37), ENSURE_REQUIREMENTS, [plan_id=1886740]
(975) ShuffleQueryStage
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: 187
(976) AQEShuffleRead
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: local
(977) BroadcastExchange
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=1886790]
(978) BroadcastQueryStage
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: 188
(979) ReusedExchange [Reuses operator id: 743]
Output [1]: [distributionCenters#1200819]
(980) ShuffleQueryStage
Output [1]: [distributionCenters#1200819]
Arguments: 87
(981) Generate
Input [1]: [distributionCenters#1200819]
Arguments: explode(distributionCenters#1200819), false, [distributionCenters#1200835]
(982) Filter
Input [1]: [distributionCenters#1200835]
Condition : (((size(distributionCenters#1200835.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#1200835.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#1200835.internalRefUUID))
(983) Project
Output [2]: [distributionCenters#1200835.internalRefUUID AS _extract_internalRefUUID#1200938, distributionCenters#1200835.storageLocations.internalRefUUID AS _extract_internalRefUUID#1201123]
Input [1]: [distributionCenters#1200835]
(984) Generate
Input [2]: [_extract_internalRefUUID#1200938, _extract_internalRefUUID#1201123]
Arguments: explode(_extract_internalRefUUID#1201123), [_extract_internalRefUUID#1200938], false, [storageLocations#1200836]
(985) Filter
Input [2]: [_extract_internalRefUUID#1200938, storageLocations#1200836]
Condition : isnotnull(storageLocations#1200836)
(986) Project
Output [2]: [_extract_internalRefUUID#1200938 AS plantUuid#1200838, storageLocations#1200836 AS storageLocUuid#1200840]
Input [2]: [_extract_internalRefUUID#1200938, storageLocations#1200836]
(987) BroadcastExchange
Input [2]: [plantUuid#1200838, storageLocUuid#1200840]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1854780]
(988) BroadcastQueryStage
Output [2]: [plantUuid#1200838, storageLocUuid#1200840]
Arguments: 127
(989) ReusedExchange [Reuses operator id: 779]
Output [1]: [plant#1200842]
(990) ShuffleQueryStage
Output [1]: [plant#1200842]
Arguments: 160
(991) HashAggregate
Input [1]: [plant#1200842]
Keys [1]: [plant#1200842]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200842]
(992) BroadcastHashJoin
Left keys [1]: [plantUuid#1200838]
Right keys [1]: [plant#1200842]
Join type: Inner
Join condition: None
(993) Project
Output [2]: [plantUuid#1200838 AS plant#1200812, storageLocUuid#1200840]
Input [3]: [plantUuid#1200838, storageLocUuid#1200840, plant#1200842]
(994) BroadcastHashJoin
Left keys [1]: [plant#1199943]
Right keys [1]: [plant#1200812]
Join type: Inner
Join condition: None
(995) Project
Output [5]: [plant#1199943, product#1199942, timezonecode#1199974, stockDatetime#1200346, storageLocUuid#1200840]
Input [6]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346, plant#1200812, storageLocUuid#1200840]
(996) Scan parquet
Output [6]: [internalUUID#1200774, id#1200775, supplier#1200777, isMarkedForDeletion#1200780, items#1200781, systemId#1200773]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(997) ColumnarToRow
Input [6]: [internalUUID#1200774, id#1200775, supplier#1200777, isMarkedForDeletion#1200780, items#1200781, systemId#1200773]
(998) Filter
Input [6]: [internalUUID#1200774, id#1200775, supplier#1200777, isMarkedForDeletion#1200780, items#1200781, systemId#1200773]
Condition : (((isnotnull(isMarkedForDeletion#1200780) AND NOT isMarkedForDeletion#1200780) AND (size(items#1200781, true) > 0)) AND isnotnull(items#1200781))
(999) Project
Output [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Input [6]: [internalUUID#1200774, id#1200775, supplier#1200777, isMarkedForDeletion#1200780, items#1200781, systemId#1200773]
(1000) Exchange
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1849172]
(1001) ShuffleQueryStage
Output [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Arguments: 96
(1002) Generate
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Arguments: explode(items#1200781), [internalUUID#1200774, id#1200775, supplier#1200777], false, [item#1200785]
(1003) Filter
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, item#1200785]
Condition : ((((isnotnull(item#1200785.deletionIndicator) AND isnotnull(item#1200785.completeIndicator)) AND isnotnull(item#1200785.returnIndicator)) AND ((NOT item#1200785.deletionIndicator AND NOT item#1200785.completeIndicator) AND NOT item#1200785.returnIndicator)) AND ((isnotnull(item#1200785.product.internalRefUUID) AND isnotnull(item#1200785.plant.internalRefUUID)) AND isnotnull(item#1200785.storageLocation.internalRefUUID)))
(1004) Project
Output [14]: [id#1200775, internalUUID#1200774, supplier#1200777.internalRefUUID AS supplierUuid#1200782, item#1200785.plant.internalRefUUID AS plant#1200790, item#1200785.product.internalRefUUID AS product#1200791, item#1200785.plant.id AS externalPlantId#1200792, item#1200785.product.id AS externalProductId#1200793, item#1200785.storageLocation.internalRefUUID AS storageLocUuid#1200794, item#1200785.quantityUnit.code AS quantityUom#1200795, item#1200785.quantityUnit.internalRefUUID AS quantityUomUuid#1200796, item#1200785.quantityNumerator AS quantityNumerator#1200797, item#1200785.quantityDenominator AS quantityDenominator#1200798, item#1200785.scheduleLines AS scheduleLines#1200799, item#1200785.confirmations AS confirmations#1200800]
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, item#1200785]
(1005) BroadcastExchange
Input [14]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=1863533]
(1006) BroadcastQueryStage
Output [14]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800]
Arguments: 151
(1007) BroadcastHashJoin
Left keys [3]: [product#1199942, plant#1199943, storageLocUuid#1200840]
Right keys [3]: [product#1200791, plant#1200790, storageLocUuid#1200794]
Join type: Inner
Join condition: None
(1008) Project
Output [17]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1200346, timezonecode#1199974, filter(confirmations#1200800, lambdafunction(((NOT lambda x_139#1200891.deletionIndicator AND lambda x_139#1200891.isRelevantForConfirmation) AND isnotnull(lambda x_139#1200891.confirmedDeliveryAt)), lambda x_139#1200891, false)) AS validConfirmations#1200890]
Input [19]: [plant#1199943, product#1199942, timezonecode#1199974, stockDatetime#1200346, storageLocUuid#1200840, id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800]
(1009) ResultQueryStage
Output [17]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1200346, timezonecode#1199974, validConfirmations#1200890]
Arguments: 189
(1010) Filter
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Condition : (isnotnull(plant#1199943) AND isnotnull(product#1199942))
(1011) Exchange
Input [3]: [product#1199942, plant#1199943, orderDateTime#1199944]
Arguments: hashpartitioning(product#1199942, plant#1199943, 37), REPARTITION_BY_NUM, [plan_id=1838361]
(1012) Project
Output [4]: [plant#1199949.internalRefUUID AS _extract_internalRefUUID#1201089, product#1199950.internalRefUUID AS _extract_internalRefUUID#1201086, productionAspect#1199952.productMovementPlants.unitOfIssue.code AS _extract_code#1201087, productionAspect#1199952.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201088]
Input [4]: [plant#1199949, product#1199950, productionAspect#1199952, systemId#1199947]
(1013) Exchange
Input [4]: [_extract_internalRefUUID#1201089, _extract_internalRefUUID#1201086, _extract_code#1201087, _extract_internalRefUUID#1201088]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837932]
(1014) Project
Output [4]: [_extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
Input [4]: [_extract_internalRefUUID#1201089, _extract_internalRefUUID#1201086, _extract_code#1201087, _extract_internalRefUUID#1201088]
(1015) BroadcastExchange
Input [4]: [_extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
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=1838560]
(1016) BroadcastHashJoin
Left keys [4]: [coalesce(product#1199942, ), isnull(product#1199942), coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201086, ), isnull(_extract_internalRefUUID#1201086), coalesce(_extract_internalRefUUID#1201089, ), isnull(_extract_internalRefUUID#1201089)]
Join type: LeftOuter
Join condition: None
(1017) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, _extract_internalRefUUID#1201086, _extract_internalRefUUID#1201089]
(1018) Project
Output [2]: [internalUUID#1199960, address#1199966.timeZone.code AS timezonecode#1199971]
Input [3]: [internalUUID#1199960, address#1199966, systemId#1199959]
(1019) Exchange
Input [2]: [internalUUID#1199960, timezonecode#1199971]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837938]
(1020) BroadcastExchange
Input [2]: [internalUUID#1199960, timezonecode#1199971]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838564]
(1021) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1199943, ), isnull(plant#1199943)]
Right keys [2]: [coalesce(internalUUID#1199960, ), isnull(internalUUID#1199960)]
Join type: LeftOuter
Join condition: None
(1022) Project
Output [6]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, CASE WHEN isnotnull(timezonecode#1199971) THEN timezonecode#1199971 ELSE UTC END AS timezonecode#1199974]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, internalUUID#1199960, timezonecode#1199971]
(1023) Filter
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
Condition : isnotnull(internalUUID#1199976)
(1024) Project
Output [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Input [4]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982, systemId#1199975]
(1025) Exchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837944]
(1026) BroadcastExchange
Input [3]: [internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838568]
(1027) BroadcastHashJoin
Left keys [1]: [product#1199942]
Right keys [1]: [internalUUID#1199976]
Join type: LeftOuter
Join condition: None
(1028) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filter(unitOfMeasureConversions#1199982, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201087) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201088)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1199980.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1199980.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1199988]
Input [9]: [product#1199942, plant#1199943, orderDateTime#1199944, _extract_code#1201087, _extract_internalRefUUID#1201088, timezonecode#1199974, internalUUID#1199976, baseUnitOfMeasure#1199980, unitOfMeasureConversions#1199982]
(1029) Generate
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988]
Arguments: explode(filteredUnitOfMeasureConversions#1199988.quantityNumerator), [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988], true, [quantityNumerator#1199996]
(1030) Project
Output [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988.quantityDenominator AS _extract_quantityDenominator#1200892]
Input [6]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, filteredUnitOfMeasureConversions#1199988, quantityNumerator#1199996]
(1031) Generate
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, _extract_quantityDenominator#1200892]
Arguments: explode(_extract_quantityDenominator#1200892), [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974], true, [quantityDenominator#1199999]
(1032) Project
Output [4]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974]
Input [5]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, quantityDenominator#1199999]
(1033) Sort
Input [4]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974]
Arguments: [product#1199942 ASC NULLS FIRST, plant#1199943 ASC NULLS FIRST], false, 0
(1034) Filter
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
Condition : (isnotnull(plant#1200041.internalRefUUID) AND isnotnull(product#1200040.internalRefUUID))
(1035) Project
Output [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Input [6]: [internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, systemId#1200038]
(1036) Exchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837954]
(1037) BroadcastExchange
Input [6]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043]
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=1838599]
(1038) Filter
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
Condition : (((marketUnit#1200002 <=> Grocery_SS) AND (size(distributionCenters#1200008, true) > 0)) AND isnotnull(distributionCenters#1200008))
(1039) Project
Output [1]: [distributionCenters#1200008]
Input [2]: [marketUnit#1200002, distributionCenters#1200008]
(1040) Exchange
Input [1]: [distributionCenters#1200008]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837958]
(1041) Generate
Input [1]: [distributionCenters#1200008]
Arguments: explode(distributionCenters#1200008), false, [distributionCenters#1200026]
(1042) Filter
Input [1]: [distributionCenters#1200026]
Condition : (((size(distributionCenters#1200026.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200026.storageLocations)) AND isnotnull(distributionCenters#1200026.internalRefUUID))
(1043) Project
Output [2]: [distributionCenters#1200026.internalRefUUID AS _extract_internalRefUUID#1200896, distributionCenters#1200026.storageLocations AS _extract_storageLocations#1200897]
Input [1]: [distributionCenters#1200026]
(1044) Generate
Input [2]: [_extract_internalRefUUID#1200896, _extract_storageLocations#1200897]
Arguments: explode(_extract_storageLocations#1200897), [_extract_internalRefUUID#1200896], false, [storageLocations#1200033]
(1045) Project
Output [3]: [_extract_internalRefUUID#1200896 AS plantUuid#1200028, storageLocations#1200033.id AS storageLocId#1200034, storageLocations#1200033.internalRefUUID AS storageLocUuid#1200035]
Input [2]: [_extract_internalRefUUID#1200896, storageLocations#1200033]
(1046) BroadcastExchange
Input [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838595]
(1047) Filter
Input [2]: [product#1200298, plant#1200299]
Condition : isnotnull(plant#1200299)
(1048) Exchange
Input [2]: [product#1200298, plant#1200299]
Arguments: hashpartitioning(product#1200298, plant#1200299, 37), REPARTITION_BY_NUM, [plan_id=1838372]
(1049) Scan parquet
Output [4]: [plant#1200304, product#1200305, productionAspect#1200307, systemId#1200302]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1050) Project
Output [4]: [plant#1200304.internalRefUUID AS _extract_internalRefUUID#1201093, product#1200305.internalRefUUID AS _extract_internalRefUUID#1201092, productionAspect#1200307.productMovementPlants.unitOfIssue.code AS _extract_code#1201090, productionAspect#1200307.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201091]
Input [4]: [plant#1200304, product#1200305, productionAspect#1200307, systemId#1200302]
(1051) Exchange
Input [4]: [_extract_internalRefUUID#1201093, _extract_internalRefUUID#1201092, _extract_code#1201090, _extract_internalRefUUID#1201091]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837970]
(1052) Project
Output [4]: [_extract_code#1201090, _extract_internalRefUUID#1201091, _extract_internalRefUUID#1201092, _extract_internalRefUUID#1201093]
Input [4]: [_extract_internalRefUUID#1201093, _extract_internalRefUUID#1201092, _extract_code#1201090, _extract_internalRefUUID#1201091]
(1053) BroadcastExchange
Input [4]: [_extract_code#1201090, _extract_internalRefUUID#1201091, _extract_internalRefUUID#1201092, _extract_internalRefUUID#1201093]
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=1838575]
(1054) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200298, ), isnull(product#1200298), coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201092, ), isnull(_extract_internalRefUUID#1201092), coalesce(_extract_internalRefUUID#1201093, ), isnull(_extract_internalRefUUID#1201093)]
Join type: LeftOuter
Join condition: None
(1055) Project
Output [4]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091]
Input [6]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091, _extract_internalRefUUID#1201092, _extract_internalRefUUID#1201093]
(1056) Project
Output [1]: [internalUUID#1200312]
Input [2]: [internalUUID#1200312, systemId#1200311]
(1057) Exchange
Input [1]: [internalUUID#1200312]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837976]
(1058) BroadcastExchange
Input [1]: [internalUUID#1200312]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838579]
(1059) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200299, ), isnull(plant#1200299)]
Right keys [2]: [coalesce(internalUUID#1200312, ), isnull(internalUUID#1200312)]
Join type: LeftOuter
Join condition: None
(1060) Project
Output [4]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091]
Input [5]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091, internalUUID#1200312]
(1061) Scan parquet
Output [4]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332, systemId#1200325]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1062) Filter
Input [4]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332, systemId#1200325]
Condition : isnotnull(internalUUID#1200326)
(1063) Project
Output [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Input [4]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332, systemId#1200325]
(1064) Exchange
Input [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1837982]
(1065) BroadcastExchange
Input [3]: [internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838583]
(1066) BroadcastHashJoin
Left keys [1]: [product#1200298]
Right keys [1]: [internalUUID#1200326]
Join type: LeftOuter
Join condition: None
(1067) Project
Output [2]: [plant#1200299, filter(unitOfMeasureConversions#1200332, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201090) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201091)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200330.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200330.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200337]
Input [7]: [product#1200298, plant#1200299, _extract_code#1201090, _extract_internalRefUUID#1201091, internalUUID#1200326, baseUnitOfMeasure#1200330, unitOfMeasureConversions#1200332]
(1068) Generate
Input [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337]
Arguments: explode(filteredUnitOfMeasureConversions#1200337.quantityNumerator), [plant#1200299, filteredUnitOfMeasureConversions#1200337], true, [quantityNumerator#1200338]
(1069) Project
Output [2]: [plant#1200299, filteredUnitOfMeasureConversions#1200337.quantityDenominator AS _extract_quantityDenominator#1200898]
Input [3]: [plant#1200299, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338]
(1070) Generate
Input [2]: [plant#1200299, _extract_quantityDenominator#1200898]
Arguments: explode(_extract_quantityDenominator#1200898), [plant#1200299], true, [quantityDenominator#1200339]
(1071) Project
Output [1]: [plant#1200299]
Input [2]: [plant#1200299, quantityDenominator#1200339]
(1072) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(1073) Exchange
Input [1]: [plant#1200299]
Arguments: hashpartitioning(plant#1200299, 37), ENSURE_REQUIREMENTS, [plan_id=1838592]
(1074) HashAggregate
Input [1]: [plant#1200299]
Keys [1]: [plant#1200299]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200299]
(1075) BroadcastHashJoin
Left keys [1]: [plantUuid#1200028]
Right keys [1]: [plant#1200299]
Join type: Inner
Join condition: None
(1076) Project
Output [3]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Input [4]: [plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035, plant#1200299]
(1077) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200041.internalRefUUID, ), isnull(plant#1200041.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200028, ), isnull(plantUuid#1200028)]
Join type: Inner
Join condition: None
(1078) Generate
Input [9]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
Arguments: explode(filter(stockQuantities#1200043, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200035) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200034)), lambda x#1200047, false))), [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028], false, [stockQuantity#1200048]
(1079) ObjectHashAggregate
Input [7]: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, plantUuid#1200028, stockQuantity#1200048]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [partial_first(calculationDateTime#1200042, false), partial_collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [3]: [first#1201961, valueSet#1201962, buf#1201963]
Results [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
(1080) ObjectHashAggregate
Input [8]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first#1201964, valueSet#1201965, buf#1201966]
Keys [5]: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038]
Functions [2]: [first(calculationDateTime#1200042, false), collect_list(stockQuantity#1200048, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200042)()#1200062, collect_list(stockQuantity#1200048, 0, 0)#1200063]
Results [4]: [product#1200040, plant#1200041, first(calculationDateTime#1200042)()#1200062 AS calculationDateTime#1200049, collect_list(stockQuantity#1200048, 0, 0)#1200063 AS stockQuantities#1200050]
(1081) Filter
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Condition : ((size(stockQuantities#1200050, true) > 0) AND isnotnull(calculationDateTime#1200049))
(1082) Generate
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
Arguments: explode(stockQuantities#1200050), [product#1200040, plant#1200041, calculationDateTime#1200049], false, [stockQuantity#1200065]
(1083) Filter
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
Condition : (((isnotnull(stockQuantity#1200065.specialStockIndicator.code) AND isnotnull(stockQuantity#1200065.stockType.code)) AND (stockQuantity#1200065.specialStockIndicator.code = )) AND (stockQuantity#1200065.stockType.code = 01))
(1084) Project
Output [4]: [plant#1200041.internalRefUUID AS plantUuid#1200067, product#1200040.internalRefUUID AS productUuid#1200069, calculationDateTime#1200049, stockQuantity#1200065.storagelocation.id AS storageLocId#1200070]
Input [4]: [product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantity#1200065]
(1085) Exchange
Input [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: hashpartitioning(productUuid#1200069, plantUuid#1200067, 37), ENSURE_REQUIREMENTS, [plan_id=1838625]
(1086) Sort
Input [4]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070]
Arguments: [productUuid#1200069 ASC NULLS FIRST, plantUuid#1200067 ASC NULLS FIRST], false, 0
(1087) Filter
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Condition : ((isnotnull(orderDateTime#1200086) AND isnotnull(plant#1200085)) AND isnotnull(product#1200084))
(1088) Exchange
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: hashpartitioning(product#1200084, plant#1200085, 37), REPARTITION_BY_NUM, [plan_id=1838395]
(1089) Scan parquet
Output [4]: [plant#1200090, product#1200091, productionAspect#1200093, systemId#1200088]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1090) Project
Output [4]: [plant#1200090.internalRefUUID AS _extract_internalRefUUID#1201097, product#1200091.internalRefUUID AS _extract_internalRefUUID#1201094, productionAspect#1200093.productMovementPlants.unitOfIssue.code AS _extract_code#1201095, productionAspect#1200093.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201096]
Input [4]: [plant#1200090, product#1200091, productionAspect#1200093, systemId#1200088]
(1091) Exchange
Input [4]: [_extract_internalRefUUID#1201097, _extract_internalRefUUID#1201094, _extract_code#1201095, _extract_internalRefUUID#1201096]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838007]
(1092) Project
Output [4]: [_extract_code#1201095, _extract_internalRefUUID#1201096, _extract_internalRefUUID#1201094, _extract_internalRefUUID#1201097]
Input [4]: [_extract_internalRefUUID#1201097, _extract_internalRefUUID#1201094, _extract_code#1201095, _extract_internalRefUUID#1201096]
(1093) BroadcastExchange
Input [4]: [_extract_code#1201095, _extract_internalRefUUID#1201096, _extract_internalRefUUID#1201094, _extract_internalRefUUID#1201097]
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=1838608]
(1094) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200084, ), isnull(product#1200084), coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201094, ), isnull(_extract_internalRefUUID#1201094), coalesce(_extract_internalRefUUID#1201097, ), isnull(_extract_internalRefUUID#1201097)]
Join type: LeftOuter
Join condition: None
(1095) Project
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096]
Input [7]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096, _extract_internalRefUUID#1201094, _extract_internalRefUUID#1201097]
(1096) Scan parquet
Output [2]: [internalUUID#1200098, systemId#1200097]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1097) Project
Output [1]: [internalUUID#1200098]
Input [2]: [internalUUID#1200098, systemId#1200097]
(1098) Exchange
Input [1]: [internalUUID#1200098]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838013]
(1099) BroadcastExchange
Input [1]: [internalUUID#1200098]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838612]
(1100) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200085, ), isnull(plant#1200085)]
Right keys [2]: [coalesce(internalUUID#1200098, ), isnull(internalUUID#1200098)]
Join type: LeftOuter
Join condition: None
(1101) Project
Output [5]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096]
Input [6]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096, internalUUID#1200098]
(1102) Scan parquet
Output [4]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118, systemId#1200111]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1103) Filter
Input [4]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118, systemId#1200111]
Condition : isnotnull(internalUUID#1200112)
(1104) Project
Output [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Input [4]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118, systemId#1200111]
(1105) Exchange
Input [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838019]
(1106) BroadcastExchange
Input [3]: [internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838616]
(1107) BroadcastHashJoin
Left keys [1]: [product#1200084]
Right keys [1]: [internalUUID#1200112]
Join type: LeftOuter
Join condition: None
(1108) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filter(unitOfMeasureConversions#1200118, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201095) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201096)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200116.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200116.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200123]
Input [8]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_code#1201095, _extract_internalRefUUID#1201096, internalUUID#1200112, baseUnitOfMeasure#1200116, unitOfMeasureConversions#1200118]
(1109) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123]
Arguments: explode(filteredUnitOfMeasureConversions#1200123.quantityNumerator), [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123], true, [quantityNumerator#1200124]
(1110) Project
Output [4]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123.quantityDenominator AS _extract_quantityDenominator#1200902]
Input [5]: [product#1200084, plant#1200085, orderDateTime#1200086, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124]
(1111) Generate
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, _extract_quantityDenominator#1200902]
Arguments: explode(_extract_quantityDenominator#1200902), [product#1200084, plant#1200085, orderDateTime#1200086], true, [quantityDenominator#1200125]
(1112) Project
Output [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Input [4]: [product#1200084, plant#1200085, orderDateTime#1200086, quantityDenominator#1200125]
(1113) Sort
Input [3]: [product#1200084, plant#1200085, orderDateTime#1200086]
Arguments: [product#1200084 ASC NULLS FIRST, plant#1200085 ASC NULLS FIRST], false, 0
(1114) SortMergeJoin
Left keys [2]: [productUuid#1200069, plantUuid#1200067]
Right keys [2]: [product#1200084, plant#1200085]
Join type: Inner
Join condition: (calculationDateTime#1200049 <= orderDateTime#1200086)
(1115) Project
Output [4]: [plantUuid#1200067 AS plant#1200132, productUuid#1200069 AS product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Input [7]: [plantUuid#1200067, productUuid#1200069, calculationDateTime#1200049, storageLocId#1200070, product#1200084, plant#1200085, orderDateTime#1200086]
(1116) Exchange
Input [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Arguments: hashpartitioning(coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049), 37), ENSURE_REQUIREMENTS, [plan_id=1838689]
(1117) Sort
Input [4]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049]
Arguments: [coalesce(plant#1200132, ) ASC NULLS FIRST, isnull(plant#1200132) ASC NULLS FIRST, coalesce(product#1200133, ) ASC NULLS FIRST, isnull(product#1200133) ASC NULLS FIRST, coalesce(storageLocId#1200070, ) ASC NULLS FIRST, isnull(storageLocId#1200070) ASC NULLS FIRST, coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1200049) ASC NULLS FIRST], false, 0
(1118) Scan parquet
Output [6]: [internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, systemId#1200141]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(1119) Filter
Input [6]: [internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, systemId#1200141]
Condition : (isnotnull(plant#1200144.internalRefUUID) AND isnotnull(product#1200143.internalRefUUID))
(1120) Project
Output [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
Input [6]: [internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, systemId#1200141]
(1121) Exchange
Input [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838031]
(1122) BroadcastExchange
Input [6]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146]
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=1838654]
(1123) Scan parquet
Output [2]: [marketUnit#1200147, distributionCenters#1200153]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1124) Filter
Input [2]: [marketUnit#1200147, distributionCenters#1200153]
Condition : (((marketUnit#1200147 <=> Grocery_SS) AND (size(distributionCenters#1200153, true) > 0)) AND isnotnull(distributionCenters#1200153))
(1125) Project
Output [1]: [distributionCenters#1200153]
Input [2]: [marketUnit#1200147, distributionCenters#1200153]
(1126) Exchange
Input [1]: [distributionCenters#1200153]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838035]
(1127) Generate
Input [1]: [distributionCenters#1200153]
Arguments: explode(distributionCenters#1200153), false, [distributionCenters#1200169]
(1128) Filter
Input [1]: [distributionCenters#1200169]
Condition : (((size(distributionCenters#1200169.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200169.storageLocations)) AND isnotnull(distributionCenters#1200169.internalRefUUID))
(1129) Project
Output [2]: [distributionCenters#1200169.internalRefUUID AS _extract_internalRefUUID#1200906, distributionCenters#1200169.storageLocations AS _extract_storageLocations#1200907]
Input [1]: [distributionCenters#1200169]
(1130) Generate
Input [2]: [_extract_internalRefUUID#1200906, _extract_storageLocations#1200907]
Arguments: explode(_extract_storageLocations#1200907), [_extract_internalRefUUID#1200906], false, [storageLocations#1200170]
(1131) Project
Output [3]: [_extract_internalRefUUID#1200906 AS plantUuid#1200172, storageLocations#1200170.id AS storageLocId#1200173, storageLocations#1200170.internalRefUUID AS storageLocUuid#1200174]
Input [2]: [_extract_internalRefUUID#1200906, storageLocations#1200170]
(1132) BroadcastExchange
Input [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838650]
(1133) Scan parquet
Output [2]: [product#1200175, plant#1200176]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1134) Filter
Input [2]: [product#1200175, plant#1200176]
Condition : isnotnull(plant#1200176)
(1135) Exchange
Input [2]: [product#1200175, plant#1200176]
Arguments: hashpartitioning(product#1200175, plant#1200176, 37), REPARTITION_BY_NUM, [plan_id=1838408]
(1136) Scan parquet
Output [4]: [plant#1200181, product#1200182, productionAspect#1200184, systemId#1200179]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1137) Project
Output [4]: [plant#1200181.internalRefUUID AS _extract_internalRefUUID#1201098, product#1200182.internalRefUUID AS _extract_internalRefUUID#1201099, productionAspect#1200184.productMovementPlants.unitOfIssue.code AS _extract_code#1201100, productionAspect#1200184.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201101]
Input [4]: [plant#1200181, product#1200182, productionAspect#1200184, systemId#1200179]
(1138) Exchange
Input [4]: [_extract_internalRefUUID#1201098, _extract_internalRefUUID#1201099, _extract_code#1201100, _extract_internalRefUUID#1201101]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838047]
(1139) Project
Output [4]: [_extract_code#1201100, _extract_internalRefUUID#1201101, _extract_internalRefUUID#1201099, _extract_internalRefUUID#1201098]
Input [4]: [_extract_internalRefUUID#1201098, _extract_internalRefUUID#1201099, _extract_code#1201100, _extract_internalRefUUID#1201101]
(1140) BroadcastExchange
Input [4]: [_extract_code#1201100, _extract_internalRefUUID#1201101, _extract_internalRefUUID#1201099, _extract_internalRefUUID#1201098]
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=1838630]
(1141) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200175, ), isnull(product#1200175), coalesce(plant#1200176, ), isnull(plant#1200176)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201099, ), isnull(_extract_internalRefUUID#1201099), coalesce(_extract_internalRefUUID#1201098, ), isnull(_extract_internalRefUUID#1201098)]
Join type: LeftOuter
Join condition: None
(1142) Project
Output [4]: [product#1200175, plant#1200176, _extract_code#1201100, _extract_internalRefUUID#1201101]
Input [6]: [product#1200175, plant#1200176, _extract_code#1201100, _extract_internalRefUUID#1201101, _extract_internalRefUUID#1201099, _extract_internalRefUUID#1201098]
(1143) Scan parquet
Output [2]: [internalUUID#1200189, systemId#1200188]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1144) Project
Output [1]: [internalUUID#1200189]
Input [2]: [internalUUID#1200189, systemId#1200188]
(1145) Exchange
Input [1]: [internalUUID#1200189]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838053]
(1146) BroadcastExchange
Input [1]: [internalUUID#1200189]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838634]
(1147) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200176, ), isnull(plant#1200176)]
Right keys [2]: [coalesce(internalUUID#1200189, ), isnull(internalUUID#1200189)]
Join type: LeftOuter
Join condition: None
(1148) Project
Output [4]: [product#1200175, plant#1200176, _extract_code#1201100, _extract_internalRefUUID#1201101]
Input [5]: [product#1200175, plant#1200176, _extract_code#1201100, _extract_internalRefUUID#1201101, internalUUID#1200189]
(1149) Scan parquet
Output [4]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209, systemId#1200202]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1150) Filter
Input [4]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209, systemId#1200202]
Condition : isnotnull(internalUUID#1200203)
(1151) Project
Output [3]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
Input [4]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209, systemId#1200202]
(1152) Exchange
Input [3]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838059]
(1153) BroadcastExchange
Input [3]: [internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838638]
(1154) BroadcastHashJoin
Left keys [1]: [product#1200175]
Right keys [1]: [internalUUID#1200203]
Join type: LeftOuter
Join condition: None
(1155) Project
Output [2]: [plant#1200176, filter(unitOfMeasureConversions#1200209, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201100) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201101)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200207.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200207.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200214]
Input [7]: [product#1200175, plant#1200176, _extract_code#1201100, _extract_internalRefUUID#1201101, internalUUID#1200203, baseUnitOfMeasure#1200207, unitOfMeasureConversions#1200209]
(1156) Generate
Input [2]: [plant#1200176, filteredUnitOfMeasureConversions#1200214]
Arguments: explode(filteredUnitOfMeasureConversions#1200214.quantityNumerator), [plant#1200176, filteredUnitOfMeasureConversions#1200214], true, [quantityNumerator#1200215]
(1157) Project
Output [2]: [plant#1200176, filteredUnitOfMeasureConversions#1200214.quantityDenominator AS _extract_quantityDenominator#1200908]
Input [3]: [plant#1200176, filteredUnitOfMeasureConversions#1200214, quantityNumerator#1200215]
(1158) Generate
Input [2]: [plant#1200176, _extract_quantityDenominator#1200908]
Arguments: explode(_extract_quantityDenominator#1200908), [plant#1200176], true, [quantityDenominator#1200216]
(1159) Project
Output [1]: [plant#1200176]
Input [2]: [plant#1200176, quantityDenominator#1200216]
(1160) HashAggregate
Input [1]: [plant#1200176]
Keys [1]: [plant#1200176]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200176]
(1161) Exchange
Input [1]: [plant#1200176]
Arguments: hashpartitioning(plant#1200176, 37), ENSURE_REQUIREMENTS, [plan_id=1838647]
(1162) HashAggregate
Input [1]: [plant#1200176]
Keys [1]: [plant#1200176]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200176]
(1163) BroadcastHashJoin
Left keys [1]: [plantUuid#1200172]
Right keys [1]: [plant#1200176]
Join type: Inner
Join condition: None
(1164) Project
Output [3]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Input [4]: [plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174, plant#1200176]
(1165) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200144.internalRefUUID, ), isnull(plant#1200144.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200172, ), isnull(plantUuid#1200172)]
Join type: Inner
Join condition: None
(1166) Generate
Input [9]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
Arguments: explode(filter(stockQuantities#1200146, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200174) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200173)), lambda x#1200047, false))), [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, plantUuid#1200172], false, [stockQuantity#1200219]
(1167) ObjectHashAggregate
Input [7]: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, plantUuid#1200172, stockQuantity#1200219]
Keys [5]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141]
Functions [2]: [partial_first(calculationDateTime#1200145, false), partial_collect_list(stockQuantity#1200219, 0, 0)]
Aggregate Attributes [3]: [first#1201969, valueSet#1201970, buf#1201971]
Results [8]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first#1201972, valueSet#1201973, buf#1201974]
(1168) ObjectHashAggregate
Input [8]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first#1201972, valueSet#1201973, buf#1201974]
Keys [5]: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141]
Functions [2]: [first(calculationDateTime#1200145, false), collect_list(stockQuantity#1200219, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200145)()#1200062, collect_list(stockQuantity#1200219, 0, 0)#1200063]
Results [4]: [product#1200143, plant#1200144, first(calculationDateTime#1200145)()#1200062 AS calculationDateTime#1200220, collect_list(stockQuantity#1200219, 0, 0)#1200063 AS stockQuantities#1200221]
(1169) Filter
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
Condition : ((size(stockQuantities#1200221, true) > 0) AND isnotnull(calculationDateTime#1200220))
(1170) Generate
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
Arguments: explode(stockQuantities#1200221), [product#1200143, plant#1200144, calculationDateTime#1200220], false, [stockQuantity#1200222]
(1171) Filter
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantity#1200222]
Condition : (((isnotnull(stockQuantity#1200222.specialStockIndicator.code) AND isnotnull(stockQuantity#1200222.stockType.code)) AND (stockQuantity#1200222.specialStockIndicator.code = )) AND (stockQuantity#1200222.stockType.code = 01))
(1172) Project
Output [4]: [plant#1200144.internalRefUUID AS plantUuid#1200224, product#1200143.internalRefUUID AS productUuid#1200226, calculationDateTime#1200220, stockQuantity#1200222.storagelocation.id AS storageLocId#1200227]
Input [4]: [product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantity#1200222]
(1173) Exchange
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: hashpartitioning(productUuid#1200226, plantUuid#1200224, 37), ENSURE_REQUIREMENTS, [plan_id=1838680]
(1174) Sort
Input [4]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227]
Arguments: [productUuid#1200226 ASC NULLS FIRST, plantUuid#1200224 ASC NULLS FIRST], false, 0
(1175) Scan parquet
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1176) Filter
Input [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Condition : ((isnotnull(orderDateTime#1200234) AND isnotnull(plant#1200233)) AND isnotnull(product#1200232))
(1177) Exchange
Input [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Arguments: hashpartitioning(product#1200232, plant#1200233, 37), REPARTITION_BY_NUM, [plan_id=1838431]
(1178) Scan parquet
Output [4]: [plant#1200238, product#1200239, productionAspect#1200241, systemId#1200236]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1179) Project
Output [4]: [plant#1200238.internalRefUUID AS _extract_internalRefUUID#1201102, product#1200239.internalRefUUID AS _extract_internalRefUUID#1201105, productionAspect#1200241.productMovementPlants.unitOfIssue.code AS _extract_code#1201103, productionAspect#1200241.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201104]
Input [4]: [plant#1200238, product#1200239, productionAspect#1200241, systemId#1200236]
(1180) Exchange
Input [4]: [_extract_internalRefUUID#1201102, _extract_internalRefUUID#1201105, _extract_code#1201103, _extract_internalRefUUID#1201104]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838084]
(1181) Project
Output [4]: [_extract_code#1201103, _extract_internalRefUUID#1201104, _extract_internalRefUUID#1201105, _extract_internalRefUUID#1201102]
Input [4]: [_extract_internalRefUUID#1201102, _extract_internalRefUUID#1201105, _extract_code#1201103, _extract_internalRefUUID#1201104]
(1182) BroadcastExchange
Input [4]: [_extract_code#1201103, _extract_internalRefUUID#1201104, _extract_internalRefUUID#1201105, _extract_internalRefUUID#1201102]
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=1838663]
(1183) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200232, ), isnull(product#1200232), coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201105, ), isnull(_extract_internalRefUUID#1201105), coalesce(_extract_internalRefUUID#1201102, ), isnull(_extract_internalRefUUID#1201102)]
Join type: LeftOuter
Join condition: None
(1184) Project
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104]
Input [7]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104, _extract_internalRefUUID#1201105, _extract_internalRefUUID#1201102]
(1185) Scan parquet
Output [2]: [internalUUID#1200246, systemId#1200245]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1186) Project
Output [1]: [internalUUID#1200246]
Input [2]: [internalUUID#1200246, systemId#1200245]
(1187) Exchange
Input [1]: [internalUUID#1200246]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838090]
(1188) BroadcastExchange
Input [1]: [internalUUID#1200246]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838667]
(1189) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200233, ), isnull(plant#1200233)]
Right keys [2]: [coalesce(internalUUID#1200246, ), isnull(internalUUID#1200246)]
Join type: LeftOuter
Join condition: None
(1190) Project
Output [5]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104]
Input [6]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104, internalUUID#1200246]
(1191) Scan parquet
Output [4]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266, systemId#1200259]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1192) Filter
Input [4]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266, systemId#1200259]
Condition : isnotnull(internalUUID#1200260)
(1193) Project
Output [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Input [4]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266, systemId#1200259]
(1194) Exchange
Input [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838096]
(1195) BroadcastExchange
Input [3]: [internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838671]
(1196) BroadcastHashJoin
Left keys [1]: [product#1200232]
Right keys [1]: [internalUUID#1200260]
Join type: LeftOuter
Join condition: None
(1197) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filter(unitOfMeasureConversions#1200266, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201103) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201104)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200264.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200264.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200271]
Input [8]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_code#1201103, _extract_internalRefUUID#1201104, internalUUID#1200260, baseUnitOfMeasure#1200264, unitOfMeasureConversions#1200266]
(1198) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271]
Arguments: explode(filteredUnitOfMeasureConversions#1200271.quantityNumerator), [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271], true, [quantityNumerator#1200272]
(1199) Project
Output [4]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271.quantityDenominator AS _extract_quantityDenominator#1200912]
Input [5]: [product#1200232, plant#1200233, orderDateTime#1200234, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272]
(1200) Generate
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, _extract_quantityDenominator#1200912]
Arguments: explode(_extract_quantityDenominator#1200912), [product#1200232, plant#1200233, orderDateTime#1200234], true, [quantityDenominator#1200273]
(1201) Project
Output [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Input [4]: [product#1200232, plant#1200233, orderDateTime#1200234, quantityDenominator#1200273]
(1202) Sort
Input [3]: [product#1200232, plant#1200233, orderDateTime#1200234]
Arguments: [product#1200232 ASC NULLS FIRST, plant#1200233 ASC NULLS FIRST], false, 0
(1203) SortMergeJoin
Left keys [2]: [productUuid#1200226, plantUuid#1200224]
Right keys [2]: [product#1200232, plant#1200233]
Join type: Inner
Join condition: (calculationDateTime#1200220 <= orderDateTime#1200234)
(1204) Project
Output [4]: [plantUuid#1200224 AS plant#1200276, productUuid#1200226 AS product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Input [7]: [plantUuid#1200224, productUuid#1200226, calculationDateTime#1200220, storageLocId#1200227, product#1200232, plant#1200233, orderDateTime#1200234]
(1205) HashAggregate
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, calculationDateTime#1200220]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [partial_max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max#1201967]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
(1206) HashAggregate
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max#1201968]
Keys [3]: [plant#1200276, product#1200277, storageLocId#1200227]
Functions [1]: [max(calculationDateTime#1200220)]
Aggregate Attributes [1]: [max(calculationDateTime#1200220)#1200140]
Results [4]: [plant#1200276, product#1200277, storageLocId#1200227, max(calculationDateTime#1200220)#1200140 AS max_calc_datetime#1200134]
(1207) Exchange
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: hashpartitioning(coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134), 37), ENSURE_REQUIREMENTS, [plan_id=1838690]
(1208) Sort
Input [4]: [plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
Arguments: [coalesce(plant#1200276, ) ASC NULLS FIRST, isnull(plant#1200276) ASC NULLS FIRST, coalesce(product#1200277, ) ASC NULLS FIRST, isnull(product#1200277) ASC NULLS FIRST, coalesce(storageLocId#1200227, ) ASC NULLS FIRST, isnull(storageLocId#1200227) ASC NULLS FIRST, coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1200134) ASC NULLS FIRST], false, 0
(1209) SortMergeJoin
Left keys [8]: [coalesce(plant#1200132, ), isnull(plant#1200132), coalesce(product#1200133, ), isnull(product#1200133), coalesce(storageLocId#1200070, ), isnull(storageLocId#1200070), coalesce(calculationDateTime#1200049, 1970-01-01 00:00:00), isnull(calculationDateTime#1200049)]
Right keys [8]: [coalesce(plant#1200276, ), isnull(plant#1200276), coalesce(product#1200277, ), isnull(product#1200277), coalesce(storageLocId#1200227, ), isnull(storageLocId#1200227), coalesce(max_calc_datetime#1200134, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200134)]
Join type: Inner
Join condition: None
(1210) Project
Output [3]: [plant#1200132, product#1200133, calculationDateTime#1200049]
Input [8]: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, plant#1200276, product#1200277, storageLocId#1200227, max_calc_datetime#1200134]
(1211) HashAggregate
Input [3]: [plant#1200132, product#1200133, calculationDateTime#1200049]
Keys [2]: [product#1200133, plant#1200132]
Functions [1]: [partial_min(calculationDateTime#1200049)]
Aggregate Attributes [1]: [min#1201959]
Results [3]: [product#1200133, plant#1200132, min#1201960]
(1212) Exchange
Input [3]: [product#1200133, plant#1200132, min#1201960]
Arguments: hashpartitioning(product#1200133, plant#1200132, 37), ENSURE_REQUIREMENTS, [plan_id=1838697]
(1213) HashAggregate
Input [3]: [product#1200133, plant#1200132, min#1201960]
Keys [2]: [product#1200133, plant#1200132]
Functions [1]: [min(calculationDateTime#1200049)]
Aggregate Attributes [1]: [min(calculationDateTime#1200049)#1200296]
Results [3]: [product#1200133, plant#1200132, min(calculationDateTime#1200049)#1200296 AS minCalculationDateTime#1200289]
(1214) Sort
Input [3]: [product#1200133, plant#1200132, minCalculationDateTime#1200289]
Arguments: [product#1200133 ASC NULLS FIRST, plant#1200132 ASC NULLS FIRST], false, 0
(1215) SortMergeJoin
Left keys [2]: [product#1199942, plant#1199943]
Right keys [2]: [product#1200133, plant#1200132]
Join type: LeftOuter
Join condition: None
(1216) Project
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, CASE WHEN isnotnull(minCalculationDateTime#1200289) THEN minCalculationDateTime#1200289 ELSE orderDateTime#1199944 END AS stockDatetime#1200346]
Input [7]: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, product#1200133, plant#1200132, minCalculationDateTime#1200289]
(1217) Exchange
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: hashpartitioning(coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942), 37), ENSURE_REQUIREMENTS, [plan_id=1838861]
(1218) Sort
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: [coalesce(plant#1199943, ) ASC NULLS FIRST, isnull(plant#1199943) ASC NULLS FIRST, coalesce(product#1199942, ) ASC NULLS FIRST, isnull(product#1199942) ASC NULLS FIRST], false, 0
(1219) Exchange
Input [3]: [product#1200424, plant#1200425, orderDateTime#1200426]
Arguments: hashpartitioning(product#1200424, plant#1200425, 37), REPARTITION_BY_NUM, [plan_id=1838114]
(1220) Project
Output [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Input [8]: [internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, systemId#1200428]
(1221) Exchange
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838117]
(1222) Project
Output [1]: [struct(systemId, systemId#1200428, internalUUID, internalUUID#1200429, plant, plant#1200430, product, product#1200431, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200432, productionAspect, productionAspect#1200433, salesPlant, salesPlant#1200434, listing, listing#1200435) AS productPlant#1200436]
Input [8]: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435]
(1223) BroadcastExchange
Input [1]: [productPlant#1200436]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=1838705]
(1224) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200424, ), isnull(product#1200424), coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [4]: [coalesce(productPlant#1200436.product.internalRefUUID, ), isnull(productPlant#1200436.product.internalRefUUID), coalesce(productPlant#1200436.plant.internalRefUUID, ), isnull(productPlant#1200436.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1225) Scan parquet
Output [3]: [internalUUID#1200438, address#1200444, systemId#1200437]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1226) Project
Output [2]: [internalUUID#1200438, address#1200444.timeZone.code AS timezonecode#1200449]
Input [3]: [internalUUID#1200438, address#1200444, systemId#1200437]
(1227) Exchange
Input [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838122]
(1228) BroadcastExchange
Input [2]: [internalUUID#1200438, timezonecode#1200449]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838708]
(1229) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200425, ), isnull(plant#1200425)]
Right keys [2]: [coalesce(internalUUID#1200438, ), isnull(internalUUID#1200438)]
Join type: LeftOuter
Join condition: None
(1230) Project
Output [5]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, CASE WHEN isnotnull(timezonecode#1200449) THEN timezonecode#1200449 ELSE UTC END AS timezonecode#1200450]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, internalUUID#1200438, timezonecode#1200449]
(1231) Scan parquet
Output [4]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458, systemId#1200451]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1232) Filter
Input [4]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458, systemId#1200451]
Condition : isnotnull(internalUUID#1200452)
(1233) Project
Output [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Input [4]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458, systemId#1200451]
(1234) Exchange
Input [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838128]
(1235) BroadcastExchange
Input [3]: [internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838712]
(1236) BroadcastHashJoin
Left keys [1]: [product#1200424]
Right keys [1]: [internalUUID#1200452]
Join type: LeftOuter
Join condition: None
(1237) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filter(unitOfMeasureConversions#1200458, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200456.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200456.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200463]
Input [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, internalUUID#1200452, baseUnitOfMeasure#1200456, unitOfMeasureConversions#1200458]
(1238) Project
Output [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463.quantityDenominator AS _extract_quantityDenominator#1200974, filteredUnitOfMeasureConversions#1200463.quantityNumerator AS _extract_quantityNumerator#1200975]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, filteredUnitOfMeasureConversions#1200463]
(1239) Generate
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1200974, _extract_quantityNumerator#1200975]
Arguments: explode(_extract_quantityNumerator#1200975), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1200974], true, [quantityNumerator#1200464]
(1240) Generate
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, _extract_quantityDenominator#1200974, quantityNumerator#1200464]
Arguments: explode(_extract_quantityDenominator#1200974), [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464], true, [quantityDenominator#1200465]
(1241) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, (cast(quantityNumerator#1200464 as double) / cast(quantityDenominator#1200465 as double)) AS outboundUnit#1200466]
Input [7]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, quantityNumerator#1200464, quantityDenominator#1200465]
(1242) Project
Output [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, CASE WHEN (isnull(outboundUnit#1200466) OR (outboundUnit#1200466 <= 0.0)) THEN 1.0 ELSE outboundUnit#1200466 END AS outboundUnit#1200467]
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200466]
(1243) Sort
Input [6]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467]
Arguments: [product#1200424 ASC NULLS FIRST, plant#1200425 ASC NULLS FIRST], false, 0
(1244) Scan parquet
Output [6]: [internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, systemId#1200468]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1245) Filter
Input [6]: [internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, systemId#1200468]
Condition : (isnotnull(plant#1200471.internalRefUUID) AND isnotnull(product#1200470.internalRefUUID))
(1246) Project
Output [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
Input [6]: [internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, systemId#1200468]
(1247) Exchange
Input [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838139]
(1248) BroadcastExchange
Input [6]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473]
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=1838744]
(1249) Scan parquet
Output [2]: [marketUnit#1200474, distributionCenters#1200480]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1250) Filter
Input [2]: [marketUnit#1200474, distributionCenters#1200480]
Condition : (((marketUnit#1200474 <=> Grocery_SS) AND (size(distributionCenters#1200480, true) > 0)) AND isnotnull(distributionCenters#1200480))
(1251) Project
Output [1]: [distributionCenters#1200480]
Input [2]: [marketUnit#1200474, distributionCenters#1200480]
(1252) Exchange
Input [1]: [distributionCenters#1200480]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838143]
(1253) Generate
Input [1]: [distributionCenters#1200480]
Arguments: explode(distributionCenters#1200480), false, [distributionCenters#1200496]
(1254) Filter
Input [1]: [distributionCenters#1200496]
Condition : (((size(distributionCenters#1200496.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200496.storageLocations)) AND isnotnull(distributionCenters#1200496.internalRefUUID))
(1255) Project
Output [2]: [distributionCenters#1200496.internalRefUUID AS _extract_internalRefUUID#1200918, distributionCenters#1200496.storageLocations AS _extract_storageLocations#1200919]
Input [1]: [distributionCenters#1200496]
(1256) Generate
Input [2]: [_extract_internalRefUUID#1200918, _extract_storageLocations#1200919]
Arguments: explode(_extract_storageLocations#1200919), [_extract_internalRefUUID#1200918], false, [storageLocations#1200497]
(1257) Project
Output [3]: [_extract_internalRefUUID#1200918 AS plantUuid#1200499, storageLocations#1200497.id AS storageLocId#1200500, storageLocations#1200497.internalRefUUID AS storageLocUuid#1200501]
Input [2]: [_extract_internalRefUUID#1200918, storageLocations#1200497]
(1258) BroadcastExchange
Input [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838740]
(1259) Scan parquet
Output [2]: [product#1200502, plant#1200503]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1260) Filter
Input [2]: [product#1200502, plant#1200503]
Condition : isnotnull(plant#1200503)
(1261) Exchange
Input [2]: [product#1200502, plant#1200503]
Arguments: hashpartitioning(product#1200502, plant#1200503, 37), REPARTITION_BY_NUM, [plan_id=1838452]
(1262) Scan parquet
Output [4]: [plant#1200508, product#1200509, productionAspect#1200511, systemId#1200506]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1263) Project
Output [4]: [plant#1200508.internalRefUUID AS _extract_internalRefUUID#1201106, product#1200509.internalRefUUID AS _extract_internalRefUUID#1201107, productionAspect#1200511.productMovementPlants.unitOfIssue.code AS _extract_code#1201108, productionAspect#1200511.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201109]
Input [4]: [plant#1200508, product#1200509, productionAspect#1200511, systemId#1200506]
(1264) Exchange
Input [4]: [_extract_internalRefUUID#1201106, _extract_internalRefUUID#1201107, _extract_code#1201108, _extract_internalRefUUID#1201109]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838155]
(1265) Project
Output [4]: [_extract_code#1201108, _extract_internalRefUUID#1201109, _extract_internalRefUUID#1201107, _extract_internalRefUUID#1201106]
Input [4]: [_extract_internalRefUUID#1201106, _extract_internalRefUUID#1201107, _extract_code#1201108, _extract_internalRefUUID#1201109]
(1266) BroadcastExchange
Input [4]: [_extract_code#1201108, _extract_internalRefUUID#1201109, _extract_internalRefUUID#1201107, _extract_internalRefUUID#1201106]
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=1838720]
(1267) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200502, ), isnull(product#1200502), coalesce(plant#1200503, ), isnull(plant#1200503)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201107, ), isnull(_extract_internalRefUUID#1201107), coalesce(_extract_internalRefUUID#1201106, ), isnull(_extract_internalRefUUID#1201106)]
Join type: LeftOuter
Join condition: None
(1268) Project
Output [4]: [product#1200502, plant#1200503, _extract_code#1201108, _extract_internalRefUUID#1201109]
Input [6]: [product#1200502, plant#1200503, _extract_code#1201108, _extract_internalRefUUID#1201109, _extract_internalRefUUID#1201107, _extract_internalRefUUID#1201106]
(1269) Scan parquet
Output [2]: [internalUUID#1200516, systemId#1200515]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1270) Project
Output [1]: [internalUUID#1200516]
Input [2]: [internalUUID#1200516, systemId#1200515]
(1271) Exchange
Input [1]: [internalUUID#1200516]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838161]
(1272) BroadcastExchange
Input [1]: [internalUUID#1200516]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838724]
(1273) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200503, ), isnull(plant#1200503)]
Right keys [2]: [coalesce(internalUUID#1200516, ), isnull(internalUUID#1200516)]
Join type: LeftOuter
Join condition: None
(1274) Project
Output [4]: [product#1200502, plant#1200503, _extract_code#1201108, _extract_internalRefUUID#1201109]
Input [5]: [product#1200502, plant#1200503, _extract_code#1201108, _extract_internalRefUUID#1201109, internalUUID#1200516]
(1275) Scan parquet
Output [4]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536, systemId#1200529]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1276) Filter
Input [4]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536, systemId#1200529]
Condition : isnotnull(internalUUID#1200530)
(1277) Project
Output [3]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
Input [4]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536, systemId#1200529]
(1278) Exchange
Input [3]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838167]
(1279) BroadcastExchange
Input [3]: [internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838728]
(1280) BroadcastHashJoin
Left keys [1]: [product#1200502]
Right keys [1]: [internalUUID#1200530]
Join type: LeftOuter
Join condition: None
(1281) Project
Output [2]: [plant#1200503, filter(unitOfMeasureConversions#1200536, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201108) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201109)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200534.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200534.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200541]
Input [7]: [product#1200502, plant#1200503, _extract_code#1201108, _extract_internalRefUUID#1201109, internalUUID#1200530, baseUnitOfMeasure#1200534, unitOfMeasureConversions#1200536]
(1282) Generate
Input [2]: [plant#1200503, filteredUnitOfMeasureConversions#1200541]
Arguments: explode(filteredUnitOfMeasureConversions#1200541.quantityNumerator), [plant#1200503, filteredUnitOfMeasureConversions#1200541], true, [quantityNumerator#1200542]
(1283) Project
Output [2]: [plant#1200503, filteredUnitOfMeasureConversions#1200541.quantityDenominator AS _extract_quantityDenominator#1200920]
Input [3]: [plant#1200503, filteredUnitOfMeasureConversions#1200541, quantityNumerator#1200542]
(1284) Generate
Input [2]: [plant#1200503, _extract_quantityDenominator#1200920]
Arguments: explode(_extract_quantityDenominator#1200920), [plant#1200503], true, [quantityDenominator#1200543]
(1285) Project
Output [1]: [plant#1200503]
Input [2]: [plant#1200503, quantityDenominator#1200543]
(1286) HashAggregate
Input [1]: [plant#1200503]
Keys [1]: [plant#1200503]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200503]
(1287) Exchange
Input [1]: [plant#1200503]
Arguments: hashpartitioning(plant#1200503, 37), ENSURE_REQUIREMENTS, [plan_id=1838737]
(1288) HashAggregate
Input [1]: [plant#1200503]
Keys [1]: [plant#1200503]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200503]
(1289) BroadcastHashJoin
Left keys [1]: [plantUuid#1200499]
Right keys [1]: [plant#1200503]
Join type: Inner
Join condition: None
(1290) Project
Output [3]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Input [4]: [plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501, plant#1200503]
(1291) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200471.internalRefUUID, ), isnull(plant#1200471.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200499, ), isnull(plantUuid#1200499)]
Join type: Inner
Join condition: None
(1292) Generate
Input [9]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
Arguments: explode(filter(stockQuantities#1200473, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200501) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200500)), lambda x#1200047, false))), [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, plantUuid#1200499], false, [stockQuantity#1200546]
(1293) ObjectHashAggregate
Input [7]: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, plantUuid#1200499, stockQuantity#1200546]
Keys [5]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468]
Functions [2]: [partial_first(calculationDateTime#1200472, false), partial_collect_list(stockQuantity#1200546, 0, 0)]
Aggregate Attributes [3]: [first#1201983, valueSet#1201984, buf#1201985]
Results [8]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first#1201986, valueSet#1201987, buf#1201988]
(1294) ObjectHashAggregate
Input [8]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first#1201986, valueSet#1201987, buf#1201988]
Keys [5]: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468]
Functions [2]: [first(calculationDateTime#1200472, false), collect_list(stockQuantity#1200546, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200472)()#1200062, collect_list(stockQuantity#1200546, 0, 0)#1200063]
Results [4]: [product#1200470, plant#1200471, first(calculationDateTime#1200472)()#1200062 AS calculationDateTime#1200547, collect_list(stockQuantity#1200546, 0, 0)#1200063 AS stockQuantities#1200548]
(1295) Filter
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
Condition : ((size(stockQuantities#1200548, true) > 0) AND isnotnull(calculationDateTime#1200547))
(1296) Generate
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
Arguments: explode(stockQuantities#1200548), [product#1200470, plant#1200471, calculationDateTime#1200547], false, [stockQuantity#1200549]
(1297) Filter
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantity#1200549]
Condition : (((isnotnull(stockQuantity#1200549.specialStockIndicator.code) AND isnotnull(stockQuantity#1200549.stockType.code)) AND (stockQuantity#1200549.specialStockIndicator.code = )) AND (stockQuantity#1200549.stockType.code = 01))
(1298) Project
Output [5]: [plant#1200471.internalRefUUID AS plantUuid#1200551, product#1200470.internalRefUUID AS productUuid#1200553, calculationDateTime#1200547, stockQuantity#1200549.storagelocation.id AS storageLocId#1200554, stockQuantity#1200549.quantity.measure AS quantity#1200556]
Input [4]: [product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantity#1200549]
(1299) Exchange
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: hashpartitioning(productUuid#1200553, plantUuid#1200551, 37), ENSURE_REQUIREMENTS, [plan_id=1838770]
(1300) Sort
Input [5]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556]
Arguments: [productUuid#1200553 ASC NULLS FIRST, plantUuid#1200551 ASC NULLS FIRST], false, 0
(1301) Scan parquet
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1302) Filter
Input [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Condition : ((isnotnull(orderDateTime#1200561) AND isnotnull(plant#1200560)) AND isnotnull(product#1200559))
(1303) Exchange
Input [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Arguments: hashpartitioning(product#1200559, plant#1200560, 37), REPARTITION_BY_NUM, [plan_id=1838475]
(1304) Scan parquet
Output [4]: [plant#1200565, product#1200566, productionAspect#1200568, systemId#1200563]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1305) Project
Output [4]: [plant#1200565.internalRefUUID AS _extract_internalRefUUID#1201112, product#1200566.internalRefUUID AS _extract_internalRefUUID#1201113, productionAspect#1200568.productMovementPlants.unitOfIssue.code AS _extract_code#1201110, productionAspect#1200568.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201111]
Input [4]: [plant#1200565, product#1200566, productionAspect#1200568, systemId#1200563]
(1306) Exchange
Input [4]: [_extract_internalRefUUID#1201112, _extract_internalRefUUID#1201113, _extract_code#1201110, _extract_internalRefUUID#1201111]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838192]
(1307) Project
Output [4]: [_extract_code#1201110, _extract_internalRefUUID#1201111, _extract_internalRefUUID#1201113, _extract_internalRefUUID#1201112]
Input [4]: [_extract_internalRefUUID#1201112, _extract_internalRefUUID#1201113, _extract_code#1201110, _extract_internalRefUUID#1201111]
(1308) BroadcastExchange
Input [4]: [_extract_code#1201110, _extract_internalRefUUID#1201111, _extract_internalRefUUID#1201113, _extract_internalRefUUID#1201112]
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=1838753]
(1309) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200559, ), isnull(product#1200559), coalesce(plant#1200560, ), isnull(plant#1200560)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201113, ), isnull(_extract_internalRefUUID#1201113), coalesce(_extract_internalRefUUID#1201112, ), isnull(_extract_internalRefUUID#1201112)]
Join type: LeftOuter
Join condition: None
(1310) Project
Output [5]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111]
Input [7]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111, _extract_internalRefUUID#1201113, _extract_internalRefUUID#1201112]
(1311) Scan parquet
Output [2]: [internalUUID#1200573, systemId#1200572]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1312) Project
Output [1]: [internalUUID#1200573]
Input [2]: [internalUUID#1200573, systemId#1200572]
(1313) Exchange
Input [1]: [internalUUID#1200573]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838198]
(1314) BroadcastExchange
Input [1]: [internalUUID#1200573]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838757]
(1315) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200560, ), isnull(plant#1200560)]
Right keys [2]: [coalesce(internalUUID#1200573, ), isnull(internalUUID#1200573)]
Join type: LeftOuter
Join condition: None
(1316) Project
Output [5]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111]
Input [6]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111, internalUUID#1200573]
(1317) Scan parquet
Output [4]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593, systemId#1200586]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1318) Filter
Input [4]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593, systemId#1200586]
Condition : isnotnull(internalUUID#1200587)
(1319) Project
Output [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Input [4]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593, systemId#1200586]
(1320) Exchange
Input [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838204]
(1321) BroadcastExchange
Input [3]: [internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838761]
(1322) BroadcastHashJoin
Left keys [1]: [product#1200559]
Right keys [1]: [internalUUID#1200587]
Join type: LeftOuter
Join condition: None
(1323) Project
Output [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filter(unitOfMeasureConversions#1200593, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201110) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201111)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200591.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200591.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200598]
Input [8]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_code#1201110, _extract_internalRefUUID#1201111, internalUUID#1200587, baseUnitOfMeasure#1200591, unitOfMeasureConversions#1200593]
(1324) Generate
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598]
Arguments: explode(filteredUnitOfMeasureConversions#1200598.quantityNumerator), [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598], true, [quantityNumerator#1200599]
(1325) Project
Output [4]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598.quantityDenominator AS _extract_quantityDenominator#1200924]
Input [5]: [product#1200559, plant#1200560, orderDateTime#1200561, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599]
(1326) Generate
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, _extract_quantityDenominator#1200924]
Arguments: explode(_extract_quantityDenominator#1200924), [product#1200559, plant#1200560, orderDateTime#1200561], true, [quantityDenominator#1200600]
(1327) Project
Output [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Input [4]: [product#1200559, plant#1200560, orderDateTime#1200561, quantityDenominator#1200600]
(1328) Sort
Input [3]: [product#1200559, plant#1200560, orderDateTime#1200561]
Arguments: [product#1200559 ASC NULLS FIRST, plant#1200560 ASC NULLS FIRST], false, 0
(1329) SortMergeJoin
Left keys [2]: [productUuid#1200553, plantUuid#1200551]
Right keys [2]: [product#1200559, plant#1200560]
Join type: Inner
Join condition: (calculationDateTime#1200547 <= orderDateTime#1200561)
(1330) Project
Output [5]: [plantUuid#1200551 AS plant#1200603, productUuid#1200553 AS product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Input [8]: [plantUuid#1200551, productUuid#1200553, calculationDateTime#1200547, storageLocId#1200554, quantity#1200556, product#1200559, plant#1200560, orderDateTime#1200561]
(1331) Exchange
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: hashpartitioning(coalesce(plant#1200603, ), isnull(plant#1200603), coalesce(product#1200604, ), isnull(product#1200604), coalesce(storageLocId#1200554, ), isnull(storageLocId#1200554), coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00), isnull(calculationDateTime#1200547), 37), ENSURE_REQUIREMENTS, [plan_id=1838834]
(1332) Sort
Input [5]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
Arguments: [coalesce(plant#1200603, ) ASC NULLS FIRST, isnull(plant#1200603) ASC NULLS FIRST, coalesce(product#1200604, ) ASC NULLS FIRST, isnull(product#1200604) ASC NULLS FIRST, coalesce(storageLocId#1200554, ) ASC NULLS FIRST, isnull(storageLocId#1200554) ASC NULLS FIRST, coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1200547) ASC NULLS FIRST], false, 0
(1333) Scan parquet
Output [6]: [internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, systemId#1200605]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(1334) Filter
Input [6]: [internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, systemId#1200605]
Condition : (isnotnull(plant#1200608.internalRefUUID) AND isnotnull(product#1200607.internalRefUUID))
(1335) Project
Output [6]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610]
Input [6]: [internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, systemId#1200605]
(1336) Exchange
Input [6]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838216]
(1337) BroadcastExchange
Input [6]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610]
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=1838799]
(1338) Scan parquet
Output [2]: [marketUnit#1200611, distributionCenters#1200617]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1339) Filter
Input [2]: [marketUnit#1200611, distributionCenters#1200617]
Condition : (((marketUnit#1200611 <=> Grocery_SS) AND (size(distributionCenters#1200617, true) > 0)) AND isnotnull(distributionCenters#1200617))
(1340) Project
Output [1]: [distributionCenters#1200617]
Input [2]: [marketUnit#1200611, distributionCenters#1200617]
(1341) Exchange
Input [1]: [distributionCenters#1200617]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838220]
(1342) Generate
Input [1]: [distributionCenters#1200617]
Arguments: explode(distributionCenters#1200617), false, [distributionCenters#1200633]
(1343) Filter
Input [1]: [distributionCenters#1200633]
Condition : (((size(distributionCenters#1200633.storageLocations, true) > 0) AND isnotnull(distributionCenters#1200633.storageLocations)) AND isnotnull(distributionCenters#1200633.internalRefUUID))
(1344) Project
Output [2]: [distributionCenters#1200633.internalRefUUID AS _extract_internalRefUUID#1200928, distributionCenters#1200633.storageLocations AS _extract_storageLocations#1200929]
Input [1]: [distributionCenters#1200633]
(1345) Generate
Input [2]: [_extract_internalRefUUID#1200928, _extract_storageLocations#1200929]
Arguments: explode(_extract_storageLocations#1200929), [_extract_internalRefUUID#1200928], false, [storageLocations#1200634]
(1346) Project
Output [3]: [_extract_internalRefUUID#1200928 AS plantUuid#1200636, storageLocations#1200634.id AS storageLocId#1200637, storageLocations#1200634.internalRefUUID AS storageLocUuid#1200638]
Input [2]: [_extract_internalRefUUID#1200928, storageLocations#1200634]
(1347) BroadcastExchange
Input [3]: [plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838795]
(1348) Scan parquet
Output [2]: [product#1200639, plant#1200640]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1349) Filter
Input [2]: [product#1200639, plant#1200640]
Condition : isnotnull(plant#1200640)
(1350) Exchange
Input [2]: [product#1200639, plant#1200640]
Arguments: hashpartitioning(product#1200639, plant#1200640, 37), REPARTITION_BY_NUM, [plan_id=1838488]
(1351) Scan parquet
Output [4]: [plant#1200645, product#1200646, productionAspect#1200648, systemId#1200643]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1352) Project
Output [4]: [plant#1200645.internalRefUUID AS _extract_internalRefUUID#1201115, product#1200646.internalRefUUID AS _extract_internalRefUUID#1201114, productionAspect#1200648.productMovementPlants.unitOfIssue.code AS _extract_code#1201116, productionAspect#1200648.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201117]
Input [4]: [plant#1200645, product#1200646, productionAspect#1200648, systemId#1200643]
(1353) Exchange
Input [4]: [_extract_internalRefUUID#1201115, _extract_internalRefUUID#1201114, _extract_code#1201116, _extract_internalRefUUID#1201117]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838232]
(1354) Project
Output [4]: [_extract_code#1201116, _extract_internalRefUUID#1201117, _extract_internalRefUUID#1201114, _extract_internalRefUUID#1201115]
Input [4]: [_extract_internalRefUUID#1201115, _extract_internalRefUUID#1201114, _extract_code#1201116, _extract_internalRefUUID#1201117]
(1355) BroadcastExchange
Input [4]: [_extract_code#1201116, _extract_internalRefUUID#1201117, _extract_internalRefUUID#1201114, _extract_internalRefUUID#1201115]
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=1838775]
(1356) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200639, ), isnull(product#1200639), coalesce(plant#1200640, ), isnull(plant#1200640)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201114, ), isnull(_extract_internalRefUUID#1201114), coalesce(_extract_internalRefUUID#1201115, ), isnull(_extract_internalRefUUID#1201115)]
Join type: LeftOuter
Join condition: None
(1357) Project
Output [4]: [product#1200639, plant#1200640, _extract_code#1201116, _extract_internalRefUUID#1201117]
Input [6]: [product#1200639, plant#1200640, _extract_code#1201116, _extract_internalRefUUID#1201117, _extract_internalRefUUID#1201114, _extract_internalRefUUID#1201115]
(1358) Scan parquet
Output [2]: [internalUUID#1200653, systemId#1200652]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1359) Project
Output [1]: [internalUUID#1200653]
Input [2]: [internalUUID#1200653, systemId#1200652]
(1360) Exchange
Input [1]: [internalUUID#1200653]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838238]
(1361) BroadcastExchange
Input [1]: [internalUUID#1200653]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838779]
(1362) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200640, ), isnull(plant#1200640)]
Right keys [2]: [coalesce(internalUUID#1200653, ), isnull(internalUUID#1200653)]
Join type: LeftOuter
Join condition: None
(1363) Project
Output [4]: [product#1200639, plant#1200640, _extract_code#1201116, _extract_internalRefUUID#1201117]
Input [5]: [product#1200639, plant#1200640, _extract_code#1201116, _extract_internalRefUUID#1201117, internalUUID#1200653]
(1364) Scan parquet
Output [4]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673, systemId#1200666]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1365) Filter
Input [4]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673, systemId#1200666]
Condition : isnotnull(internalUUID#1200667)
(1366) Project
Output [3]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
Input [4]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673, systemId#1200666]
(1367) Exchange
Input [3]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838244]
(1368) BroadcastExchange
Input [3]: [internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838783]
(1369) BroadcastHashJoin
Left keys [1]: [product#1200639]
Right keys [1]: [internalUUID#1200667]
Join type: LeftOuter
Join condition: None
(1370) Project
Output [2]: [plant#1200640, filter(unitOfMeasureConversions#1200673, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201116) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201117)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200671.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200671.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200678]
Input [7]: [product#1200639, plant#1200640, _extract_code#1201116, _extract_internalRefUUID#1201117, internalUUID#1200667, baseUnitOfMeasure#1200671, unitOfMeasureConversions#1200673]
(1371) Generate
Input [2]: [plant#1200640, filteredUnitOfMeasureConversions#1200678]
Arguments: explode(filteredUnitOfMeasureConversions#1200678.quantityNumerator), [plant#1200640, filteredUnitOfMeasureConversions#1200678], true, [quantityNumerator#1200679]
(1372) Project
Output [2]: [plant#1200640, filteredUnitOfMeasureConversions#1200678.quantityDenominator AS _extract_quantityDenominator#1200930]
Input [3]: [plant#1200640, filteredUnitOfMeasureConversions#1200678, quantityNumerator#1200679]
(1373) Generate
Input [2]: [plant#1200640, _extract_quantityDenominator#1200930]
Arguments: explode(_extract_quantityDenominator#1200930), [plant#1200640], true, [quantityDenominator#1200680]
(1374) Project
Output [1]: [plant#1200640]
Input [2]: [plant#1200640, quantityDenominator#1200680]
(1375) HashAggregate
Input [1]: [plant#1200640]
Keys [1]: [plant#1200640]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200640]
(1376) Exchange
Input [1]: [plant#1200640]
Arguments: hashpartitioning(plant#1200640, 37), ENSURE_REQUIREMENTS, [plan_id=1838792]
(1377) HashAggregate
Input [1]: [plant#1200640]
Keys [1]: [plant#1200640]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200640]
(1378) BroadcastHashJoin
Left keys [1]: [plantUuid#1200636]
Right keys [1]: [plant#1200640]
Join type: Inner
Join condition: None
(1379) Project
Output [3]: [plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
Input [4]: [plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638, plant#1200640]
(1380) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200608.internalRefUUID, ), isnull(plant#1200608.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1200636, ), isnull(plantUuid#1200636)]
Join type: Inner
Join condition: None
(1381) Generate
Input [9]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
Arguments: explode(filter(stockQuantities#1200610, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200638) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200637)), lambda x#1200047, false))), [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, plantUuid#1200636], false, [stockQuantity#1200683]
(1382) ObjectHashAggregate
Input [7]: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, plantUuid#1200636, stockQuantity#1200683]
Keys [5]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605]
Functions [2]: [partial_first(calculationDateTime#1200609, false), partial_collect_list(stockQuantity#1200683, 0, 0)]
Aggregate Attributes [3]: [first#1201991, valueSet#1201992, buf#1201993]
Results [8]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605, first#1201994, valueSet#1201995, buf#1201996]
(1383) ObjectHashAggregate
Input [8]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605, first#1201994, valueSet#1201995, buf#1201996]
Keys [5]: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605]
Functions [2]: [first(calculationDateTime#1200609, false), collect_list(stockQuantity#1200683, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1200609)()#1200062, collect_list(stockQuantity#1200683, 0, 0)#1200063]
Results [4]: [product#1200607, plant#1200608, first(calculationDateTime#1200609)()#1200062 AS calculationDateTime#1200684, collect_list(stockQuantity#1200683, 0, 0)#1200063 AS stockQuantities#1200685]
(1384) Filter
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantities#1200685]
Condition : ((size(stockQuantities#1200685, true) > 0) AND isnotnull(calculationDateTime#1200684))
(1385) Generate
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantities#1200685]
Arguments: explode(stockQuantities#1200685), [product#1200607, plant#1200608, calculationDateTime#1200684], false, [stockQuantity#1200686]
(1386) Filter
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantity#1200686]
Condition : (((isnotnull(stockQuantity#1200686.specialStockIndicator.code) AND isnotnull(stockQuantity#1200686.stockType.code)) AND (stockQuantity#1200686.specialStockIndicator.code = )) AND (stockQuantity#1200686.stockType.code = 01))
(1387) Project
Output [4]: [plant#1200608.internalRefUUID AS plantUuid#1200688, product#1200607.internalRefUUID AS productUuid#1200690, calculationDateTime#1200684, stockQuantity#1200686.storagelocation.id AS storageLocId#1200691]
Input [4]: [product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantity#1200686]
(1388) Exchange
Input [4]: [plantUuid#1200688, productUuid#1200690, calculationDateTime#1200684, storageLocId#1200691]
Arguments: hashpartitioning(productUuid#1200690, plantUuid#1200688, 37), ENSURE_REQUIREMENTS, [plan_id=1838825]
(1389) Sort
Input [4]: [plantUuid#1200688, productUuid#1200690, calculationDateTime#1200684, storageLocId#1200691]
Arguments: [productUuid#1200690 ASC NULLS FIRST, plantUuid#1200688 ASC NULLS FIRST], false, 0
(1390) Scan parquet
Output [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1391) Filter
Input [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Condition : ((isnotnull(orderDateTime#1200698) AND isnotnull(plant#1200697)) AND isnotnull(product#1200696))
(1392) Exchange
Input [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Arguments: hashpartitioning(product#1200696, plant#1200697, 37), REPARTITION_BY_NUM, [plan_id=1838511]
(1393) Scan parquet
Output [4]: [plant#1200702, product#1200703, productionAspect#1200705, systemId#1200700]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1394) Project
Output [4]: [plant#1200702.internalRefUUID AS _extract_internalRefUUID#1201118, product#1200703.internalRefUUID AS _extract_internalRefUUID#1201119, productionAspect#1200705.productMovementPlants.unitOfIssue.code AS _extract_code#1201120, productionAspect#1200705.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201121]
Input [4]: [plant#1200702, product#1200703, productionAspect#1200705, systemId#1200700]
(1395) Exchange
Input [4]: [_extract_internalRefUUID#1201118, _extract_internalRefUUID#1201119, _extract_code#1201120, _extract_internalRefUUID#1201121]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838269]
(1396) Project
Output [4]: [_extract_code#1201120, _extract_internalRefUUID#1201121, _extract_internalRefUUID#1201119, _extract_internalRefUUID#1201118]
Input [4]: [_extract_internalRefUUID#1201118, _extract_internalRefUUID#1201119, _extract_code#1201120, _extract_internalRefUUID#1201121]
(1397) BroadcastExchange
Input [4]: [_extract_code#1201120, _extract_internalRefUUID#1201121, _extract_internalRefUUID#1201119, _extract_internalRefUUID#1201118]
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=1838808]
(1398) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200696, ), isnull(product#1200696), coalesce(plant#1200697, ), isnull(plant#1200697)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201119, ), isnull(_extract_internalRefUUID#1201119), coalesce(_extract_internalRefUUID#1201118, ), isnull(_extract_internalRefUUID#1201118)]
Join type: LeftOuter
Join condition: None
(1399) Project
Output [5]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1201120, _extract_internalRefUUID#1201121]
Input [7]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1201120, _extract_internalRefUUID#1201121, _extract_internalRefUUID#1201119, _extract_internalRefUUID#1201118]
(1400) Scan parquet
Output [2]: [internalUUID#1200710, systemId#1200709]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1401) Project
Output [1]: [internalUUID#1200710]
Input [2]: [internalUUID#1200710, systemId#1200709]
(1402) Exchange
Input [1]: [internalUUID#1200710]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838275]
(1403) BroadcastExchange
Input [1]: [internalUUID#1200710]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838812]
(1404) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200697, ), isnull(plant#1200697)]
Right keys [2]: [coalesce(internalUUID#1200710, ), isnull(internalUUID#1200710)]
Join type: LeftOuter
Join condition: None
(1405) Project
Output [5]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1201120, _extract_internalRefUUID#1201121]
Input [6]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1201120, _extract_internalRefUUID#1201121, internalUUID#1200710]
(1406) Scan parquet
Output [4]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730, systemId#1200723]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1407) Filter
Input [4]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730, systemId#1200723]
Condition : isnotnull(internalUUID#1200724)
(1408) Project
Output [3]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
Input [4]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730, systemId#1200723]
(1409) Exchange
Input [3]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838281]
(1410) BroadcastExchange
Input [3]: [internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838816]
(1411) BroadcastHashJoin
Left keys [1]: [product#1200696]
Right keys [1]: [internalUUID#1200724]
Join type: LeftOuter
Join condition: None
(1412) Project
Output [4]: [product#1200696, plant#1200697, orderDateTime#1200698, filter(unitOfMeasureConversions#1200730, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201120) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201121)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200728.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200728.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200735]
Input [8]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_code#1201120, _extract_internalRefUUID#1201121, internalUUID#1200724, baseUnitOfMeasure#1200728, unitOfMeasureConversions#1200730]
(1413) Generate
Input [4]: [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735]
Arguments: explode(filteredUnitOfMeasureConversions#1200735.quantityNumerator), [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735], true, [quantityNumerator#1200736]
(1414) Project
Output [4]: [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735.quantityDenominator AS _extract_quantityDenominator#1200934]
Input [5]: [product#1200696, plant#1200697, orderDateTime#1200698, filteredUnitOfMeasureConversions#1200735, quantityNumerator#1200736]
(1415) Generate
Input [4]: [product#1200696, plant#1200697, orderDateTime#1200698, _extract_quantityDenominator#1200934]
Arguments: explode(_extract_quantityDenominator#1200934), [product#1200696, plant#1200697, orderDateTime#1200698], true, [quantityDenominator#1200737]
(1416) Project
Output [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Input [4]: [product#1200696, plant#1200697, orderDateTime#1200698, quantityDenominator#1200737]
(1417) Sort
Input [3]: [product#1200696, plant#1200697, orderDateTime#1200698]
Arguments: [product#1200696 ASC NULLS FIRST, plant#1200697 ASC NULLS FIRST], false, 0
(1418) SortMergeJoin
Left keys [2]: [productUuid#1200690, plantUuid#1200688]
Right keys [2]: [product#1200696, plant#1200697]
Join type: Inner
Join condition: (calculationDateTime#1200684 <= orderDateTime#1200698)
(1419) Project
Output [4]: [plantUuid#1200688 AS plant#1200740, productUuid#1200690 AS product#1200741, storageLocId#1200691, calculationDateTime#1200684]
Input [7]: [plantUuid#1200688, productUuid#1200690, calculationDateTime#1200684, storageLocId#1200691, product#1200696, plant#1200697, orderDateTime#1200698]
(1420) HashAggregate
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, calculationDateTime#1200684]
Keys [3]: [plant#1200740, product#1200741, storageLocId#1200691]
Functions [1]: [partial_max(calculationDateTime#1200684)]
Aggregate Attributes [1]: [max#1201989]
Results [4]: [plant#1200740, product#1200741, storageLocId#1200691, max#1201990]
(1421) HashAggregate
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max#1201990]
Keys [3]: [plant#1200740, product#1200741, storageLocId#1200691]
Functions [1]: [max(calculationDateTime#1200684)]
Aggregate Attributes [1]: [max(calculationDateTime#1200684)#1200140]
Results [4]: [plant#1200740, product#1200741, storageLocId#1200691, max(calculationDateTime#1200684)#1200140 AS max_calc_datetime#1200742]
(1422) Exchange
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
Arguments: hashpartitioning(coalesce(plant#1200740, ), isnull(plant#1200740), coalesce(product#1200741, ), isnull(product#1200741), coalesce(storageLocId#1200691, ), isnull(storageLocId#1200691), coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200742), 37), ENSURE_REQUIREMENTS, [plan_id=1838835]
(1423) Sort
Input [4]: [plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
Arguments: [coalesce(plant#1200740, ) ASC NULLS FIRST, isnull(plant#1200740) ASC NULLS FIRST, coalesce(product#1200741, ) ASC NULLS FIRST, isnull(product#1200741) ASC NULLS FIRST, coalesce(storageLocId#1200691, ) ASC NULLS FIRST, isnull(storageLocId#1200691) ASC NULLS FIRST, coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1200742) ASC NULLS FIRST], false, 0
(1424) SortMergeJoin
Left keys [8]: [coalesce(plant#1200603, ), isnull(plant#1200603), coalesce(product#1200604, ), isnull(product#1200604), coalesce(storageLocId#1200554, ), isnull(storageLocId#1200554), coalesce(calculationDateTime#1200547, 1970-01-01 00:00:00), isnull(calculationDateTime#1200547)]
Right keys [8]: [coalesce(plant#1200740, ), isnull(plant#1200740), coalesce(product#1200741, ), isnull(product#1200741), coalesce(storageLocId#1200691, ), isnull(storageLocId#1200691), coalesce(max_calc_datetime#1200742, 1970-01-01 00:00:00), isnull(max_calc_datetime#1200742)]
Join type: Inner
Join condition: None
(1425) Project
Output [4]: [plant#1200603, product#1200604, calculationDateTime#1200547, quantity#1200556]
Input [9]: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556, plant#1200740, product#1200741, storageLocId#1200691, max_calc_datetime#1200742]
(1426) HashAggregate
Input [4]: [plant#1200603, product#1200604, calculationDateTime#1200547, quantity#1200556]
Keys [2]: [product#1200604, plant#1200603]
Functions [2]: [partial_min(calculationDateTime#1200547), partial_sum(quantity#1200556)]
Aggregate Attributes [2]: [min#1201979, sum#1201980]
Results [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
(1427) Exchange
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Arguments: hashpartitioning(product#1200604, plant#1200603, 37), ENSURE_REQUIREMENTS, [plan_id=1838842]
(1428) HashAggregate
Input [4]: [product#1200604, plant#1200603, min#1201981, sum#1201982]
Keys [2]: [product#1200604, plant#1200603]
Functions [2]: [min(calculationDateTime#1200547), sum(quantity#1200556)]
Aggregate Attributes [2]: [min(calculationDateTime#1200547)#1200296, sum(quantity#1200556)#1200295]
Results [4]: [product#1200604, plant#1200603, min(calculationDateTime#1200547)#1200296 AS minCalculationDateTime#1200744, round(sum(quantity#1200556)#1200295, 0) AS roundedQuantitySum#1200745]
(1429) Sort
Input [4]: [product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
Arguments: [product#1200604 ASC NULLS FIRST, plant#1200603 ASC NULLS FIRST], false, 0
(1430) SortMergeJoin
Left keys [2]: [product#1200424, plant#1200425]
Right keys [2]: [product#1200604, plant#1200603]
Join type: LeftOuter
Join condition: None
(1431) Project
Output [8]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, CASE WHEN isnotnull(minCalculationDateTime#1200744) THEN minCalculationDateTime#1200744 ELSE orderDateTime#1200426 END AS stockDatetime#1200746, CASE WHEN isnotnull(roundedQuantitySum#1200745) THEN array(roundedQuantitySum#1200745) ELSE [0.0] END AS stockBatchQuantities#1200747]
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, product#1200604, plant#1200603, minCalculationDateTime#1200744, roundedQuantitySum#1200745]
(1432) Filter
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Condition : (isnotnull(product#1200349) AND isnotnull(plant#1200350))
(1433) BroadcastExchange
Input [9]: [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1838851]
(1434) BroadcastHashJoin
Left keys [2]: [product#1200424, plant#1200425]
Right keys [2]: [product#1200349, plant#1200350]
Join type: LeftOuter
Join condition: None
(1435) Project
Output [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, CASE WHEN isnotnull(product#1200349) THEN struct(demandChannel, demandChannel#1200351, demandStream, demandStream#1200352, considerVariance, considerVariance#1200353, demandTimeBuckets, demandTimeBuckets#1200354, demandPointInTimeStart, demandPointInTimeStart#1200355, demandPointInTimeEnd, demandPointInTimeEnd#1200356, demandPointInTime, demandPointInTime#1200357) END AS rawDemands#1200370]
Input [17]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357]
(1436) ObjectHashAggregate
Input [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, rawDemands#1200370]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, knownfloatingpointnormalized(if (isnull(productPlant#1200436)) null else named_struct(systemId, productPlant#1200436.systemId, internalUUID, productPlant#1200436.internalUUID, plant, productPlant#1200436.plant, product, productPlant#1200436.product, blockedForReplenishmentStartingFrom, productPlant#1200436.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect)) null else named_struct(productMovementPlants, productPlant#1200436.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1200436.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1200436.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1200436.salesPlant, listing, productPlant#1200436.listing)) AS productPlant#1200436, timezonecode#1200450, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1200467)) AS outboundUnit#1200467, stockDatetime#1200746, knownfloatingpointnormalized(transform(stockBatchQuantities#1200747, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1201976)), lambda arg#1201976, false))) AS stockBatchQuantities#1200747, [7226582400000000] AS [7226582400000000]#1201975]
Functions [1]: [partial_collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [buf#1201977]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1201975, buf#1201978]
(1437) ObjectHashAggregate
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1201975, buf#1201978]
Keys [9]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000]#1201975]
Functions [1]: [collect_list(rawDemands#1200370, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1200370, 0, 0)#1200389]
Results [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1200748, collect_list(rawDemands#1200370, 0, 0)#1200389 AS rawDemands#1200371]
(1438) DeserializeToObject
Input [10]: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, rawDemands#1200371]
Arguments: createexternalrow(invoke(product#1200424.toString()), invoke(plant#1200425.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1200426)), if (isnull(productPlant#1200436)) null else createexternalrow(invoke(productPlant#1200436.systemId.toString()), invoke(productPlant#1200436.internalUUID.toString()), if (isnull(productPlant#1200436.plant)) null else createexternalrow(invoke(productPlant#1200436.plant.internalRefUUID.toString()), invoke(productPlant#1200436.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1200436.product)) null else createexternalrow(invoke(productPlant#1200436.product.internalRefUUID.toString()), invoke(productPlant#1200436.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1200436.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1200436.productionAspect)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.salesPlant)) null else createexternalrow(if (isnull(productPlant#1200436.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1200436.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.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)), invoke(timezonecode#1200450.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1200467)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1200746)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#1200747, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#1200748, 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#1200371, 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(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(1439) MapElements
Input [1]: [obj#1200410]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, obj#1200415: org.apache.spark.sql.Row
(1440) SerializeFromObject
Input [1]: [obj#1200415]
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#1200420, 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#1200421]
(1441) Exchange
Input [2]: [product#1200420, plant#1200421]
Arguments: hashpartitioning(coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420), 37), ENSURE_REQUIREMENTS, [plan_id=1838862]
(1442) Sort
Input [2]: [product#1200420, plant#1200421]
Arguments: [coalesce(plant#1200421, ) ASC NULLS FIRST, isnull(plant#1200421) ASC NULLS FIRST, coalesce(product#1200420, ) ASC NULLS FIRST, isnull(product#1200420) ASC NULLS FIRST], false, 0
(1443) SortMergeJoin
Left keys [4]: [coalesce(plant#1199943, ), isnull(plant#1199943), coalesce(product#1199942, ), isnull(product#1199942)]
Right keys [4]: [coalesce(plant#1200421, ), isnull(plant#1200421), coalesce(product#1200420, ), isnull(product#1200420)]
Join type: LeftOuter
Join condition: None
(1444) Project
Output [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Input [6]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346, product#1200420, plant#1200421]
(1445) Exchange
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: hashpartitioning(plant#1199943, 37), ENSURE_REQUIREMENTS, [plan_id=1838892]
(1446) Sort
Input [4]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346]
Arguments: [plant#1199943 ASC NULLS FIRST], false, 0
(1447) Scan parquet
Output [2]: [marketUnit#1200813, distributionCenters#1200819]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1448) Filter
Input [2]: [marketUnit#1200813, distributionCenters#1200819]
Condition : (((marketUnit#1200813 <=> Grocery_SS) AND (size(distributionCenters#1200819, true) > 0)) AND isnotnull(distributionCenters#1200819))
(1449) Project
Output [1]: [distributionCenters#1200819]
Input [2]: [marketUnit#1200813, distributionCenters#1200819]
(1450) Exchange
Input [1]: [distributionCenters#1200819]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838313]
(1451) Generate
Input [1]: [distributionCenters#1200819]
Arguments: explode(distributionCenters#1200819), false, [distributionCenters#1200835]
(1452) Filter
Input [1]: [distributionCenters#1200835]
Condition : (((size(distributionCenters#1200835.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#1200835.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#1200835.internalRefUUID))
(1453) Project
Output [2]: [distributionCenters#1200835.internalRefUUID AS _extract_internalRefUUID#1200938, distributionCenters#1200835.storageLocations.internalRefUUID AS _extract_internalRefUUID#1201123]
Input [1]: [distributionCenters#1200835]
(1454) Generate
Input [2]: [_extract_internalRefUUID#1200938, _extract_internalRefUUID#1201123]
Arguments: explode(_extract_internalRefUUID#1201123), [_extract_internalRefUUID#1200938], false, [storageLocations#1200836]
(1455) Filter
Input [2]: [_extract_internalRefUUID#1200938, storageLocations#1200836]
Condition : isnotnull(storageLocations#1200836)
(1456) Project
Output [2]: [_extract_internalRefUUID#1200938 AS plantUuid#1200838, storageLocations#1200836 AS storageLocUuid#1200840]
Input [2]: [_extract_internalRefUUID#1200938, storageLocations#1200836]
(1457) BroadcastExchange
Input [2]: [plantUuid#1200838, storageLocUuid#1200840]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838887]
(1458) Scan parquet
Output [2]: [product#1200841, plant#1200842]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1459) Filter
Input [2]: [product#1200841, plant#1200842]
Condition : isnotnull(plant#1200842)
(1460) Exchange
Input [2]: [product#1200841, plant#1200842]
Arguments: hashpartitioning(product#1200841, plant#1200842, 37), REPARTITION_BY_NUM, [plan_id=1838541]
(1461) Scan parquet
Output [4]: [plant#1200847, product#1200848, productionAspect#1200850, systemId#1200845]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1462) Project
Output [4]: [plant#1200847.internalRefUUID AS _extract_internalRefUUID#1201127, product#1200848.internalRefUUID AS _extract_internalRefUUID#1201126, productionAspect#1200850.productMovementPlants.unitOfIssue.code AS _extract_code#1201124, productionAspect#1200850.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1201125]
Input [4]: [plant#1200847, product#1200848, productionAspect#1200850, systemId#1200845]
(1463) Exchange
Input [4]: [_extract_internalRefUUID#1201127, _extract_internalRefUUID#1201126, _extract_code#1201124, _extract_internalRefUUID#1201125]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838326]
(1464) Project
Output [4]: [_extract_code#1201124, _extract_internalRefUUID#1201125, _extract_internalRefUUID#1201126, _extract_internalRefUUID#1201127]
Input [4]: [_extract_internalRefUUID#1201127, _extract_internalRefUUID#1201126, _extract_code#1201124, _extract_internalRefUUID#1201125]
(1465) BroadcastExchange
Input [4]: [_extract_code#1201124, _extract_internalRefUUID#1201125, _extract_internalRefUUID#1201126, _extract_internalRefUUID#1201127]
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=1838867]
(1466) BroadcastHashJoin
Left keys [4]: [coalesce(product#1200841, ), isnull(product#1200841), coalesce(plant#1200842, ), isnull(plant#1200842)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1201126, ), isnull(_extract_internalRefUUID#1201126), coalesce(_extract_internalRefUUID#1201127, ), isnull(_extract_internalRefUUID#1201127)]
Join type: LeftOuter
Join condition: None
(1467) Project
Output [4]: [product#1200841, plant#1200842, _extract_code#1201124, _extract_internalRefUUID#1201125]
Input [6]: [product#1200841, plant#1200842, _extract_code#1201124, _extract_internalRefUUID#1201125, _extract_internalRefUUID#1201126, _extract_internalRefUUID#1201127]
(1468) Scan parquet
Output [2]: [internalUUID#1200855, systemId#1200854]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1469) Project
Output [1]: [internalUUID#1200855]
Input [2]: [internalUUID#1200855, systemId#1200854]
(1470) Exchange
Input [1]: [internalUUID#1200855]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838332]
(1471) BroadcastExchange
Input [1]: [internalUUID#1200855]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1838871]
(1472) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1200842, ), isnull(plant#1200842)]
Right keys [2]: [coalesce(internalUUID#1200855, ), isnull(internalUUID#1200855)]
Join type: LeftOuter
Join condition: None
(1473) Project
Output [4]: [product#1200841, plant#1200842, _extract_code#1201124, _extract_internalRefUUID#1201125]
Input [5]: [product#1200841, plant#1200842, _extract_code#1201124, _extract_internalRefUUID#1201125, internalUUID#1200855]
(1474) Scan parquet
Output [4]: [internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875, systemId#1200868]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1475) Filter
Input [4]: [internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875, systemId#1200868]
Condition : isnotnull(internalUUID#1200869)
(1476) Project
Output [3]: [internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875]
Input [4]: [internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875, systemId#1200868]
(1477) Exchange
Input [3]: [internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838338]
(1478) BroadcastExchange
Input [3]: [internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1838875]
(1479) BroadcastHashJoin
Left keys [1]: [product#1200841]
Right keys [1]: [internalUUID#1200869]
Join type: LeftOuter
Join condition: None
(1480) Project
Output [2]: [plant#1200842, filter(unitOfMeasureConversions#1200875, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1201124) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1201125)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200873.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200873.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200880]
Input [7]: [product#1200841, plant#1200842, _extract_code#1201124, _extract_internalRefUUID#1201125, internalUUID#1200869, baseUnitOfMeasure#1200873, unitOfMeasureConversions#1200875]
(1481) Generate
Input [2]: [plant#1200842, filteredUnitOfMeasureConversions#1200880]
Arguments: explode(filteredUnitOfMeasureConversions#1200880.quantityNumerator), [plant#1200842, filteredUnitOfMeasureConversions#1200880], true, [quantityNumerator#1200881]
(1482) Project
Output [2]: [plant#1200842, filteredUnitOfMeasureConversions#1200880.quantityDenominator AS _extract_quantityDenominator#1200940]
Input [3]: [plant#1200842, filteredUnitOfMeasureConversions#1200880, quantityNumerator#1200881]
(1483) Generate
Input [2]: [plant#1200842, _extract_quantityDenominator#1200940]
Arguments: explode(_extract_quantityDenominator#1200940), [plant#1200842], true, [quantityDenominator#1200882]
(1484) Project
Output [1]: [plant#1200842]
Input [2]: [plant#1200842, quantityDenominator#1200882]
(1485) HashAggregate
Input [1]: [plant#1200842]
Keys [1]: [plant#1200842]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200842]
(1486) Exchange
Input [1]: [plant#1200842]
Arguments: hashpartitioning(plant#1200842, 37), ENSURE_REQUIREMENTS, [plan_id=1838884]
(1487) HashAggregate
Input [1]: [plant#1200842]
Keys [1]: [plant#1200842]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1200842]
(1488) BroadcastHashJoin
Left keys [1]: [plantUuid#1200838]
Right keys [1]: [plant#1200842]
Join type: Inner
Join condition: None
(1489) Project
Output [2]: [plantUuid#1200838 AS plant#1200812, storageLocUuid#1200840]
Input [3]: [plantUuid#1200838, storageLocUuid#1200840, plant#1200842]
(1490) Sort
Input [2]: [plant#1200812, storageLocUuid#1200840]
Arguments: [plant#1200812 ASC NULLS FIRST], false, 0
(1491) SortMergeJoin
Left keys [1]: [plant#1199943]
Right keys [1]: [plant#1200812]
Join type: Inner
Join condition: None
(1492) Project
Output [5]: [plant#1199943, product#1199942, timezonecode#1199974, stockDatetime#1200346, storageLocUuid#1200840]
Input [6]: [product#1199942, plant#1199943, timezonecode#1199974, stockDatetime#1200346, plant#1200812, storageLocUuid#1200840]
(1493) Filter
Input [6]: [internalUUID#1200774, id#1200775, supplier#1200777, isMarkedForDeletion#1200780, items#1200781, systemId#1200773]
Condition : (((isnotnull(isMarkedForDeletion#1200780) AND NOT isMarkedForDeletion#1200780) AND (size(items#1200781, true) > 0)) AND isnotnull(items#1200781))
(1494) Project
Output [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Input [6]: [internalUUID#1200774, id#1200775, supplier#1200777, isMarkedForDeletion#1200780, items#1200781, systemId#1200773]
(1495) Exchange
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1838354]
(1496) Generate
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, items#1200781]
Arguments: explode(items#1200781), [internalUUID#1200774, id#1200775, supplier#1200777], false, [item#1200785]
(1497) Filter
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, item#1200785]
Condition : ((((isnotnull(item#1200785.deletionIndicator) AND isnotnull(item#1200785.completeIndicator)) AND isnotnull(item#1200785.returnIndicator)) AND ((NOT item#1200785.deletionIndicator AND NOT item#1200785.completeIndicator) AND NOT item#1200785.returnIndicator)) AND ((isnotnull(item#1200785.product.internalRefUUID) AND isnotnull(item#1200785.plant.internalRefUUID)) AND isnotnull(item#1200785.storageLocation.internalRefUUID)))
(1498) Project
Output [14]: [id#1200775, internalUUID#1200774, supplier#1200777.internalRefUUID AS supplierUuid#1200782, item#1200785.plant.internalRefUUID AS plant#1200790, item#1200785.product.internalRefUUID AS product#1200791, item#1200785.plant.id AS externalPlantId#1200792, item#1200785.product.id AS externalProductId#1200793, item#1200785.storageLocation.internalRefUUID AS storageLocUuid#1200794, item#1200785.quantityUnit.code AS quantityUom#1200795, item#1200785.quantityUnit.internalRefUUID AS quantityUomUuid#1200796, item#1200785.quantityNumerator AS quantityNumerator#1200797, item#1200785.quantityDenominator AS quantityDenominator#1200798, item#1200785.scheduleLines AS scheduleLines#1200799, item#1200785.confirmations AS confirmations#1200800]
Input [4]: [internalUUID#1200774, id#1200775, supplier#1200777, item#1200785]
(1499) BroadcastExchange
Input [14]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800]
Arguments: HashedRelationBroadcastMode(List(input[4, string, true], input[3, string, true], input[7, string, true]),false), [plan_id=1838898]
(1500) BroadcastHashJoin
Left keys [3]: [product#1199942, plant#1199943, storageLocUuid#1200840]
Right keys [3]: [product#1200791, plant#1200790, storageLocUuid#1200794]
Join type: Inner
Join condition: None
(1501) Project
Output [17]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1200346, timezonecode#1199974, filter(confirmations#1200800, lambdafunction(((NOT lambda x_139#1200891.deletionIndicator AND lambda x_139#1200891.isRelevantForConfirmation) AND isnotnull(lambda x_139#1200891.confirmedDeliveryAt)), lambda x_139#1200891, false)) AS validConfirmations#1200890]
Input [19]: [plant#1199943, product#1199942, timezonecode#1199974, stockDatetime#1200346, storageLocUuid#1200840, id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800]
(1502) AdaptiveSparkPlan
Output [17]: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1200346, timezonecode#1199974, validConfirmations#1200890]
Arguments: isFinalPlan=true
(1503) Project
Output [11]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, validConfirmations#1200890, size(validConfirmations#1200890, false) AS _w0#1202098]
Input [10]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityDenominator#1200798, quantityNumerator#1200797, quantityUom#1200795, quantityUomUuid#1200796, scheduleLines#1200799, validConfirmations#1200890]
(1504) Exchange
Input [11]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, validConfirmations#1200890, _w0#1202098]
Arguments: hashpartitioning(internalUUID#1200774, 37), ENSURE_REQUIREMENTS, [plan_id=1838926]
(1505) Sort
Input [11]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, validConfirmations#1200890, _w0#1202098]
Arguments: [internalUUID#1200774 ASC NULLS FIRST], false, 0
(1506) Window
Input [11]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, validConfirmations#1200890, _w0#1202098]
Arguments: [sum(_w0#1202098) windowspecdefinition(internalUUID#1200774, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#1202099L], [internalUUID#1200774]
(1507) Project
Output [3]: [plant#1200790, product#1200791, filter(transform(CASE WHEN (_we0#1202099L > 0) THEN transform(validConfirmations#1200890, lambdafunction(struct(openQty, greatest((lambda x_141#1202094.confirmedQuantity - coalesce(lambda x_141#1202094.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#1202094.confirmedDeliveryAt), lambda x_141#1202094, false)) ELSE transform(scheduleLines#1200799, lambdafunction(struct(openQty, greatest((lambda x_140#1202095.quantity - coalesce(lambda x_140#1202095.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_140#1202095.deliveryAt), lambda x_140#1202095, false)) END, lambdafunction(struct(documentId, id#1200775, documentUuid, internalUUID#1200774, openQty, lambda x_142#1202096.openQty, openQtyInBaseUnit, ((lambda x_142#1202096.openQty * quantityNumerator#1200797) / quantityDenominator#1200798), qtyUom, quantityUom#1200795, qtyUomUuid, quantityUomUuid#1200796, availabilityDatetime, lambda x_142#1202096.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#1202096, false)), lambdafunction(NOT (lambda x_143#1202097.openQty = 0.0), lambda x_143#1202097, false)) AS openGoodsMovements#1202092]
Input [12]: [id#1200775, internalUUID#1200774, plant#1200790, product#1200791, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, validConfirmations#1200890, _w0#1202098, _we0#1202099L]
(1508) ObjectHashAggregate
Input [3]: [plant#1200790, product#1200791, openGoodsMovements#1202092]
Keys [2]: [product#1200791, plant#1200790]
Functions [1]: [partial_collect_list(openGoodsMovements#1202092, 0, 0)]
Aggregate Attributes [1]: [buf#1202375]
Results [3]: [product#1200791, plant#1200790, buf#1202376]
(1509) Exchange
Input [3]: [product#1200791, plant#1200790, buf#1202376]
Arguments: hashpartitioning(product#1200791, plant#1200790, 37), ENSURE_REQUIREMENTS, [plan_id=1838932]
(1510) ObjectHashAggregate
Input [3]: [product#1200791, plant#1200790, buf#1202376]
Keys [2]: [product#1200791, plant#1200790]
Functions [1]: [collect_list(openGoodsMovements#1202092, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1202092, 0, 0)#1202119]
Results [3]: [product#1200791, plant#1200790, flatten(collect_list(openGoodsMovements#1202092, 0, 0)#1202119) AS openGoodsMovements#1202100]
(1511) Filter
Input [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Condition : (size(openGoodsMovements#1202100, false) > 0)
(1512) AdaptiveSparkPlan
Output [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Arguments: isFinalPlan=true
(1513) Filter
Input [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Condition : (isnotnull(product#1200791) AND isnotnull(plant#1200790))
(1514) Scan parquet
Output [3]: [product#1202423, plant#1202424, orderDateTime#1202425]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1515) Filter
Input [3]: [product#1202423, plant#1202424, orderDateTime#1202425]
Condition : isnotnull(plant#1202424)
(1516) Exchange
Input [3]: [product#1202423, plant#1202424, orderDateTime#1202425]
Arguments: hashpartitioning(product#1202423, plant#1202424, 37), REPARTITION_BY_NUM, [plan_id=1842191]
(1517) Scan parquet
Output [4]: [plant#1202429, product#1202430, productionAspect#1202432, systemId#1202427]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1518) Project
Output [4]: [plant#1202429.internalRefUUID AS _extract_internalRefUUID#1204664, product#1202430.internalRefUUID AS _extract_internalRefUUID#1204663, productionAspect#1202432.productMovementPlants.unitOfIssue.code AS _extract_code#1204661, productionAspect#1202432.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204662]
Input [4]: [plant#1202429, product#1202430, productionAspect#1202432, systemId#1202427]
(1519) Exchange
Input [4]: [_extract_internalRefUUID#1204664, _extract_internalRefUUID#1204663, _extract_code#1204661, _extract_internalRefUUID#1204662]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841625]
(1520) Project
Output [4]: [_extract_code#1204661, _extract_internalRefUUID#1204662, _extract_internalRefUUID#1204663, _extract_internalRefUUID#1204664]
Input [4]: [_extract_internalRefUUID#1204664, _extract_internalRefUUID#1204663, _extract_code#1204661, _extract_internalRefUUID#1204662]
(1521) BroadcastExchange
Input [4]: [_extract_code#1204661, _extract_internalRefUUID#1204662, _extract_internalRefUUID#1204663, _extract_internalRefUUID#1204664]
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=1842690]
(1522) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202423, ), isnull(product#1202423), coalesce(plant#1202424, ), isnull(plant#1202424)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204663, ), isnull(_extract_internalRefUUID#1204663), coalesce(_extract_internalRefUUID#1204664, ), isnull(_extract_internalRefUUID#1204664)]
Join type: LeftOuter
Join condition: None
(1523) Project
Output [5]: [product#1202423, plant#1202424, orderDateTime#1202425, _extract_code#1204661, _extract_internalRefUUID#1204662]
Input [7]: [product#1202423, plant#1202424, orderDateTime#1202425, _extract_code#1204661, _extract_internalRefUUID#1204662, _extract_internalRefUUID#1204663, _extract_internalRefUUID#1204664]
(1524) Scan parquet
Output [2]: [internalUUID#1202437, systemId#1202436]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1525) Project
Output [1]: [internalUUID#1202437]
Input [2]: [internalUUID#1202437, systemId#1202436]
(1526) Exchange
Input [1]: [internalUUID#1202437]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841631]
(1527) BroadcastExchange
Input [1]: [internalUUID#1202437]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842694]
(1528) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202424, ), isnull(plant#1202424)]
Right keys [2]: [coalesce(internalUUID#1202437, ), isnull(internalUUID#1202437)]
Join type: LeftOuter
Join condition: None
(1529) Project
Output [5]: [product#1202423, plant#1202424, orderDateTime#1202425, _extract_code#1204661, _extract_internalRefUUID#1204662]
Input [6]: [product#1202423, plant#1202424, orderDateTime#1202425, _extract_code#1204661, _extract_internalRefUUID#1204662, internalUUID#1202437]
(1530) Scan parquet
Output [4]: [internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457, systemId#1202450]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1531) Filter
Input [4]: [internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457, systemId#1202450]
Condition : isnotnull(internalUUID#1202451)
(1532) Project
Output [3]: [internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457]
Input [4]: [internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457, systemId#1202450]
(1533) Exchange
Input [3]: [internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841637]
(1534) BroadcastExchange
Input [3]: [internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842698]
(1535) BroadcastHashJoin
Left keys [1]: [product#1202423]
Right keys [1]: [internalUUID#1202451]
Join type: LeftOuter
Join condition: None
(1536) Project
Output [4]: [product#1202423, plant#1202424, orderDateTime#1202425, filter(unitOfMeasureConversions#1202457, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204661) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204662)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202455.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202455.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202462]
Input [8]: [product#1202423, plant#1202424, orderDateTime#1202425, _extract_code#1204661, _extract_internalRefUUID#1204662, internalUUID#1202451, baseUnitOfMeasure#1202455, unitOfMeasureConversions#1202457]
(1537) Generate
Input [4]: [product#1202423, plant#1202424, orderDateTime#1202425, filteredUnitOfMeasureConversions#1202462]
Arguments: explode(filteredUnitOfMeasureConversions#1202462.quantityNumerator), [product#1202423, plant#1202424, orderDateTime#1202425, filteredUnitOfMeasureConversions#1202462], true, [quantityNumerator#1202463]
(1538) Project
Output [4]: [product#1202423, plant#1202424, orderDateTime#1202425, filteredUnitOfMeasureConversions#1202462.quantityDenominator AS _extract_quantityDenominator#1204318]
Input [5]: [product#1202423, plant#1202424, orderDateTime#1202425, filteredUnitOfMeasureConversions#1202462, quantityNumerator#1202463]
(1539) Generate
Input [4]: [product#1202423, plant#1202424, orderDateTime#1202425, _extract_quantityDenominator#1204318]
Arguments: explode(_extract_quantityDenominator#1204318), [product#1202423, plant#1202424, orderDateTime#1202425], true, [quantityDenominator#1202464]
(1540) Project
Output [3]: [product#1202423, plant#1202424, orderDateTime#1202425]
Input [4]: [product#1202423, plant#1202424, orderDateTime#1202425, quantityDenominator#1202464]
(1541) Sort
Input [3]: [product#1202423, plant#1202424, orderDateTime#1202425]
Arguments: [product#1202423 ASC NULLS FIRST, plant#1202424 ASC NULLS FIRST], false, 0
(1542) Scan parquet
Output [6]: [internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472, systemId#1202467]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(1543) Filter
Input [6]: [internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472, systemId#1202467]
Condition : (isnotnull(plant#1202470.internalRefUUID) AND isnotnull(product#1202469.internalRefUUID))
(1544) Project
Output [6]: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472]
Input [6]: [internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472, systemId#1202467]
(1545) Exchange
Input [6]: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841647]
(1546) BroadcastExchange
Input [6]: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472]
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=1842729]
(1547) Scan parquet
Output [2]: [marketUnit#1202473, distributionCenters#1202479]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1548) Filter
Input [2]: [marketUnit#1202473, distributionCenters#1202479]
Condition : (((marketUnit#1202473 <=> Grocery_SS) AND (size(distributionCenters#1202479, true) > 0)) AND isnotnull(distributionCenters#1202479))
(1549) Project
Output [1]: [distributionCenters#1202479]
Input [2]: [marketUnit#1202473, distributionCenters#1202479]
(1550) Exchange
Input [1]: [distributionCenters#1202479]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841651]
(1551) Generate
Input [1]: [distributionCenters#1202479]
Arguments: explode(distributionCenters#1202479), false, [distributionCenters#1202495]
(1552) Filter
Input [1]: [distributionCenters#1202495]
Condition : (((size(distributionCenters#1202495.storageLocations, true) > 0) AND isnotnull(distributionCenters#1202495.storageLocations)) AND isnotnull(distributionCenters#1202495.internalRefUUID))
(1553) Project
Output [2]: [distributionCenters#1202495.internalRefUUID AS _extract_internalRefUUID#1204322, distributionCenters#1202495.storageLocations AS _extract_storageLocations#1204323]
Input [1]: [distributionCenters#1202495]
(1554) Generate
Input [2]: [_extract_internalRefUUID#1204322, _extract_storageLocations#1204323]
Arguments: explode(_extract_storageLocations#1204323), [_extract_internalRefUUID#1204322], false, [storageLocations#1202496]
(1555) Project
Output [3]: [_extract_internalRefUUID#1204322 AS plantUuid#1202498, storageLocations#1202496.id AS storageLocId#1202499, storageLocations#1202496.internalRefUUID AS storageLocUuid#1202500]
Input [2]: [_extract_internalRefUUID#1204322, storageLocations#1202496]
(1556) BroadcastExchange
Input [3]: [plantUuid#1202498, storageLocId#1202499, storageLocUuid#1202500]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842725]
(1557) Scan parquet
Output [2]: [product#1202501, plant#1202502]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1558) Filter
Input [2]: [product#1202501, plant#1202502]
Condition : isnotnull(plant#1202502)
(1559) Exchange
Input [2]: [product#1202501, plant#1202502]
Arguments: hashpartitioning(product#1202501, plant#1202502, 37), REPARTITION_BY_NUM, [plan_id=1842202]
(1560) Scan parquet
Output [4]: [plant#1202507, product#1202508, productionAspect#1202510, systemId#1202505]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1561) Project
Output [4]: [plant#1202507.internalRefUUID AS _extract_internalRefUUID#1204665, product#1202508.internalRefUUID AS _extract_internalRefUUID#1204666, productionAspect#1202510.productMovementPlants.unitOfIssue.code AS _extract_code#1204667, productionAspect#1202510.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204668]
Input [4]: [plant#1202507, product#1202508, productionAspect#1202510, systemId#1202505]
(1562) Exchange
Input [4]: [_extract_internalRefUUID#1204665, _extract_internalRefUUID#1204666, _extract_code#1204667, _extract_internalRefUUID#1204668]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841663]
(1563) Project
Output [4]: [_extract_code#1204667, _extract_internalRefUUID#1204668, _extract_internalRefUUID#1204666, _extract_internalRefUUID#1204665]
Input [4]: [_extract_internalRefUUID#1204665, _extract_internalRefUUID#1204666, _extract_code#1204667, _extract_internalRefUUID#1204668]
(1564) BroadcastExchange
Input [4]: [_extract_code#1204667, _extract_internalRefUUID#1204668, _extract_internalRefUUID#1204666, _extract_internalRefUUID#1204665]
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=1842705]
(1565) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202501, ), isnull(product#1202501), coalesce(plant#1202502, ), isnull(plant#1202502)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204666, ), isnull(_extract_internalRefUUID#1204666), coalesce(_extract_internalRefUUID#1204665, ), isnull(_extract_internalRefUUID#1204665)]
Join type: LeftOuter
Join condition: None
(1566) Project
Output [4]: [product#1202501, plant#1202502, _extract_code#1204667, _extract_internalRefUUID#1204668]
Input [6]: [product#1202501, plant#1202502, _extract_code#1204667, _extract_internalRefUUID#1204668, _extract_internalRefUUID#1204666, _extract_internalRefUUID#1204665]
(1567) Scan parquet
Output [2]: [internalUUID#1202515, systemId#1202514]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1568) Project
Output [1]: [internalUUID#1202515]
Input [2]: [internalUUID#1202515, systemId#1202514]
(1569) Exchange
Input [1]: [internalUUID#1202515]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841669]
(1570) BroadcastExchange
Input [1]: [internalUUID#1202515]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842709]
(1571) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202502, ), isnull(plant#1202502)]
Right keys [2]: [coalesce(internalUUID#1202515, ), isnull(internalUUID#1202515)]
Join type: LeftOuter
Join condition: None
(1572) Project
Output [4]: [product#1202501, plant#1202502, _extract_code#1204667, _extract_internalRefUUID#1204668]
Input [5]: [product#1202501, plant#1202502, _extract_code#1204667, _extract_internalRefUUID#1204668, internalUUID#1202515]
(1573) Scan parquet
Output [4]: [internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535, systemId#1202528]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1574) Filter
Input [4]: [internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535, systemId#1202528]
Condition : isnotnull(internalUUID#1202529)
(1575) Project
Output [3]: [internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535]
Input [4]: [internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535, systemId#1202528]
(1576) Exchange
Input [3]: [internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841675]
(1577) BroadcastExchange
Input [3]: [internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842713]
(1578) BroadcastHashJoin
Left keys [1]: [product#1202501]
Right keys [1]: [internalUUID#1202529]
Join type: LeftOuter
Join condition: None
(1579) Project
Output [2]: [plant#1202502, filter(unitOfMeasureConversions#1202535, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204667) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204668)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202533.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202533.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202540]
Input [7]: [product#1202501, plant#1202502, _extract_code#1204667, _extract_internalRefUUID#1204668, internalUUID#1202529, baseUnitOfMeasure#1202533, unitOfMeasureConversions#1202535]
(1580) Generate
Input [2]: [plant#1202502, filteredUnitOfMeasureConversions#1202540]
Arguments: explode(filteredUnitOfMeasureConversions#1202540.quantityNumerator), [plant#1202502, filteredUnitOfMeasureConversions#1202540], true, [quantityNumerator#1202541]
(1581) Project
Output [2]: [plant#1202502, filteredUnitOfMeasureConversions#1202540.quantityDenominator AS _extract_quantityDenominator#1204324]
Input [3]: [plant#1202502, filteredUnitOfMeasureConversions#1202540, quantityNumerator#1202541]
(1582) Generate
Input [2]: [plant#1202502, _extract_quantityDenominator#1204324]
Arguments: explode(_extract_quantityDenominator#1204324), [plant#1202502], true, [quantityDenominator#1202542]
(1583) Project
Output [1]: [plant#1202502]
Input [2]: [plant#1202502, quantityDenominator#1202542]
(1584) HashAggregate
Input [1]: [plant#1202502]
Keys [1]: [plant#1202502]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202502]
(1585) Exchange
Input [1]: [plant#1202502]
Arguments: hashpartitioning(plant#1202502, 37), ENSURE_REQUIREMENTS, [plan_id=1842722]
(1586) HashAggregate
Input [1]: [plant#1202502]
Keys [1]: [plant#1202502]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202502]
(1587) BroadcastHashJoin
Left keys [1]: [plantUuid#1202498]
Right keys [1]: [plant#1202502]
Join type: Inner
Join condition: None
(1588) Project
Output [3]: [plantUuid#1202498, storageLocId#1202499, storageLocUuid#1202500]
Input [4]: [plantUuid#1202498, storageLocId#1202499, storageLocUuid#1202500, plant#1202502]
(1589) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202470.internalRefUUID, ), isnull(plant#1202470.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1202498, ), isnull(plantUuid#1202498)]
Join type: Inner
Join condition: None
(1590) Generate
Input [9]: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472, plantUuid#1202498, storageLocId#1202499, storageLocUuid#1202500]
Arguments: explode(filter(stockQuantities#1202472, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202500) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202499)), lambda x#1200047, false))), [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, plantUuid#1202498], false, [stockQuantity#1202545]
(1591) ObjectHashAggregate
Input [7]: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, plantUuid#1202498, stockQuantity#1202545]
Keys [5]: [plantUuid#1202498, internalUUID#1202468, plant#1202470, product#1202469, systemId#1202467]
Functions [2]: [partial_first(calculationDateTime#1202471, false), partial_collect_list(stockQuantity#1202545, 0, 0)]
Aggregate Attributes [3]: [first#1205426, valueSet#1205427, buf#1205428]
Results [8]: [plantUuid#1202498, internalUUID#1202468, plant#1202470, product#1202469, systemId#1202467, first#1205429, valueSet#1205430, buf#1205431]
(1592) ObjectHashAggregate
Input [8]: [plantUuid#1202498, internalUUID#1202468, plant#1202470, product#1202469, systemId#1202467, first#1205429, valueSet#1205430, buf#1205431]
Keys [5]: [plantUuid#1202498, internalUUID#1202468, plant#1202470, product#1202469, systemId#1202467]
Functions [2]: [first(calculationDateTime#1202471, false), collect_list(stockQuantity#1202545, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1202471)()#1200062, collect_list(stockQuantity#1202545, 0, 0)#1200063]
Results [4]: [product#1202469, plant#1202470, first(calculationDateTime#1202471)()#1200062 AS calculationDateTime#1202546, collect_list(stockQuantity#1202545, 0, 0)#1200063 AS stockQuantities#1202547]
(1593) Filter
Input [4]: [product#1202469, plant#1202470, calculationDateTime#1202546, stockQuantities#1202547]
Condition : ((size(stockQuantities#1202547, true) > 0) AND isnotnull(calculationDateTime#1202546))
(1594) Generate
Input [4]: [product#1202469, plant#1202470, calculationDateTime#1202546, stockQuantities#1202547]
Arguments: explode(stockQuantities#1202547), [product#1202469, plant#1202470, calculationDateTime#1202546], false, [stockQuantity#1202548]
(1595) Filter
Input [4]: [product#1202469, plant#1202470, calculationDateTime#1202546, stockQuantity#1202548]
Condition : (((isnotnull(stockQuantity#1202548.specialStockIndicator.code) AND isnotnull(stockQuantity#1202548.stockType.code)) AND (stockQuantity#1202548.specialStockIndicator.code = )) AND (stockQuantity#1202548.stockType.code = 01))
(1596) Project
Output [4]: [plant#1202470.internalRefUUID AS plantUuid#1202550, product#1202469.internalRefUUID AS productUuid#1202552, calculationDateTime#1202546, stockQuantity#1202548.storagelocation.id AS storageLocId#1202553]
Input [4]: [product#1202469, plant#1202470, calculationDateTime#1202546, stockQuantity#1202548]
(1597) Exchange
Input [4]: [plantUuid#1202550, productUuid#1202552, calculationDateTime#1202546, storageLocId#1202553]
Arguments: hashpartitioning(productUuid#1202552, plantUuid#1202550, 37), ENSURE_REQUIREMENTS, [plan_id=1842755]
(1598) Sort
Input [4]: [plantUuid#1202550, productUuid#1202552, calculationDateTime#1202546, storageLocId#1202553]
Arguments: [productUuid#1202552 ASC NULLS FIRST, plantUuid#1202550 ASC NULLS FIRST], false, 0
(1599) Scan parquet
Output [3]: [product#1202558, plant#1202559, orderDateTime#1202560]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1600) Filter
Input [3]: [product#1202558, plant#1202559, orderDateTime#1202560]
Condition : ((isnotnull(orderDateTime#1202560) AND isnotnull(plant#1202559)) AND isnotnull(product#1202558))
(1601) Exchange
Input [3]: [product#1202558, plant#1202559, orderDateTime#1202560]
Arguments: hashpartitioning(product#1202558, plant#1202559, 37), REPARTITION_BY_NUM, [plan_id=1842225]
(1602) Scan parquet
Output [4]: [plant#1202564, product#1202565, productionAspect#1202567, systemId#1202562]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1603) Project
Output [4]: [plant#1202564.internalRefUUID AS _extract_internalRefUUID#1204669, product#1202565.internalRefUUID AS _extract_internalRefUUID#1204672, productionAspect#1202567.productMovementPlants.unitOfIssue.code AS _extract_code#1204670, productionAspect#1202567.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204671]
Input [4]: [plant#1202564, product#1202565, productionAspect#1202567, systemId#1202562]
(1604) Exchange
Input [4]: [_extract_internalRefUUID#1204669, _extract_internalRefUUID#1204672, _extract_code#1204670, _extract_internalRefUUID#1204671]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841700]
(1605) Project
Output [4]: [_extract_code#1204670, _extract_internalRefUUID#1204671, _extract_internalRefUUID#1204672, _extract_internalRefUUID#1204669]
Input [4]: [_extract_internalRefUUID#1204669, _extract_internalRefUUID#1204672, _extract_code#1204670, _extract_internalRefUUID#1204671]
(1606) BroadcastExchange
Input [4]: [_extract_code#1204670, _extract_internalRefUUID#1204671, _extract_internalRefUUID#1204672, _extract_internalRefUUID#1204669]
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=1842738]
(1607) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202558, ), isnull(product#1202558), coalesce(plant#1202559, ), isnull(plant#1202559)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204672, ), isnull(_extract_internalRefUUID#1204672), coalesce(_extract_internalRefUUID#1204669, ), isnull(_extract_internalRefUUID#1204669)]
Join type: LeftOuter
Join condition: None
(1608) Project
Output [5]: [product#1202558, plant#1202559, orderDateTime#1202560, _extract_code#1204670, _extract_internalRefUUID#1204671]
Input [7]: [product#1202558, plant#1202559, orderDateTime#1202560, _extract_code#1204670, _extract_internalRefUUID#1204671, _extract_internalRefUUID#1204672, _extract_internalRefUUID#1204669]
(1609) Scan parquet
Output [2]: [internalUUID#1202572, systemId#1202571]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1610) Project
Output [1]: [internalUUID#1202572]
Input [2]: [internalUUID#1202572, systemId#1202571]
(1611) Exchange
Input [1]: [internalUUID#1202572]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841706]
(1612) BroadcastExchange
Input [1]: [internalUUID#1202572]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842742]
(1613) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202559, ), isnull(plant#1202559)]
Right keys [2]: [coalesce(internalUUID#1202572, ), isnull(internalUUID#1202572)]
Join type: LeftOuter
Join condition: None
(1614) Project
Output [5]: [product#1202558, plant#1202559, orderDateTime#1202560, _extract_code#1204670, _extract_internalRefUUID#1204671]
Input [6]: [product#1202558, plant#1202559, orderDateTime#1202560, _extract_code#1204670, _extract_internalRefUUID#1204671, internalUUID#1202572]
(1615) Scan parquet
Output [4]: [internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592, systemId#1202585]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1616) Filter
Input [4]: [internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592, systemId#1202585]
Condition : isnotnull(internalUUID#1202586)
(1617) Project
Output [3]: [internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592]
Input [4]: [internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592, systemId#1202585]
(1618) Exchange
Input [3]: [internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841712]
(1619) BroadcastExchange
Input [3]: [internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842746]
(1620) BroadcastHashJoin
Left keys [1]: [product#1202558]
Right keys [1]: [internalUUID#1202586]
Join type: LeftOuter
Join condition: None
(1621) Project
Output [4]: [product#1202558, plant#1202559, orderDateTime#1202560, filter(unitOfMeasureConversions#1202592, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204670) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204671)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202590.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202590.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202597]
Input [8]: [product#1202558, plant#1202559, orderDateTime#1202560, _extract_code#1204670, _extract_internalRefUUID#1204671, internalUUID#1202586, baseUnitOfMeasure#1202590, unitOfMeasureConversions#1202592]
(1622) Generate
Input [4]: [product#1202558, plant#1202559, orderDateTime#1202560, filteredUnitOfMeasureConversions#1202597]
Arguments: explode(filteredUnitOfMeasureConversions#1202597.quantityNumerator), [product#1202558, plant#1202559, orderDateTime#1202560, filteredUnitOfMeasureConversions#1202597], true, [quantityNumerator#1202598]
(1623) Project
Output [4]: [product#1202558, plant#1202559, orderDateTime#1202560, filteredUnitOfMeasureConversions#1202597.quantityDenominator AS _extract_quantityDenominator#1204328]
Input [5]: [product#1202558, plant#1202559, orderDateTime#1202560, filteredUnitOfMeasureConversions#1202597, quantityNumerator#1202598]
(1624) Generate
Input [4]: [product#1202558, plant#1202559, orderDateTime#1202560, _extract_quantityDenominator#1204328]
Arguments: explode(_extract_quantityDenominator#1204328), [product#1202558, plant#1202559, orderDateTime#1202560], true, [quantityDenominator#1202599]
(1625) Project
Output [3]: [product#1202558, plant#1202559, orderDateTime#1202560]
Input [4]: [product#1202558, plant#1202559, orderDateTime#1202560, quantityDenominator#1202599]
(1626) Sort
Input [3]: [product#1202558, plant#1202559, orderDateTime#1202560]
Arguments: [product#1202558 ASC NULLS FIRST, plant#1202559 ASC NULLS FIRST], false, 0
(1627) SortMergeJoin
Left keys [2]: [productUuid#1202552, plantUuid#1202550]
Right keys [2]: [product#1202558, plant#1202559]
Join type: Inner
Join condition: (calculationDateTime#1202546 <= orderDateTime#1202560)
(1628) Project
Output [4]: [plantUuid#1202550 AS plant#1202602, productUuid#1202552 AS product#1202603, storageLocId#1202553, calculationDateTime#1202546]
Input [7]: [plantUuid#1202550, productUuid#1202552, calculationDateTime#1202546, storageLocId#1202553, product#1202558, plant#1202559, orderDateTime#1202560]
(1629) Exchange
Input [4]: [plant#1202602, product#1202603, storageLocId#1202553, calculationDateTime#1202546]
Arguments: hashpartitioning(coalesce(plant#1202602, ), isnull(plant#1202602), coalesce(product#1202603, ), isnull(product#1202603), coalesce(storageLocId#1202553, ), isnull(storageLocId#1202553), coalesce(calculationDateTime#1202546, 1970-01-01 00:00:00), isnull(calculationDateTime#1202546), 37), ENSURE_REQUIREMENTS, [plan_id=1842819]
(1630) Sort
Input [4]: [plant#1202602, product#1202603, storageLocId#1202553, calculationDateTime#1202546]
Arguments: [coalesce(plant#1202602, ) ASC NULLS FIRST, isnull(plant#1202602) ASC NULLS FIRST, coalesce(product#1202603, ) ASC NULLS FIRST, isnull(product#1202603) ASC NULLS FIRST, coalesce(storageLocId#1202553, ) ASC NULLS FIRST, isnull(storageLocId#1202553) ASC NULLS FIRST, coalesce(calculationDateTime#1202546, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1202546) ASC NULLS FIRST], false, 0
(1631) Scan parquet
Output [6]: [internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609, systemId#1202604]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(1632) Filter
Input [6]: [internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609, systemId#1202604]
Condition : (isnotnull(plant#1202607.internalRefUUID) AND isnotnull(product#1202606.internalRefUUID))
(1633) Project
Output [6]: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609]
Input [6]: [internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609, systemId#1202604]
(1634) Exchange
Input [6]: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841724]
(1635) BroadcastExchange
Input [6]: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609]
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=1842784]
(1636) Scan parquet
Output [2]: [marketUnit#1202610, distributionCenters#1202616]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1637) Filter
Input [2]: [marketUnit#1202610, distributionCenters#1202616]
Condition : (((marketUnit#1202610 <=> Grocery_SS) AND (size(distributionCenters#1202616, true) > 0)) AND isnotnull(distributionCenters#1202616))
(1638) Project
Output [1]: [distributionCenters#1202616]
Input [2]: [marketUnit#1202610, distributionCenters#1202616]
(1639) Exchange
Input [1]: [distributionCenters#1202616]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841728]
(1640) Generate
Input [1]: [distributionCenters#1202616]
Arguments: explode(distributionCenters#1202616), false, [distributionCenters#1202632]
(1641) Filter
Input [1]: [distributionCenters#1202632]
Condition : (((size(distributionCenters#1202632.storageLocations, true) > 0) AND isnotnull(distributionCenters#1202632.storageLocations)) AND isnotnull(distributionCenters#1202632.internalRefUUID))
(1642) Project
Output [2]: [distributionCenters#1202632.internalRefUUID AS _extract_internalRefUUID#1204332, distributionCenters#1202632.storageLocations AS _extract_storageLocations#1204333]
Input [1]: [distributionCenters#1202632]
(1643) Generate
Input [2]: [_extract_internalRefUUID#1204332, _extract_storageLocations#1204333]
Arguments: explode(_extract_storageLocations#1204333), [_extract_internalRefUUID#1204332], false, [storageLocations#1202633]
(1644) Project
Output [3]: [_extract_internalRefUUID#1204332 AS plantUuid#1202635, storageLocations#1202633.id AS storageLocId#1202636, storageLocations#1202633.internalRefUUID AS storageLocUuid#1202637]
Input [2]: [_extract_internalRefUUID#1204332, storageLocations#1202633]
(1645) BroadcastExchange
Input [3]: [plantUuid#1202635, storageLocId#1202636, storageLocUuid#1202637]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842780]
(1646) Scan parquet
Output [2]: [product#1202638, plant#1202639]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1647) Filter
Input [2]: [product#1202638, plant#1202639]
Condition : isnotnull(plant#1202639)
(1648) Exchange
Input [2]: [product#1202638, plant#1202639]
Arguments: hashpartitioning(product#1202638, plant#1202639, 37), REPARTITION_BY_NUM, [plan_id=1842238]
(1649) Scan parquet
Output [4]: [plant#1202644, product#1202645, productionAspect#1202647, systemId#1202642]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1650) Project
Output [4]: [plant#1202644.internalRefUUID AS _extract_internalRefUUID#1204676, product#1202645.internalRefUUID AS _extract_internalRefUUID#1204673, productionAspect#1202647.productMovementPlants.unitOfIssue.code AS _extract_code#1204674, productionAspect#1202647.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204675]
Input [4]: [plant#1202644, product#1202645, productionAspect#1202647, systemId#1202642]
(1651) Exchange
Input [4]: [_extract_internalRefUUID#1204676, _extract_internalRefUUID#1204673, _extract_code#1204674, _extract_internalRefUUID#1204675]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841740]
(1652) Project
Output [4]: [_extract_code#1204674, _extract_internalRefUUID#1204675, _extract_internalRefUUID#1204673, _extract_internalRefUUID#1204676]
Input [4]: [_extract_internalRefUUID#1204676, _extract_internalRefUUID#1204673, _extract_code#1204674, _extract_internalRefUUID#1204675]
(1653) BroadcastExchange
Input [4]: [_extract_code#1204674, _extract_internalRefUUID#1204675, _extract_internalRefUUID#1204673, _extract_internalRefUUID#1204676]
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=1842760]
(1654) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202638, ), isnull(product#1202638), coalesce(plant#1202639, ), isnull(plant#1202639)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204673, ), isnull(_extract_internalRefUUID#1204673), coalesce(_extract_internalRefUUID#1204676, ), isnull(_extract_internalRefUUID#1204676)]
Join type: LeftOuter
Join condition: None
(1655) Project
Output [4]: [product#1202638, plant#1202639, _extract_code#1204674, _extract_internalRefUUID#1204675]
Input [6]: [product#1202638, plant#1202639, _extract_code#1204674, _extract_internalRefUUID#1204675, _extract_internalRefUUID#1204673, _extract_internalRefUUID#1204676]
(1656) Scan parquet
Output [2]: [internalUUID#1202652, systemId#1202651]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1657) Project
Output [1]: [internalUUID#1202652]
Input [2]: [internalUUID#1202652, systemId#1202651]
(1658) Exchange
Input [1]: [internalUUID#1202652]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841746]
(1659) BroadcastExchange
Input [1]: [internalUUID#1202652]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842764]
(1660) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202639, ), isnull(plant#1202639)]
Right keys [2]: [coalesce(internalUUID#1202652, ), isnull(internalUUID#1202652)]
Join type: LeftOuter
Join condition: None
(1661) Project
Output [4]: [product#1202638, plant#1202639, _extract_code#1204674, _extract_internalRefUUID#1204675]
Input [5]: [product#1202638, plant#1202639, _extract_code#1204674, _extract_internalRefUUID#1204675, internalUUID#1202652]
(1662) Scan parquet
Output [4]: [internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672, systemId#1202665]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1663) Filter
Input [4]: [internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672, systemId#1202665]
Condition : isnotnull(internalUUID#1202666)
(1664) Project
Output [3]: [internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672]
Input [4]: [internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672, systemId#1202665]
(1665) Exchange
Input [3]: [internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841752]
(1666) BroadcastExchange
Input [3]: [internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842768]
(1667) BroadcastHashJoin
Left keys [1]: [product#1202638]
Right keys [1]: [internalUUID#1202666]
Join type: LeftOuter
Join condition: None
(1668) Project
Output [2]: [plant#1202639, filter(unitOfMeasureConversions#1202672, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204674) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204675)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202670.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202670.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202677]
Input [7]: [product#1202638, plant#1202639, _extract_code#1204674, _extract_internalRefUUID#1204675, internalUUID#1202666, baseUnitOfMeasure#1202670, unitOfMeasureConversions#1202672]
(1669) Generate
Input [2]: [plant#1202639, filteredUnitOfMeasureConversions#1202677]
Arguments: explode(filteredUnitOfMeasureConversions#1202677.quantityNumerator), [plant#1202639, filteredUnitOfMeasureConversions#1202677], true, [quantityNumerator#1202678]
(1670) Project
Output [2]: [plant#1202639, filteredUnitOfMeasureConversions#1202677.quantityDenominator AS _extract_quantityDenominator#1204334]
Input [3]: [plant#1202639, filteredUnitOfMeasureConversions#1202677, quantityNumerator#1202678]
(1671) Generate
Input [2]: [plant#1202639, _extract_quantityDenominator#1204334]
Arguments: explode(_extract_quantityDenominator#1204334), [plant#1202639], true, [quantityDenominator#1202679]
(1672) Project
Output [1]: [plant#1202639]
Input [2]: [plant#1202639, quantityDenominator#1202679]
(1673) HashAggregate
Input [1]: [plant#1202639]
Keys [1]: [plant#1202639]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202639]
(1674) Exchange
Input [1]: [plant#1202639]
Arguments: hashpartitioning(plant#1202639, 37), ENSURE_REQUIREMENTS, [plan_id=1842777]
(1675) HashAggregate
Input [1]: [plant#1202639]
Keys [1]: [plant#1202639]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202639]
(1676) BroadcastHashJoin
Left keys [1]: [plantUuid#1202635]
Right keys [1]: [plant#1202639]
Join type: Inner
Join condition: None
(1677) Project
Output [3]: [plantUuid#1202635, storageLocId#1202636, storageLocUuid#1202637]
Input [4]: [plantUuid#1202635, storageLocId#1202636, storageLocUuid#1202637, plant#1202639]
(1678) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202607.internalRefUUID, ), isnull(plant#1202607.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1202635, ), isnull(plantUuid#1202635)]
Join type: Inner
Join condition: None
(1679) Generate
Input [9]: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609, plantUuid#1202635, storageLocId#1202636, storageLocUuid#1202637]
Arguments: explode(filter(stockQuantities#1202609, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202637) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202636)), lambda x#1200047, false))), [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, plantUuid#1202635], false, [stockQuantity#1202682]
(1680) ObjectHashAggregate
Input [7]: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, plantUuid#1202635, stockQuantity#1202682]
Keys [5]: [plantUuid#1202635, internalUUID#1202605, plant#1202607, product#1202606, systemId#1202604]
Functions [2]: [partial_first(calculationDateTime#1202608, false), partial_collect_list(stockQuantity#1202682, 0, 0)]
Aggregate Attributes [3]: [first#1205434, valueSet#1205435, buf#1205436]
Results [8]: [plantUuid#1202635, internalUUID#1202605, plant#1202607, product#1202606, systemId#1202604, first#1205437, valueSet#1205438, buf#1205439]
(1681) ObjectHashAggregate
Input [8]: [plantUuid#1202635, internalUUID#1202605, plant#1202607, product#1202606, systemId#1202604, first#1205437, valueSet#1205438, buf#1205439]
Keys [5]: [plantUuid#1202635, internalUUID#1202605, plant#1202607, product#1202606, systemId#1202604]
Functions [2]: [first(calculationDateTime#1202608, false), collect_list(stockQuantity#1202682, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1202608)()#1200062, collect_list(stockQuantity#1202682, 0, 0)#1200063]
Results [4]: [product#1202606, plant#1202607, first(calculationDateTime#1202608)()#1200062 AS calculationDateTime#1202683, collect_list(stockQuantity#1202682, 0, 0)#1200063 AS stockQuantities#1202684]
(1682) Filter
Input [4]: [product#1202606, plant#1202607, calculationDateTime#1202683, stockQuantities#1202684]
Condition : ((size(stockQuantities#1202684, true) > 0) AND isnotnull(calculationDateTime#1202683))
(1683) Generate
Input [4]: [product#1202606, plant#1202607, calculationDateTime#1202683, stockQuantities#1202684]
Arguments: explode(stockQuantities#1202684), [product#1202606, plant#1202607, calculationDateTime#1202683], false, [stockQuantity#1202685]
(1684) Filter
Input [4]: [product#1202606, plant#1202607, calculationDateTime#1202683, stockQuantity#1202685]
Condition : (((isnotnull(stockQuantity#1202685.specialStockIndicator.code) AND isnotnull(stockQuantity#1202685.stockType.code)) AND (stockQuantity#1202685.specialStockIndicator.code = )) AND (stockQuantity#1202685.stockType.code = 01))
(1685) Project
Output [4]: [plant#1202607.internalRefUUID AS plantUuid#1202687, product#1202606.internalRefUUID AS productUuid#1202689, calculationDateTime#1202683, stockQuantity#1202685.storagelocation.id AS storageLocId#1202690]
Input [4]: [product#1202606, plant#1202607, calculationDateTime#1202683, stockQuantity#1202685]
(1686) Exchange
Input [4]: [plantUuid#1202687, productUuid#1202689, calculationDateTime#1202683, storageLocId#1202690]
Arguments: hashpartitioning(productUuid#1202689, plantUuid#1202687, 37), ENSURE_REQUIREMENTS, [plan_id=1842810]
(1687) Sort
Input [4]: [plantUuid#1202687, productUuid#1202689, calculationDateTime#1202683, storageLocId#1202690]
Arguments: [productUuid#1202689 ASC NULLS FIRST, plantUuid#1202687 ASC NULLS FIRST], false, 0
(1688) Scan parquet
Output [3]: [product#1202695, plant#1202696, orderDateTime#1202697]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1689) Filter
Input [3]: [product#1202695, plant#1202696, orderDateTime#1202697]
Condition : ((isnotnull(orderDateTime#1202697) AND isnotnull(plant#1202696)) AND isnotnull(product#1202695))
(1690) Exchange
Input [3]: [product#1202695, plant#1202696, orderDateTime#1202697]
Arguments: hashpartitioning(product#1202695, plant#1202696, 37), REPARTITION_BY_NUM, [plan_id=1842261]
(1691) Scan parquet
Output [4]: [plant#1202701, product#1202702, productionAspect#1202704, systemId#1202699]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1692) Project
Output [4]: [plant#1202701.internalRefUUID AS _extract_internalRefUUID#1204677, product#1202702.internalRefUUID AS _extract_internalRefUUID#1204680, productionAspect#1202704.productMovementPlants.unitOfIssue.code AS _extract_code#1204678, productionAspect#1202704.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204679]
Input [4]: [plant#1202701, product#1202702, productionAspect#1202704, systemId#1202699]
(1693) Exchange
Input [4]: [_extract_internalRefUUID#1204677, _extract_internalRefUUID#1204680, _extract_code#1204678, _extract_internalRefUUID#1204679]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841777]
(1694) Project
Output [4]: [_extract_code#1204678, _extract_internalRefUUID#1204679, _extract_internalRefUUID#1204680, _extract_internalRefUUID#1204677]
Input [4]: [_extract_internalRefUUID#1204677, _extract_internalRefUUID#1204680, _extract_code#1204678, _extract_internalRefUUID#1204679]
(1695) BroadcastExchange
Input [4]: [_extract_code#1204678, _extract_internalRefUUID#1204679, _extract_internalRefUUID#1204680, _extract_internalRefUUID#1204677]
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=1842793]
(1696) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202695, ), isnull(product#1202695), coalesce(plant#1202696, ), isnull(plant#1202696)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204680, ), isnull(_extract_internalRefUUID#1204680), coalesce(_extract_internalRefUUID#1204677, ), isnull(_extract_internalRefUUID#1204677)]
Join type: LeftOuter
Join condition: None
(1697) Project
Output [5]: [product#1202695, plant#1202696, orderDateTime#1202697, _extract_code#1204678, _extract_internalRefUUID#1204679]
Input [7]: [product#1202695, plant#1202696, orderDateTime#1202697, _extract_code#1204678, _extract_internalRefUUID#1204679, _extract_internalRefUUID#1204680, _extract_internalRefUUID#1204677]
(1698) Scan parquet
Output [2]: [internalUUID#1202709, systemId#1202708]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1699) Project
Output [1]: [internalUUID#1202709]
Input [2]: [internalUUID#1202709, systemId#1202708]
(1700) Exchange
Input [1]: [internalUUID#1202709]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841783]
(1701) BroadcastExchange
Input [1]: [internalUUID#1202709]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842797]
(1702) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202696, ), isnull(plant#1202696)]
Right keys [2]: [coalesce(internalUUID#1202709, ), isnull(internalUUID#1202709)]
Join type: LeftOuter
Join condition: None
(1703) Project
Output [5]: [product#1202695, plant#1202696, orderDateTime#1202697, _extract_code#1204678, _extract_internalRefUUID#1204679]
Input [6]: [product#1202695, plant#1202696, orderDateTime#1202697, _extract_code#1204678, _extract_internalRefUUID#1204679, internalUUID#1202709]
(1704) Scan parquet
Output [4]: [internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729, systemId#1202722]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1705) Filter
Input [4]: [internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729, systemId#1202722]
Condition : isnotnull(internalUUID#1202723)
(1706) Project
Output [3]: [internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729]
Input [4]: [internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729, systemId#1202722]
(1707) Exchange
Input [3]: [internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841789]
(1708) BroadcastExchange
Input [3]: [internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842801]
(1709) BroadcastHashJoin
Left keys [1]: [product#1202695]
Right keys [1]: [internalUUID#1202723]
Join type: LeftOuter
Join condition: None
(1710) Project
Output [4]: [product#1202695, plant#1202696, orderDateTime#1202697, filter(unitOfMeasureConversions#1202729, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204678) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204679)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202727.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202727.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202734]
Input [8]: [product#1202695, plant#1202696, orderDateTime#1202697, _extract_code#1204678, _extract_internalRefUUID#1204679, internalUUID#1202723, baseUnitOfMeasure#1202727, unitOfMeasureConversions#1202729]
(1711) Generate
Input [4]: [product#1202695, plant#1202696, orderDateTime#1202697, filteredUnitOfMeasureConversions#1202734]
Arguments: explode(filteredUnitOfMeasureConversions#1202734.quantityNumerator), [product#1202695, plant#1202696, orderDateTime#1202697, filteredUnitOfMeasureConversions#1202734], true, [quantityNumerator#1202735]
(1712) Project
Output [4]: [product#1202695, plant#1202696, orderDateTime#1202697, filteredUnitOfMeasureConversions#1202734.quantityDenominator AS _extract_quantityDenominator#1204338]
Input [5]: [product#1202695, plant#1202696, orderDateTime#1202697, filteredUnitOfMeasureConversions#1202734, quantityNumerator#1202735]
(1713) Generate
Input [4]: [product#1202695, plant#1202696, orderDateTime#1202697, _extract_quantityDenominator#1204338]
Arguments: explode(_extract_quantityDenominator#1204338), [product#1202695, plant#1202696, orderDateTime#1202697], true, [quantityDenominator#1202736]
(1714) Project
Output [3]: [product#1202695, plant#1202696, orderDateTime#1202697]
Input [4]: [product#1202695, plant#1202696, orderDateTime#1202697, quantityDenominator#1202736]
(1715) Sort
Input [3]: [product#1202695, plant#1202696, orderDateTime#1202697]
Arguments: [product#1202695 ASC NULLS FIRST, plant#1202696 ASC NULLS FIRST], false, 0
(1716) SortMergeJoin
Left keys [2]: [productUuid#1202689, plantUuid#1202687]
Right keys [2]: [product#1202695, plant#1202696]
Join type: Inner
Join condition: (calculationDateTime#1202683 <= orderDateTime#1202697)
(1717) Project
Output [4]: [plantUuid#1202687 AS plant#1202739, productUuid#1202689 AS product#1202740, storageLocId#1202690, calculationDateTime#1202683]
Input [7]: [plantUuid#1202687, productUuid#1202689, calculationDateTime#1202683, storageLocId#1202690, product#1202695, plant#1202696, orderDateTime#1202697]
(1718) HashAggregate
Input [4]: [plant#1202739, product#1202740, storageLocId#1202690, calculationDateTime#1202683]
Keys [3]: [plant#1202739, product#1202740, storageLocId#1202690]
Functions [1]: [partial_max(calculationDateTime#1202683)]
Aggregate Attributes [1]: [max#1205432]
Results [4]: [plant#1202739, product#1202740, storageLocId#1202690, max#1205433]
(1719) HashAggregate
Input [4]: [plant#1202739, product#1202740, storageLocId#1202690, max#1205433]
Keys [3]: [plant#1202739, product#1202740, storageLocId#1202690]
Functions [1]: [max(calculationDateTime#1202683)]
Aggregate Attributes [1]: [max(calculationDateTime#1202683)#1200140]
Results [4]: [plant#1202739, product#1202740, storageLocId#1202690, max(calculationDateTime#1202683)#1200140 AS max_calc_datetime#1202741]
(1720) Exchange
Input [4]: [plant#1202739, product#1202740, storageLocId#1202690, max_calc_datetime#1202741]
Arguments: hashpartitioning(coalesce(plant#1202739, ), isnull(plant#1202739), coalesce(product#1202740, ), isnull(product#1202740), coalesce(storageLocId#1202690, ), isnull(storageLocId#1202690), coalesce(max_calc_datetime#1202741, 1970-01-01 00:00:00), isnull(max_calc_datetime#1202741), 37), ENSURE_REQUIREMENTS, [plan_id=1842820]
(1721) Sort
Input [4]: [plant#1202739, product#1202740, storageLocId#1202690, max_calc_datetime#1202741]
Arguments: [coalesce(plant#1202739, ) ASC NULLS FIRST, isnull(plant#1202739) ASC NULLS FIRST, coalesce(product#1202740, ) ASC NULLS FIRST, isnull(product#1202740) ASC NULLS FIRST, coalesce(storageLocId#1202690, ) ASC NULLS FIRST, isnull(storageLocId#1202690) ASC NULLS FIRST, coalesce(max_calc_datetime#1202741, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1202741) ASC NULLS FIRST], false, 0
(1722) SortMergeJoin
Left keys [8]: [coalesce(plant#1202602, ), isnull(plant#1202602), coalesce(product#1202603, ), isnull(product#1202603), coalesce(storageLocId#1202553, ), isnull(storageLocId#1202553), coalesce(calculationDateTime#1202546, 1970-01-01 00:00:00), isnull(calculationDateTime#1202546)]
Right keys [8]: [coalesce(plant#1202739, ), isnull(plant#1202739), coalesce(product#1202740, ), isnull(product#1202740), coalesce(storageLocId#1202690, ), isnull(storageLocId#1202690), coalesce(max_calc_datetime#1202741, 1970-01-01 00:00:00), isnull(max_calc_datetime#1202741)]
Join type: Inner
Join condition: None
(1723) Project
Output [3]: [plant#1202602, product#1202603, calculationDateTime#1202546]
Input [8]: [plant#1202602, product#1202603, storageLocId#1202553, calculationDateTime#1202546, plant#1202739, product#1202740, storageLocId#1202690, max_calc_datetime#1202741]
(1724) HashAggregate
Input [3]: [plant#1202602, product#1202603, calculationDateTime#1202546]
Keys [2]: [product#1202603, plant#1202602]
Functions [1]: [partial_min(calculationDateTime#1202546)]
Aggregate Attributes [1]: [min#1205424]
Results [3]: [product#1202603, plant#1202602, min#1205425]
(1725) Exchange
Input [3]: [product#1202603, plant#1202602, min#1205425]
Arguments: hashpartitioning(product#1202603, plant#1202602, 37), ENSURE_REQUIREMENTS, [plan_id=1842827]
(1726) HashAggregate
Input [3]: [product#1202603, plant#1202602, min#1205425]
Keys [2]: [product#1202603, plant#1202602]
Functions [1]: [min(calculationDateTime#1202546)]
Aggregate Attributes [1]: [min(calculationDateTime#1202546)#1200296]
Results [3]: [product#1202603, plant#1202602, min(calculationDateTime#1202546)#1200296 AS minCalculationDateTime#1202743]
(1727) Sort
Input [3]: [product#1202603, plant#1202602, minCalculationDateTime#1202743]
Arguments: [product#1202603 ASC NULLS FIRST, plant#1202602 ASC NULLS FIRST], false, 0
(1728) SortMergeJoin
Left keys [2]: [product#1202423, plant#1202424]
Right keys [2]: [product#1202603, plant#1202602]
Join type: LeftOuter
Join condition: None
(1729) Project
Output [3]: [product#1202423, plant#1202424, CASE WHEN isnotnull(minCalculationDateTime#1202743) THEN minCalculationDateTime#1202743 ELSE orderDateTime#1202425 END AS stockDatetime#1202745]
Input [6]: [product#1202423, plant#1202424, orderDateTime#1202425, product#1202603, plant#1202602, minCalculationDateTime#1202743]
(1730) Exchange
Input [3]: [product#1202423, plant#1202424, stockDatetime#1202745]
Arguments: hashpartitioning(coalesce(plant#1202424, ), isnull(plant#1202424), coalesce(product#1202423, ), isnull(product#1202423), 37), ENSURE_REQUIREMENTS, [plan_id=1842991]
(1731) Sort
Input [3]: [product#1202423, plant#1202424, stockDatetime#1202745]
Arguments: [coalesce(plant#1202424, ) ASC NULLS FIRST, isnull(plant#1202424) ASC NULLS FIRST, coalesce(product#1202423, ) ASC NULLS FIRST, isnull(product#1202423) ASC NULLS FIRST], false, 0
(1732) Scan parquet
Output [3]: [product#1202748, plant#1202749, orderDateTime#1202750]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1733) Exchange
Input [3]: [product#1202748, plant#1202749, orderDateTime#1202750]
Arguments: hashpartitioning(product#1202748, plant#1202749, 37), REPARTITION_BY_NUM, [plan_id=1841807]
(1734) Scan parquet
Output [8]: [internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759, systemId#1202752]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1735) Project
Output [8]: [systemId#1202752, internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759]
Input [8]: [internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759, systemId#1202752]
(1736) Exchange
Input [8]: [systemId#1202752, internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841810]
(1737) Project
Output [1]: [struct(systemId, systemId#1202752, internalUUID, internalUUID#1202753, plant, plant#1202754, product, product#1202755, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202756, productionAspect, productionAspect#1202757, salesPlant, salesPlant#1202758, listing, listing#1202759) AS productPlant#1202760]
Input [8]: [systemId#1202752, internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759]
(1738) BroadcastExchange
Input [1]: [productPlant#1202760]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>, false].plant.internalRefUUID)),false), [plan_id=1842835]
(1739) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202748, ), isnull(product#1202748), coalesce(plant#1202749, ), isnull(plant#1202749)]
Right keys [4]: [coalesce(productPlant#1202760.product.internalRefUUID, ), isnull(productPlant#1202760.product.internalRefUUID), coalesce(productPlant#1202760.plant.internalRefUUID, ), isnull(productPlant#1202760.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1740) Scan parquet
Output [3]: [internalUUID#1202762, address#1202768, systemId#1202761]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1741) Project
Output [2]: [internalUUID#1202762, address#1202768.timeZone.code AS timezonecode#1202773]
Input [3]: [internalUUID#1202762, address#1202768, systemId#1202761]
(1742) Exchange
Input [2]: [internalUUID#1202762, timezonecode#1202773]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841815]
(1743) BroadcastExchange
Input [2]: [internalUUID#1202762, timezonecode#1202773]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842838]
(1744) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202749, ), isnull(plant#1202749)]
Right keys [2]: [coalesce(internalUUID#1202762, ), isnull(internalUUID#1202762)]
Join type: LeftOuter
Join condition: None
(1745) Project
Output [5]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, CASE WHEN isnotnull(timezonecode#1202773) THEN timezonecode#1202773 ELSE UTC END AS timezonecode#1202774]
Input [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, internalUUID#1202762, timezonecode#1202773]
(1746) Scan parquet
Output [4]: [internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782, systemId#1202775]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1747) Filter
Input [4]: [internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782, systemId#1202775]
Condition : isnotnull(internalUUID#1202776)
(1748) Project
Output [3]: [internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782]
Input [4]: [internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782, systemId#1202775]
(1749) Exchange
Input [3]: [internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841821]
(1750) BroadcastExchange
Input [3]: [internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842842]
(1751) BroadcastHashJoin
Left keys [1]: [product#1202748]
Right keys [1]: [internalUUID#1202776]
Join type: LeftOuter
Join condition: None
(1752) Project
Output [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, filter(unitOfMeasureConversions#1202782, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202780.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202780.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202787]
Input [8]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, internalUUID#1202776, baseUnitOfMeasure#1202780, unitOfMeasureConversions#1202782]
(1753) Project
Output [7]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, filteredUnitOfMeasureConversions#1202787.quantityDenominator AS _extract_quantityDenominator#1204455, filteredUnitOfMeasureConversions#1202787.quantityNumerator AS _extract_quantityNumerator#1204456]
Input [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, filteredUnitOfMeasureConversions#1202787]
(1754) Generate
Input [7]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, _extract_quantityDenominator#1204455, _extract_quantityNumerator#1204456]
Arguments: explode(_extract_quantityNumerator#1204456), [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, _extract_quantityDenominator#1204455], true, [quantityNumerator#1202788]
(1755) Generate
Input [7]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, _extract_quantityDenominator#1204455, quantityNumerator#1202788]
Arguments: explode(_extract_quantityDenominator#1204455), [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, quantityNumerator#1202788], true, [quantityDenominator#1202789]
(1756) Project
Output [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, (cast(quantityNumerator#1202788 as double) / cast(quantityDenominator#1202789 as double)) AS outboundUnit#1202790]
Input [7]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, quantityNumerator#1202788, quantityDenominator#1202789]
(1757) Project
Output [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, CASE WHEN (isnull(outboundUnit#1202790) OR (outboundUnit#1202790 <= 0.0)) THEN 1.0 ELSE outboundUnit#1202790 END AS outboundUnit#1202791]
Input [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202790]
(1758) Sort
Input [6]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791]
Arguments: [product#1202748 ASC NULLS FIRST, plant#1202749 ASC NULLS FIRST], false, 0
(1759) Scan parquet
Output [6]: [internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797, systemId#1202792]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(1760) Filter
Input [6]: [internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797, systemId#1202792]
Condition : (isnotnull(plant#1202795.internalRefUUID) AND isnotnull(product#1202794.internalRefUUID))
(1761) Project
Output [6]: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797]
Input [6]: [internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797, systemId#1202792]
(1762) Exchange
Input [6]: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841832]
(1763) BroadcastExchange
Input [6]: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797]
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=1842874]
(1764) Scan parquet
Output [2]: [marketUnit#1202798, distributionCenters#1202804]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1765) Filter
Input [2]: [marketUnit#1202798, distributionCenters#1202804]
Condition : (((marketUnit#1202798 <=> Grocery_SS) AND (size(distributionCenters#1202804, true) > 0)) AND isnotnull(distributionCenters#1202804))
(1766) Project
Output [1]: [distributionCenters#1202804]
Input [2]: [marketUnit#1202798, distributionCenters#1202804]
(1767) Exchange
Input [1]: [distributionCenters#1202804]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841836]
(1768) Generate
Input [1]: [distributionCenters#1202804]
Arguments: explode(distributionCenters#1202804), false, [distributionCenters#1202820]
(1769) Filter
Input [1]: [distributionCenters#1202820]
Condition : (((size(distributionCenters#1202820.storageLocations, true) > 0) AND isnotnull(distributionCenters#1202820.storageLocations)) AND isnotnull(distributionCenters#1202820.internalRefUUID))
(1770) Project
Output [2]: [distributionCenters#1202820.internalRefUUID AS _extract_internalRefUUID#1204344, distributionCenters#1202820.storageLocations AS _extract_storageLocations#1204345]
Input [1]: [distributionCenters#1202820]
(1771) Generate
Input [2]: [_extract_internalRefUUID#1204344, _extract_storageLocations#1204345]
Arguments: explode(_extract_storageLocations#1204345), [_extract_internalRefUUID#1204344], false, [storageLocations#1202821]
(1772) Project
Output [3]: [_extract_internalRefUUID#1204344 AS plantUuid#1202823, storageLocations#1202821.id AS storageLocId#1202824, storageLocations#1202821.internalRefUUID AS storageLocUuid#1202825]
Input [2]: [_extract_internalRefUUID#1204344, storageLocations#1202821]
(1773) BroadcastExchange
Input [3]: [plantUuid#1202823, storageLocId#1202824, storageLocUuid#1202825]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842870]
(1774) Scan parquet
Output [2]: [product#1202826, plant#1202827]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1775) Filter
Input [2]: [product#1202826, plant#1202827]
Condition : isnotnull(plant#1202827)
(1776) Exchange
Input [2]: [product#1202826, plant#1202827]
Arguments: hashpartitioning(product#1202826, plant#1202827, 37), REPARTITION_BY_NUM, [plan_id=1842282]
(1777) Scan parquet
Output [4]: [plant#1202832, product#1202833, productionAspect#1202835, systemId#1202830]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1778) Project
Output [4]: [plant#1202832.internalRefUUID AS _extract_internalRefUUID#1204683, product#1202833.internalRefUUID AS _extract_internalRefUUID#1204684, productionAspect#1202835.productMovementPlants.unitOfIssue.code AS _extract_code#1204681, productionAspect#1202835.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204682]
Input [4]: [plant#1202832, product#1202833, productionAspect#1202835, systemId#1202830]
(1779) Exchange
Input [4]: [_extract_internalRefUUID#1204683, _extract_internalRefUUID#1204684, _extract_code#1204681, _extract_internalRefUUID#1204682]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841848]
(1780) Project
Output [4]: [_extract_code#1204681, _extract_internalRefUUID#1204682, _extract_internalRefUUID#1204684, _extract_internalRefUUID#1204683]
Input [4]: [_extract_internalRefUUID#1204683, _extract_internalRefUUID#1204684, _extract_code#1204681, _extract_internalRefUUID#1204682]
(1781) BroadcastExchange
Input [4]: [_extract_code#1204681, _extract_internalRefUUID#1204682, _extract_internalRefUUID#1204684, _extract_internalRefUUID#1204683]
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=1842850]
(1782) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202826, ), isnull(product#1202826), coalesce(plant#1202827, ), isnull(plant#1202827)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204684, ), isnull(_extract_internalRefUUID#1204684), coalesce(_extract_internalRefUUID#1204683, ), isnull(_extract_internalRefUUID#1204683)]
Join type: LeftOuter
Join condition: None
(1783) Project
Output [4]: [product#1202826, plant#1202827, _extract_code#1204681, _extract_internalRefUUID#1204682]
Input [6]: [product#1202826, plant#1202827, _extract_code#1204681, _extract_internalRefUUID#1204682, _extract_internalRefUUID#1204684, _extract_internalRefUUID#1204683]
(1784) Scan parquet
Output [2]: [internalUUID#1202840, systemId#1202839]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1785) Project
Output [1]: [internalUUID#1202840]
Input [2]: [internalUUID#1202840, systemId#1202839]
(1786) Exchange
Input [1]: [internalUUID#1202840]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841854]
(1787) BroadcastExchange
Input [1]: [internalUUID#1202840]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842854]
(1788) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202827, ), isnull(plant#1202827)]
Right keys [2]: [coalesce(internalUUID#1202840, ), isnull(internalUUID#1202840)]
Join type: LeftOuter
Join condition: None
(1789) Project
Output [4]: [product#1202826, plant#1202827, _extract_code#1204681, _extract_internalRefUUID#1204682]
Input [5]: [product#1202826, plant#1202827, _extract_code#1204681, _extract_internalRefUUID#1204682, internalUUID#1202840]
(1790) Scan parquet
Output [4]: [internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860, systemId#1202853]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1791) Filter
Input [4]: [internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860, systemId#1202853]
Condition : isnotnull(internalUUID#1202854)
(1792) Project
Output [3]: [internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860]
Input [4]: [internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860, systemId#1202853]
(1793) Exchange
Input [3]: [internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841860]
(1794) BroadcastExchange
Input [3]: [internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842858]
(1795) BroadcastHashJoin
Left keys [1]: [product#1202826]
Right keys [1]: [internalUUID#1202854]
Join type: LeftOuter
Join condition: None
(1796) Project
Output [2]: [plant#1202827, filter(unitOfMeasureConversions#1202860, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204681) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204682)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202858.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202858.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202865]
Input [7]: [product#1202826, plant#1202827, _extract_code#1204681, _extract_internalRefUUID#1204682, internalUUID#1202854, baseUnitOfMeasure#1202858, unitOfMeasureConversions#1202860]
(1797) Generate
Input [2]: [plant#1202827, filteredUnitOfMeasureConversions#1202865]
Arguments: explode(filteredUnitOfMeasureConversions#1202865.quantityNumerator), [plant#1202827, filteredUnitOfMeasureConversions#1202865], true, [quantityNumerator#1202866]
(1798) Project
Output [2]: [plant#1202827, filteredUnitOfMeasureConversions#1202865.quantityDenominator AS _extract_quantityDenominator#1204346]
Input [3]: [plant#1202827, filteredUnitOfMeasureConversions#1202865, quantityNumerator#1202866]
(1799) Generate
Input [2]: [plant#1202827, _extract_quantityDenominator#1204346]
Arguments: explode(_extract_quantityDenominator#1204346), [plant#1202827], true, [quantityDenominator#1202867]
(1800) Project
Output [1]: [plant#1202827]
Input [2]: [plant#1202827, quantityDenominator#1202867]
(1801) HashAggregate
Input [1]: [plant#1202827]
Keys [1]: [plant#1202827]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202827]
(1802) Exchange
Input [1]: [plant#1202827]
Arguments: hashpartitioning(plant#1202827, 37), ENSURE_REQUIREMENTS, [plan_id=1842867]
(1803) HashAggregate
Input [1]: [plant#1202827]
Keys [1]: [plant#1202827]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202827]
(1804) BroadcastHashJoin
Left keys [1]: [plantUuid#1202823]
Right keys [1]: [plant#1202827]
Join type: Inner
Join condition: None
(1805) Project
Output [3]: [plantUuid#1202823, storageLocId#1202824, storageLocUuid#1202825]
Input [4]: [plantUuid#1202823, storageLocId#1202824, storageLocUuid#1202825, plant#1202827]
(1806) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202795.internalRefUUID, ), isnull(plant#1202795.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1202823, ), isnull(plantUuid#1202823)]
Join type: Inner
Join condition: None
(1807) Generate
Input [9]: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797, plantUuid#1202823, storageLocId#1202824, storageLocUuid#1202825]
Arguments: explode(filter(stockQuantities#1202797, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202825) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202824)), lambda x#1200047, false))), [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, plantUuid#1202823], false, [stockQuantity#1202870]
(1808) ObjectHashAggregate
Input [7]: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, plantUuid#1202823, stockQuantity#1202870]
Keys [5]: [plantUuid#1202823, internalUUID#1202793, plant#1202795, product#1202794, systemId#1202792]
Functions [2]: [partial_first(calculationDateTime#1202796, false), partial_collect_list(stockQuantity#1202870, 0, 0)]
Aggregate Attributes [3]: [first#1205448, valueSet#1205449, buf#1205450]
Results [8]: [plantUuid#1202823, internalUUID#1202793, plant#1202795, product#1202794, systemId#1202792, first#1205451, valueSet#1205452, buf#1205453]
(1809) ObjectHashAggregate
Input [8]: [plantUuid#1202823, internalUUID#1202793, plant#1202795, product#1202794, systemId#1202792, first#1205451, valueSet#1205452, buf#1205453]
Keys [5]: [plantUuid#1202823, internalUUID#1202793, plant#1202795, product#1202794, systemId#1202792]
Functions [2]: [first(calculationDateTime#1202796, false), collect_list(stockQuantity#1202870, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1202796)()#1200062, collect_list(stockQuantity#1202870, 0, 0)#1200063]
Results [4]: [product#1202794, plant#1202795, first(calculationDateTime#1202796)()#1200062 AS calculationDateTime#1202871, collect_list(stockQuantity#1202870, 0, 0)#1200063 AS stockQuantities#1202872]
(1810) Filter
Input [4]: [product#1202794, plant#1202795, calculationDateTime#1202871, stockQuantities#1202872]
Condition : ((size(stockQuantities#1202872, true) > 0) AND isnotnull(calculationDateTime#1202871))
(1811) Generate
Input [4]: [product#1202794, plant#1202795, calculationDateTime#1202871, stockQuantities#1202872]
Arguments: explode(stockQuantities#1202872), [product#1202794, plant#1202795, calculationDateTime#1202871], false, [stockQuantity#1202873]
(1812) Filter
Input [4]: [product#1202794, plant#1202795, calculationDateTime#1202871, stockQuantity#1202873]
Condition : (((isnotnull(stockQuantity#1202873.specialStockIndicator.code) AND isnotnull(stockQuantity#1202873.stockType.code)) AND (stockQuantity#1202873.specialStockIndicator.code = )) AND (stockQuantity#1202873.stockType.code = 01))
(1813) Project
Output [5]: [plant#1202795.internalRefUUID AS plantUuid#1202875, product#1202794.internalRefUUID AS productUuid#1202877, calculationDateTime#1202871, stockQuantity#1202873.storagelocation.id AS storageLocId#1202878, stockQuantity#1202873.quantity.measure AS quantity#1202880]
Input [4]: [product#1202794, plant#1202795, calculationDateTime#1202871, stockQuantity#1202873]
(1814) Exchange
Input [5]: [plantUuid#1202875, productUuid#1202877, calculationDateTime#1202871, storageLocId#1202878, quantity#1202880]
Arguments: hashpartitioning(productUuid#1202877, plantUuid#1202875, 37), ENSURE_REQUIREMENTS, [plan_id=1842900]
(1815) Sort
Input [5]: [plantUuid#1202875, productUuid#1202877, calculationDateTime#1202871, storageLocId#1202878, quantity#1202880]
Arguments: [productUuid#1202877 ASC NULLS FIRST, plantUuid#1202875 ASC NULLS FIRST], false, 0
(1816) Scan parquet
Output [3]: [product#1202883, plant#1202884, orderDateTime#1202885]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1817) Filter
Input [3]: [product#1202883, plant#1202884, orderDateTime#1202885]
Condition : ((isnotnull(orderDateTime#1202885) AND isnotnull(plant#1202884)) AND isnotnull(product#1202883))
(1818) Exchange
Input [3]: [product#1202883, plant#1202884, orderDateTime#1202885]
Arguments: hashpartitioning(product#1202883, plant#1202884, 37), REPARTITION_BY_NUM, [plan_id=1842305]
(1819) Scan parquet
Output [4]: [plant#1202889, product#1202890, productionAspect#1202892, systemId#1202887]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1820) Project
Output [4]: [plant#1202889.internalRefUUID AS _extract_internalRefUUID#1204685, product#1202890.internalRefUUID AS _extract_internalRefUUID#1204688, productionAspect#1202892.productMovementPlants.unitOfIssue.code AS _extract_code#1204686, productionAspect#1202892.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204687]
Input [4]: [plant#1202889, product#1202890, productionAspect#1202892, systemId#1202887]
(1821) Exchange
Input [4]: [_extract_internalRefUUID#1204685, _extract_internalRefUUID#1204688, _extract_code#1204686, _extract_internalRefUUID#1204687]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841885]
(1822) Project
Output [4]: [_extract_code#1204686, _extract_internalRefUUID#1204687, _extract_internalRefUUID#1204688, _extract_internalRefUUID#1204685]
Input [4]: [_extract_internalRefUUID#1204685, _extract_internalRefUUID#1204688, _extract_code#1204686, _extract_internalRefUUID#1204687]
(1823) BroadcastExchange
Input [4]: [_extract_code#1204686, _extract_internalRefUUID#1204687, _extract_internalRefUUID#1204688, _extract_internalRefUUID#1204685]
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=1842883]
(1824) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202883, ), isnull(product#1202883), coalesce(plant#1202884, ), isnull(plant#1202884)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204688, ), isnull(_extract_internalRefUUID#1204688), coalesce(_extract_internalRefUUID#1204685, ), isnull(_extract_internalRefUUID#1204685)]
Join type: LeftOuter
Join condition: None
(1825) Project
Output [5]: [product#1202883, plant#1202884, orderDateTime#1202885, _extract_code#1204686, _extract_internalRefUUID#1204687]
Input [7]: [product#1202883, plant#1202884, orderDateTime#1202885, _extract_code#1204686, _extract_internalRefUUID#1204687, _extract_internalRefUUID#1204688, _extract_internalRefUUID#1204685]
(1826) Scan parquet
Output [2]: [internalUUID#1202897, systemId#1202896]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1827) Project
Output [1]: [internalUUID#1202897]
Input [2]: [internalUUID#1202897, systemId#1202896]
(1828) Exchange
Input [1]: [internalUUID#1202897]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841891]
(1829) BroadcastExchange
Input [1]: [internalUUID#1202897]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842887]
(1830) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202884, ), isnull(plant#1202884)]
Right keys [2]: [coalesce(internalUUID#1202897, ), isnull(internalUUID#1202897)]
Join type: LeftOuter
Join condition: None
(1831) Project
Output [5]: [product#1202883, plant#1202884, orderDateTime#1202885, _extract_code#1204686, _extract_internalRefUUID#1204687]
Input [6]: [product#1202883, plant#1202884, orderDateTime#1202885, _extract_code#1204686, _extract_internalRefUUID#1204687, internalUUID#1202897]
(1832) Scan parquet
Output [4]: [internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917, systemId#1202910]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1833) Filter
Input [4]: [internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917, systemId#1202910]
Condition : isnotnull(internalUUID#1202911)
(1834) Project
Output [3]: [internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917]
Input [4]: [internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917, systemId#1202910]
(1835) Exchange
Input [3]: [internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841897]
(1836) BroadcastExchange
Input [3]: [internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842891]
(1837) BroadcastHashJoin
Left keys [1]: [product#1202883]
Right keys [1]: [internalUUID#1202911]
Join type: LeftOuter
Join condition: None
(1838) Project
Output [4]: [product#1202883, plant#1202884, orderDateTime#1202885, filter(unitOfMeasureConversions#1202917, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204686) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204687)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202915.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202915.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202922]
Input [8]: [product#1202883, plant#1202884, orderDateTime#1202885, _extract_code#1204686, _extract_internalRefUUID#1204687, internalUUID#1202911, baseUnitOfMeasure#1202915, unitOfMeasureConversions#1202917]
(1839) Generate
Input [4]: [product#1202883, plant#1202884, orderDateTime#1202885, filteredUnitOfMeasureConversions#1202922]
Arguments: explode(filteredUnitOfMeasureConversions#1202922.quantityNumerator), [product#1202883, plant#1202884, orderDateTime#1202885, filteredUnitOfMeasureConversions#1202922], true, [quantityNumerator#1202923]
(1840) Project
Output [4]: [product#1202883, plant#1202884, orderDateTime#1202885, filteredUnitOfMeasureConversions#1202922.quantityDenominator AS _extract_quantityDenominator#1204350]
Input [5]: [product#1202883, plant#1202884, orderDateTime#1202885, filteredUnitOfMeasureConversions#1202922, quantityNumerator#1202923]
(1841) Generate
Input [4]: [product#1202883, plant#1202884, orderDateTime#1202885, _extract_quantityDenominator#1204350]
Arguments: explode(_extract_quantityDenominator#1204350), [product#1202883, plant#1202884, orderDateTime#1202885], true, [quantityDenominator#1202924]
(1842) Project
Output [3]: [product#1202883, plant#1202884, orderDateTime#1202885]
Input [4]: [product#1202883, plant#1202884, orderDateTime#1202885, quantityDenominator#1202924]
(1843) Sort
Input [3]: [product#1202883, plant#1202884, orderDateTime#1202885]
Arguments: [product#1202883 ASC NULLS FIRST, plant#1202884 ASC NULLS FIRST], false, 0
(1844) SortMergeJoin
Left keys [2]: [productUuid#1202877, plantUuid#1202875]
Right keys [2]: [product#1202883, plant#1202884]
Join type: Inner
Join condition: (calculationDateTime#1202871 <= orderDateTime#1202885)
(1845) Project
Output [5]: [plantUuid#1202875 AS plant#1202927, productUuid#1202877 AS product#1202928, storageLocId#1202878, calculationDateTime#1202871, quantity#1202880]
Input [8]: [plantUuid#1202875, productUuid#1202877, calculationDateTime#1202871, storageLocId#1202878, quantity#1202880, product#1202883, plant#1202884, orderDateTime#1202885]
(1846) Exchange
Input [5]: [plant#1202927, product#1202928, storageLocId#1202878, calculationDateTime#1202871, quantity#1202880]
Arguments: hashpartitioning(coalesce(plant#1202927, ), isnull(plant#1202927), coalesce(product#1202928, ), isnull(product#1202928), coalesce(storageLocId#1202878, ), isnull(storageLocId#1202878), coalesce(calculationDateTime#1202871, 1970-01-01 00:00:00), isnull(calculationDateTime#1202871), 37), ENSURE_REQUIREMENTS, [plan_id=1842964]
(1847) Sort
Input [5]: [plant#1202927, product#1202928, storageLocId#1202878, calculationDateTime#1202871, quantity#1202880]
Arguments: [coalesce(plant#1202927, ) ASC NULLS FIRST, isnull(plant#1202927) ASC NULLS FIRST, coalesce(product#1202928, ) ASC NULLS FIRST, isnull(product#1202928) ASC NULLS FIRST, coalesce(storageLocId#1202878, ) ASC NULLS FIRST, isnull(storageLocId#1202878) ASC NULLS FIRST, coalesce(calculationDateTime#1202871, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1202871) ASC NULLS FIRST], false, 0
(1848) Scan parquet
Output [6]: [internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934, systemId#1202929]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(1849) Filter
Input [6]: [internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934, systemId#1202929]
Condition : (isnotnull(plant#1202932.internalRefUUID) AND isnotnull(product#1202931.internalRefUUID))
(1850) Project
Output [6]: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934]
Input [6]: [internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934, systemId#1202929]
(1851) Exchange
Input [6]: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841909]
(1852) BroadcastExchange
Input [6]: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934]
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=1842929]
(1853) Scan parquet
Output [2]: [marketUnit#1202935, distributionCenters#1202941]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,Grocery_SS), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1854) Filter
Input [2]: [marketUnit#1202935, distributionCenters#1202941]
Condition : (((marketUnit#1202935 <=> Grocery_SS) AND (size(distributionCenters#1202941, true) > 0)) AND isnotnull(distributionCenters#1202941))
(1855) Project
Output [1]: [distributionCenters#1202941]
Input [2]: [marketUnit#1202935, distributionCenters#1202941]
(1856) Exchange
Input [1]: [distributionCenters#1202941]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841913]
(1857) Generate
Input [1]: [distributionCenters#1202941]
Arguments: explode(distributionCenters#1202941), false, [distributionCenters#1202957]
(1858) Filter
Input [1]: [distributionCenters#1202957]
Condition : (((size(distributionCenters#1202957.storageLocations, true) > 0) AND isnotnull(distributionCenters#1202957.storageLocations)) AND isnotnull(distributionCenters#1202957.internalRefUUID))
(1859) Project
Output [2]: [distributionCenters#1202957.internalRefUUID AS _extract_internalRefUUID#1204354, distributionCenters#1202957.storageLocations AS _extract_storageLocations#1204355]
Input [1]: [distributionCenters#1202957]
(1860) Generate
Input [2]: [_extract_internalRefUUID#1204354, _extract_storageLocations#1204355]
Arguments: explode(_extract_storageLocations#1204355), [_extract_internalRefUUID#1204354], false, [storageLocations#1202958]
(1861) Project
Output [3]: [_extract_internalRefUUID#1204354 AS plantUuid#1202960, storageLocations#1202958.id AS storageLocId#1202961, storageLocations#1202958.internalRefUUID AS storageLocUuid#1202962]
Input [2]: [_extract_internalRefUUID#1204354, storageLocations#1202958]
(1862) BroadcastExchange
Input [3]: [plantUuid#1202960, storageLocId#1202961, storageLocUuid#1202962]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842925]
(1863) Scan parquet
Output [2]: [product#1202963, plant#1202964]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1864) Filter
Input [2]: [product#1202963, plant#1202964]
Condition : isnotnull(plant#1202964)
(1865) Exchange
Input [2]: [product#1202963, plant#1202964]
Arguments: hashpartitioning(product#1202963, plant#1202964, 37), REPARTITION_BY_NUM, [plan_id=1842318]
(1866) Scan parquet
Output [4]: [plant#1202969, product#1202970, productionAspect#1202972, systemId#1202967]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(1867) Project
Output [4]: [plant#1202969.internalRefUUID AS _extract_internalRefUUID#1204691, product#1202970.internalRefUUID AS _extract_internalRefUUID#1204692, productionAspect#1202972.productMovementPlants.unitOfIssue.code AS _extract_code#1204689, productionAspect#1202972.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204690]
Input [4]: [plant#1202969, product#1202970, productionAspect#1202972, systemId#1202967]
(1868) Exchange
Input [4]: [_extract_internalRefUUID#1204691, _extract_internalRefUUID#1204692, _extract_code#1204689, _extract_internalRefUUID#1204690]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841925]
(1869) Project
Output [4]: [_extract_code#1204689, _extract_internalRefUUID#1204690, _extract_internalRefUUID#1204692, _extract_internalRefUUID#1204691]
Input [4]: [_extract_internalRefUUID#1204691, _extract_internalRefUUID#1204692, _extract_code#1204689, _extract_internalRefUUID#1204690]
(1870) BroadcastExchange
Input [4]: [_extract_code#1204689, _extract_internalRefUUID#1204690, _extract_internalRefUUID#1204692, _extract_internalRefUUID#1204691]
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=1842905]
(1871) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202963, ), isnull(product#1202963), coalesce(plant#1202964, ), isnull(plant#1202964)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204692, ), isnull(_extract_internalRefUUID#1204692), coalesce(_extract_internalRefUUID#1204691, ), isnull(_extract_internalRefUUID#1204691)]
Join type: LeftOuter
Join condition: None
(1872) Project
Output [4]: [product#1202963, plant#1202964, _extract_code#1204689, _extract_internalRefUUID#1204690]
Input [6]: [product#1202963, plant#1202964, _extract_code#1204689, _extract_internalRefUUID#1204690, _extract_internalRefUUID#1204692, _extract_internalRefUUID#1204691]
(1873) Scan parquet
Output [2]: [internalUUID#1202977, systemId#1202976]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1874) Project
Output [1]: [internalUUID#1202977]
Input [2]: [internalUUID#1202977, systemId#1202976]
(1875) Exchange
Input [1]: [internalUUID#1202977]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841931]
(1876) BroadcastExchange
Input [1]: [internalUUID#1202977]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842909]
(1877) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202964, ), isnull(plant#1202964)]
Right keys [2]: [coalesce(internalUUID#1202977, ), isnull(internalUUID#1202977)]
Join type: LeftOuter
Join condition: None
(1878) Project
Output [4]: [product#1202963, plant#1202964, _extract_code#1204689, _extract_internalRefUUID#1204690]
Input [5]: [product#1202963, plant#1202964, _extract_code#1204689, _extract_internalRefUUID#1204690, internalUUID#1202977]
(1879) Scan parquet
Output [4]: [internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997, systemId#1202990]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1880) Filter
Input [4]: [internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997, systemId#1202990]
Condition : isnotnull(internalUUID#1202991)
(1881) Project
Output [3]: [internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997]
Input [4]: [internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997, systemId#1202990]
(1882) Exchange
Input [3]: [internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841937]
(1883) BroadcastExchange
Input [3]: [internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842913]
(1884) BroadcastHashJoin
Left keys [1]: [product#1202963]
Right keys [1]: [internalUUID#1202991]
Join type: LeftOuter
Join condition: None
(1885) Project
Output [2]: [plant#1202964, filter(unitOfMeasureConversions#1202997, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204689) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204690)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202995.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202995.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203002]
Input [7]: [product#1202963, plant#1202964, _extract_code#1204689, _extract_internalRefUUID#1204690, internalUUID#1202991, baseUnitOfMeasure#1202995, unitOfMeasureConversions#1202997]
(1886) Generate
Input [2]: [plant#1202964, filteredUnitOfMeasureConversions#1203002]
Arguments: explode(filteredUnitOfMeasureConversions#1203002.quantityNumerator), [plant#1202964, filteredUnitOfMeasureConversions#1203002], true, [quantityNumerator#1203003]
(1887) Project
Output [2]: [plant#1202964, filteredUnitOfMeasureConversions#1203002.quantityDenominator AS _extract_quantityDenominator#1204356]
Input [3]: [plant#1202964, filteredUnitOfMeasureConversions#1203002, quantityNumerator#1203003]
(1888) Generate
Input [2]: [plant#1202964, _extract_quantityDenominator#1204356]
Arguments: explode(_extract_quantityDenominator#1204356), [plant#1202964], true, [quantityDenominator#1203004]
(1889) Project
Output [1]: [plant#1202964]
Input [2]: [plant#1202964, quantityDenominator#1203004]
(1890) HashAggregate
Input [1]: [plant#1202964]
Keys [1]: [plant#1202964]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202964]
(1891) Exchange
Input [1]: [plant#1202964]
Arguments: hashpartitioning(plant#1202964, 37), ENSURE_REQUIREMENTS, [plan_id=1842922]
(1892) HashAggregate
Input [1]: [plant#1202964]
Keys [1]: [plant#1202964]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1202964]
(1893) BroadcastHashJoin
Left keys [1]: [plantUuid#1202960]
Right keys [1]: [plant#1202964]
Join type: Inner
Join condition: None
(1894) Project
Output [3]: [plantUuid#1202960, storageLocId#1202961, storageLocUuid#1202962]
Input [4]: [plantUuid#1202960, storageLocId#1202961, storageLocUuid#1202962, plant#1202964]
(1895) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1202932.internalRefUUID, ), isnull(plant#1202932.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1202960, ), isnull(plantUuid#1202960)]
Join type: Inner
Join condition: None
(1896) Generate
Input [9]: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934, plantUuid#1202960, storageLocId#1202961, storageLocUuid#1202962]
Arguments: explode(filter(stockQuantities#1202934, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202962) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202961)), lambda x#1200047, false))), [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, plantUuid#1202960], false, [stockQuantity#1203007]
(1897) ObjectHashAggregate
Input [7]: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, plantUuid#1202960, stockQuantity#1203007]
Keys [5]: [plantUuid#1202960, internalUUID#1202930, plant#1202932, product#1202931, systemId#1202929]
Functions [2]: [partial_first(calculationDateTime#1202933, false), partial_collect_list(stockQuantity#1203007, 0, 0)]
Aggregate Attributes [3]: [first#1205456, valueSet#1205457, buf#1205458]
Results [8]: [plantUuid#1202960, internalUUID#1202930, plant#1202932, product#1202931, systemId#1202929, first#1205459, valueSet#1205460, buf#1205461]
(1898) ObjectHashAggregate
Input [8]: [plantUuid#1202960, internalUUID#1202930, plant#1202932, product#1202931, systemId#1202929, first#1205459, valueSet#1205460, buf#1205461]
Keys [5]: [plantUuid#1202960, internalUUID#1202930, plant#1202932, product#1202931, systemId#1202929]
Functions [2]: [first(calculationDateTime#1202933, false), collect_list(stockQuantity#1203007, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1202933)()#1200062, collect_list(stockQuantity#1203007, 0, 0)#1200063]
Results [4]: [product#1202931, plant#1202932, first(calculationDateTime#1202933)()#1200062 AS calculationDateTime#1203008, collect_list(stockQuantity#1203007, 0, 0)#1200063 AS stockQuantities#1203009]
(1899) Filter
Input [4]: [product#1202931, plant#1202932, calculationDateTime#1203008, stockQuantities#1203009]
Condition : ((size(stockQuantities#1203009, true) > 0) AND isnotnull(calculationDateTime#1203008))
(1900) Generate
Input [4]: [product#1202931, plant#1202932, calculationDateTime#1203008, stockQuantities#1203009]
Arguments: explode(stockQuantities#1203009), [product#1202931, plant#1202932, calculationDateTime#1203008], false, [stockQuantity#1203010]
(1901) Filter
Input [4]: [product#1202931, plant#1202932, calculationDateTime#1203008, stockQuantity#1203010]
Condition : (((isnotnull(stockQuantity#1203010.specialStockIndicator.code) AND isnotnull(stockQuantity#1203010.stockType.code)) AND (stockQuantity#1203010.specialStockIndicator.code = )) AND (stockQuantity#1203010.stockType.code = 01))
(1902) Project
Output [4]: [plant#1202932.internalRefUUID AS plantUuid#1203012, product#1202931.internalRefUUID AS productUuid#1203014, calculationDateTime#1203008, stockQuantity#1203010.storagelocation.id AS storageLocId#1203015]
Input [4]: [product#1202931, plant#1202932, calculationDateTime#1203008, stockQuantity#1203010]
(1903) Exchange
Input [4]: [plantUuid#1203012, productUuid#1203014, calculationDateTime#1203008, storageLocId#1203015]
Arguments: hashpartitioning(productUuid#1203014, plantUuid#1203012, 37), ENSURE_REQUIREMENTS, [plan_id=1842955]
(1904) Sort
Input [4]: [plantUuid#1203012, productUuid#1203014, calculationDateTime#1203008, storageLocId#1203015]
Arguments: [productUuid#1203014 ASC NULLS FIRST, plantUuid#1203012 ASC NULLS FIRST], false, 0
(1905) Scan parquet
Output [3]: [product#1203020, plant#1203021, orderDateTime#1203022]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001355/shardId=0_1_10000001355]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1906) Filter
Input [3]: [product#1203020, plant#1203021, orderDateTime#1203022]
Condition : ((isnotnull(orderDateTime#1203022) AND isnotnull(plant#1203021)) AND isnotnull(product#1203020))
(1907) Exchange
Input [3]: [product#1203020, plant#1203021, orderDateTime#1203022]
Arguments: hashpartitioning(product#1203020, plant#1203021, 37), REPARTITION_BY_NUM, [plan_id=1842341]
(1908) Scan parquet
Output [4]: [plant#1203026, product#1203027, productionAspect#1203029, systemId#1203024]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>
(1909) Project
Output [4]: [plant#1203026.internalRefUUID AS _extract_internalRefUUID#1204693, product#1203027.internalRefUUID AS _extract_internalRefUUID#1204696, productionAspect#1203029.productMovementPlants.unitOfIssue.code AS _extract_code#1204694, productionAspect#1203029.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1204695]
Input [4]: [plant#1203026, product#1203027, productionAspect#1203029, systemId#1203024]
(1910) Exchange
Input [4]: [_extract_internalRefUUID#1204693, _extract_internalRefUUID#1204696, _extract_code#1204694, _extract_internalRefUUID#1204695]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841962]
(1911) Project
Output [4]: [_extract_code#1204694, _extract_internalRefUUID#1204695, _extract_internalRefUUID#1204696, _extract_internalRefUUID#1204693]
Input [4]: [_extract_internalRefUUID#1204693, _extract_internalRefUUID#1204696, _extract_code#1204694, _extract_internalRefUUID#1204695]
(1912) BroadcastExchange
Input [4]: [_extract_code#1204694, _extract_internalRefUUID#1204695, _extract_internalRefUUID#1204696, _extract_internalRefUUID#1204693]
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=1842938]
(1913) BroadcastHashJoin
Left keys [4]: [coalesce(product#1203020, ), isnull(product#1203020), coalesce(plant#1203021, ), isnull(plant#1203021)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1204696, ), isnull(_extract_internalRefUUID#1204696), coalesce(_extract_internalRefUUID#1204693, ), isnull(_extract_internalRefUUID#1204693)]
Join type: LeftOuter
Join condition: None
(1914) Project
Output [5]: [product#1203020, plant#1203021, orderDateTime#1203022, _extract_code#1204694, _extract_internalRefUUID#1204695]
Input [7]: [product#1203020, plant#1203021, orderDateTime#1203022, _extract_code#1204694, _extract_internalRefUUID#1204695, _extract_internalRefUUID#1204696, _extract_internalRefUUID#1204693]
(1915) Scan parquet
Output [2]: [internalUUID#1203034, systemId#1203033]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(1916) Project
Output [1]: [internalUUID#1203034]
Input [2]: [internalUUID#1203034, systemId#1203033]
(1917) Exchange
Input [1]: [internalUUID#1203034]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841968]
(1918) BroadcastExchange
Input [1]: [internalUUID#1203034]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1842942]
(1919) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1203021, ), isnull(plant#1203021)]
Right keys [2]: [coalesce(internalUUID#1203034, ), isnull(internalUUID#1203034)]
Join type: LeftOuter
Join condition: None
(1920) Project
Output [5]: [product#1203020, plant#1203021, orderDateTime#1203022, _extract_code#1204694, _extract_internalRefUUID#1204695]
Input [6]: [product#1203020, plant#1203021, orderDateTime#1203022, _extract_code#1204694, _extract_internalRefUUID#1204695, internalUUID#1203034]
(1921) Scan parquet
Output [4]: [internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054, systemId#1203047]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>
(1922) Filter
Input [4]: [internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054, systemId#1203047]
Condition : isnotnull(internalUUID#1203048)
(1923) Project
Output [3]: [internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054]
Input [4]: [internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054, systemId#1203047]
(1924) Exchange
Input [3]: [internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1841974]
(1925) BroadcastExchange
Input [3]: [internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1842946]
(1926) BroadcastHashJoin
Left keys [1]: [product#1203020]
Right keys [1]: [internalUUID#1203048]
Join type: LeftOuter
Join condition: None
(1927) Project
Output [4]: [product#1203020, plant#1203021, orderDateTime#1203022, filter(unitOfMeasureConversions#1203054, lambdafunction((((lambda u#1199989.measurementUnit1.code = _extract_code#1204694) AND (lambda u#1199989.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1204695)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203052.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203052.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203059]
Input [8]: [product#1203020, plant#1203021, orderDateTime#1203022, _extract_code#1204694, _extract_internalRefUUID#1204695, internalUUID#1203048, baseUnitOfMeasure#1203052, unitOfMeasureConversions#1203054]
(1928) Generate
Input [4]: [product#1203020, plant#1203021, orderDateTime#1203022, filteredUnitOfMeasureConversions#1203059]
Arguments: explode(filteredUnitOfMeasureConversions#1203059.quantityNumerator), [product#1203020, plant#1203021, orderDateTime#1203022, filteredUnitOfMeasureConversions#1203059], true, [quantityNumerator#1203060]
(1929) Project
Output [4]: [product#1203020, plant#1203021, orderDateTime#1203022, filteredUnitOfMeasureConversions#1203059.quantityDenominator AS _extract_quantityDenominator#1204360]
Input [5]: [product#1203020, plant#1203021, orderDateTime#1203022, filteredUnitOfMeasureConversions#1203059, quantityNumerator#1203060]
(1930) Generate
Input [4]: [product#1203020, plant#1203021, orderDateTime#1203022, _extract_quantityDenominator#1204360]
Arguments: explode(_extract_quantityDenominator#1204360), [product#1203020, plant#1203021, orderDateTime#1203022], true, [quantityDenominator#1203061]
(1931) Project
Output [3]: [product#1203020, plant#1203021, orderDateTime#1203022]
Input [4]: [product#1203020, plant#1203021, orderDateTime#1203022, quantityDenominator#1203061]
(1932) Sort
Input [3]: [product#1203020, plant#1203021, orderDateTime#1203022]
Arguments: [product#1203020 ASC NULLS FIRST, plant#1203021 ASC NULLS FIRST], false, 0
(1933) SortMergeJoin
Left keys [2]: [productUuid#1203014, plantUuid#1203012]
Right keys [2]: [product#1203020, plant#1203021]
Join type: Inner
Join condition: (calculationDateTime#1203008 <= orderDateTime#1203022)
(1934) Project
Output [4]: [plantUuid#1203012 AS plant#1203064, productUuid#1203014 AS product#1203065, storageLocId#1203015, calculationDateTime#1203008]
Input [7]: [plantUuid#1203012, productUuid#1203014, calculationDateTime#1203008, storageLocId#1203015, product#1203020, plant#1203021, orderDateTime#1203022]
(1935) HashAggregate
Input [4]: [plant#1203064, product#1203065, storageLocId#1203015, calculationDateTime#1203008]
Keys [3]: [plant#1203064, product#1203065, storageLocId#1203015]
Functions [1]: [partial_max(calculationDateTime#1203008)]
Aggregate Attributes [1]: [max#1205454]
Results [4]: [plant#1203064, product#1203065, storageLocId#1203015, max#1205455]
(1936) HashAggregate
Input [4]: [plant#1203064, product#1203065, storageLocId#1203015, max#1205455]
Keys [3]: [plant#1203064, product#1203065, storageLocId#1203015]
Functions [1]: [max(calculationDateTime#1203008)]
Aggregate Attributes [1]: [max(calculationDateTime#1203008)#1200140]
Results [4]: [plant#1203064, product#1203065, storageLocId#1203015, max(calculationDateTime#1203008)#1200140 AS max_calc_datetime#1203066]
(1937) Exchange
Input [4]: [plant#1203064, product#1203065, storageLocId#1203015, max_calc_datetime#1203066]
Arguments: hashpartitioning(coalesce(plant#1203064, ), isnull(plant#1203064), coalesce(product#1203065, ), isnull(product#1203065), coalesce(storageLocId#1203015, ), isnull(storageLocId#1203015), coalesce(max_calc_datetime#1203066, 1970-01-01 00:00:00), isnull(max_calc_datetime#1203066), 37), ENSURE_REQUIREMENTS, [plan_id=1842965]
(1938) Sort
Input [4]: [plant#1203064, product#1203065, storageLocId#1203015, max_calc_datetime#1203066]
Arguments: [coalesce(plant#1203064, ) ASC NULLS FIRST, isnull(plant#1203064) ASC NULLS FIRST, coalesce(product#1203065, ) ASC NULLS FIRST, isnull(product#1203065) ASC NULLS FIRST, coalesce(storageLocId#1203015, ) ASC NULLS FIRST, isnull(storageLocId#1203015) ASC NULLS FIRST, coalesce(max_calc_datetime#1203066, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1203066) ASC NULLS FIRST], false, 0
(1939) SortMergeJoin
Left keys [8]: [coalesce(plant#1202927, ), isnull(plant#1202927), coalesce(product#1202928, ), isnull(product#1202928), coalesce(storageLocId#1202878, ), isnull(storageLocId#1202878), coalesce(calculationDateTime#1202871, 1970-01-01 00:00:00), isnull(calculationDateTime#1202871)]
Right keys [8]: [coalesce(plant#1203064, ), isnull(plant#1203064), coalesce(product#1203065, ), isnull(product#1203065), coalesce(storageLocId#1203015, ), isnull(storageLocId#1203015), coalesce(max_calc_datetime#1203066, 1970-01-01 00:00:00), isnull(max_calc_datetime#1203066)]
Join type: Inner
Join condition: None
(1940) Project
Output [4]: [plant#1202927, product#1202928, calculationDateTime#1202871, quantity#1202880]
Input [9]: [plant#1202927, product#1202928, storageLocId#1202878, calculationDateTime#1202871, quantity#1202880, plant#1203064, product#1203065, storageLocId#1203015, max_calc_datetime#1203066]
(1941) HashAggregate
Input [4]: [plant#1202927, product#1202928, calculationDateTime#1202871, quantity#1202880]
Keys [2]: [product#1202928, plant#1202927]
Functions [2]: [partial_min(calculationDateTime#1202871), partial_sum(quantity#1202880)]
Aggregate Attributes [2]: [min#1205444, sum#1205445]
Results [4]: [product#1202928, plant#1202927, min#1205446, sum#1205447]
(1942) Exchange
Input [4]: [product#1202928, plant#1202927, min#1205446, sum#1205447]
Arguments: hashpartitioning(product#1202928, plant#1202927, 37), ENSURE_REQUIREMENTS, [plan_id=1842972]
(1943) HashAggregate
Input [4]: [product#1202928, plant#1202927, min#1205446, sum#1205447]
Keys [2]: [product#1202928, plant#1202927]
Functions [2]: [min(calculationDateTime#1202871), sum(quantity#1202880)]
Aggregate Attributes [2]: [min(calculationDateTime#1202871)#1200296, sum(quantity#1202880)#1200295]
Results [4]: [product#1202928, plant#1202927, min(calculationDateTime#1202871)#1200296 AS minCalculationDateTime#1203068, round(sum(quantity#1202880)#1200295, 0) AS roundedQuantitySum#1203069]
(1944) Sort
Input [4]: [product#1202928, plant#1202927, minCalculationDateTime#1203068, roundedQuantitySum#1203069]
Arguments: [product#1202928 ASC NULLS FIRST, plant#1202927 ASC NULLS FIRST], false, 0
(1945) SortMergeJoin
Left keys [2]: [product#1202748, plant#1202749]
Right keys [2]: [product#1202928, plant#1202927]
Join type: LeftOuter
Join condition: None
(1946) Project
Output [8]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, CASE WHEN isnotnull(minCalculationDateTime#1203068) THEN minCalculationDateTime#1203068 ELSE orderDateTime#1202750 END AS stockDatetime#1203070, CASE WHEN isnotnull(roundedQuantitySum#1203069) THEN array(roundedQuantitySum#1203069) ELSE [0.0] END AS stockBatchQuantities#1203071]
Input [10]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, product#1202928, plant#1202927, minCalculationDateTime#1203068, roundedQuantitySum#1203069]
(1947) Scan parquet
Output [9]: [product#1203073, plant#1203074, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001355/0_1_10000001355]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(1948) Filter
Input [9]: [product#1203073, plant#1203074, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081]
Condition : (isnotnull(product#1203073) AND isnotnull(plant#1203074))
(1949) BroadcastExchange
Input [9]: [product#1203073, plant#1203074, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1842981]
(1950) BroadcastHashJoin
Left keys [2]: [product#1202748, plant#1202749]
Right keys [2]: [product#1203073, plant#1203074]
Join type: LeftOuter
Join condition: None
(1951) Project
Output [9]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, CASE WHEN isnotnull(product#1203073) THEN struct(demandChannel, demandChannel#1203075, demandStream, demandStream#1203076, considerVariance, considerVariance#1203077, demandTimeBuckets, demandTimeBuckets#1203078, demandPointInTimeStart, demandPointInTimeStart#1203079, demandPointInTimeEnd, demandPointInTimeEnd#1203080, demandPointInTime, demandPointInTime#1203081) END AS rawDemands#1203082]
Input [17]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, product#1203073, plant#1203074, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081]
(1952) ObjectHashAggregate
Input [9]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, rawDemands#1203082]
Keys [9]: [product#1202748, plant#1202749, orderDateTime#1202750, knownfloatingpointnormalized(if (isnull(productPlant#1202760)) null else named_struct(systemId, productPlant#1202760.systemId, internalUUID, productPlant#1202760.internalUUID, plant, productPlant#1202760.plant, product, productPlant#1202760.product, blockedForReplenishmentStartingFrom, productPlant#1202760.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1202760.productionAspect)) null else named_struct(productMovementPlants, productPlant#1202760.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1202760.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1202760.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1202760.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1202760.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1202760.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1202760.salesPlant, listing, productPlant#1202760.listing)) AS productPlant#1202760, timezonecode#1202774, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1202791)) AS outboundUnit#1202791, stockDatetime#1203070, knownfloatingpointnormalized(transform(stockBatchQuantities#1203071, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1205441)), lambda arg#1205441, false))) AS stockBatchQuantities#1203071, [7226582400000000] AS [7226582400000000]#1205440]
Functions [1]: [partial_collect_list(rawDemands#1203082, 0, 0)]
Aggregate Attributes [1]: [buf#1205442]
Results [10]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, [7226582400000000]#1205440, buf#1205443]
(1953) ObjectHashAggregate
Input [10]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, [7226582400000000]#1205440, buf#1205443]
Keys [9]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, [7226582400000000]#1205440]
Functions [1]: [collect_list(rawDemands#1203082, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1203082, 0, 0)#1200389]
Results [10]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1203072, collect_list(rawDemands#1203082, 0, 0)#1200389 AS rawDemands#1203083]
(1954) DeserializeToObject
Input [10]: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072, rawDemands#1203083]
Arguments: createexternalrow(invoke(product#1202748.toString()), invoke(plant#1202749.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1202750)), if (isnull(productPlant#1202760)) null else createexternalrow(invoke(productPlant#1202760.systemId.toString()), invoke(productPlant#1202760.internalUUID.toString()), if (isnull(productPlant#1202760.plant)) null else createexternalrow(invoke(productPlant#1202760.plant.internalRefUUID.toString()), invoke(productPlant#1202760.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1202760.product)) null else createexternalrow(invoke(productPlant#1202760.product.internalRefUUID.toString()), invoke(productPlant#1202760.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1202760.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1202760.productionAspect)) null else createexternalrow(if (isnull(productPlant#1202760.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1202760.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#1202760.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1202760.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1202760.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#1202760.salesPlant)) null else createexternalrow(if (isnull(productPlant#1202760.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1202760.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1202760.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#1202760.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)), invoke(timezonecode#1202774.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1202791)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1203070)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1203071, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1203072, 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#1203083, 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(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(1955) MapElements
Input [1]: [obj#1200410]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, obj#1200415: org.apache.spark.sql.Row
(1956) SerializeFromObject
Input [1]: [obj#1200415]
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#1203084, 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#1203085]
(1957) Exchange
Input [2]: [product#1203084, plant#1203085]
Arguments: hashpartitioning(coalesce(plant#1203085, ), isnull(plant#1203085), coalesce(product#1203084, ), isnull(product#1203084), 37), ENSURE_REQUIREMENTS, [plan_id=1842992]
(1958) Sort
Input [2]: [product#1203084, plant#1203085]
Arguments: [coalesce(plant#1203085, ) ASC NULLS FIRST, isnull(plant#1203085) ASC NULLS FIRST, coalesce(product#1203084, ) ASC NULLS FIRST, isnull(product#1203084) ASC NULLS FIRST], false, 0
(1959) SortMergeJoin
Left keys [4]: [coalesce(plant#1202424, ), isnull(plant#1202424), coalesce(product#1202423, ), isnull(product#1202423)]
Right keys [4]: [coalesce(plant#1203085, ), isnull(plant#1203085), coalesce(product#1203084, ), isnull(product#1203084)]
Join type: LeftOuter
Join condition: None
(1960) Project
Output [3]: [product#1202423, plant#1202424, stockDatetime#1202745]
Input [5]: [product#1202423, plant#1202424, stockDatetime#1202745, product#1203084, plant#1203085]
(1961) Scan parquet
Output [6]: [internalUUID#1203089, id#1203090, supplier#1203092, isMarkedForDeletion#1203095, items#1203096, systemId#1203088]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.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>>>>>
(1962) Filter
Input [6]: [internalUUID#1203089, id#1203090, supplier#1203092, isMarkedForDeletion#1203095, items#1203096, systemId#1203088]
Condition : (((isnotnull(isMarkedForDeletion#1203095) AND NOT isMarkedForDeletion#1203095) AND (size(items#1203096, true) > 0)) AND isnotnull(items#1203096))
(1963) Project
Output [4]: [internalUUID#1203089, id#1203090, supplier#1203092, items#1203096]
Input [6]: [internalUUID#1203089, id#1203090, supplier#1203092, isMarkedForDeletion#1203095, items#1203096, systemId#1203088]
(1964) Exchange
Input [4]: [internalUUID#1203089, id#1203090, supplier#1203092, items#1203096]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1842006]
(1965) Generate
Input [4]: [internalUUID#1203089, id#1203090, supplier#1203092, items#1203096]
Arguments: explode(items#1203096), [internalUUID#1203089, id#1203090, supplier#1203092], false, [item#1203097]
(1966) Filter
Input [4]: [internalUUID#1203089, id#1203090, supplier#1203092, item#1203097]
Condition : ((((isnotnull(item#1203097.deletionIndicator) AND isnotnull(item#1203097.completeIndicator)) AND isnotnull(item#1203097.returnIndicator)) AND ((NOT item#1203097.deletionIndicator AND NOT item#1203097.completeIndicator) AND NOT item#1203097.returnIndicator)) AND isnotnull(item#1203097.product.internalRefUUID))
(1967) Project
Output [9]: [id#1203090, internalUUID#1203089, supplier#1203092.internalRefUUID AS supplierUuid#1203098, item#1203097.product.internalRefUUID AS product#1203100, item#1203097.quantityUnit.code AS quantityUom#1203104, item#1203097.quantityUnit.internalRefUUID AS quantityUomUuid#1203105, item#1203097.quantityNumerator AS quantityNumerator#1203106, item#1203097.quantityDenominator AS quantityDenominator#1203107, item#1203097.scheduleLines AS scheduleLines#1203108]
Input [4]: [internalUUID#1203089, id#1203090, supplier#1203092, item#1203097]
(1968) BroadcastExchange
Input [9]: [id#1203090, internalUUID#1203089, supplierUuid#1203098, product#1203100, quantityUom#1203104, quantityUomUuid#1203105, quantityNumerator#1203106, quantityDenominator#1203107, scheduleLines#1203108]
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=1842998]
(1969) BroadcastHashJoin
Left keys [4]: [coalesce(product#1202423, ), isnull(product#1202423), coalesce(plant#1202424, ), isnull(plant#1202424)]
Right keys [4]: [coalesce(product#1203100, ), isnull(product#1203100), coalesce(supplierUuid#1203098, ), isnull(supplierUuid#1203098)]
Join type: Inner
Join condition: None
(1970) Project
Output [3]: [product#1203100, plant#1202424, filter(transform(filter(transform(scheduleLines#1203108, lambdafunction(struct(openQty, (greatest((lambda x_144#1202401.quantity - coalesce(lambda x_144#1202401.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_144#1202401.productAvailabilityDateTime, lambda x_144#1202401.deliveryAt)), lambda x_144#1202401, false)), lambdafunction((lambda x_145#1202402.availabilityDatetime < stockDatetime#1202745), lambda x_145#1202402, false)), lambdafunction(struct(documentId, id#1203090, documentUuid, internalUUID#1203089, openQty, lambda x_146#1202403.openQty, openQtyInBaseUnit, ((lambda x_146#1202403.openQty * quantityNumerator#1203106) / quantityDenominator#1203107), qtyUom, quantityUom#1203104, qtyUomUuid, quantityUomUuid#1203105, availabilityDatetime, lambda x_146#1202403.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_146#1202403, false)), lambdafunction(NOT (lambda x_147#1202404.openQty = 0.0), lambda x_147#1202404, false)) AS openGoodsMovements#1202400]
Input [12]: [product#1202423, plant#1202424, stockDatetime#1202745, id#1203090, internalUUID#1203089, supplierUuid#1203098, product#1203100, quantityUom#1203104, quantityUomUuid#1203105, quantityNumerator#1203106, quantityDenominator#1203107, scheduleLines#1203108]
(1971) ObjectHashAggregate
Input [3]: [product#1203100, plant#1202424, openGoodsMovements#1202400]
Keys [2]: [product#1203100, plant#1202424]
Functions [1]: [partial_collect_list(openGoodsMovements#1202400, 0, 0)]
Aggregate Attributes [1]: [buf#1205422]
Results [3]: [product#1203100, plant#1202424, buf#1205423]
(1972) Exchange
Input [3]: [product#1203100, plant#1202424, buf#1205423]
Arguments: hashpartitioning(product#1203100, plant#1202424, 37), ENSURE_REQUIREMENTS, [plan_id=1843003]
(1973) ObjectHashAggregate
Input [3]: [product#1203100, plant#1202424, buf#1205423]
Keys [2]: [product#1203100, plant#1202424]
Functions [1]: [collect_list(openGoodsMovements#1202400, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1202400, 0, 0)#1202422]
Results [3]: [product#1203100, plant#1202424, flatten(collect_list(openGoodsMovements#1202400, 0, 0)#1202422) AS openGoodsMovements#1202405]
(1974) Filter
Input [3]: [product#1203100, plant#1202424, openGoodsMovements#1202405]
Condition : (size(openGoodsMovements#1202405, false) > 0)
(1975) Union
(1976) ObjectHashAggregate
Input [3]: [product#1200791, plant#1200790, openGoodsMovements#1202100]
Keys [2]: [product#1200791, plant#1200790]
Functions [1]: [partial_collect_list(openGoodsMovements#1202100, 0, 0)]
Aggregate Attributes [1]: [buf#1205420]
Results [3]: [product#1200791, plant#1200790, buf#1205421]
(1977) Exchange
Input [3]: [product#1200791, plant#1200790, buf#1205421]
Arguments: hashpartitioning(product#1200791, plant#1200790, 37), ENSURE_REQUIREMENTS, [plan_id=1843009]
(1978) ObjectHashAggregate
Input [3]: [product#1200791, plant#1200790, buf#1205421]
Keys [2]: [product#1200791, plant#1200790]
Functions [1]: [collect_list(openGoodsMovements#1202100, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1202100, 0, 0)#1203164]
Results [3]: [product#1200791, plant#1200790, flatten(collect_list(openGoodsMovements#1202100, 0, 0)#1203164) AS openGoodsMovements#1203160]
(1979) Project
Output [5]: [product#1200791, plant#1200790, openGoodsMovements#1203160.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#1204364, openGoodsMovements#1203160.availabilityDatetime AS _extract_availabilityDatetime#1204365, openGoodsMovements#1203160.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#1204366]
Input [3]: [product#1200791, plant#1200790, openGoodsMovements#1203160]
(1980) Sort
Input [5]: [product#1200791, plant#1200790, _extract_openQtyInBaseUnit#1204364, _extract_availabilityDatetime#1204365, _extract_shelfLifeEndDatetime#1204366]
Arguments: [product#1200791 ASC NULLS FIRST, plant#1200790 ASC NULLS FIRST], false, 0
(1981) SortMergeJoin
Left keys [2]: [product#1199942, plant#1199943]
Right keys [2]: [product#1200791, plant#1200790]
Join type: LeftOuter
Join condition: None
(1982) Project
Output [16]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, coalesce(_extract_openQtyInBaseUnit#1204364, []) AS openGoodsMovementQuantities#1203879, coalesce(_extract_availabilityDatetime#1204365, []) AS openGoodsMovementAvailabilityDatetimes#1203880, coalesce(_extract_shelfLifeEndDatetime#1204366, []) AS openGoodsMovementShelfLifeEndDatetimes#1203881, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1203982, [ListingPeriod] AS timeDependentSettingsName#1204121, [-2208988800000000] AS timeDependentSettingsStartDatetime#1204122, [7226582400000000] AS timeDependentSettingsEndDatetime#1204123, [1.0] AS timeDependentSettingsValue#1204124]
Input [12]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, dayBucketDemands#1200422, pointInTimeDemands#1200423, product#1200791, plant#1200790, _extract_openQtyInBaseUnit#1204364, _extract_availabilityDatetime#1204365, _extract_shelfLifeEndDatetime#1204366]
(1983) AdaptiveSparkPlan
Output [16]: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, timeDependentSettingsEndDatetime#1204123, timeDependentSettingsValue#1204124]
Arguments: isFinalPlan=false