== Physical Plan ==
AdaptiveSparkPlan (1111)
+- == Current Plan ==
ResultQueryStage (306)
+- * Project (305)
+- * BroadcastHashJoin LeftOuter BuildRight (304)
:- AQEShuffleRead (243)
: +- ShuffleQueryStage (242), Statistics(sizeInBytes=239.7 KiB, rowCount=45)
: +- Exchange (241)
: +- * Project (240)
: +- * Project (239)
: +- * Project (238)
: +- * BroadcastHashJoin LeftOuter BuildRight (237)
: :- AQEShuffleRead (163)
: : +- ShuffleQueryStage (162), Statistics(sizeInBytes=6.0 KiB, rowCount=45)
: : +- Exchange (161)
: : +- * Project (160)
: : +- * SortMergeJoin LeftOuter (159)
: : :- * Sort (30)
: : : +- * Project (29)
: : : +- * Project (28)
: : : +- * Generate (27)
: : : +- * Generate (26)
: : : +- * Project (25)
: : : +- Project (24)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (23)
: : : :- * Project (14)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : : +- 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=199.2 KiB, rowCount=1.43E+3)
: : : : +- Exchange (8)
: : : : +- * Project (7)
: : : : +- * ColumnarToRow (6)
: : : : +- Scan parquet (5)
: : : +- BroadcastQueryStage (22), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : +- BroadcastExchange (21)
: : : +- ShuffleQueryStage (20), Statistics(sizeInBytes=87.5 KiB, rowCount=144)
: : : +- Exchange (19)
: : : +- * Project (18)
: : : +- * Filter (17)
: : : +- * ColumnarToRow (16)
: : : +- Scan parquet (15)
: : +- * Sort (158)
: : +- * HashAggregate (157)
: : +- * HashAggregate (156)
: : +- * Project (155)
: : +- * BroadcastHashJoin Inner BuildRight (154)
: : :- * Project (107)
: : : +- * BroadcastHashJoin Inner BuildLeft (106)
: : : :- BroadcastQueryStage (88), Statistics(sizeInBytes=2.0 MiB, rowCount=25)
: : : : +- BroadcastExchange (87)
: : : : +- AQEShuffleRead (86)
: : : : +- ShuffleQueryStage (85), Statistics(sizeInBytes=2.9 KiB, rowCount=25)
: : : : +- Exchange (84)
: : : : +- * Project (83)
: : : : +- * Filter (82)
: : : : +- * Generate (81)
: : : : +- * Filter (80)
: : : : +- ObjectHashAggregate (79)
: : : : +- ObjectHashAggregate (78)
: : : : +- Generate (77)
: : : : +- * BroadcastHashJoin Inner BuildLeft (76)
: : : : :- BroadcastQueryStage (38), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : +- BroadcastExchange (37)
: : : : : +- ShuffleQueryStage (36), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : +- Exchange (35)
: : : : : +- * Project (34)
: : : : : +- * Filter (33)
: : : : : +- * ColumnarToRow (32)
: : : : : +- Scan parquet (31)
: : : : +- * Project (75)
: : : : +- * BroadcastHashJoin Inner BuildLeft (74)
: : : : :- BroadcastQueryStage (51), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : +- BroadcastExchange (50)
: : : : : +- * Project (49)
: : : : : +- * Generate (48)
: : : : : +- * Project (47)
: : : : : +- * Filter (46)
: : : : : +- * Generate (45)
: : : : : +- ShuffleQueryStage (44), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : +- Exchange (43)
: : : : : +- * Project (42)
: : : : : +- * Filter (41)
: : : : : +- * ColumnarToRow (40)
: : : : : +- Scan parquet (39)
: : : : +- * HashAggregate (73)
: : : : +- AQEShuffleRead (72)
: : : : +- ShuffleQueryStage (71), Statistics(sizeInBytes=1152.0 B, rowCount=24)
: : : : +- Exchange (70)
: : : : +- * HashAggregate (69)
: : : : +- * Project (68)
: : : : +- * Generate (67)
: : : : +- * Project (66)
: : : : +- * Generate (65)
: : : : +- Project (64)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (63)
: : : : :- * Project (60)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (59)
: : : : : :- ShuffleQueryStage (56), Statistics(sizeInBytes=3.9 KiB, rowCount=45)
: : : : : : +- Exchange (55)
: : : : : : +- * Filter (54)
: : : : : : +- * ColumnarToRow (53)
: : : : : : +- Scan parquet (52)
: : : : : +- BroadcastQueryStage (58), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- ReusedExchange (57)
: : : : +- BroadcastQueryStage (62), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : : +- ReusedExchange (61)
: : : +- * Project (105)
: : : +- * Generate (104)
: : : +- * Project (103)
: : : +- * Generate (102)
: : : +- Project (101)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (100)
: : : :- * Project (97)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (96)
: : : : :- ShuffleQueryStage (93), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : : +- Exchange (92)
: : : : : +- * Filter (91)
: : : : : +- * ColumnarToRow (90)
: : : : : +- Scan parquet (89)
: : : : +- BroadcastQueryStage (95), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : +- ReusedExchange (94)
: : : +- BroadcastQueryStage (99), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : +- ReusedExchange (98)
: : +- BroadcastQueryStage (153), Statistics(sizeInBytes=2.0 MiB, rowCount=8)
: : +- BroadcastExchange (152)
: : +- AQEShuffleRead (151)
: : +- ShuffleQueryStage (150), Statistics(sizeInBytes=896.0 B, rowCount=8)
: : +- Exchange (149)
: : +- * HashAggregate (148)
: : +- * HashAggregate (147)
: : +- * Project (146)
: : +- * BroadcastHashJoin Inner BuildLeft (145)
: : :- BroadcastQueryStage (130), Statistics(sizeInBytes=2.0 MiB, rowCount=25)
: : : +- BroadcastExchange (129)
: : : +- AQEShuffleRead (128)
: : : +- ShuffleQueryStage (127), Statistics(sizeInBytes=2.7 KiB, rowCount=25)
: : : +- Exchange (126)
: : : +- * Project (125)
: : : +- * Filter (124)
: : : +- * Generate (123)
: : : +- * Filter (122)
: : : +- ObjectHashAggregate (121)
: : : +- ObjectHashAggregate (120)
: : : +- Generate (119)
: : : +- * BroadcastHashJoin Inner BuildLeft (118)
: : : :- BroadcastQueryStage (109), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- ReusedExchange (108)
: : : +- * Project (117)
: : : +- * BroadcastHashJoin Inner BuildLeft (116)
: : : :- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : +- ReusedExchange (110)
: : : +- * HashAggregate (115)
: : : +- AQEShuffleRead (114)
: : : +- ShuffleQueryStage (113), Statistics(sizeInBytes=1152.0 B, rowCount=24)
: : : +- ReusedExchange (112)
: : +- * Project (144)
: : +- * Generate (143)
: : +- * Project (142)
: : +- * Generate (141)
: : +- Project (140)
: : +- * BroadcastHashJoin LeftOuter BuildRight (139)
: : :- * Project (136)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (135)
: : : :- ShuffleQueryStage (132), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : +- ReusedExchange (131)
: : : +- BroadcastQueryStage (134), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : +- ReusedExchange (133)
: : +- BroadcastQueryStage (138), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : +- ReusedExchange (137)
: +- BroadcastQueryStage (236), Statistics(sizeInBytes=2.0 MiB, rowCount=45)
: +- BroadcastExchange (235)
: +- AQEShuffleRead (234)
: +- ShuffleQueryStage (233), Statistics(sizeInBytes=235.4 KiB, rowCount=45)
: +- Exchange (232)
: +- * SerializeFromObject (231)
: +- * MapElements (230)
: +- * DeserializeToObject (229)
: +- * Project (228)
: +- * BroadcastHashJoin LeftOuter BuildRight (227)
: :- ObjectHashAggregate (219)
: : +- ObjectHashAggregate (218)
: : +- * Project (217)
: : +- * BroadcastHashJoin LeftOuter BuildRight (216)
: : :- * Project (211)
: : : +- * SortMergeJoin LeftOuter (210)
: : : :- * Sort (184)
: : : : +- * Project (183)
: : : : +- * Project (182)
: : : : +- * Generate (181)
: : : : +- * Generate (180)
: : : : +- * Project (179)
: : : : +- Project (178)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (177)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (174)
: : : : : :- ShuffleQueryStage (165), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : : : +- ReusedExchange (164)
: : : : : +- BroadcastQueryStage (173), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- BroadcastExchange (172)
: : : : : +- * Project (171)
: : : : : +- ShuffleQueryStage (170), Statistics(sizeInBytes=1029.3 KiB, rowCount=1.43E+3)
: : : : : +- Exchange (169)
: : : : : +- * Project (168)
: : : : : +- * ColumnarToRow (167)
: : : : : +- Scan parquet (166)
: : : : +- BroadcastQueryStage (176), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : : +- ReusedExchange (175)
: : : +- * Sort (209)
: : : +- * HashAggregate (208)
: : : +- * HashAggregate (207)
: : : +- * Project (206)
: : : +- * BroadcastHashJoin Inner BuildRight (205)
: : : :- * Project (202)
: : : : +- * BroadcastHashJoin Inner BuildLeft (201)
: : : : :- BroadcastQueryStage (186), Statistics(sizeInBytes=2.0 MiB, rowCount=25)
: : : : : +- ReusedExchange (185)
: : : : +- * Project (200)
: : : : +- * Generate (199)
: : : : +- * Project (198)
: : : : +- * Generate (197)
: : : : +- Project (196)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (195)
: : : : :- * Project (192)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (191)
: : : : : :- ShuffleQueryStage (188), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : : : +- ReusedExchange (187)
: : : : : +- BroadcastQueryStage (190), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- ReusedExchange (189)
: : : : +- BroadcastQueryStage (194), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : : +- ReusedExchange (193)
: : : +- BroadcastQueryStage (204), Statistics(sizeInBytes=2.0 MiB, rowCount=8)
: : : +- ReusedExchange (203)
: : +- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=45)
: : +- BroadcastExchange (214)
: : +- * ColumnarToRow (213)
: : +- Scan parquet (212)
: +- BroadcastQueryStage (226), Statistics(sizeInBytes=2.0 MiB, rowCount=21)
: +- BroadcastExchange (225)
: +- ShuffleQueryStage (224), Statistics(sizeInBytes=1512.0 B, rowCount=21)
: +- Exchange (223)
: +- * Project (222)
: +- * ColumnarToRow (221)
: +- Scan parquet (220)
+- BroadcastQueryStage (303), Statistics(sizeInBytes=2.0 MiB, rowCount=45)
+- BroadcastExchange (302)
+- AQEShuffleRead (301)
+- ShuffleQueryStage (300), Statistics(sizeInBytes=10.2 KiB, rowCount=45)
+- Exchange (299)
+- * Filter (298)
+- * SerializeFromObject (297)
+- * MapElements (296)
+- * DeserializeToObject (295)
+- Project (294)
+- * Project (293)
+- * Project (292)
+- * BroadcastHashJoin LeftOuter BuildRight (291)
:- AQEShuffleRead (288)
: +- ShuffleQueryStage (287), Statistics(sizeInBytes=38.5 KiB, rowCount=45)
: +- Exchange (286)
: +- * Project (285)
: +- * SortMergeJoin LeftOuter (284)
: :- * Sort (258)
: : +- * Project (257)
: : +- * Project (256)
: : +- * Generate (255)
: : +- * Generate (254)
: : +- * Project (253)
: : +- Project (252)
: : +- * BroadcastHashJoin LeftOuter BuildRight (251)
: : :- * BroadcastHashJoin LeftOuter BuildRight (248)
: : : :- ShuffleQueryStage (245), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : +- ReusedExchange (244)
: : : +- BroadcastQueryStage (247), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : +- ReusedExchange (246)
: : +- BroadcastQueryStage (250), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : +- ReusedExchange (249)
: +- * Sort (283)
: +- * HashAggregate (282)
: +- * HashAggregate (281)
: +- * Project (280)
: +- * BroadcastHashJoin Inner BuildRight (279)
: :- * Project (276)
: : +- * BroadcastHashJoin Inner BuildLeft (275)
: : :- BroadcastQueryStage (260), Statistics(sizeInBytes=2.0 MiB, rowCount=25)
: : : +- ReusedExchange (259)
: : +- * Project (274)
: : +- * Generate (273)
: : +- * Project (272)
: : +- * Generate (271)
: : +- Project (270)
: : +- * BroadcastHashJoin LeftOuter BuildRight (269)
: : :- * Project (266)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (265)
: : : :- ShuffleQueryStage (262), Statistics(sizeInBytes=4.2 KiB, rowCount=45)
: : : : +- ReusedExchange (261)
: : : +- BroadcastQueryStage (264), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : +- ReusedExchange (263)
: : +- BroadcastQueryStage (268), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : +- ReusedExchange (267)
: +- BroadcastQueryStage (278), Statistics(sizeInBytes=2.0 MiB, rowCount=8)
: +- ReusedExchange (277)
+- BroadcastQueryStage (290), Statistics(sizeInBytes=2.0 MiB, rowCount=45)
+- ReusedExchange (289)
+- == Initial Plan ==
Project (1110)
+- SortMergeJoin LeftOuter (1109)
:- Sort (701)
: +- Exchange (700)
: +- Project (699)
: +- BroadcastHashJoin LeftOuter BuildRight (698)
: :- Project (688)
: : +- SortMergeJoin LeftOuter (687)
: : :- Sort (487)
: : : +- Exchange (486)
: : : +- Project (485)
: : : +- SortMergeJoin LeftOuter (484)
: : : :- Sort (325)
: : : : +- Project (324)
: : : : +- Project (323)
: : : : +- Generate (322)
: : : : +- Generate (321)
: : : : +- Project (320)
: : : : +- Project (319)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (318)
: : : : :- Project (313)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (312)
: : : : : :- Exchange (307)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (311)
: : : : : +- Project (310)
: : : : : +- Exchange (309)
: : : : : +- Project (308)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (317)
: : : : +- Exchange (316)
: : : : +- Project (315)
: : : : +- Filter (314)
: : : : +- Scan parquet (15)
: : : +- Sort (483)
: : : +- HashAggregate (482)
: : : +- Exchange (481)
: : : +- HashAggregate (480)
: : : +- Project (479)
: : : +- SortMergeJoin Inner (478)
: : : :- Sort (398)
: : : : +- Exchange (397)
: : : : +- Project (396)
: : : : +- SortMergeJoin Inner (395)
: : : : :- Sort (373)
: : : : : +- Exchange (372)
: : : : : +- Project (371)
: : : : : +- Filter (370)
: : : : : +- Generate (369)
: : : : : +- Filter (368)
: : : : : +- ObjectHashAggregate (367)
: : : : : +- ObjectHashAggregate (366)
: : : : : +- Generate (365)
: : : : : +- BroadcastHashJoin Inner BuildLeft (364)
: : : : : :- BroadcastExchange (329)
: : : : : : +- Exchange (328)
: : : : : : +- Project (327)
: : : : : : +- Filter (326)
: : : : : : +- Scan parquet (31)
: : : : : +- Project (363)
: : : : : +- BroadcastHashJoin Inner BuildLeft (362)
: : : : : :- BroadcastExchange (338)
: : : : : : +- Project (337)
: : : : : : +- Generate (336)
: : : : : : +- Project (335)
: : : : : : +- Filter (334)
: : : : : : +- Generate (333)
: : : : : : +- Exchange (332)
: : : : : : +- Project (331)
: : : : : : +- Filter (330)
: : : : : : +- Scan parquet (39)
: : : : : +- HashAggregate (361)
: : : : : +- Exchange (360)
: : : : : +- HashAggregate (359)
: : : : : +- Project (358)
: : : : : +- Generate (357)
: : : : : +- Project (356)
: : : : : +- Generate (355)
: : : : : +- Project (354)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (353)
: : : : : :- Project (347)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (346)
: : : : : : :- Exchange (340)
: : : : : : : +- Filter (339)
: : : : : : : +- Scan parquet (52)
: : : : : : +- BroadcastExchange (345)
: : : : : : +- Project (344)
: : : : : : +- Exchange (343)
: : : : : : +- Project (342)
: : : : : : +- Scan parquet (341)
: : : : : +- BroadcastExchange (352)
: : : : : +- Exchange (351)
: : : : : +- Project (350)
: : : : : +- Filter (349)
: : : : : +- Scan parquet (348)
: : : : +- Sort (394)
: : : : +- Project (393)
: : : : +- Generate (392)
: : : : +- Project (391)
: : : : +- Generate (390)
: : : : +- Project (389)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (388)
: : : : :- Project (382)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (381)
: : : : : :- Exchange (375)
: : : : : : +- Filter (374)
: : : : : : +- Scan parquet (89)
: : : : : +- BroadcastExchange (380)
: : : : : +- Project (379)
: : : : : +- Exchange (378)
: : : : : +- Project (377)
: : : : : +- Scan parquet (376)
: : : : +- BroadcastExchange (387)
: : : : +- Exchange (386)
: : : : +- Project (385)
: : : : +- Filter (384)
: : : : +- Scan parquet (383)
: : : +- Sort (477)
: : : +- Exchange (476)
: : : +- HashAggregate (475)
: : : +- HashAggregate (474)
: : : +- Project (473)
: : : +- SortMergeJoin Inner (472)
: : : :- Sort (449)
: : : : +- Exchange (448)
: : : : +- Project (447)
: : : : +- Filter (446)
: : : : +- Generate (445)
: : : : +- Filter (444)
: : : : +- ObjectHashAggregate (443)
: : : : +- ObjectHashAggregate (442)
: : : : +- Generate (441)
: : : : +- BroadcastHashJoin Inner BuildLeft (440)
: : : : :- BroadcastExchange (403)
: : : : : +- Exchange (402)
: : : : : +- Project (401)
: : : : : +- Filter (400)
: : : : : +- Scan parquet (399)
: : : : +- Project (439)
: : : : +- BroadcastHashJoin Inner BuildLeft (438)
: : : : :- BroadcastExchange (413)
: : : : : +- Project (412)
: : : : : +- Generate (411)
: : : : : +- Project (410)
: : : : : +- Filter (409)
: : : : : +- Generate (408)
: : : : : +- Exchange (407)
: : : : : +- Project (406)
: : : : : +- Filter (405)
: : : : : +- Scan parquet (404)
: : : : +- HashAggregate (437)
: : : : +- Exchange (436)
: : : : +- HashAggregate (435)
: : : : +- Project (434)
: : : : +- Generate (433)
: : : : +- Project (432)
: : : : +- Generate (431)
: : : : +- Project (430)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (429)
: : : : :- Project (423)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (422)
: : : : : :- Exchange (416)
: : : : : : +- Filter (415)
: : : : : : +- Scan parquet (414)
: : : : : +- BroadcastExchange (421)
: : : : : +- Project (420)
: : : : : +- Exchange (419)
: : : : : +- Project (418)
: : : : : +- Scan parquet (417)
: : : : +- BroadcastExchange (428)
: : : : +- Exchange (427)
: : : : +- Project (426)
: : : : +- Filter (425)
: : : : +- Scan parquet (424)
: : : +- Sort (471)
: : : +- Project (470)
: : : +- Generate (469)
: : : +- Project (468)
: : : +- Generate (467)
: : : +- Project (466)
: : : +- BroadcastHashJoin LeftOuter BuildRight (465)
: : : :- Project (459)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (458)
: : : : :- Exchange (452)
: : : : : +- Filter (451)
: : : : : +- Scan parquet (450)
: : : : +- BroadcastExchange (457)
: : : : +- Project (456)
: : : : +- Exchange (455)
: : : : +- Project (454)
: : : : +- Scan parquet (453)
: : : +- BroadcastExchange (464)
: : : +- Exchange (463)
: : : +- Project (462)
: : : +- Filter (461)
: : : +- Scan parquet (460)
: : +- Sort (686)
: : +- Exchange (685)
: : +- SerializeFromObject (684)
: : +- MapElements (683)
: : +- DeserializeToObject (682)
: : +- Project (681)
: : +- BroadcastHashJoin LeftOuter BuildRight (680)
: : :- ObjectHashAggregate (676)
: : : +- ObjectHashAggregate (675)
: : : +- Project (674)
: : : +- BroadcastHashJoin LeftOuter BuildRight (673)
: : : :- Project (671)
: : : : +- SortMergeJoin LeftOuter (670)
: : : : :- Sort (507)
: : : : : +- Project (506)
: : : : : +- Project (505)
: : : : : +- Generate (504)
: : : : : +- Generate (503)
: : : : : +- Project (502)
: : : : : +- Project (501)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (500)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (494)
: : : : : : :- Exchange (489)
: : : : : : : +- Scan parquet (488)
: : : : : : +- BroadcastExchange (493)
: : : : : : +- Project (492)
: : : : : : +- Exchange (491)
: : : : : : +- Project (490)
: : : : : : +- Scan parquet (166)
: : : : : +- BroadcastExchange (499)
: : : : : +- Exchange (498)
: : : : : +- Project (497)
: : : : : +- Filter (496)
: : : : : +- Scan parquet (495)
: : : : +- Sort (669)
: : : : +- HashAggregate (668)
: : : : +- Exchange (667)
: : : : +- HashAggregate (666)
: : : : +- Project (665)
: : : : +- SortMergeJoin Inner (664)
: : : : :- Sort (584)
: : : : : +- Exchange (583)
: : : : : +- Project (582)
: : : : : +- SortMergeJoin Inner (581)
: : : : : :- Sort (558)
: : : : : : +- Exchange (557)
: : : : : : +- Project (556)
: : : : : : +- Filter (555)
: : : : : : +- Generate (554)
: : : : : : +- Filter (553)
: : : : : : +- ObjectHashAggregate (552)
: : : : : : +- ObjectHashAggregate (551)
: : : : : : +- Generate (550)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (549)
: : : : : : :- BroadcastExchange (512)
: : : : : : : +- Exchange (511)
: : : : : : : +- Project (510)
: : : : : : : +- Filter (509)
: : : : : : : +- Scan parquet (508)
: : : : : : +- Project (548)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (547)
: : : : : : :- BroadcastExchange (522)
: : : : : : : +- Project (521)
: : : : : : : +- Generate (520)
: : : : : : : +- Project (519)
: : : : : : : +- Filter (518)
: : : : : : : +- Generate (517)
: : : : : : : +- Exchange (516)
: : : : : : : +- Project (515)
: : : : : : : +- Filter (514)
: : : : : : : +- Scan parquet (513)
: : : : : : +- HashAggregate (546)
: : : : : : +- Exchange (545)
: : : : : : +- HashAggregate (544)
: : : : : : +- Project (543)
: : : : : : +- Generate (542)
: : : : : : +- Project (541)
: : : : : : +- Generate (540)
: : : : : : +- Project (539)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (538)
: : : : : : :- Project (532)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (531)
: : : : : : : :- Exchange (525)
: : : : : : : : +- Filter (524)
: : : : : : : : +- Scan parquet (523)
: : : : : : : +- BroadcastExchange (530)
: : : : : : : +- Project (529)
: : : : : : : +- Exchange (528)
: : : : : : : +- Project (527)
: : : : : : : +- Scan parquet (526)
: : : : : : +- BroadcastExchange (537)
: : : : : : +- Exchange (536)
: : : : : : +- Project (535)
: : : : : : +- Filter (534)
: : : : : : +- Scan parquet (533)
: : : : : +- Sort (580)
: : : : : +- Project (579)
: : : : : +- Generate (578)
: : : : : +- Project (577)
: : : : : +- Generate (576)
: : : : : +- Project (575)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (574)
: : : : : :- Project (568)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (567)
: : : : : : :- Exchange (561)
: : : : : : : +- Filter (560)
: : : : : : : +- Scan parquet (559)
: : : : : : +- BroadcastExchange (566)
: : : : : : +- Project (565)
: : : : : : +- Exchange (564)
: : : : : : +- Project (563)
: : : : : : +- Scan parquet (562)
: : : : : +- BroadcastExchange (573)
: : : : : +- Exchange (572)
: : : : : +- Project (571)
: : : : : +- Filter (570)
: : : : : +- Scan parquet (569)
: : : : +- Sort (663)
: : : : +- Exchange (662)
: : : : +- HashAggregate (661)
: : : : +- HashAggregate (660)
: : : : +- Project (659)
: : : : +- SortMergeJoin Inner (658)
: : : : :- Sort (635)
: : : : : +- Exchange (634)
: : : : : +- Project (633)
: : : : : +- Filter (632)
: : : : : +- Generate (631)
: : : : : +- Filter (630)
: : : : : +- ObjectHashAggregate (629)
: : : : : +- ObjectHashAggregate (628)
: : : : : +- Generate (627)
: : : : : +- BroadcastHashJoin Inner BuildLeft (626)
: : : : : :- BroadcastExchange (589)
: : : : : : +- Exchange (588)
: : : : : : +- Project (587)
: : : : : : +- Filter (586)
: : : : : : +- Scan parquet (585)
: : : : : +- Project (625)
: : : : : +- BroadcastHashJoin Inner BuildLeft (624)
: : : : : :- BroadcastExchange (599)
: : : : : : +- Project (598)
: : : : : : +- Generate (597)
: : : : : : +- Project (596)
: : : : : : +- Filter (595)
: : : : : : +- Generate (594)
: : : : : : +- Exchange (593)
: : : : : : +- Project (592)
: : : : : : +- Filter (591)
: : : : : : +- Scan parquet (590)
: : : : : +- HashAggregate (623)
: : : : : +- Exchange (622)
: : : : : +- HashAggregate (621)
: : : : : +- Project (620)
: : : : : +- Generate (619)
: : : : : +- Project (618)
: : : : : +- Generate (617)
: : : : : +- Project (616)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (615)
: : : : : :- Project (609)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (608)
: : : : : : :- Exchange (602)
: : : : : : : +- Filter (601)
: : : : : : : +- Scan parquet (600)
: : : : : : +- BroadcastExchange (607)
: : : : : : +- Project (606)
: : : : : : +- Exchange (605)
: : : : : : +- Project (604)
: : : : : : +- Scan parquet (603)
: : : : : +- BroadcastExchange (614)
: : : : : +- Exchange (613)
: : : : : +- Project (612)
: : : : : +- Filter (611)
: : : : : +- Scan parquet (610)
: : : : +- Sort (657)
: : : : +- Project (656)
: : : : +- Generate (655)
: : : : +- Project (654)
: : : : +- Generate (653)
: : : : +- Project (652)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (651)
: : : : :- Project (645)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (644)
: : : : : :- Exchange (638)
: : : : : : +- Filter (637)
: : : : : : +- Scan parquet (636)
: : : : : +- BroadcastExchange (643)
: : : : : +- Project (642)
: : : : : +- Exchange (641)
: : : : : +- Project (640)
: : : : : +- Scan parquet (639)
: : : : +- BroadcastExchange (650)
: : : : +- Exchange (649)
: : : : +- Project (648)
: : : : +- Filter (647)
: : : : +- Scan parquet (646)
: : : +- BroadcastExchange (672)
: : : +- Scan parquet (212)
: : +- BroadcastExchange (679)
: : +- Exchange (678)
: : +- Project (677)
: : +- Scan parquet (220)
: +- BroadcastExchange (697)
: +- Project (696)
: +- ObjectHashAggregate (695)
: +- Exchange (694)
: +- ObjectHashAggregate (693)
: +- Filter (692)
: +- InMemoryTableScan (689)
: +- InMemoryRelation (690)
: +- LocalTableScan (691)
+- Sort (1108)
+- Exchange (1107)
+- Filter (1106)
+- SerializeFromObject (1105)
+- MapElements (1104)
+- DeserializeToObject (1103)
+- Project (1102)
+- BroadcastHashJoin LeftOuter BuildRight (1101)
:- Project (1092)
: +- SortMergeJoin LeftOuter (1091)
: :- Sort (888)
: : +- Exchange (887)
: : +- Project (886)
: : +- SortMergeJoin LeftOuter (885)
: : :- Sort (722)
: : : +- Project (721)
: : : +- Project (720)
: : : +- Generate (719)
: : : +- Generate (718)
: : : +- Project (717)
: : : +- Project (716)
: : : +- BroadcastHashJoin LeftOuter BuildRight (715)
: : : :- BroadcastHashJoin LeftOuter BuildRight (709)
: : : : :- Exchange (703)
: : : : : +- Scan parquet (702)
: : : : +- BroadcastExchange (708)
: : : : +- Project (707)
: : : : +- Exchange (706)
: : : : +- Project (705)
: : : : +- Scan parquet (704)
: : : +- BroadcastExchange (714)
: : : +- Exchange (713)
: : : +- Project (712)
: : : +- Filter (711)
: : : +- Scan parquet (710)
: : +- Sort (884)
: : +- HashAggregate (883)
: : +- Exchange (882)
: : +- HashAggregate (881)
: : +- Project (880)
: : +- SortMergeJoin Inner (879)
: : :- Sort (799)
: : : +- Exchange (798)
: : : +- Project (797)
: : : +- SortMergeJoin Inner (796)
: : : :- Sort (773)
: : : : +- Exchange (772)
: : : : +- Project (771)
: : : : +- Filter (770)
: : : : +- Generate (769)
: : : : +- Filter (768)
: : : : +- ObjectHashAggregate (767)
: : : : +- ObjectHashAggregate (766)
: : : : +- Generate (765)
: : : : +- BroadcastHashJoin Inner BuildLeft (764)
: : : : :- BroadcastExchange (727)
: : : : : +- Exchange (726)
: : : : : +- Project (725)
: : : : : +- Filter (724)
: : : : : +- Scan parquet (723)
: : : : +- Project (763)
: : : : +- BroadcastHashJoin Inner BuildLeft (762)
: : : : :- BroadcastExchange (737)
: : : : : +- Project (736)
: : : : : +- Generate (735)
: : : : : +- Project (734)
: : : : : +- Filter (733)
: : : : : +- Generate (732)
: : : : : +- Exchange (731)
: : : : : +- Project (730)
: : : : : +- Filter (729)
: : : : : +- Scan parquet (728)
: : : : +- HashAggregate (761)
: : : : +- Exchange (760)
: : : : +- HashAggregate (759)
: : : : +- Project (758)
: : : : +- Generate (757)
: : : : +- Project (756)
: : : : +- Generate (755)
: : : : +- Project (754)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (753)
: : : : :- Project (747)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (746)
: : : : : :- Exchange (740)
: : : : : : +- Filter (739)
: : : : : : +- Scan parquet (738)
: : : : : +- BroadcastExchange (745)
: : : : : +- Project (744)
: : : : : +- Exchange (743)
: : : : : +- Project (742)
: : : : : +- Scan parquet (741)
: : : : +- BroadcastExchange (752)
: : : : +- Exchange (751)
: : : : +- Project (750)
: : : : +- Filter (749)
: : : : +- Scan parquet (748)
: : : +- Sort (795)
: : : +- Project (794)
: : : +- Generate (793)
: : : +- Project (792)
: : : +- Generate (791)
: : : +- Project (790)
: : : +- BroadcastHashJoin LeftOuter BuildRight (789)
: : : :- Project (783)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (782)
: : : : :- Exchange (776)
: : : : : +- Filter (775)
: : : : : +- Scan parquet (774)
: : : : +- BroadcastExchange (781)
: : : : +- Project (780)
: : : : +- Exchange (779)
: : : : +- Project (778)
: : : : +- Scan parquet (777)
: : : +- BroadcastExchange (788)
: : : +- Exchange (787)
: : : +- Project (786)
: : : +- Filter (785)
: : : +- Scan parquet (784)
: : +- Sort (878)
: : +- Exchange (877)
: : +- HashAggregate (876)
: : +- HashAggregate (875)
: : +- Project (874)
: : +- SortMergeJoin Inner (873)
: : :- Sort (850)
: : : +- Exchange (849)
: : : +- Project (848)
: : : +- Filter (847)
: : : +- Generate (846)
: : : +- Filter (845)
: : : +- ObjectHashAggregate (844)
: : : +- ObjectHashAggregate (843)
: : : +- Generate (842)
: : : +- BroadcastHashJoin Inner BuildLeft (841)
: : : :- BroadcastExchange (804)
: : : : +- Exchange (803)
: : : : +- Project (802)
: : : : +- Filter (801)
: : : : +- Scan parquet (800)
: : : +- Project (840)
: : : +- BroadcastHashJoin Inner BuildLeft (839)
: : : :- BroadcastExchange (814)
: : : : +- Project (813)
: : : : +- Generate (812)
: : : : +- Project (811)
: : : : +- Filter (810)
: : : : +- Generate (809)
: : : : +- Exchange (808)
: : : : +- Project (807)
: : : : +- Filter (806)
: : : : +- Scan parquet (805)
: : : +- HashAggregate (838)
: : : +- Exchange (837)
: : : +- HashAggregate (836)
: : : +- Project (835)
: : : +- Generate (834)
: : : +- Project (833)
: : : +- Generate (832)
: : : +- Project (831)
: : : +- BroadcastHashJoin LeftOuter BuildRight (830)
: : : :- Project (824)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (823)
: : : : :- Exchange (817)
: : : : : +- Filter (816)
: : : : : +- Scan parquet (815)
: : : : +- BroadcastExchange (822)
: : : : +- Project (821)
: : : : +- Exchange (820)
: : : : +- Project (819)
: : : : +- Scan parquet (818)
: : : +- BroadcastExchange (829)
: : : +- Exchange (828)
: : : +- Project (827)
: : : +- Filter (826)
: : : +- Scan parquet (825)
: : +- Sort (872)
: : +- Project (871)
: : +- Generate (870)
: : +- Project (869)
: : +- Generate (868)
: : +- Project (867)
: : +- BroadcastHashJoin LeftOuter BuildRight (866)
: : :- Project (860)
: : : +- BroadcastHashJoin LeftOuter BuildRight (859)
: : : :- Exchange (853)
: : : : +- Filter (852)
: : : : +- Scan parquet (851)
: : : +- BroadcastExchange (858)
: : : +- Project (857)
: : : +- Exchange (856)
: : : +- Project (855)
: : : +- Scan parquet (854)
: : +- BroadcastExchange (865)
: : +- Exchange (864)
: : +- Project (863)
: : +- Filter (862)
: : +- Scan parquet (861)
: +- Sort (1090)
: +- Exchange (1089)
: +- SerializeFromObject (1088)
: +- MapElements (1087)
: +- DeserializeToObject (1086)
: +- Project (1085)
: +- BroadcastHashJoin LeftOuter BuildRight (1084)
: :- ObjectHashAggregate (1079)
: : +- ObjectHashAggregate (1078)
: : +- Project (1077)
: : +- BroadcastHashJoin LeftOuter BuildRight (1076)
: : :- Project (1073)
: : : +- SortMergeJoin LeftOuter (1072)
: : : :- Sort (909)
: : : : +- Project (908)
: : : : +- Project (907)
: : : : +- Generate (906)
: : : : +- Generate (905)
: : : : +- Project (904)
: : : : +- Project (903)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (902)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (896)
: : : : : :- Exchange (890)
: : : : : : +- Scan parquet (889)
: : : : : +- BroadcastExchange (895)
: : : : : +- Project (894)
: : : : : +- Exchange (893)
: : : : : +- Project (892)
: : : : : +- Scan parquet (891)
: : : : +- BroadcastExchange (901)
: : : : +- Exchange (900)
: : : : +- Project (899)
: : : : +- Filter (898)
: : : : +- Scan parquet (897)
: : : +- Sort (1071)
: : : +- HashAggregate (1070)
: : : +- Exchange (1069)
: : : +- HashAggregate (1068)
: : : +- Project (1067)
: : : +- SortMergeJoin Inner (1066)
: : : :- Sort (986)
: : : : +- Exchange (985)
: : : : +- Project (984)
: : : : +- SortMergeJoin Inner (983)
: : : : :- Sort (960)
: : : : : +- Exchange (959)
: : : : : +- Project (958)
: : : : : +- Filter (957)
: : : : : +- Generate (956)
: : : : : +- Filter (955)
: : : : : +- ObjectHashAggregate (954)
: : : : : +- ObjectHashAggregate (953)
: : : : : +- Generate (952)
: : : : : +- BroadcastHashJoin Inner BuildLeft (951)
: : : : : :- BroadcastExchange (914)
: : : : : : +- Exchange (913)
: : : : : : +- Project (912)
: : : : : : +- Filter (911)
: : : : : : +- Scan parquet (910)
: : : : : +- Project (950)
: : : : : +- BroadcastHashJoin Inner BuildLeft (949)
: : : : : :- BroadcastExchange (924)
: : : : : : +- Project (923)
: : : : : : +- Generate (922)
: : : : : : +- Project (921)
: : : : : : +- Filter (920)
: : : : : : +- Generate (919)
: : : : : : +- Exchange (918)
: : : : : : +- Project (917)
: : : : : : +- Filter (916)
: : : : : : +- Scan parquet (915)
: : : : : +- HashAggregate (948)
: : : : : +- Exchange (947)
: : : : : +- HashAggregate (946)
: : : : : +- Project (945)
: : : : : +- Generate (944)
: : : : : +- Project (943)
: : : : : +- Generate (942)
: : : : : +- Project (941)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (940)
: : : : : :- Project (934)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (933)
: : : : : : :- Exchange (927)
: : : : : : : +- Filter (926)
: : : : : : : +- Scan parquet (925)
: : : : : : +- BroadcastExchange (932)
: : : : : : +- Project (931)
: : : : : : +- Exchange (930)
: : : : : : +- Project (929)
: : : : : : +- Scan parquet (928)
: : : : : +- BroadcastExchange (939)
: : : : : +- Exchange (938)
: : : : : +- Project (937)
: : : : : +- Filter (936)
: : : : : +- Scan parquet (935)
: : : : +- Sort (982)
: : : : +- Project (981)
: : : : +- Generate (980)
: : : : +- Project (979)
: : : : +- Generate (978)
: : : : +- Project (977)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (976)
: : : : :- Project (970)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (969)
: : : : : :- Exchange (963)
: : : : : : +- Filter (962)
: : : : : : +- Scan parquet (961)
: : : : : +- BroadcastExchange (968)
: : : : : +- Project (967)
: : : : : +- Exchange (966)
: : : : : +- Project (965)
: : : : : +- Scan parquet (964)
: : : : +- BroadcastExchange (975)
: : : : +- Exchange (974)
: : : : +- Project (973)
: : : : +- Filter (972)
: : : : +- Scan parquet (971)
: : : +- Sort (1065)
: : : +- Exchange (1064)
: : : +- HashAggregate (1063)
: : : +- HashAggregate (1062)
: : : +- Project (1061)
: : : +- SortMergeJoin Inner (1060)
: : : :- Sort (1037)
: : : : +- Exchange (1036)
: : : : +- Project (1035)
: : : : +- Filter (1034)
: : : : +- Generate (1033)
: : : : +- Filter (1032)
: : : : +- ObjectHashAggregate (1031)
: : : : +- ObjectHashAggregate (1030)
: : : : +- Generate (1029)
: : : : +- BroadcastHashJoin Inner BuildLeft (1028)
: : : : :- BroadcastExchange (991)
: : : : : +- Exchange (990)
: : : : : +- Project (989)
: : : : : +- Filter (988)
: : : : : +- Scan parquet (987)
: : : : +- Project (1027)
: : : : +- BroadcastHashJoin Inner BuildLeft (1026)
: : : : :- BroadcastExchange (1001)
: : : : : +- Project (1000)
: : : : : +- Generate (999)
: : : : : +- Project (998)
: : : : : +- Filter (997)
: : : : : +- Generate (996)
: : : : : +- Exchange (995)
: : : : : +- Project (994)
: : : : : +- Filter (993)
: : : : : +- Scan parquet (992)
: : : : +- HashAggregate (1025)
: : : : +- Exchange (1024)
: : : : +- HashAggregate (1023)
: : : : +- Project (1022)
: : : : +- Generate (1021)
: : : : +- Project (1020)
: : : : +- Generate (1019)
: : : : +- Project (1018)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1017)
: : : : :- Project (1011)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (1010)
: : : : : :- Exchange (1004)
: : : : : : +- Filter (1003)
: : : : : : +- Scan parquet (1002)
: : : : : +- BroadcastExchange (1009)
: : : : : +- Project (1008)
: : : : : +- Exchange (1007)
: : : : : +- Project (1006)
: : : : : +- Scan parquet (1005)
: : : : +- BroadcastExchange (1016)
: : : : +- Exchange (1015)
: : : : +- Project (1014)
: : : : +- Filter (1013)
: : : : +- Scan parquet (1012)
: : : +- Sort (1059)
: : : +- Project (1058)
: : : +- Generate (1057)
: : : +- Project (1056)
: : : +- Generate (1055)
: : : +- Project (1054)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1053)
: : : :- Project (1047)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1046)
: : : : :- Exchange (1040)
: : : : : +- Filter (1039)
: : : : : +- Scan parquet (1038)
: : : : +- BroadcastExchange (1045)
: : : : +- Project (1044)
: : : : +- Exchange (1043)
: : : : +- Project (1042)
: : : : +- Scan parquet (1041)
: : : +- BroadcastExchange (1052)
: : : +- Exchange (1051)
: : : +- Project (1050)
: : : +- Filter (1049)
: : : +- Scan parquet (1048)
: : +- BroadcastExchange (1075)
: : +- Scan parquet (1074)
: +- BroadcastExchange (1083)
: +- Exchange (1082)
: +- Project (1081)
: +- Scan parquet (1080)
+- BroadcastExchange (1100)
+- Project (1099)
+- ObjectHashAggregate (1098)
+- Exchange (1097)
+- ObjectHashAggregate (1096)
+- Filter (1095)
+- InMemoryTableScan (1093)
+- InMemoryRelation (1094)
+- LocalTableScan (691)
(1) Scan parquet
Output [3]: [product#1012489, plant#1012490, orderDateTime#1012491]
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/10000000349/shardId=0_1_10000000349]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#1012489, plant#1012490, orderDateTime#1012491]
(3) Exchange
Input [3]: [product#1012489, plant#1012490, orderDateTime#1012491]
Arguments: hashpartitioning(product#1012489, plant#1012490, 37), REPARTITION_BY_NUM, [plan_id=1640108]
(4) ShuffleQueryStage
Output [3]: [product#1012489, plant#1012490, orderDateTime#1012491]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#1012518, product#1012519, productionAspect#1012521, systemId#1012516]
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#1012518, product#1012519, productionAspect#1012521, systemId#1012516]
(7) Project [codegen id : 2]
Output [4]: [plant#1012518.internalRefUUID AS _extract_internalRefUUID#1018522, product#1012519.internalRefUUID AS _extract_internalRefUUID#1018521, productionAspect#1012521.productMovementPlants.unitOfIssue.code AS _extract_code#1018519, productionAspect#1012521.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018520]
Input [4]: [plant#1012518, product#1012519, productionAspect#1012521, systemId#1012516]
(8) Exchange
Input [4]: [_extract_internalRefUUID#1018522, _extract_internalRefUUID#1018521, _extract_code#1018519, _extract_internalRefUUID#1018520]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1640122]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#1018522, _extract_internalRefUUID#1018521, _extract_code#1018519, _extract_internalRefUUID#1018520]
Arguments: 1
(10) Project [codegen id : 82]
Output [4]: [_extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
Input [4]: [_extract_internalRefUUID#1018522, _extract_internalRefUUID#1018521, _extract_code#1018519, _extract_internalRefUUID#1018520]
(11) BroadcastExchange
Input [4]: [_extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
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=1648174]
(12) BroadcastQueryStage
Output [4]: [_extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
Arguments: 153
(13) BroadcastHashJoin [codegen id : 152]
Left keys [4]: [coalesce(product#1012489, ), isnull(product#1012489), coalesce(plant#1012490, ), isnull(plant#1012490)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018521, ), isnull(_extract_internalRefUUID#1018521), coalesce(_extract_internalRefUUID#1018522, ), isnull(_extract_internalRefUUID#1018522)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 152]
Output [5]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_code#1018519, _extract_internalRefUUID#1018520]
Input [7]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
(15) Scan parquet
Output [4]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558, systemId#1012551]
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>>>
(16) ColumnarToRow [codegen id : 3]
Input [4]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558, systemId#1012551]
(17) Filter [codegen id : 3]
Input [4]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558, systemId#1012551]
Condition : isnotnull(internalUUID#1012552)
(18) Project [codegen id : 3]
Output [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Input [4]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558, systemId#1012551]
(19) Exchange
Input [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1640143]
(20) ShuffleQueryStage
Output [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Arguments: 2
(21) BroadcastExchange
Input [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1647117]
(22) BroadcastQueryStage
Output [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Arguments: 154
(23) BroadcastHashJoin [codegen id : 152]
Left keys [1]: [product#1012489]
Right keys [1]: [internalUUID#1012552]
Join type: LeftOuter
Join condition: None
(24) Project
Output [4]: [product#1012489, plant#1012490, orderDateTime#1012491, filter(unitOfMeasureConversions#1012558, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018519) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018520)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012556.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012556.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012564]
Input [8]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_code#1018519, _extract_internalRefUUID#1018520, internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
(25) Project [codegen id : 153]
Output [5]: [product#1012489, plant#1012490, orderDateTime#1012491, filteredUnitOfMeasureConversions#1012564.quantityDenominator AS _extract_quantityDenominator#1018517, filteredUnitOfMeasureConversions#1012564.quantityNumerator AS _extract_quantityNumerator#1018518]
Input [4]: [product#1012489, plant#1012490, orderDateTime#1012491, filteredUnitOfMeasureConversions#1012564]
(26) Generate [codegen id : 153]
Input [5]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_quantityDenominator#1018517, _extract_quantityNumerator#1018518]
Arguments: explode(_extract_quantityNumerator#1018518), [product#1012489, plant#1012490, orderDateTime#1012491, _extract_quantityDenominator#1018517], true, [quantityNumerator#1012572]
(27) Generate [codegen id : 153]
Input [5]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_quantityDenominator#1018517, quantityNumerator#1012572]
Arguments: explode(_extract_quantityDenominator#1018517), [product#1012489, plant#1012490, orderDateTime#1012491, quantityNumerator#1012572], true, [quantityDenominator#1012575]
(28) Project [codegen id : 153]
Output [4]: [product#1012489, plant#1012490, orderDateTime#1012491, (cast(quantityNumerator#1012572 as double) / cast(quantityDenominator#1012575 as double)) AS outboundUnit#1012576]
Input [5]: [product#1012489, plant#1012490, orderDateTime#1012491, quantityNumerator#1012572, quantityDenominator#1012575]
(29) Project [codegen id : 153]
Output [4]: [product#1012489, plant#1012490, orderDateTime#1012491, CASE WHEN (isnull(outboundUnit#1012576) OR (outboundUnit#1012576 <= 0.0)) THEN 1.0 ELSE outboundUnit#1012576 END AS outboundUnit#1012577]
Input [4]: [product#1012489, plant#1012490, orderDateTime#1012491, outboundUnit#1012576]
(30) Sort [codegen id : 153]
Input [4]: [product#1012489, plant#1012490, orderDateTime#1012491, outboundUnit#1012577]
Arguments: [product#1012489 ASC NULLS FIRST, plant#1012490 ASC NULLS FIRST], false, 0
(31) Scan parquet
Output [6]: [internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, systemId#1012686]
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>>>>>
(32) ColumnarToRow [codegen id : 4]
Input [6]: [internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, systemId#1012686]
(33) Filter [codegen id : 4]
Input [6]: [internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, systemId#1012686]
Condition : (isnotnull(plant#1012689.internalRefUUID) AND isnotnull(product#1012688.internalRefUUID))
(34) Project [codegen id : 4]
Output [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
Input [6]: [internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, systemId#1012686]
(35) Exchange
Input [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1640171]
(36) ShuffleQueryStage
Output [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
Arguments: 3
(37) BroadcastExchange
Input [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
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=1653423]
(38) BroadcastQueryStage
Output [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
Arguments: 230
(39) Scan parquet
Output [2]: [marketUnit#1012629, distributionCenters#1012635]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(40) ColumnarToRow [codegen id : 5]
Input [2]: [marketUnit#1012629, distributionCenters#1012635]
(41) Filter [codegen id : 5]
Input [2]: [marketUnit#1012629, distributionCenters#1012635]
Condition : (((marketUnit#1012629 <=> STEPHI_MU) AND (size(distributionCenters#1012635, true) > 0)) AND isnotnull(distributionCenters#1012635))
(42) Project [codegen id : 5]
Output [1]: [distributionCenters#1012635]
Input [2]: [marketUnit#1012629, distributionCenters#1012635]
(43) Exchange
Input [1]: [distributionCenters#1012635]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1640191]
(44) ShuffleQueryStage
Output [1]: [distributionCenters#1012635]
Arguments: 4
(45) Generate [codegen id : 100]
Input [1]: [distributionCenters#1012635]
Arguments: explode(distributionCenters#1012635), false, [distributionCenters#1012652]
(46) Filter [codegen id : 100]
Input [1]: [distributionCenters#1012652]
Condition : (((size(distributionCenters#1012652.storageLocations, true) > 0) AND isnotnull(distributionCenters#1012652.storageLocations)) AND isnotnull(distributionCenters#1012652.internalRefUUID))
(47) Project [codegen id : 100]
Output [2]: [distributionCenters#1012652.internalRefUUID AS _extract_internalRefUUID#1018245, distributionCenters#1012652.storageLocations AS _extract_storageLocations#1018246]
Input [1]: [distributionCenters#1012652]
(48) Generate [codegen id : 100]
Input [2]: [_extract_internalRefUUID#1018245, _extract_storageLocations#1018246]
Arguments: explode(_extract_storageLocations#1018246), [_extract_internalRefUUID#1018245], false, [storageLocations#1012659]
(49) Project [codegen id : 100]
Output [3]: [_extract_internalRefUUID#1018245 AS plantUuid#1012654, storageLocations#1012659.id AS storageLocId#1012660, storageLocations#1012659.internalRefUUID AS storageLocUuid#1012661]
Input [2]: [_extract_internalRefUUID#1018245, storageLocations#1012659]
(50) BroadcastExchange
Input [3]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1651387]
(51) BroadcastQueryStage
Output [3]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Arguments: 207
(52) Scan parquet
Output [2]: [product#1012903, plant#1012904]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(53) ColumnarToRow [codegen id : 6]
Input [2]: [product#1012903, plant#1012904]
(54) Filter [codegen id : 6]
Input [2]: [product#1012903, plant#1012904]
Condition : isnotnull(plant#1012904)
(55) Exchange
Input [2]: [product#1012903, plant#1012904]
Arguments: hashpartitioning(product#1012903, plant#1012904, 37), REPARTITION_BY_NUM, [plan_id=1640214]
(56) ShuffleQueryStage
Output [2]: [product#1012903, plant#1012904]
Arguments: 5
(57) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1018524, _extract_internalRefUUID#1018525, _extract_internalRefUUID#1018526, _extract_internalRefUUID#1018523]
(58) BroadcastQueryStage
Output [4]: [_extract_code#1018524, _extract_internalRefUUID#1018525, _extract_internalRefUUID#1018526, _extract_internalRefUUID#1018523]
Arguments: 156
(59) BroadcastHashJoin [codegen id : 112]
Left keys [4]: [coalesce(product#1012903, ), isnull(product#1012903), coalesce(plant#1012904, ), isnull(plant#1012904)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018526, ), isnull(_extract_internalRefUUID#1018526), coalesce(_extract_internalRefUUID#1018523, ), isnull(_extract_internalRefUUID#1018523)]
Join type: LeftOuter
Join condition: None
(60) Project [codegen id : 112]
Output [4]: [product#1012903, plant#1012904, _extract_code#1018524, _extract_internalRefUUID#1018525]
Input [6]: [product#1012903, plant#1012904, _extract_code#1018524, _extract_internalRefUUID#1018525, _extract_internalRefUUID#1018526, _extract_internalRefUUID#1018523]
(61) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
(62) BroadcastQueryStage
Output [3]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
Arguments: 157
(63) BroadcastHashJoin [codegen id : 112]
Left keys [1]: [product#1012903]
Right keys [1]: [internalUUID#1012918]
Join type: LeftOuter
Join condition: None
(64) Project
Output [2]: [plant#1012904, filter(unitOfMeasureConversions#1012924, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018524) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018525)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012922.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012922.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012929]
Input [7]: [product#1012903, plant#1012904, _extract_code#1018524, _extract_internalRefUUID#1018525, internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
(65) Generate [codegen id : 113]
Input [2]: [plant#1012904, filteredUnitOfMeasureConversions#1012929]
Arguments: explode(filteredUnitOfMeasureConversions#1012929.quantityNumerator), [plant#1012904, filteredUnitOfMeasureConversions#1012929], true, [quantityNumerator#1012930]
(66) Project [codegen id : 113]
Output [2]: [plant#1012904, filteredUnitOfMeasureConversions#1012929.quantityDenominator AS _extract_quantityDenominator#1018247]
Input [3]: [plant#1012904, filteredUnitOfMeasureConversions#1012929, quantityNumerator#1012930]
(67) Generate [codegen id : 113]
Input [2]: [plant#1012904, _extract_quantityDenominator#1018247]
Arguments: explode(_extract_quantityDenominator#1018247), [plant#1012904], true, [quantityDenominator#1012931]
(68) Project [codegen id : 113]
Output [1]: [plant#1012904]
Input [2]: [plant#1012904, quantityDenominator#1012931]
(69) HashAggregate [codegen id : 113]
Input [1]: [plant#1012904]
Keys [1]: [plant#1012904]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012904]
(70) Exchange
Input [1]: [plant#1012904]
Arguments: hashpartitioning(plant#1012904, 37), ENSURE_REQUIREMENTS, [plan_id=1661060]
(71) ShuffleQueryStage
Output [1]: [plant#1012904]
Arguments: 238
(72) AQEShuffleRead
Input [1]: [plant#1012904]
Arguments: coalesced
(73) HashAggregate
Input [1]: [plant#1012904]
Keys [1]: [plant#1012904]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012904]
(74) BroadcastHashJoin
Left keys [1]: [plantUuid#1012654]
Right keys [1]: [plant#1012904]
Join type: Inner
Join condition: None
(75) Project
Output [3]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Input [4]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661, plant#1012904]
(76) BroadcastHashJoin [codegen id : 128]
Left keys [2]: [coalesce(plant#1012689.internalRefUUID, ), isnull(plant#1012689.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1012654, ), isnull(plantUuid#1012654)]
Join type: Inner
Join condition: None
(77) Generate
Input [9]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Arguments: explode(filter(stockQuantities#1012691, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1012661) AND (lambda x#1012695.storageLocation.Id = storageLocId#1012660)), lambda x#1012695, false))), [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, plantUuid#1012654], false, [stockQuantity#1012696]
(78) ObjectHashAggregate
Input [7]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, plantUuid#1012654, stockQuantity#1012696]
Keys [5]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686]
Functions [2]: [partial_first(calculationDateTime#1012690, false), partial_collect_list(stockQuantity#1012696, 0, 0)]
Aggregate Attributes [3]: [first#1019617, valueSet#1019618, buf#1019619]
Results [8]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686, first#1019620, valueSet#1019621, buf#1019622]
(79) ObjectHashAggregate
Input [8]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686, first#1019620, valueSet#1019621, buf#1019622]
Keys [5]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686]
Functions [2]: [first(calculationDateTime#1012690, false), collect_list(stockQuantity#1012696, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1012690)()#1012710, collect_list(stockQuantity#1012696, 0, 0)#1012711]
Results [4]: [product#1012688, plant#1012689, first(calculationDateTime#1012690)()#1012710 AS calculationDateTime#1012697, collect_list(stockQuantity#1012696, 0, 0)#1012711 AS stockQuantities#1012698]
(80) Filter [codegen id : 129]
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantities#1012698]
Condition : ((size(stockQuantities#1012698, true) > 0) AND isnotnull(calculationDateTime#1012697))
(81) Generate [codegen id : 129]
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantities#1012698]
Arguments: explode(stockQuantities#1012698), [product#1012688, plant#1012689, calculationDateTime#1012697], false, [stockQuantity#1012713]
(82) Filter [codegen id : 129]
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantity#1012713]
Condition : (((isnotnull(stockQuantity#1012713.specialStockIndicator.code) AND isnotnull(stockQuantity#1012713.stockType.code)) AND (stockQuantity#1012713.specialStockIndicator.code = )) AND (stockQuantity#1012713.stockType.code = 01))
(83) Project [codegen id : 129]
Output [5]: [plant#1012689.internalRefUUID AS plantUuid#1012715, product#1012688.internalRefUUID AS productUuid#1012717, calculationDateTime#1012697, stockQuantity#1012713.storagelocation.id AS storageLocId#1012718, stockQuantity#1012713.quantity.measure AS quantity#1012720]
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantity#1012713]
(84) Exchange
Input [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: hashpartitioning(productUuid#1012717, plantUuid#1012715, 37), ENSURE_REQUIREMENTS, [plan_id=1663441]
(85) ShuffleQueryStage
Output [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: 253
(86) AQEShuffleRead
Input [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: local
(87) BroadcastExchange
Input [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1670423]
(88) BroadcastQueryStage
Output [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: 281
(89) Scan parquet
Output [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(90) ColumnarToRow [codegen id : 9]
Input [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
(91) Filter [codegen id : 9]
Input [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Condition : ((isnotnull(orderDateTime#1012734) AND isnotnull(plant#1012733)) AND isnotnull(product#1012732))
(92) Exchange
Input [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Arguments: hashpartitioning(product#1012732, plant#1012733, 37), REPARTITION_BY_NUM, [plan_id=1640294]
(93) ShuffleQueryStage
Output [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Arguments: 10
(94) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1018527, _extract_internalRefUUID#1018528, _extract_internalRefUUID#1018529, _extract_internalRefUUID#1018530]
(95) BroadcastQueryStage
Output [4]: [_extract_code#1018527, _extract_internalRefUUID#1018528, _extract_internalRefUUID#1018529, _extract_internalRefUUID#1018530]
Arguments: 159
(96) BroadcastHashJoin [codegen id : 154]
Left keys [4]: [coalesce(product#1012732, ), isnull(product#1012732), coalesce(plant#1012733, ), isnull(plant#1012733)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018529, ), isnull(_extract_internalRefUUID#1018529), coalesce(_extract_internalRefUUID#1018530, ), isnull(_extract_internalRefUUID#1018530)]
Join type: LeftOuter
Join condition: None
(97) Project [codegen id : 154]
Output [5]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_code#1018527, _extract_internalRefUUID#1018528]
Input [7]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_code#1018527, _extract_internalRefUUID#1018528, _extract_internalRefUUID#1018529, _extract_internalRefUUID#1018530]
(98) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
(99) BroadcastQueryStage
Output [3]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
Arguments: 160
(100) BroadcastHashJoin [codegen id : 154]
Left keys [1]: [product#1012732]
Right keys [1]: [internalUUID#1012747]
Join type: LeftOuter
Join condition: None
(101) Project
Output [4]: [product#1012732, plant#1012733, orderDateTime#1012734, filter(unitOfMeasureConversions#1012753, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018527) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018528)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012751.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012751.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012758]
Input [8]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_code#1018527, _extract_internalRefUUID#1018528, internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
(102) Generate
Input [4]: [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758]
Arguments: explode(filteredUnitOfMeasureConversions#1012758.quantityNumerator), [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758], true, [quantityNumerator#1012759]
(103) Project
Output [4]: [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758.quantityDenominator AS _extract_quantityDenominator#1018254]
Input [5]: [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758, quantityNumerator#1012759]
(104) Generate
Input [4]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_quantityDenominator#1018254]
Arguments: explode(_extract_quantityDenominator#1018254), [product#1012732, plant#1012733, orderDateTime#1012734], true, [quantityDenominator#1012760]
(105) Project
Output [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Input [4]: [product#1012732, plant#1012733, orderDateTime#1012734, quantityDenominator#1012760]
(106) BroadcastHashJoin [codegen id : 155]
Left keys [2]: [plantUuid#1012715, productUuid#1012717]
Right keys [2]: [plant#1012733, product#1012732]
Join type: Inner
Join condition: (calculationDateTime#1012697 <= orderDateTime#1012734)
(107) Project [codegen id : 155]
Output [5]: [plantUuid#1012715 AS plant#1012766, productUuid#1012717 AS product#1012767, storageLocId#1012718, calculationDateTime#1012697, quantity#1012720]
Input [8]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720, product#1012732, plant#1012733, orderDateTime#1012734]
(108) ReusedExchange [Reuses operator id: 37]
Output [6]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780]
(109) BroadcastQueryStage
Output [6]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780]
Arguments: 231
(110) ReusedExchange [Reuses operator id: 50]
Output [3]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
(111) BroadcastQueryStage
Output [3]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
Arguments: 209
(112) ReusedExchange [Reuses operator id: 70]
Output [1]: [plant#1012809]
(113) ShuffleQueryStage
Output [1]: [plant#1012809]
Arguments: 240
(114) AQEShuffleRead
Input [1]: [plant#1012809]
Arguments: coalesced
(115) HashAggregate
Input [1]: [plant#1012809]
Keys [1]: [plant#1012809]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012809]
(116) BroadcastHashJoin
Left keys [1]: [plantUuid#1012805]
Right keys [1]: [plant#1012809]
Join type: Inner
Join condition: None
(117) Project
Output [3]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
Input [4]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807, plant#1012809]
(118) BroadcastHashJoin [codegen id : 130]
Left keys [2]: [coalesce(plant#1012778.internalRefUUID, ), isnull(plant#1012778.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1012805, ), isnull(plantUuid#1012805)]
Join type: Inner
Join condition: None
(119) Generate
Input [9]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780, plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
Arguments: explode(filter(stockQuantities#1012780, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1012807) AND (lambda x#1012695.storageLocation.Id = storageLocId#1012806)), lambda x#1012695, false))), [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, plantUuid#1012805], false, [stockQuantity#1012839]
(120) ObjectHashAggregate
Input [7]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, plantUuid#1012805, stockQuantity#1012839]
Keys [5]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775]
Functions [2]: [partial_first(calculationDateTime#1012779, false), partial_collect_list(stockQuantity#1012839, 0, 0)]
Aggregate Attributes [3]: [first#1019625, valueSet#1019626, buf#1019627]
Results [8]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775, first#1019628, valueSet#1019629, buf#1019630]
(121) ObjectHashAggregate
Input [8]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775, first#1019628, valueSet#1019629, buf#1019630]
Keys [5]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775]
Functions [2]: [first(calculationDateTime#1012779, false), collect_list(stockQuantity#1012839, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1012779)()#1012710, collect_list(stockQuantity#1012839, 0, 0)#1012711]
Results [4]: [product#1012777, plant#1012778, first(calculationDateTime#1012779)()#1012710 AS calculationDateTime#1012840, collect_list(stockQuantity#1012839, 0, 0)#1012711 AS stockQuantities#1012841]
(122) Filter [codegen id : 131]
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantities#1012841]
Condition : ((size(stockQuantities#1012841, true) > 0) AND isnotnull(calculationDateTime#1012840))
(123) Generate [codegen id : 131]
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantities#1012841]
Arguments: explode(stockQuantities#1012841), [product#1012777, plant#1012778, calculationDateTime#1012840], false, [stockQuantity#1012842]
(124) Filter [codegen id : 131]
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantity#1012842]
Condition : (((isnotnull(stockQuantity#1012842.specialStockIndicator.code) AND isnotnull(stockQuantity#1012842.stockType.code)) AND (stockQuantity#1012842.specialStockIndicator.code = )) AND (stockQuantity#1012842.stockType.code = 01))
(125) Project [codegen id : 131]
Output [4]: [plant#1012778.internalRefUUID AS plantUuid#1012844, product#1012777.internalRefUUID AS productUuid#1012846, calculationDateTime#1012840, stockQuantity#1012842.storagelocation.id AS storageLocId#1012847]
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantity#1012842]
(126) Exchange
Input [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: hashpartitioning(productUuid#1012846, plantUuid#1012844, 37), ENSURE_REQUIREMENTS, [plan_id=1663509]
(127) ShuffleQueryStage
Output [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: 254
(128) AQEShuffleRead
Input [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: local
(129) BroadcastExchange
Input [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1666623]
(130) BroadcastQueryStage
Output [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: 267
(131) ReusedExchange [Reuses operator id: 92]
Output [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
(132) ShuffleQueryStage
Output [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
Arguments: 26
(133) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1018535, _extract_internalRefUUID#1018536, _extract_internalRefUUID#1018538, _extract_internalRefUUID#1018537]
(134) BroadcastQueryStage
Output [4]: [_extract_code#1018535, _extract_internalRefUUID#1018536, _extract_internalRefUUID#1018538, _extract_internalRefUUID#1018537]
Arguments: 165
(135) BroadcastHashJoin [codegen id : 144]
Left keys [4]: [coalesce(product#1012852, ), isnull(product#1012852), coalesce(plant#1012853, ), isnull(plant#1012853)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018538, ), isnull(_extract_internalRefUUID#1018538), coalesce(_extract_internalRefUUID#1018537, ), isnull(_extract_internalRefUUID#1018537)]
Join type: LeftOuter
Join condition: None
(136) Project [codegen id : 144]
Output [5]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_code#1018535, _extract_internalRefUUID#1018536]
Input [7]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_code#1018535, _extract_internalRefUUID#1018536, _extract_internalRefUUID#1018538, _extract_internalRefUUID#1018537]
(137) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
(138) BroadcastQueryStage
Output [3]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
Arguments: 166
(139) BroadcastHashJoin [codegen id : 144]
Left keys [1]: [product#1012852]
Right keys [1]: [internalUUID#1012867]
Join type: LeftOuter
Join condition: None
(140) Project
Output [4]: [product#1012852, plant#1012853, orderDateTime#1012854, filter(unitOfMeasureConversions#1012873, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018535) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018536)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012871.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012871.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012878]
Input [8]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_code#1018535, _extract_internalRefUUID#1018536, internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
(141) Generate
Input [4]: [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878]
Arguments: explode(filteredUnitOfMeasureConversions#1012878.quantityNumerator), [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878], true, [quantityNumerator#1012879]
(142) Project
Output [4]: [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878.quantityDenominator AS _extract_quantityDenominator#1018270]
Input [5]: [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878, quantityNumerator#1012879]
(143) Generate
Input [4]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_quantityDenominator#1018270]
Arguments: explode(_extract_quantityDenominator#1018270), [product#1012852, plant#1012853, orderDateTime#1012854], true, [quantityDenominator#1012880]
(144) Project
Output [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
Input [4]: [product#1012852, plant#1012853, orderDateTime#1012854, quantityDenominator#1012880]
(145) BroadcastHashJoin [codegen id : 145]
Left keys [2]: [plantUuid#1012844, productUuid#1012846]
Right keys [2]: [plant#1012853, product#1012852]
Join type: Inner
Join condition: (calculationDateTime#1012840 <= orderDateTime#1012854)
(146) Project [codegen id : 145]
Output [4]: [plantUuid#1012844 AS plant#1012883, productUuid#1012846 AS product#1012884, storageLocId#1012847, calculationDateTime#1012840]
Input [7]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847, product#1012852, plant#1012853, orderDateTime#1012854]
(147) HashAggregate [codegen id : 145]
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, calculationDateTime#1012840]
Keys [3]: [plant#1012883, product#1012884, storageLocId#1012847]
Functions [1]: [partial_max(calculationDateTime#1012840)]
Aggregate Attributes [1]: [max#1019623]
Results [4]: [plant#1012883, product#1012884, storageLocId#1012847, max#1019624]
(148) HashAggregate [codegen id : 145]
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max#1019624]
Keys [3]: [plant#1012883, product#1012884, storageLocId#1012847]
Functions [1]: [max(calculationDateTime#1012840)]
Aggregate Attributes [1]: [max(calculationDateTime#1012840)#1012774]
Results [4]: [plant#1012883, product#1012884, storageLocId#1012847, max(calculationDateTime#1012840)#1012774 AS max_calc_datetime#1012768]
(149) Exchange
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
Arguments: hashpartitioning(coalesce(plant#1012883, ), isnull(plant#1012883), coalesce(product#1012884, ), isnull(product#1012884), coalesce(storageLocId#1012847, ), isnull(storageLocId#1012847), coalesce(max_calc_datetime#1012768, 1970-01-01 00:00:00), isnull(max_calc_datetime#1012768), 37), ENSURE_REQUIREMENTS, [plan_id=1669172]
(150) ShuffleQueryStage
Output [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
Arguments: 274
(151) AQEShuffleRead
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
Arguments: local
(152) BroadcastExchange
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
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=1672289]
(153) BroadcastQueryStage
Output [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
Arguments: 288
(154) BroadcastHashJoin [codegen id : 155]
Left keys [8]: [coalesce(plant#1012766, ), isnull(plant#1012766), coalesce(product#1012767, ), isnull(product#1012767), coalesce(storageLocId#1012718, ), isnull(storageLocId#1012718), coalesce(calculationDateTime#1012697, 1970-01-01 00:00:00), isnull(calculationDateTime#1012697)]
Right keys [8]: [coalesce(plant#1012883, ), isnull(plant#1012883), coalesce(product#1012884, ), isnull(product#1012884), coalesce(storageLocId#1012847, ), isnull(storageLocId#1012847), coalesce(max_calc_datetime#1012768, 1970-01-01 00:00:00), isnull(max_calc_datetime#1012768)]
Join type: Inner
Join condition: None
(155) Project [codegen id : 155]
Output [4]: [plant#1012766, product#1012767, calculationDateTime#1012697, quantity#1012720]
Input [9]: [plant#1012766, product#1012767, storageLocId#1012718, calculationDateTime#1012697, quantity#1012720, plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
(156) HashAggregate [codegen id : 155]
Input [4]: [plant#1012766, product#1012767, calculationDateTime#1012697, quantity#1012720]
Keys [2]: [product#1012767, plant#1012766]
Functions [2]: [partial_min(calculationDateTime#1012697), partial_sum(quantity#1012720)]
Aggregate Attributes [2]: [min#1019613, sum#1019614]
Results [4]: [product#1012767, plant#1012766, min#1019615, sum#1019616]
(157) HashAggregate [codegen id : 155]
Input [4]: [product#1012767, plant#1012766, min#1019615, sum#1019616]
Keys [2]: [product#1012767, plant#1012766]
Functions [2]: [min(calculationDateTime#1012697), sum(quantity#1012720)]
Aggregate Attributes [2]: [min(calculationDateTime#1012697)#1012901, sum(quantity#1012720)#1012900]
Results [4]: [product#1012767, plant#1012766, min(calculationDateTime#1012697)#1012901 AS minCalculationDateTime#1012894, round(sum(quantity#1012720)#1012900, 0) AS roundedQuantitySum#1012902]
(158) Sort [codegen id : 155]
Input [4]: [product#1012767, plant#1012766, minCalculationDateTime#1012894, roundedQuantitySum#1012902]
Arguments: [product#1012767 ASC NULLS FIRST, plant#1012766 ASC NULLS FIRST], false, 0
(159) SortMergeJoin [codegen id : 156]
Left keys [2]: [product#1012489, plant#1012490]
Right keys [2]: [product#1012767, plant#1012766]
Join type: LeftOuter
Join condition: None
(160) Project [codegen id : 156]
Output [5]: [product#1012489, plant#1012490, outboundUnit#1012577, CASE WHEN isnotnull(minCalculationDateTime#1012894) THEN minCalculationDateTime#1012894 ELSE orderDateTime#1012491 END AS stockDatetime#1012937, CASE WHEN isnotnull(roundedQuantitySum#1012902) THEN array(roundedQuantitySum#1012902) ELSE [0.0] END AS stockBatchQuantities#1012938]
Input [8]: [product#1012489, plant#1012490, orderDateTime#1012491, outboundUnit#1012577, product#1012767, plant#1012766, minCalculationDateTime#1012894, roundedQuantitySum#1012902]
(161) Exchange
Input [5]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938]
Arguments: hashpartitioning(coalesce(plant#1012490, ), isnull(plant#1012490), coalesce(product#1012489, ), isnull(product#1012489), 37), ENSURE_REQUIREMENTS, [plan_id=1674059]
(162) ShuffleQueryStage
Output [5]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938]
Arguments: 295
(163) AQEShuffleRead
Input [5]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938]
Arguments: local
(164) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#1014057, plant#1014058, orderDateTime#1014059]
(165) ShuffleQueryStage
Output [3]: [product#1014057, plant#1014058, orderDateTime#1014059]
Arguments: 32
(166) Scan parquet
Output [9]: [internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069, systemId#1014061]
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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(167) ColumnarToRow [codegen id : 21]
Input [9]: [internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069, systemId#1014061]
(168) Project [codegen id : 21]
Output [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
Input [9]: [internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069, systemId#1014061]
(169) Exchange
Input [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1640593]
(170) ShuffleQueryStage
Output [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
Arguments: 33
(171) Project [codegen id : 102]
Output [1]: [struct(systemId, systemId#1014061, internalUUID, internalUUID#1014062, plant, plant#1014063, product, product#1014064, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1014065, productionAspect, productionAspect#1014066, salesPlant, salesPlant#1014067, listing, listing#1014068, sourceOfSupplyCategory, sourceOfSupplyCategory#1014069) AS productPlant#1014070]
Input [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
(172) BroadcastExchange
Input [1]: [productPlant#1014070]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1651473]
(173) BroadcastQueryStage
Output [1]: [productPlant#1014070]
Arguments: 210
(174) BroadcastHashJoin [codegen id : 157]
Left keys [4]: [coalesce(product#1014057, ), isnull(product#1014057), coalesce(plant#1014058, ), isnull(plant#1014058)]
Right keys [4]: [coalesce(productPlant#1014070.product.internalRefUUID, ), isnull(productPlant#1014070.product.internalRefUUID), coalesce(productPlant#1014070.plant.internalRefUUID, ), isnull(productPlant#1014070.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(175) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
(176) BroadcastQueryStage
Output [3]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
Arguments: 167
(177) BroadcastHashJoin [codegen id : 157]
Left keys [1]: [product#1014057]
Right keys [1]: [internalUUID#1014072]
Join type: LeftOuter
Join condition: None
(178) Project
Output [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, filter(unitOfMeasureConversions#1014078, lambdafunction((((lambda u#1012565.measurementUnit1.code = productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1012565.measurementUnit1.internalRefUUID = productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014076.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014076.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014083]
Input [7]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
(179) Project [codegen id : 158]
Output [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, filteredUnitOfMeasureConversions#1014083.quantityDenominator AS _extract_quantityDenominator#1018539, filteredUnitOfMeasureConversions#1014083.quantityNumerator AS _extract_quantityNumerator#1018540]
Input [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, filteredUnitOfMeasureConversions#1014083]
(180) Generate [codegen id : 158]
Input [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, _extract_quantityDenominator#1018539, _extract_quantityNumerator#1018540]
Arguments: explode(_extract_quantityNumerator#1018540), [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, _extract_quantityDenominator#1018539], true, [quantityNumerator#1014084]
(181) Generate [codegen id : 158]
Input [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, _extract_quantityDenominator#1018539, quantityNumerator#1014084]
Arguments: explode(_extract_quantityDenominator#1018539), [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, quantityNumerator#1014084], true, [quantityDenominator#1014085]
(182) Project [codegen id : 158]
Output [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, (cast(quantityNumerator#1014084 as double) / cast(quantityDenominator#1014085 as double)) AS outboundUnit#1014086]
Input [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, quantityNumerator#1014084, quantityDenominator#1014085]
(183) Project [codegen id : 158]
Output [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, CASE WHEN (isnull(outboundUnit#1014086) OR (outboundUnit#1014086 <= 0.0)) THEN 1.0 ELSE outboundUnit#1014086 END AS outboundUnit#1014087]
Input [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014086]
(184) Sort [codegen id : 158]
Input [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087]
Arguments: [product#1014057 ASC NULLS FIRST, plant#1014058 ASC NULLS FIRST], false, 0
(185) ReusedExchange [Reuses operator id: 87]
Output [5]: [plantUuid#1014157, productUuid#1014159, calculationDateTime#1014153, storageLocId#1014160, quantity#1014162]
(186) BroadcastQueryStage
Output [5]: [plantUuid#1014157, productUuid#1014159, calculationDateTime#1014153, storageLocId#1014160, quantity#1014162]
Arguments: 283
(187) ReusedExchange [Reuses operator id: 92]
Output [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
(188) ShuffleQueryStage
Output [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
Arguments: 47
(189) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1018545, _extract_internalRefUUID#1018546, _extract_internalRefUUID#1018547, _extract_internalRefUUID#1018548]
(190) BroadcastQueryStage
Output [4]: [_extract_code#1018545, _extract_internalRefUUID#1018546, _extract_internalRefUUID#1018547, _extract_internalRefUUID#1018548]
Arguments: 172
(191) BroadcastHashJoin [codegen id : 159]
Left keys [4]: [coalesce(product#1014165, ), isnull(product#1014165), coalesce(plant#1014166, ), isnull(plant#1014166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018547, ), isnull(_extract_internalRefUUID#1018547), coalesce(_extract_internalRefUUID#1018548, ), isnull(_extract_internalRefUUID#1018548)]
Join type: LeftOuter
Join condition: None
(192) Project [codegen id : 159]
Output [5]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_code#1018545, _extract_internalRefUUID#1018546]
Input [7]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_code#1018545, _extract_internalRefUUID#1018546, _extract_internalRefUUID#1018547, _extract_internalRefUUID#1018548]
(193) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
(194) BroadcastQueryStage
Output [3]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
Arguments: 173
(195) BroadcastHashJoin [codegen id : 159]
Left keys [1]: [product#1014165]
Right keys [1]: [internalUUID#1014180]
Join type: LeftOuter
Join condition: None
(196) Project
Output [4]: [product#1014165, plant#1014166, orderDateTime#1014167, filter(unitOfMeasureConversions#1014186, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018545) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018546)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014184.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014184.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014191]
Input [8]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_code#1018545, _extract_internalRefUUID#1018546, internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
(197) Generate
Input [4]: [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191]
Arguments: explode(filteredUnitOfMeasureConversions#1014191.quantityNumerator), [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191], true, [quantityNumerator#1014192]
(198) Project
Output [4]: [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191.quantityDenominator AS _extract_quantityDenominator#1018287]
Input [5]: [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191, quantityNumerator#1014192]
(199) Generate
Input [4]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_quantityDenominator#1018287]
Arguments: explode(_extract_quantityDenominator#1018287), [product#1014165, plant#1014166, orderDateTime#1014167], true, [quantityDenominator#1014193]
(200) Project
Output [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
Input [4]: [product#1014165, plant#1014166, orderDateTime#1014167, quantityDenominator#1014193]
(201) BroadcastHashJoin [codegen id : 160]
Left keys [2]: [plantUuid#1014157, productUuid#1014159]
Right keys [2]: [plant#1014166, product#1014165]
Join type: Inner
Join condition: (calculationDateTime#1014153 <= orderDateTime#1014167)
(202) Project [codegen id : 160]
Output [5]: [plantUuid#1014157 AS plant#1014196, productUuid#1014159 AS product#1014197, storageLocId#1014160, calculationDateTime#1014153, quantity#1014162]
Input [8]: [plantUuid#1014157, productUuid#1014159, calculationDateTime#1014153, storageLocId#1014160, quantity#1014162, product#1014165, plant#1014166, orderDateTime#1014167]
(203) ReusedExchange [Reuses operator id: 152]
Output [4]: [plant#1014306, product#1014307, storageLocId#1014270, max_calc_datetime#1014308]
(204) BroadcastQueryStage
Output [4]: [plant#1014306, product#1014307, storageLocId#1014270, max_calc_datetime#1014308]
Arguments: 290
(205) BroadcastHashJoin [codegen id : 160]
Left keys [8]: [coalesce(plant#1014196, ), isnull(plant#1014196), coalesce(product#1014197, ), isnull(product#1014197), coalesce(storageLocId#1014160, ), isnull(storageLocId#1014160), coalesce(calculationDateTime#1014153, 1970-01-01 00:00:00), isnull(calculationDateTime#1014153)]
Right keys [8]: [coalesce(plant#1014306, ), isnull(plant#1014306), coalesce(product#1014307, ), isnull(product#1014307), coalesce(storageLocId#1014270, ), isnull(storageLocId#1014270), coalesce(max_calc_datetime#1014308, 1970-01-01 00:00:00), isnull(max_calc_datetime#1014308)]
Join type: Inner
Join condition: None
(206) Project [codegen id : 160]
Output [4]: [plant#1014196, product#1014197, calculationDateTime#1014153, quantity#1014162]
Input [9]: [plant#1014196, product#1014197, storageLocId#1014160, calculationDateTime#1014153, quantity#1014162, plant#1014306, product#1014307, storageLocId#1014270, max_calc_datetime#1014308]
(207) HashAggregate [codegen id : 160]
Input [4]: [plant#1014196, product#1014197, calculationDateTime#1014153, quantity#1014162]
Keys [2]: [product#1014197, plant#1014196]
Functions [2]: [partial_min(calculationDateTime#1014153), partial_sum(quantity#1014162)]
Aggregate Attributes [2]: [min#1019635, sum#1019636]
Results [4]: [product#1014197, plant#1014196, min#1019637, sum#1019638]
(208) HashAggregate [codegen id : 160]
Input [4]: [product#1014197, plant#1014196, min#1019637, sum#1019638]
Keys [2]: [product#1014197, plant#1014196]
Functions [2]: [min(calculationDateTime#1014153), sum(quantity#1014162)]
Aggregate Attributes [2]: [min(calculationDateTime#1014153)#1012901, sum(quantity#1014162)#1012900]
Results [4]: [product#1014197, plant#1014196, min(calculationDateTime#1014153)#1012901 AS minCalculationDateTime#1014310, round(sum(quantity#1014162)#1012900, 0) AS roundedQuantitySum#1014311]
(209) Sort [codegen id : 160]
Input [4]: [product#1014197, plant#1014196, minCalculationDateTime#1014310, roundedQuantitySum#1014311]
Arguments: [product#1014197 ASC NULLS FIRST, plant#1014196 ASC NULLS FIRST], false, 0
(210) SortMergeJoin [codegen id : 161]
Left keys [2]: [product#1014057, plant#1014058]
Right keys [2]: [product#1014197, plant#1014196]
Join type: LeftOuter
Join condition: None
(211) Project [codegen id : 161]
Output [7]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, CASE WHEN isnotnull(minCalculationDateTime#1014310) THEN minCalculationDateTime#1014310 ELSE orderDateTime#1014059 END AS stockDatetime#1014312, CASE WHEN isnotnull(roundedQuantitySum#1014311) THEN array(roundedQuantitySum#1014311) ELSE [0.0] END AS stockBatchQuantities#1014313]
Input [9]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, product#1014197, plant#1014196, minCalculationDateTime#1014310, roundedQuantitySum#1014311]
(212) Scan parquet
Output [9]: [product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000349/0_1_10000000349]
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>>>
(213) ColumnarToRow [codegen id : 39]
Input [9]: [product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
(214) BroadcastExchange
Input [9]: [product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
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=1641055]
(215) BroadcastQueryStage
Output [9]: [product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
Arguments: 68
(216) BroadcastHashJoin [codegen id : 161]
Left keys [4]: [coalesce(plant#1014058, ), isnull(plant#1014058), coalesce(product#1014057, ), isnull(product#1014057)]
Right keys [4]: [coalesce(plant#1012941, ), isnull(plant#1012941), coalesce(product#1012940, ), isnull(product#1012940)]
Join type: LeftOuter
Join condition: None
(217) Project [codegen id : 161]
Output [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, CASE WHEN isnotnull(product#1012940) THEN struct(demandChannel, demandChannel#1012942, demandStream, demandStream#1012943, considerVariance, considerVariance#1012944, demandTimeBuckets, demandTimeBuckets#1012945, demandPointInTimeStart, demandPointInTimeStart#1012946, demandPointInTimeEnd, demandPointInTimeEnd#1012947, demandPointInTime, demandPointInTime#1012948) END AS rawDemands#1012950]
Input [16]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
(218) ObjectHashAggregate
Input [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, rawDemands#1012950]
Keys [8]: [product#1014057, plant#1014058, orderDateTime#1014059, knownfloatingpointnormalized(if (isnull(productPlant#1014070)) null else named_struct(systemId, productPlant#1014070.systemId, internalUUID, productPlant#1014070.internalUUID, plant, productPlant#1014070.plant, product, productPlant#1014070.product, blockedForReplenishmentStartingFrom, productPlant#1014070.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1014070.productionAspect)) null else named_struct(productMovementPlants, productPlant#1014070.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1014070.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1014070.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1014070.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1014070.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#1014070.salesPlant, listing, productPlant#1014070.listing, sourceOfSupplyCategory, productPlant#1014070.sourceOfSupplyCategory)) AS productPlant#1014070, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1014087)) AS outboundUnit#1014087, stockDatetime#1014312, knownfloatingpointnormalized(transform(stockBatchQuantities#1014313, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1021105)), lambda arg#1021105, false))) AS stockBatchQuantities#1014313, [7226582400000000] AS [7226582400000000]#1021104]
Functions [1]: [partial_collect_list(rawDemands#1012950, 0, 0)]
Aggregate Attributes [1]: [buf#1019633]
Results [9]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000]#1021104, buf#1019634]
(219) ObjectHashAggregate
Input [9]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000]#1021104, buf#1019634]
Keys [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000]#1021104]
Functions [1]: [collect_list(rawDemands#1012950, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1012950, 0, 0)#1012970]
Results [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, collect_list(rawDemands#1012950, 0, 0)#1012970 AS rawDemands#1012951]
(220) Scan parquet
Output [3]: [internalUUID#1014008, address#1014014, systemId#1014007]
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>>>
(221) ColumnarToRow [codegen id : 40]
Input [3]: [internalUUID#1014008, address#1014014, systemId#1014007]
(222) Project [codegen id : 40]
Output [2]: [internalUUID#1014008, address#1014014.timeZone.code AS timezonecode#1014020]
Input [3]: [internalUUID#1014008, address#1014014, systemId#1014007]
(223) Exchange
Input [2]: [internalUUID#1014008, timezonecode#1014020]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1641072]
(224) ShuffleQueryStage
Output [2]: [internalUUID#1014008, timezonecode#1014020]
Arguments: 69
(225) BroadcastExchange
Input [2]: [internalUUID#1014008, timezonecode#1014020]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1647369]
(226) BroadcastQueryStage
Output [2]: [internalUUID#1014008, timezonecode#1014020]
Arguments: 215
(227) BroadcastHashJoin [codegen id : 162]
Left keys [2]: [coalesce(plant#1014058, ), isnull(plant#1014058)]
Right keys [2]: [coalesce(internalUUID#1014008, ), isnull(internalUUID#1014008)]
Join type: LeftOuter
Join condition: None
(228) Project [codegen id : 162]
Output [10]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1014314, rawDemands#1012951, CASE WHEN isnotnull(timezonecode#1014020) THEN timezonecode#1014020 ELSE UTC END AS timezonecode#1014022]
Input [10]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, rawDemands#1012951, internalUUID#1014008, timezonecode#1014020]
(229) DeserializeToObject [codegen id : 162]
Input [10]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, stockBatchShelfLifeEndDatetimes#1014314, rawDemands#1012951, timezonecode#1014022]
Arguments: createexternalrow(invoke(product#1014057.toString()), invoke(plant#1014058.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1014059)), if (isnull(productPlant#1014070)) null else createexternalrow(invoke(productPlant#1014070.systemId.toString()), invoke(productPlant#1014070.internalUUID.toString()), if (isnull(productPlant#1014070.plant)) null else createexternalrow(invoke(productPlant#1014070.plant.internalRefUUID.toString()), invoke(productPlant#1014070.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1014070.product)) null else createexternalrow(invoke(productPlant#1014070.product.internalRefUUID.toString()), invoke(productPlant#1014070.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1014070.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1014070.productionAspect)) null else createexternalrow(if (isnull(productPlant#1014070.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1014070.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#1014070.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1014070.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#1014070.salesPlant)) null else createexternalrow(if (isnull(productPlant#1014070.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1014070.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1014070.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#1014070.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1014070.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1014070.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1014070.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#1014087)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1014312)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1014313, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1014314, 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#1012951, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1014022.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#1014043: org.apache.spark.sql.Row
(230) MapElements [codegen id : 162]
Input [1]: [obj#1014043]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@2aab4875, obj#1014048: org.apache.spark.sql.Row
(231) SerializeFromObject [codegen id : 162]
Input [1]: [obj#1014048]
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#1014053, 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#1014054, 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#1014055, 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#1014056]
(232) Exchange
Input [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Arguments: hashpartitioning(coalesce(plant#1014054, ), isnull(plant#1014054), coalesce(product#1014053, ), isnull(product#1014053), 37), ENSURE_REQUIREMENTS, [plan_id=1674191]
(233) ShuffleQueryStage
Output [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Arguments: 296
(234) AQEShuffleRead
Input [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Arguments: local
(235) BroadcastExchange
Input [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
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=1675069]
(236) BroadcastQueryStage
Output [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Arguments: 300
(237) BroadcastHashJoin [codegen id : 174]
Left keys [4]: [coalesce(plant#1012490, ), isnull(plant#1012490), coalesce(product#1012489, ), isnull(product#1012489)]
Right keys [4]: [coalesce(plant#1014054, ), isnull(plant#1014054), coalesce(product#1014053, ), isnull(product#1014053)]
Join type: LeftOuter
Join condition: None
(238) Project [codegen id : 174]
Output [7]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Input [9]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
(239) Project [codegen id : 174]
Output [12]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, cast(null as string) AS product#1014349, cast(null as string) AS plant#1014348, cast(null as array<double>) AS _extract_openQtyInBaseUnit#1018514, cast(null as array<timestamp>) AS _extract_availabilityDatetime#1018515, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#1018516]
Input [7]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056]
(240) Project [codegen id : 174]
Output [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, coalesce(_extract_openQtyInBaseUnit#1018514, []) AS openGoodsMovementQuantities#1015702, coalesce(_extract_availabilityDatetime#1018515, []) AS openGoodsMovementAvailabilityDatetimes#1015703, coalesce(_extract_shelfLifeEndDatetime#1018516, []) AS openGoodsMovementShelfLifeEndDatetimes#1015704]
Input [12]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, product#1014349, plant#1014348, _extract_openQtyInBaseUnit#1018514, _extract_availabilityDatetime#1018515, _extract_shelfLifeEndDatetime#1018516]
(241) Exchange
Input [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704]
Arguments: hashpartitioning(product#1012489, plant#1012490, 37), ENSURE_REQUIREMENTS, [plan_id=1675276]
(242) ShuffleQueryStage
Output [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704]
Arguments: 303
(243) AQEShuffleRead
Input [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704]
Arguments: local
(244) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#1016192, plant#1016193, orderDateTime#1016194]
(245) ShuffleQueryStage
Output [3]: [product#1016192, plant#1016193, orderDateTime#1016194]
Arguments: 72
(246) ReusedExchange [Reuses operator id: 172]
Output [1]: [productPlant#1016205]
(247) BroadcastQueryStage
Output [1]: [productPlant#1016205]
Arguments: 218
(248) BroadcastHashJoin [codegen id : 163]
Left keys [4]: [coalesce(product#1016192, ), isnull(product#1016192), coalesce(plant#1016193, ), isnull(plant#1016193)]
Right keys [4]: [coalesce(productPlant#1016205.product.internalRefUUID, ), isnull(productPlant#1016205.product.internalRefUUID), coalesce(productPlant#1016205.plant.internalRefUUID, ), isnull(productPlant#1016205.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(249) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
(250) BroadcastQueryStage
Output [3]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
Arguments: 180
(251) BroadcastHashJoin [codegen id : 163]
Left keys [1]: [product#1016192]
Right keys [1]: [internalUUID#1016207]
Join type: LeftOuter
Join condition: None
(252) Project
Output [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, filter(unitOfMeasureConversions#1016213, lambdafunction((((lambda u#1012565.measurementUnit1.code = productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1012565.measurementUnit1.internalRefUUID = productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016211.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016211.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016218]
Input [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
(253) Project [codegen id : 164]
Output [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, filteredUnitOfMeasureConversions#1016218.quantityDenominator AS _extract_quantityDenominator#1018560, filteredUnitOfMeasureConversions#1016218.quantityNumerator AS _extract_quantityNumerator#1018561]
Input [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, filteredUnitOfMeasureConversions#1016218]
(254) Generate [codegen id : 164]
Input [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, _extract_quantityDenominator#1018560, _extract_quantityNumerator#1018561]
Arguments: explode(_extract_quantityNumerator#1018561), [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, _extract_quantityDenominator#1018560], true, [quantityNumerator#1016219]
(255) Generate [codegen id : 164]
Input [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, _extract_quantityDenominator#1018560, quantityNumerator#1016219]
Arguments: explode(_extract_quantityDenominator#1018560), [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, quantityNumerator#1016219], true, [quantityDenominator#1016220]
(256) Project [codegen id : 164]
Output [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, (cast(quantityNumerator#1016219 as double) / cast(quantityDenominator#1016220 as double)) AS outboundUnit#1016221]
Input [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, quantityNumerator#1016219, quantityDenominator#1016220]
(257) Project [codegen id : 164]
Output [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, CASE WHEN (isnull(outboundUnit#1016221) OR (outboundUnit#1016221 <= 0.0)) THEN 1.0 ELSE outboundUnit#1016221 END AS outboundUnit#1016222]
Input [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016221]
(258) Sort [codegen id : 164]
Input [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222]
Arguments: [product#1016192 ASC NULLS FIRST, plant#1016193 ASC NULLS FIRST], false, 0
(259) ReusedExchange [Reuses operator id: 87]
Output [5]: [plantUuid#1016292, productUuid#1016294, calculationDateTime#1016288, storageLocId#1016295, quantity#1016297]
(260) BroadcastQueryStage
Output [5]: [plantUuid#1016292, productUuid#1016294, calculationDateTime#1016288, storageLocId#1016295, quantity#1016297]
Arguments: 285
(261) ReusedExchange [Reuses operator id: 92]
Output [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
(262) ShuffleQueryStage
Output [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
Arguments: 88
(263) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1018566, _extract_internalRefUUID#1018567, _extract_internalRefUUID#1018569, _extract_internalRefUUID#1018568]
(264) BroadcastQueryStage
Output [4]: [_extract_code#1018566, _extract_internalRefUUID#1018567, _extract_internalRefUUID#1018569, _extract_internalRefUUID#1018568]
Arguments: 185
(265) BroadcastHashJoin [codegen id : 165]
Left keys [4]: [coalesce(product#1016300, ), isnull(product#1016300), coalesce(plant#1016301, ), isnull(plant#1016301)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018569, ), isnull(_extract_internalRefUUID#1018569), coalesce(_extract_internalRefUUID#1018568, ), isnull(_extract_internalRefUUID#1018568)]
Join type: LeftOuter
Join condition: None
(266) Project [codegen id : 165]
Output [5]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_code#1018566, _extract_internalRefUUID#1018567]
Input [7]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_code#1018566, _extract_internalRefUUID#1018567, _extract_internalRefUUID#1018569, _extract_internalRefUUID#1018568]
(267) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
(268) BroadcastQueryStage
Output [3]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
Arguments: 186
(269) BroadcastHashJoin [codegen id : 165]
Left keys [1]: [product#1016300]
Right keys [1]: [internalUUID#1016315]
Join type: LeftOuter
Join condition: None
(270) Project
Output [4]: [product#1016300, plant#1016301, orderDateTime#1016302, filter(unitOfMeasureConversions#1016321, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018566) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018567)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016319.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016319.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016326]
Input [8]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_code#1018566, _extract_internalRefUUID#1018567, internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
(271) Generate
Input [4]: [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326]
Arguments: explode(filteredUnitOfMeasureConversions#1016326.quantityNumerator), [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326], true, [quantityNumerator#1016327]
(272) Project
Output [4]: [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326.quantityDenominator AS _extract_quantityDenominator#1018321]
Input [5]: [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326, quantityNumerator#1016327]
(273) Generate
Input [4]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_quantityDenominator#1018321]
Arguments: explode(_extract_quantityDenominator#1018321), [product#1016300, plant#1016301, orderDateTime#1016302], true, [quantityDenominator#1016328]
(274) Project
Output [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
Input [4]: [product#1016300, plant#1016301, orderDateTime#1016302, quantityDenominator#1016328]
(275) BroadcastHashJoin [codegen id : 166]
Left keys [2]: [plantUuid#1016292, productUuid#1016294]
Right keys [2]: [plant#1016301, product#1016300]
Join type: Inner
Join condition: (calculationDateTime#1016288 <= orderDateTime#1016302)
(276) Project [codegen id : 166]
Output [5]: [plantUuid#1016292 AS plant#1016331, productUuid#1016294 AS product#1016332, storageLocId#1016295, calculationDateTime#1016288, quantity#1016297]
Input [8]: [plantUuid#1016292, productUuid#1016294, calculationDateTime#1016288, storageLocId#1016295, quantity#1016297, product#1016300, plant#1016301, orderDateTime#1016302]
(277) ReusedExchange [Reuses operator id: 152]
Output [4]: [plant#1016441, product#1016442, storageLocId#1016405, max_calc_datetime#1016443]
(278) BroadcastQueryStage
Output [4]: [plant#1016441, product#1016442, storageLocId#1016405, max_calc_datetime#1016443]
Arguments: 292
(279) BroadcastHashJoin [codegen id : 166]
Left keys [8]: [coalesce(plant#1016331, ), isnull(plant#1016331), coalesce(product#1016332, ), isnull(product#1016332), coalesce(storageLocId#1016295, ), isnull(storageLocId#1016295), coalesce(calculationDateTime#1016288, 1970-01-01 00:00:00), isnull(calculationDateTime#1016288)]
Right keys [8]: [coalesce(plant#1016441, ), isnull(plant#1016441), coalesce(product#1016442, ), isnull(product#1016442), coalesce(storageLocId#1016405, ), isnull(storageLocId#1016405), coalesce(max_calc_datetime#1016443, 1970-01-01 00:00:00), isnull(max_calc_datetime#1016443)]
Join type: Inner
Join condition: None
(280) Project [codegen id : 166]
Output [4]: [plant#1016331, product#1016332, calculationDateTime#1016288, quantity#1016297]
Input [9]: [plant#1016331, product#1016332, storageLocId#1016295, calculationDateTime#1016288, quantity#1016297, plant#1016441, product#1016442, storageLocId#1016405, max_calc_datetime#1016443]
(281) HashAggregate [codegen id : 166]
Input [4]: [plant#1016331, product#1016332, calculationDateTime#1016288, quantity#1016297]
Keys [2]: [product#1016332, plant#1016331]
Functions [2]: [partial_min(calculationDateTime#1016288), partial_sum(quantity#1016297)]
Aggregate Attributes [2]: [min#1019655, sum#1019656]
Results [4]: [product#1016332, plant#1016331, min#1019657, sum#1019658]
(282) HashAggregate [codegen id : 166]
Input [4]: [product#1016332, plant#1016331, min#1019657, sum#1019658]
Keys [2]: [product#1016332, plant#1016331]
Functions [2]: [min(calculationDateTime#1016288), sum(quantity#1016297)]
Aggregate Attributes [2]: [min(calculationDateTime#1016288)#1012901, sum(quantity#1016297)#1012900]
Results [4]: [product#1016332, plant#1016331, min(calculationDateTime#1016288)#1012901 AS minCalculationDateTime#1016445, round(sum(quantity#1016297)#1012900, 0) AS roundedQuantitySum#1016446]
(283) Sort [codegen id : 166]
Input [4]: [product#1016332, plant#1016331, minCalculationDateTime#1016445, roundedQuantitySum#1016446]
Arguments: [product#1016332 ASC NULLS FIRST, plant#1016331 ASC NULLS FIRST], false, 0
(284) SortMergeJoin [codegen id : 167]
Left keys [2]: [product#1016192, plant#1016193]
Right keys [2]: [product#1016332, plant#1016331]
Join type: LeftOuter
Join condition: None
(285) Project [codegen id : 167]
Output [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, CASE WHEN isnotnull(minCalculationDateTime#1016445) THEN minCalculationDateTime#1016445 ELSE orderDateTime#1016194 END AS stockDatetime#1016447, CASE WHEN isnotnull(roundedQuantitySum#1016446) THEN array(roundedQuantitySum#1016446) ELSE [0.0] END AS stockBatchQuantities#1016448]
Input [9]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, product#1016332, plant#1016331, minCalculationDateTime#1016445, roundedQuantitySum#1016446]
(286) Exchange
Input [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448]
Arguments: hashpartitioning(coalesce(plant#1016193, ), isnull(plant#1016193), coalesce(product#1016192, ), isnull(product#1016192), 37), ENSURE_REQUIREMENTS, [plan_id=1674484]
(287) ShuffleQueryStage
Output [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448]
Arguments: 297
(288) AQEShuffleRead
Input [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448]
Arguments: local
(289) ReusedExchange [Reuses operator id: 235]
Output [4]: [product#1016733, plant#1016734, dayBucketDemands#1016735, pointInTimeDemands#1016736]
(290) BroadcastQueryStage
Output [4]: [product#1016733, plant#1016734, dayBucketDemands#1016735, pointInTimeDemands#1016736]
Arguments: 302
(291) BroadcastHashJoin [codegen id : 175]
Left keys [4]: [coalesce(plant#1016193, ), isnull(plant#1016193), coalesce(product#1016192, ), isnull(product#1016192)]
Right keys [4]: [coalesce(plant#1016734, ), isnull(plant#1016734), coalesce(product#1016733, ), isnull(product#1016733)]
Join type: LeftOuter
Join condition: None
(292) Project [codegen id : 175]
Output [9]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, dayBucketDemands#1016735, pointInTimeDemands#1016736]
Input [11]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, product#1016733, plant#1016734, dayBucketDemands#1016735, pointInTimeDemands#1016736]
(293) Project [codegen id : 175]
Output [14]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, dayBucketDemands#1016735, pointInTimeDemands#1016736, cast(null as string) AS product#1017351, cast(null as string) AS plant#1017350, cast(null as array<double>) AS _extract_openQtyInBaseUnit#1018557, cast(null as array<timestamp>) AS _extract_availabilityDatetime#1018558, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#1018559]
Input [9]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, dayBucketDemands#1016735, pointInTimeDemands#1016736]
(294) Project
Output [15]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1016449, dayBucketDemands#1016735, pointInTimeDemands#1016736, coalesce(_extract_openQtyInBaseUnit#1018557, []) AS openGoodsMovementQuantities#1017929, coalesce(_extract_availabilityDatetime#1018558, []) AS openGoodsMovementAvailabilityDatetimes#1017930, coalesce(_extract_shelfLifeEndDatetime#1018559, []) AS openGoodsMovementShelfLifeEndDatetimes#1017931, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1017932, array_sort(filter(CASE WHEN isnotnull(productPlant#1016205.listing) THEN productPlant#1016205.listing ELSE [] END, lambdafunction(lambda listing#1016138.isListed, lambda listing#1016138, false)), lambdafunction(if ((isnull(lambda left#1016140) AND isnull(lambda right#1016141))) 0 else if (isnull(lambda left#1016140)) 1 else if (isnull(lambda right#1016141)) -1 else if ((lambda left#1016140 < lambda right#1016141)) -1 else if ((lambda left#1016140 > lambda right#1016141)) 1 else 0, lambda left#1016140, lambda right#1016141, false), false) AS listing#1016139]
Input [14]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, dayBucketDemands#1016735, pointInTimeDemands#1016736, product#1017351, plant#1017350, _extract_openQtyInBaseUnit#1018557, _extract_availabilityDatetime#1018558, _extract_shelfLifeEndDatetime#1018559]
(295) DeserializeToObject [codegen id : 176]
Input [15]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, stockBatchShelfLifeEndDatetimes#1016449, dayBucketDemands#1016735, pointInTimeDemands#1016736, openGoodsMovementQuantities#1017929, openGoodsMovementAvailabilityDatetimes#1017930, openGoodsMovementShelfLifeEndDatetimes#1017931, configuration#1017932, listing#1016139]
Arguments: createexternalrow(invoke(product#1016192.toString()), invoke(plant#1016193.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1016194)), if (isnull(productPlant#1016205)) null else createexternalrow(invoke(productPlant#1016205.systemId.toString()), invoke(productPlant#1016205.internalUUID.toString()), if (isnull(productPlant#1016205.plant)) null else createexternalrow(invoke(productPlant#1016205.plant.internalRefUUID.toString()), invoke(productPlant#1016205.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1016205.product)) null else createexternalrow(invoke(productPlant#1016205.product.internalRefUUID.toString()), invoke(productPlant#1016205.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1016205.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1016205.productionAspect)) null else createexternalrow(if (isnull(productPlant#1016205.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1016205.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#1016205.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1016205.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#1016205.salesPlant)) null else createexternalrow(if (isnull(productPlant#1016205.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1016205.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1016205.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1016205.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1016205.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1016205.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1016205.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#1016222)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1016447)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#1016448, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#1016449, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, -25), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -25))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -26), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -26))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -27), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -27))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, -28), invoke(lambdavariable(MapObject, StringType, false, -28).toString()), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, -29), static_invoke(java.lang.Integer.valueOf(lambdavariable(MapObject, IntegerType, false, -29))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true)), dayBucketDemands#1016735, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, -31), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -31))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, -32), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -32))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -33), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -33))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandVariances, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonEndDatetime)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true)), pointInTimeDemands#1016736, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#1017929, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#1017930, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#1017931, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37), createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false)), configuration#1017932, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#1016139, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(dayBucketDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false),true), StructField(pointInTimeDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false),true), ... 5 more fields), obj#1016172: org.apache.spark.sql.Row
(296) MapElements [codegen id : 176]
Input [1]: [obj#1016172]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#1016179: org.apache.spark.sql.Row
(297) SerializeFromObject [codegen id : 176]
Input [1]: [obj#1016179]
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#1016186, 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#1016187, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsName#1016188, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsStartDatetime#1016189, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsEndDatetime#1016190, if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsValue#1016191]
(298) Filter [codegen id : 176]
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Condition : (isnotnull(product#1016186) AND isnotnull(plant#1016187))
(299) Exchange
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: hashpartitioning(product#1016186, plant#1016187, 37), ENSURE_REQUIREMENTS, [plan_id=1675325]
(300) ShuffleQueryStage
Output [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: 304
(301) AQEShuffleRead
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: local
(302) BroadcastExchange
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1675383]
(303) BroadcastQueryStage
Output [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: 305
(304) BroadcastHashJoin [codegen id : 177]
Left keys [2]: [product#1012489, plant#1012490]
Right keys [2]: [product#1016186, plant#1016187]
Join type: LeftOuter
Join condition: None
(305) Project [codegen id : 177]
Output [16]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1012939, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1015995, CASE WHEN isnotnull(timeDependentSettingsName#1016188) THEN timeDependentSettingsName#1016188 ELSE [] END AS timeDependentSettingsName#1018057, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#1016189) THEN timeDependentSettingsStartDatetime#1016189 ELSE [] END AS timeDependentSettingsStartDatetime#1018058, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#1016190) THEN timeDependentSettingsEndDatetime#1016190 ELSE [] END AS timeDependentSettingsEndDatetime#1018059, CASE WHEN isnotnull(timeDependentSettingsValue#1016191) THEN timeDependentSettingsValue#1016191 ELSE [] END AS timeDependentSettingsValue#1018060]
Input [16]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704, product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
(306) ResultQueryStage
Output [16]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, stockBatchShelfLifeEndDatetimes#1012939, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704, configuration#1015995, timeDependentSettingsName#1018057, timeDependentSettingsStartDatetime#1018058, timeDependentSettingsEndDatetime#1018059, timeDependentSettingsValue#1018060]
Arguments: 307
(307) Exchange
Input [3]: [product#1012489, plant#1012490, orderDateTime#1012491]
Arguments: hashpartitioning(product#1012489, plant#1012490, 37), REPARTITION_BY_NUM, [plan_id=1637819]
(308) Project
Output [4]: [plant#1012518.internalRefUUID AS _extract_internalRefUUID#1018522, product#1012519.internalRefUUID AS _extract_internalRefUUID#1018521, productionAspect#1012521.productMovementPlants.unitOfIssue.code AS _extract_code#1018519, productionAspect#1012521.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018520]
Input [4]: [plant#1012518, product#1012519, productionAspect#1012521, systemId#1012516]
(309) Exchange
Input [4]: [_extract_internalRefUUID#1018522, _extract_internalRefUUID#1018521, _extract_code#1018519, _extract_internalRefUUID#1018520]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637822]
(310) Project
Output [4]: [_extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
Input [4]: [_extract_internalRefUUID#1018522, _extract_internalRefUUID#1018521, _extract_code#1018519, _extract_internalRefUUID#1018520]
(311) BroadcastExchange
Input [4]: [_extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
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=1638830]
(312) BroadcastHashJoin
Left keys [4]: [coalesce(product#1012489, ), isnull(product#1012489), coalesce(plant#1012490, ), isnull(plant#1012490)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018521, ), isnull(_extract_internalRefUUID#1018521), coalesce(_extract_internalRefUUID#1018522, ), isnull(_extract_internalRefUUID#1018522)]
Join type: LeftOuter
Join condition: None
(313) Project
Output [5]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_code#1018519, _extract_internalRefUUID#1018520]
Input [7]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_code#1018519, _extract_internalRefUUID#1018520, _extract_internalRefUUID#1018521, _extract_internalRefUUID#1018522]
(314) Filter
Input [4]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558, systemId#1012551]
Condition : isnotnull(internalUUID#1012552)
(315) Project
Output [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Input [4]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558, systemId#1012551]
(316) Exchange
Input [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637829]
(317) BroadcastExchange
Input [3]: [internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638834]
(318) BroadcastHashJoin
Left keys [1]: [product#1012489]
Right keys [1]: [internalUUID#1012552]
Join type: LeftOuter
Join condition: None
(319) Project
Output [4]: [product#1012489, plant#1012490, orderDateTime#1012491, filter(unitOfMeasureConversions#1012558, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018519) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018520)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012556.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012556.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012564]
Input [8]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_code#1018519, _extract_internalRefUUID#1018520, internalUUID#1012552, baseUnitOfMeasure#1012556, unitOfMeasureConversions#1012558]
(320) Project
Output [5]: [product#1012489, plant#1012490, orderDateTime#1012491, filteredUnitOfMeasureConversions#1012564.quantityDenominator AS _extract_quantityDenominator#1018517, filteredUnitOfMeasureConversions#1012564.quantityNumerator AS _extract_quantityNumerator#1018518]
Input [4]: [product#1012489, plant#1012490, orderDateTime#1012491, filteredUnitOfMeasureConversions#1012564]
(321) Generate
Input [5]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_quantityDenominator#1018517, _extract_quantityNumerator#1018518]
Arguments: explode(_extract_quantityNumerator#1018518), [product#1012489, plant#1012490, orderDateTime#1012491, _extract_quantityDenominator#1018517], true, [quantityNumerator#1012572]
(322) Generate
Input [5]: [product#1012489, plant#1012490, orderDateTime#1012491, _extract_quantityDenominator#1018517, quantityNumerator#1012572]
Arguments: explode(_extract_quantityDenominator#1018517), [product#1012489, plant#1012490, orderDateTime#1012491, quantityNumerator#1012572], true, [quantityDenominator#1012575]
(323) Project
Output [4]: [product#1012489, plant#1012490, orderDateTime#1012491, (cast(quantityNumerator#1012572 as double) / cast(quantityDenominator#1012575 as double)) AS outboundUnit#1012576]
Input [5]: [product#1012489, plant#1012490, orderDateTime#1012491, quantityNumerator#1012572, quantityDenominator#1012575]
(324) Project
Output [4]: [product#1012489, plant#1012490, orderDateTime#1012491, CASE WHEN (isnull(outboundUnit#1012576) OR (outboundUnit#1012576 <= 0.0)) THEN 1.0 ELSE outboundUnit#1012576 END AS outboundUnit#1012577]
Input [4]: [product#1012489, plant#1012490, orderDateTime#1012491, outboundUnit#1012576]
(325) Sort
Input [4]: [product#1012489, plant#1012490, orderDateTime#1012491, outboundUnit#1012577]
Arguments: [product#1012489 ASC NULLS FIRST, plant#1012490 ASC NULLS FIRST], false, 0
(326) Filter
Input [6]: [internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, systemId#1012686]
Condition : (isnotnull(plant#1012689.internalRefUUID) AND isnotnull(product#1012688.internalRefUUID))
(327) Project
Output [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
Input [6]: [internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, systemId#1012686]
(328) Exchange
Input [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637840]
(329) BroadcastExchange
Input [6]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691]
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=1638862]
(330) Filter
Input [2]: [marketUnit#1012629, distributionCenters#1012635]
Condition : (((marketUnit#1012629 <=> STEPHI_MU) AND (size(distributionCenters#1012635, true) > 0)) AND isnotnull(distributionCenters#1012635))
(331) Project
Output [1]: [distributionCenters#1012635]
Input [2]: [marketUnit#1012629, distributionCenters#1012635]
(332) Exchange
Input [1]: [distributionCenters#1012635]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637844]
(333) Generate
Input [1]: [distributionCenters#1012635]
Arguments: explode(distributionCenters#1012635), false, [distributionCenters#1012652]
(334) Filter
Input [1]: [distributionCenters#1012652]
Condition : (((size(distributionCenters#1012652.storageLocations, true) > 0) AND isnotnull(distributionCenters#1012652.storageLocations)) AND isnotnull(distributionCenters#1012652.internalRefUUID))
(335) Project
Output [2]: [distributionCenters#1012652.internalRefUUID AS _extract_internalRefUUID#1018245, distributionCenters#1012652.storageLocations AS _extract_storageLocations#1018246]
Input [1]: [distributionCenters#1012652]
(336) Generate
Input [2]: [_extract_internalRefUUID#1018245, _extract_storageLocations#1018246]
Arguments: explode(_extract_storageLocations#1018246), [_extract_internalRefUUID#1018245], false, [storageLocations#1012659]
(337) Project
Output [3]: [_extract_internalRefUUID#1018245 AS plantUuid#1012654, storageLocations#1012659.id AS storageLocId#1012660, storageLocations#1012659.internalRefUUID AS storageLocUuid#1012661]
Input [2]: [_extract_internalRefUUID#1018245, storageLocations#1012659]
(338) BroadcastExchange
Input [3]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638858]
(339) Filter
Input [2]: [product#1012903, plant#1012904]
Condition : isnotnull(plant#1012904)
(340) Exchange
Input [2]: [product#1012903, plant#1012904]
Arguments: hashpartitioning(product#1012903, plant#1012904, 37), REPARTITION_BY_NUM, [plan_id=1638510]
(341) Scan parquet
Output [4]: [plant#1012909, product#1012910, productionAspect#1012912, systemId#1012907]
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>>>>
(342) Project
Output [4]: [plant#1012909.internalRefUUID AS _extract_internalRefUUID#1018523, product#1012910.internalRefUUID AS _extract_internalRefUUID#1018526, productionAspect#1012912.productMovementPlants.unitOfIssue.code AS _extract_code#1018524, productionAspect#1012912.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018525]
Input [4]: [plant#1012909, product#1012910, productionAspect#1012912, systemId#1012907]
(343) Exchange
Input [4]: [_extract_internalRefUUID#1018523, _extract_internalRefUUID#1018526, _extract_code#1018524, _extract_internalRefUUID#1018525]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637856]
(344) Project
Output [4]: [_extract_code#1018524, _extract_internalRefUUID#1018525, _extract_internalRefUUID#1018526, _extract_internalRefUUID#1018523]
Input [4]: [_extract_internalRefUUID#1018523, _extract_internalRefUUID#1018526, _extract_code#1018524, _extract_internalRefUUID#1018525]
(345) BroadcastExchange
Input [4]: [_extract_code#1018524, _extract_internalRefUUID#1018525, _extract_internalRefUUID#1018526, _extract_internalRefUUID#1018523]
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=1638842]
(346) BroadcastHashJoin
Left keys [4]: [coalesce(product#1012903, ), isnull(product#1012903), coalesce(plant#1012904, ), isnull(plant#1012904)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018526, ), isnull(_extract_internalRefUUID#1018526), coalesce(_extract_internalRefUUID#1018523, ), isnull(_extract_internalRefUUID#1018523)]
Join type: LeftOuter
Join condition: None
(347) Project
Output [4]: [product#1012903, plant#1012904, _extract_code#1018524, _extract_internalRefUUID#1018525]
Input [6]: [product#1012903, plant#1012904, _extract_code#1018524, _extract_internalRefUUID#1018525, _extract_internalRefUUID#1018526, _extract_internalRefUUID#1018523]
(348) Scan parquet
Output [4]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924, systemId#1012917]
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>>>
(349) Filter
Input [4]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924, systemId#1012917]
Condition : isnotnull(internalUUID#1012918)
(350) Project
Output [3]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
Input [4]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924, systemId#1012917]
(351) Exchange
Input [3]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637863]
(352) BroadcastExchange
Input [3]: [internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638846]
(353) BroadcastHashJoin
Left keys [1]: [product#1012903]
Right keys [1]: [internalUUID#1012918]
Join type: LeftOuter
Join condition: None
(354) Project
Output [2]: [plant#1012904, filter(unitOfMeasureConversions#1012924, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018524) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018525)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012922.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012922.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012929]
Input [7]: [product#1012903, plant#1012904, _extract_code#1018524, _extract_internalRefUUID#1018525, internalUUID#1012918, baseUnitOfMeasure#1012922, unitOfMeasureConversions#1012924]
(355) Generate
Input [2]: [plant#1012904, filteredUnitOfMeasureConversions#1012929]
Arguments: explode(filteredUnitOfMeasureConversions#1012929.quantityNumerator), [plant#1012904, filteredUnitOfMeasureConversions#1012929], true, [quantityNumerator#1012930]
(356) Project
Output [2]: [plant#1012904, filteredUnitOfMeasureConversions#1012929.quantityDenominator AS _extract_quantityDenominator#1018247]
Input [3]: [plant#1012904, filteredUnitOfMeasureConversions#1012929, quantityNumerator#1012930]
(357) Generate
Input [2]: [plant#1012904, _extract_quantityDenominator#1018247]
Arguments: explode(_extract_quantityDenominator#1018247), [plant#1012904], true, [quantityDenominator#1012931]
(358) Project
Output [1]: [plant#1012904]
Input [2]: [plant#1012904, quantityDenominator#1012931]
(359) HashAggregate
Input [1]: [plant#1012904]
Keys [1]: [plant#1012904]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012904]
(360) Exchange
Input [1]: [plant#1012904]
Arguments: hashpartitioning(plant#1012904, 37), ENSURE_REQUIREMENTS, [plan_id=1638855]
(361) HashAggregate
Input [1]: [plant#1012904]
Keys [1]: [plant#1012904]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012904]
(362) BroadcastHashJoin
Left keys [1]: [plantUuid#1012654]
Right keys [1]: [plant#1012904]
Join type: Inner
Join condition: None
(363) Project
Output [3]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Input [4]: [plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661, plant#1012904]
(364) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1012689.internalRefUUID, ), isnull(plant#1012689.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1012654, ), isnull(plantUuid#1012654)]
Join type: Inner
Join condition: None
(365) Generate
Input [9]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, stockQuantities#1012691, plantUuid#1012654, storageLocId#1012660, storageLocUuid#1012661]
Arguments: explode(filter(stockQuantities#1012691, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1012661) AND (lambda x#1012695.storageLocation.Id = storageLocId#1012660)), lambda x#1012695, false))), [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, plantUuid#1012654], false, [stockQuantity#1012696]
(366) ObjectHashAggregate
Input [7]: [systemId#1012686, internalUUID#1012687, product#1012688, plant#1012689, calculationDateTime#1012690, plantUuid#1012654, stockQuantity#1012696]
Keys [5]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686]
Functions [2]: [partial_first(calculationDateTime#1012690, false), partial_collect_list(stockQuantity#1012696, 0, 0)]
Aggregate Attributes [3]: [first#1019617, valueSet#1019618, buf#1019619]
Results [8]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686, first#1019620, valueSet#1019621, buf#1019622]
(367) ObjectHashAggregate
Input [8]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686, first#1019620, valueSet#1019621, buf#1019622]
Keys [5]: [plantUuid#1012654, internalUUID#1012687, plant#1012689, product#1012688, systemId#1012686]
Functions [2]: [first(calculationDateTime#1012690, false), collect_list(stockQuantity#1012696, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1012690)()#1012710, collect_list(stockQuantity#1012696, 0, 0)#1012711]
Results [4]: [product#1012688, plant#1012689, first(calculationDateTime#1012690)()#1012710 AS calculationDateTime#1012697, collect_list(stockQuantity#1012696, 0, 0)#1012711 AS stockQuantities#1012698]
(368) Filter
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantities#1012698]
Condition : ((size(stockQuantities#1012698, true) > 0) AND isnotnull(calculationDateTime#1012697))
(369) Generate
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantities#1012698]
Arguments: explode(stockQuantities#1012698), [product#1012688, plant#1012689, calculationDateTime#1012697], false, [stockQuantity#1012713]
(370) Filter
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantity#1012713]
Condition : (((isnotnull(stockQuantity#1012713.specialStockIndicator.code) AND isnotnull(stockQuantity#1012713.stockType.code)) AND (stockQuantity#1012713.specialStockIndicator.code = )) AND (stockQuantity#1012713.stockType.code = 01))
(371) Project
Output [5]: [plant#1012689.internalRefUUID AS plantUuid#1012715, product#1012688.internalRefUUID AS productUuid#1012717, calculationDateTime#1012697, stockQuantity#1012713.storagelocation.id AS storageLocId#1012718, stockQuantity#1012713.quantity.measure AS quantity#1012720]
Input [4]: [product#1012688, plant#1012689, calculationDateTime#1012697, stockQuantity#1012713]
(372) Exchange
Input [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: hashpartitioning(productUuid#1012717, plantUuid#1012715, 37), ENSURE_REQUIREMENTS, [plan_id=1638884]
(373) Sort
Input [5]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720]
Arguments: [productUuid#1012717 ASC NULLS FIRST, plantUuid#1012715 ASC NULLS FIRST], false, 0
(374) Filter
Input [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Condition : ((isnotnull(orderDateTime#1012734) AND isnotnull(plant#1012733)) AND isnotnull(product#1012732))
(375) Exchange
Input [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Arguments: hashpartitioning(product#1012732, plant#1012733, 37), REPARTITION_BY_NUM, [plan_id=1638531]
(376) Scan parquet
Output [4]: [plant#1012738, product#1012739, productionAspect#1012741, systemId#1012736]
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#1012738.internalRefUUID AS _extract_internalRefUUID#1018530, product#1012739.internalRefUUID AS _extract_internalRefUUID#1018529, productionAspect#1012741.productMovementPlants.unitOfIssue.code AS _extract_code#1018527, productionAspect#1012741.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018528]
Input [4]: [plant#1012738, product#1012739, productionAspect#1012741, systemId#1012736]
(378) Exchange
Input [4]: [_extract_internalRefUUID#1018530, _extract_internalRefUUID#1018529, _extract_code#1018527, _extract_internalRefUUID#1018528]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637888]
(379) Project
Output [4]: [_extract_code#1018527, _extract_internalRefUUID#1018528, _extract_internalRefUUID#1018529, _extract_internalRefUUID#1018530]
Input [4]: [_extract_internalRefUUID#1018530, _extract_internalRefUUID#1018529, _extract_code#1018527, _extract_internalRefUUID#1018528]
(380) BroadcastExchange
Input [4]: [_extract_code#1018527, _extract_internalRefUUID#1018528, _extract_internalRefUUID#1018529, _extract_internalRefUUID#1018530]
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=1638871]
(381) BroadcastHashJoin
Left keys [4]: [coalesce(product#1012732, ), isnull(product#1012732), coalesce(plant#1012733, ), isnull(plant#1012733)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018529, ), isnull(_extract_internalRefUUID#1018529), coalesce(_extract_internalRefUUID#1018530, ), isnull(_extract_internalRefUUID#1018530)]
Join type: LeftOuter
Join condition: None
(382) Project
Output [5]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_code#1018527, _extract_internalRefUUID#1018528]
Input [7]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_code#1018527, _extract_internalRefUUID#1018528, _extract_internalRefUUID#1018529, _extract_internalRefUUID#1018530]
(383) Scan parquet
Output [4]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753, systemId#1012746]
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>>>
(384) Filter
Input [4]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753, systemId#1012746]
Condition : isnotnull(internalUUID#1012747)
(385) Project
Output [3]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
Input [4]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753, systemId#1012746]
(386) Exchange
Input [3]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637895]
(387) BroadcastExchange
Input [3]: [internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638875]
(388) BroadcastHashJoin
Left keys [1]: [product#1012732]
Right keys [1]: [internalUUID#1012747]
Join type: LeftOuter
Join condition: None
(389) Project
Output [4]: [product#1012732, plant#1012733, orderDateTime#1012734, filter(unitOfMeasureConversions#1012753, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018527) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018528)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012751.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012751.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012758]
Input [8]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_code#1018527, _extract_internalRefUUID#1018528, internalUUID#1012747, baseUnitOfMeasure#1012751, unitOfMeasureConversions#1012753]
(390) Generate
Input [4]: [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758]
Arguments: explode(filteredUnitOfMeasureConversions#1012758.quantityNumerator), [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758], true, [quantityNumerator#1012759]
(391) Project
Output [4]: [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758.quantityDenominator AS _extract_quantityDenominator#1018254]
Input [5]: [product#1012732, plant#1012733, orderDateTime#1012734, filteredUnitOfMeasureConversions#1012758, quantityNumerator#1012759]
(392) Generate
Input [4]: [product#1012732, plant#1012733, orderDateTime#1012734, _extract_quantityDenominator#1018254]
Arguments: explode(_extract_quantityDenominator#1018254), [product#1012732, plant#1012733, orderDateTime#1012734], true, [quantityDenominator#1012760]
(393) Project
Output [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Input [4]: [product#1012732, plant#1012733, orderDateTime#1012734, quantityDenominator#1012760]
(394) Sort
Input [3]: [product#1012732, plant#1012733, orderDateTime#1012734]
Arguments: [product#1012732 ASC NULLS FIRST, plant#1012733 ASC NULLS FIRST], false, 0
(395) SortMergeJoin
Left keys [2]: [productUuid#1012717, plantUuid#1012715]
Right keys [2]: [product#1012732, plant#1012733]
Join type: Inner
Join condition: (calculationDateTime#1012697 <= orderDateTime#1012734)
(396) Project
Output [5]: [plantUuid#1012715 AS plant#1012766, productUuid#1012717 AS product#1012767, storageLocId#1012718, calculationDateTime#1012697, quantity#1012720]
Input [8]: [plantUuid#1012715, productUuid#1012717, calculationDateTime#1012697, storageLocId#1012718, quantity#1012720, product#1012732, plant#1012733, orderDateTime#1012734]
(397) Exchange
Input [5]: [plant#1012766, product#1012767, storageLocId#1012718, calculationDateTime#1012697, quantity#1012720]
Arguments: hashpartitioning(coalesce(plant#1012766, ), isnull(plant#1012766), coalesce(product#1012767, ), isnull(product#1012767), coalesce(storageLocId#1012718, ), isnull(storageLocId#1012718), coalesce(calculationDateTime#1012697, 1970-01-01 00:00:00), isnull(calculationDateTime#1012697), 37), ENSURE_REQUIREMENTS, [plan_id=1638940]
(398) Sort
Input [5]: [plant#1012766, product#1012767, storageLocId#1012718, calculationDateTime#1012697, quantity#1012720]
Arguments: [coalesce(plant#1012766, ) ASC NULLS FIRST, isnull(plant#1012766) ASC NULLS FIRST, coalesce(product#1012767, ) ASC NULLS FIRST, isnull(product#1012767) ASC NULLS FIRST, coalesce(storageLocId#1012718, ) ASC NULLS FIRST, isnull(storageLocId#1012718) ASC NULLS FIRST, coalesce(calculationDateTime#1012697, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1012697) ASC NULLS FIRST], false, 0
(399) Scan parquet
Output [6]: [internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780, systemId#1012775]
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>>>>>
(400) Filter
Input [6]: [internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780, systemId#1012775]
Condition : (isnotnull(plant#1012778.internalRefUUID) AND isnotnull(product#1012777.internalRefUUID))
(401) Project
Output [6]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780]
Input [6]: [internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780, systemId#1012775]
(402) Exchange
Input [6]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637907]
(403) BroadcastExchange
Input [6]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780]
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=1638909]
(404) Scan parquet
Output [2]: [marketUnit#1012781, distributionCenters#1012787]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(405) Filter
Input [2]: [marketUnit#1012781, distributionCenters#1012787]
Condition : (((marketUnit#1012781 <=> STEPHI_MU) AND (size(distributionCenters#1012787, true) > 0)) AND isnotnull(distributionCenters#1012787))
(406) Project
Output [1]: [distributionCenters#1012787]
Input [2]: [marketUnit#1012781, distributionCenters#1012787]
(407) Exchange
Input [1]: [distributionCenters#1012787]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637911]
(408) Generate
Input [1]: [distributionCenters#1012787]
Arguments: explode(distributionCenters#1012787), false, [distributionCenters#1012802]
(409) Filter
Input [1]: [distributionCenters#1012802]
Condition : (((size(distributionCenters#1012802.storageLocations, true) > 0) AND isnotnull(distributionCenters#1012802.storageLocations)) AND isnotnull(distributionCenters#1012802.internalRefUUID))
(410) Project
Output [2]: [distributionCenters#1012802.internalRefUUID AS _extract_internalRefUUID#1018261, distributionCenters#1012802.storageLocations AS _extract_storageLocations#1018262]
Input [1]: [distributionCenters#1012802]
(411) Generate
Input [2]: [_extract_internalRefUUID#1018261, _extract_storageLocations#1018262]
Arguments: explode(_extract_storageLocations#1018262), [_extract_internalRefUUID#1018261], false, [storageLocations#1012803]
(412) Project
Output [3]: [_extract_internalRefUUID#1018261 AS plantUuid#1012805, storageLocations#1012803.id AS storageLocId#1012806, storageLocations#1012803.internalRefUUID AS storageLocUuid#1012807]
Input [2]: [_extract_internalRefUUID#1018261, storageLocations#1012803]
(413) BroadcastExchange
Input [3]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638905]
(414) Scan parquet
Output [2]: [product#1012808, plant#1012809]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(415) Filter
Input [2]: [product#1012808, plant#1012809]
Condition : isnotnull(plant#1012809)
(416) Exchange
Input [2]: [product#1012808, plant#1012809]
Arguments: hashpartitioning(product#1012808, plant#1012809, 37), REPARTITION_BY_NUM, [plan_id=1638542]
(417) Scan parquet
Output [4]: [plant#1012814, product#1012815, productionAspect#1012817, systemId#1012812]
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>>>>
(418) Project
Output [4]: [plant#1012814.internalRefUUID AS _extract_internalRefUUID#1018531, product#1012815.internalRefUUID AS _extract_internalRefUUID#1018534, productionAspect#1012817.productMovementPlants.unitOfIssue.code AS _extract_code#1018532, productionAspect#1012817.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018533]
Input [4]: [plant#1012814, product#1012815, productionAspect#1012817, systemId#1012812]
(419) Exchange
Input [4]: [_extract_internalRefUUID#1018531, _extract_internalRefUUID#1018534, _extract_code#1018532, _extract_internalRefUUID#1018533]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637923]
(420) Project
Output [4]: [_extract_code#1018532, _extract_internalRefUUID#1018533, _extract_internalRefUUID#1018534, _extract_internalRefUUID#1018531]
Input [4]: [_extract_internalRefUUID#1018531, _extract_internalRefUUID#1018534, _extract_code#1018532, _extract_internalRefUUID#1018533]
(421) BroadcastExchange
Input [4]: [_extract_code#1018532, _extract_internalRefUUID#1018533, _extract_internalRefUUID#1018534, _extract_internalRefUUID#1018531]
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=1638889]
(422) BroadcastHashJoin
Left keys [4]: [coalesce(product#1012808, ), isnull(product#1012808), coalesce(plant#1012809, ), isnull(plant#1012809)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018534, ), isnull(_extract_internalRefUUID#1018534), coalesce(_extract_internalRefUUID#1018531, ), isnull(_extract_internalRefUUID#1018531)]
Join type: LeftOuter
Join condition: None
(423) Project
Output [4]: [product#1012808, plant#1012809, _extract_code#1018532, _extract_internalRefUUID#1018533]
Input [6]: [product#1012808, plant#1012809, _extract_code#1018532, _extract_internalRefUUID#1018533, _extract_internalRefUUID#1018534, _extract_internalRefUUID#1018531]
(424) Scan parquet
Output [4]: [internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829, systemId#1012822]
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>>>
(425) Filter
Input [4]: [internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829, systemId#1012822]
Condition : isnotnull(internalUUID#1012823)
(426) Project
Output [3]: [internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829]
Input [4]: [internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829, systemId#1012822]
(427) Exchange
Input [3]: [internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637930]
(428) BroadcastExchange
Input [3]: [internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638893]
(429) BroadcastHashJoin
Left keys [1]: [product#1012808]
Right keys [1]: [internalUUID#1012823]
Join type: LeftOuter
Join condition: None
(430) Project
Output [2]: [plant#1012809, filter(unitOfMeasureConversions#1012829, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018532) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018533)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012827.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012827.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012834]
Input [7]: [product#1012808, plant#1012809, _extract_code#1018532, _extract_internalRefUUID#1018533, internalUUID#1012823, baseUnitOfMeasure#1012827, unitOfMeasureConversions#1012829]
(431) Generate
Input [2]: [plant#1012809, filteredUnitOfMeasureConversions#1012834]
Arguments: explode(filteredUnitOfMeasureConversions#1012834.quantityNumerator), [plant#1012809, filteredUnitOfMeasureConversions#1012834], true, [quantityNumerator#1012835]
(432) Project
Output [2]: [plant#1012809, filteredUnitOfMeasureConversions#1012834.quantityDenominator AS _extract_quantityDenominator#1018263]
Input [3]: [plant#1012809, filteredUnitOfMeasureConversions#1012834, quantityNumerator#1012835]
(433) Generate
Input [2]: [plant#1012809, _extract_quantityDenominator#1018263]
Arguments: explode(_extract_quantityDenominator#1018263), [plant#1012809], true, [quantityDenominator#1012836]
(434) Project
Output [1]: [plant#1012809]
Input [2]: [plant#1012809, quantityDenominator#1012836]
(435) HashAggregate
Input [1]: [plant#1012809]
Keys [1]: [plant#1012809]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012809]
(436) Exchange
Input [1]: [plant#1012809]
Arguments: hashpartitioning(plant#1012809, 37), ENSURE_REQUIREMENTS, [plan_id=1638902]
(437) HashAggregate
Input [1]: [plant#1012809]
Keys [1]: [plant#1012809]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1012809]
(438) BroadcastHashJoin
Left keys [1]: [plantUuid#1012805]
Right keys [1]: [plant#1012809]
Join type: Inner
Join condition: None
(439) Project
Output [3]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
Input [4]: [plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807, plant#1012809]
(440) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1012778.internalRefUUID, ), isnull(plant#1012778.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1012805, ), isnull(plantUuid#1012805)]
Join type: Inner
Join condition: None
(441) Generate
Input [9]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, stockQuantities#1012780, plantUuid#1012805, storageLocId#1012806, storageLocUuid#1012807]
Arguments: explode(filter(stockQuantities#1012780, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1012807) AND (lambda x#1012695.storageLocation.Id = storageLocId#1012806)), lambda x#1012695, false))), [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, plantUuid#1012805], false, [stockQuantity#1012839]
(442) ObjectHashAggregate
Input [7]: [systemId#1012775, internalUUID#1012776, product#1012777, plant#1012778, calculationDateTime#1012779, plantUuid#1012805, stockQuantity#1012839]
Keys [5]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775]
Functions [2]: [partial_first(calculationDateTime#1012779, false), partial_collect_list(stockQuantity#1012839, 0, 0)]
Aggregate Attributes [3]: [first#1019625, valueSet#1019626, buf#1019627]
Results [8]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775, first#1019628, valueSet#1019629, buf#1019630]
(443) ObjectHashAggregate
Input [8]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775, first#1019628, valueSet#1019629, buf#1019630]
Keys [5]: [plantUuid#1012805, internalUUID#1012776, plant#1012778, product#1012777, systemId#1012775]
Functions [2]: [first(calculationDateTime#1012779, false), collect_list(stockQuantity#1012839, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1012779)()#1012710, collect_list(stockQuantity#1012839, 0, 0)#1012711]
Results [4]: [product#1012777, plant#1012778, first(calculationDateTime#1012779)()#1012710 AS calculationDateTime#1012840, collect_list(stockQuantity#1012839, 0, 0)#1012711 AS stockQuantities#1012841]
(444) Filter
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantities#1012841]
Condition : ((size(stockQuantities#1012841, true) > 0) AND isnotnull(calculationDateTime#1012840))
(445) Generate
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantities#1012841]
Arguments: explode(stockQuantities#1012841), [product#1012777, plant#1012778, calculationDateTime#1012840], false, [stockQuantity#1012842]
(446) Filter
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantity#1012842]
Condition : (((isnotnull(stockQuantity#1012842.specialStockIndicator.code) AND isnotnull(stockQuantity#1012842.stockType.code)) AND (stockQuantity#1012842.specialStockIndicator.code = )) AND (stockQuantity#1012842.stockType.code = 01))
(447) Project
Output [4]: [plant#1012778.internalRefUUID AS plantUuid#1012844, product#1012777.internalRefUUID AS productUuid#1012846, calculationDateTime#1012840, stockQuantity#1012842.storagelocation.id AS storageLocId#1012847]
Input [4]: [product#1012777, plant#1012778, calculationDateTime#1012840, stockQuantity#1012842]
(448) Exchange
Input [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: hashpartitioning(productUuid#1012846, plantUuid#1012844, 37), ENSURE_REQUIREMENTS, [plan_id=1638931]
(449) Sort
Input [4]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847]
Arguments: [productUuid#1012846 ASC NULLS FIRST, plantUuid#1012844 ASC NULLS FIRST], false, 0
(450) Scan parquet
Output [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(451) Filter
Input [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
Condition : ((isnotnull(orderDateTime#1012854) AND isnotnull(plant#1012853)) AND isnotnull(product#1012852))
(452) Exchange
Input [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
Arguments: hashpartitioning(product#1012852, plant#1012853, 37), REPARTITION_BY_NUM, [plan_id=1638563]
(453) Scan parquet
Output [4]: [plant#1012858, product#1012859, productionAspect#1012861, systemId#1012856]
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>>>>
(454) Project
Output [4]: [plant#1012858.internalRefUUID AS _extract_internalRefUUID#1018537, product#1012859.internalRefUUID AS _extract_internalRefUUID#1018538, productionAspect#1012861.productMovementPlants.unitOfIssue.code AS _extract_code#1018535, productionAspect#1012861.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018536]
Input [4]: [plant#1012858, product#1012859, productionAspect#1012861, systemId#1012856]
(455) Exchange
Input [4]: [_extract_internalRefUUID#1018537, _extract_internalRefUUID#1018538, _extract_code#1018535, _extract_internalRefUUID#1018536]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637955]
(456) Project
Output [4]: [_extract_code#1018535, _extract_internalRefUUID#1018536, _extract_internalRefUUID#1018538, _extract_internalRefUUID#1018537]
Input [4]: [_extract_internalRefUUID#1018537, _extract_internalRefUUID#1018538, _extract_code#1018535, _extract_internalRefUUID#1018536]
(457) BroadcastExchange
Input [4]: [_extract_code#1018535, _extract_internalRefUUID#1018536, _extract_internalRefUUID#1018538, _extract_internalRefUUID#1018537]
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=1638918]
(458) BroadcastHashJoin
Left keys [4]: [coalesce(product#1012852, ), isnull(product#1012852), coalesce(plant#1012853, ), isnull(plant#1012853)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018538, ), isnull(_extract_internalRefUUID#1018538), coalesce(_extract_internalRefUUID#1018537, ), isnull(_extract_internalRefUUID#1018537)]
Join type: LeftOuter
Join condition: None
(459) Project
Output [5]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_code#1018535, _extract_internalRefUUID#1018536]
Input [7]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_code#1018535, _extract_internalRefUUID#1018536, _extract_internalRefUUID#1018538, _extract_internalRefUUID#1018537]
(460) Scan parquet
Output [4]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873, systemId#1012866]
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>>>
(461) Filter
Input [4]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873, systemId#1012866]
Condition : isnotnull(internalUUID#1012867)
(462) Project
Output [3]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
Input [4]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873, systemId#1012866]
(463) Exchange
Input [3]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637962]
(464) BroadcastExchange
Input [3]: [internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638922]
(465) BroadcastHashJoin
Left keys [1]: [product#1012852]
Right keys [1]: [internalUUID#1012867]
Join type: LeftOuter
Join condition: None
(466) Project
Output [4]: [product#1012852, plant#1012853, orderDateTime#1012854, filter(unitOfMeasureConversions#1012873, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018535) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018536)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1012871.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1012871.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1012878]
Input [8]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_code#1018535, _extract_internalRefUUID#1018536, internalUUID#1012867, baseUnitOfMeasure#1012871, unitOfMeasureConversions#1012873]
(467) Generate
Input [4]: [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878]
Arguments: explode(filteredUnitOfMeasureConversions#1012878.quantityNumerator), [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878], true, [quantityNumerator#1012879]
(468) Project
Output [4]: [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878.quantityDenominator AS _extract_quantityDenominator#1018270]
Input [5]: [product#1012852, plant#1012853, orderDateTime#1012854, filteredUnitOfMeasureConversions#1012878, quantityNumerator#1012879]
(469) Generate
Input [4]: [product#1012852, plant#1012853, orderDateTime#1012854, _extract_quantityDenominator#1018270]
Arguments: explode(_extract_quantityDenominator#1018270), [product#1012852, plant#1012853, orderDateTime#1012854], true, [quantityDenominator#1012880]
(470) Project
Output [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
Input [4]: [product#1012852, plant#1012853, orderDateTime#1012854, quantityDenominator#1012880]
(471) Sort
Input [3]: [product#1012852, plant#1012853, orderDateTime#1012854]
Arguments: [product#1012852 ASC NULLS FIRST, plant#1012853 ASC NULLS FIRST], false, 0
(472) SortMergeJoin
Left keys [2]: [productUuid#1012846, plantUuid#1012844]
Right keys [2]: [product#1012852, plant#1012853]
Join type: Inner
Join condition: (calculationDateTime#1012840 <= orderDateTime#1012854)
(473) Project
Output [4]: [plantUuid#1012844 AS plant#1012883, productUuid#1012846 AS product#1012884, storageLocId#1012847, calculationDateTime#1012840]
Input [7]: [plantUuid#1012844, productUuid#1012846, calculationDateTime#1012840, storageLocId#1012847, product#1012852, plant#1012853, orderDateTime#1012854]
(474) HashAggregate
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, calculationDateTime#1012840]
Keys [3]: [plant#1012883, product#1012884, storageLocId#1012847]
Functions [1]: [partial_max(calculationDateTime#1012840)]
Aggregate Attributes [1]: [max#1019623]
Results [4]: [plant#1012883, product#1012884, storageLocId#1012847, max#1019624]
(475) HashAggregate
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max#1019624]
Keys [3]: [plant#1012883, product#1012884, storageLocId#1012847]
Functions [1]: [max(calculationDateTime#1012840)]
Aggregate Attributes [1]: [max(calculationDateTime#1012840)#1012774]
Results [4]: [plant#1012883, product#1012884, storageLocId#1012847, max(calculationDateTime#1012840)#1012774 AS max_calc_datetime#1012768]
(476) Exchange
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
Arguments: hashpartitioning(coalesce(plant#1012883, ), isnull(plant#1012883), coalesce(product#1012884, ), isnull(product#1012884), coalesce(storageLocId#1012847, ), isnull(storageLocId#1012847), coalesce(max_calc_datetime#1012768, 1970-01-01 00:00:00), isnull(max_calc_datetime#1012768), 37), ENSURE_REQUIREMENTS, [plan_id=1638941]
(477) Sort
Input [4]: [plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
Arguments: [coalesce(plant#1012883, ) ASC NULLS FIRST, isnull(plant#1012883) ASC NULLS FIRST, coalesce(product#1012884, ) ASC NULLS FIRST, isnull(product#1012884) ASC NULLS FIRST, coalesce(storageLocId#1012847, ) ASC NULLS FIRST, isnull(storageLocId#1012847) ASC NULLS FIRST, coalesce(max_calc_datetime#1012768, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1012768) ASC NULLS FIRST], false, 0
(478) SortMergeJoin
Left keys [8]: [coalesce(plant#1012766, ), isnull(plant#1012766), coalesce(product#1012767, ), isnull(product#1012767), coalesce(storageLocId#1012718, ), isnull(storageLocId#1012718), coalesce(calculationDateTime#1012697, 1970-01-01 00:00:00), isnull(calculationDateTime#1012697)]
Right keys [8]: [coalesce(plant#1012883, ), isnull(plant#1012883), coalesce(product#1012884, ), isnull(product#1012884), coalesce(storageLocId#1012847, ), isnull(storageLocId#1012847), coalesce(max_calc_datetime#1012768, 1970-01-01 00:00:00), isnull(max_calc_datetime#1012768)]
Join type: Inner
Join condition: None
(479) Project
Output [4]: [plant#1012766, product#1012767, calculationDateTime#1012697, quantity#1012720]
Input [9]: [plant#1012766, product#1012767, storageLocId#1012718, calculationDateTime#1012697, quantity#1012720, plant#1012883, product#1012884, storageLocId#1012847, max_calc_datetime#1012768]
(480) HashAggregate
Input [4]: [plant#1012766, product#1012767, calculationDateTime#1012697, quantity#1012720]
Keys [2]: [product#1012767, plant#1012766]
Functions [2]: [partial_min(calculationDateTime#1012697), partial_sum(quantity#1012720)]
Aggregate Attributes [2]: [min#1019613, sum#1019614]
Results [4]: [product#1012767, plant#1012766, min#1019615, sum#1019616]
(481) Exchange
Input [4]: [product#1012767, plant#1012766, min#1019615, sum#1019616]
Arguments: hashpartitioning(product#1012767, plant#1012766, 37), ENSURE_REQUIREMENTS, [plan_id=1638948]
(482) HashAggregate
Input [4]: [product#1012767, plant#1012766, min#1019615, sum#1019616]
Keys [2]: [product#1012767, plant#1012766]
Functions [2]: [min(calculationDateTime#1012697), sum(quantity#1012720)]
Aggregate Attributes [2]: [min(calculationDateTime#1012697)#1012901, sum(quantity#1012720)#1012900]
Results [4]: [product#1012767, plant#1012766, min(calculationDateTime#1012697)#1012901 AS minCalculationDateTime#1012894, round(sum(quantity#1012720)#1012900, 0) AS roundedQuantitySum#1012902]
(483) Sort
Input [4]: [product#1012767, plant#1012766, minCalculationDateTime#1012894, roundedQuantitySum#1012902]
Arguments: [product#1012767 ASC NULLS FIRST, plant#1012766 ASC NULLS FIRST], false, 0
(484) SortMergeJoin
Left keys [2]: [product#1012489, plant#1012490]
Right keys [2]: [product#1012767, plant#1012766]
Join type: LeftOuter
Join condition: None
(485) Project
Output [5]: [product#1012489, plant#1012490, outboundUnit#1012577, CASE WHEN isnotnull(minCalculationDateTime#1012894) THEN minCalculationDateTime#1012894 ELSE orderDateTime#1012491 END AS stockDatetime#1012937, CASE WHEN isnotnull(roundedQuantitySum#1012902) THEN array(roundedQuantitySum#1012902) ELSE [0.0] END AS stockBatchQuantities#1012938]
Input [8]: [product#1012489, plant#1012490, orderDateTime#1012491, outboundUnit#1012577, product#1012767, plant#1012766, minCalculationDateTime#1012894, roundedQuantitySum#1012902]
(486) Exchange
Input [5]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938]
Arguments: hashpartitioning(coalesce(plant#1012490, ), isnull(plant#1012490), coalesce(product#1012489, ), isnull(product#1012489), 37), ENSURE_REQUIREMENTS, [plan_id=1639096]
(487) Sort
Input [5]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938]
Arguments: [coalesce(plant#1012490, ) ASC NULLS FIRST, isnull(plant#1012490) ASC NULLS FIRST, coalesce(product#1012489, ) ASC NULLS FIRST, isnull(product#1012489) ASC NULLS FIRST], false, 0
(488) Scan parquet
Output [3]: [product#1014057, plant#1014058, orderDateTime#1014059]
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/10000000349/shardId=0_1_10000000349]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(489) Exchange
Input [3]: [product#1014057, plant#1014058, orderDateTime#1014059]
Arguments: hashpartitioning(product#1014057, plant#1014058, 37), REPARTITION_BY_NUM, [plan_id=1637980]
(490) Project
Output [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
Input [9]: [internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069, systemId#1014061]
(491) Exchange
Input [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637983]
(492) Project
Output [1]: [struct(systemId, systemId#1014061, internalUUID, internalUUID#1014062, plant, plant#1014063, product, product#1014064, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1014065, productionAspect, productionAspect#1014066, salesPlant, salesPlant#1014067, listing, listing#1014068, sourceOfSupplyCategory, sourceOfSupplyCategory#1014069) AS productPlant#1014070]
Input [9]: [systemId#1014061, internalUUID#1014062, plant#1014063, product#1014064, blockedForReplenishmentStartingFrom#1014065, productionAspect#1014066, salesPlant#1014067, listing#1014068, sourceOfSupplyCategory#1014069]
(493) BroadcastExchange
Input [1]: [productPlant#1014070]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1638956]
(494) BroadcastHashJoin
Left keys [4]: [coalesce(product#1014057, ), isnull(product#1014057), coalesce(plant#1014058, ), isnull(plant#1014058)]
Right keys [4]: [coalesce(productPlant#1014070.product.internalRefUUID, ), isnull(productPlant#1014070.product.internalRefUUID), coalesce(productPlant#1014070.plant.internalRefUUID, ), isnull(productPlant#1014070.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(495) Scan parquet
Output [4]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078, systemId#1014071]
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>>>
(496) Filter
Input [4]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078, systemId#1014071]
Condition : isnotnull(internalUUID#1014072)
(497) Project
Output [3]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
Input [4]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078, systemId#1014071]
(498) Exchange
Input [3]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1637989]
(499) BroadcastExchange
Input [3]: [internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638959]
(500) BroadcastHashJoin
Left keys [1]: [product#1014057]
Right keys [1]: [internalUUID#1014072]
Join type: LeftOuter
Join condition: None
(501) Project
Output [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, filter(unitOfMeasureConversions#1014078, lambdafunction((((lambda u#1012565.measurementUnit1.code = productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1012565.measurementUnit1.internalRefUUID = productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014076.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014076.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014083]
Input [7]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, internalUUID#1014072, baseUnitOfMeasure#1014076, unitOfMeasureConversions#1014078]
(502) Project
Output [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, filteredUnitOfMeasureConversions#1014083.quantityDenominator AS _extract_quantityDenominator#1018539, filteredUnitOfMeasureConversions#1014083.quantityNumerator AS _extract_quantityNumerator#1018540]
Input [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, filteredUnitOfMeasureConversions#1014083]
(503) Generate
Input [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, _extract_quantityDenominator#1018539, _extract_quantityNumerator#1018540]
Arguments: explode(_extract_quantityNumerator#1018540), [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, _extract_quantityDenominator#1018539], true, [quantityNumerator#1014084]
(504) Generate
Input [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, _extract_quantityDenominator#1018539, quantityNumerator#1014084]
Arguments: explode(_extract_quantityDenominator#1018539), [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, quantityNumerator#1014084], true, [quantityDenominator#1014085]
(505) Project
Output [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, (cast(quantityNumerator#1014084 as double) / cast(quantityDenominator#1014085 as double)) AS outboundUnit#1014086]
Input [6]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, quantityNumerator#1014084, quantityDenominator#1014085]
(506) Project
Output [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, CASE WHEN (isnull(outboundUnit#1014086) OR (outboundUnit#1014086 <= 0.0)) THEN 1.0 ELSE outboundUnit#1014086 END AS outboundUnit#1014087]
Input [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014086]
(507) Sort
Input [5]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087]
Arguments: [product#1014057 ASC NULLS FIRST, plant#1014058 ASC NULLS FIRST], false, 0
(508) Scan parquet
Output [6]: [internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093, systemId#1014088]
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>>>>>
(509) Filter
Input [6]: [internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093, systemId#1014088]
Condition : (isnotnull(plant#1014091.internalRefUUID) AND isnotnull(product#1014090.internalRefUUID))
(510) Project
Output [6]: [systemId#1014088, internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093]
Input [6]: [internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093, systemId#1014088]
(511) Exchange
Input [6]: [systemId#1014088, internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638000]
(512) BroadcastExchange
Input [6]: [systemId#1014088, internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093]
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=1638987]
(513) Scan parquet
Output [2]: [marketUnit#1014094, distributionCenters#1014100]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(514) Filter
Input [2]: [marketUnit#1014094, distributionCenters#1014100]
Condition : (((marketUnit#1014094 <=> STEPHI_MU) AND (size(distributionCenters#1014100, true) > 0)) AND isnotnull(distributionCenters#1014100))
(515) Project
Output [1]: [distributionCenters#1014100]
Input [2]: [marketUnit#1014094, distributionCenters#1014100]
(516) Exchange
Input [1]: [distributionCenters#1014100]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638004]
(517) Generate
Input [1]: [distributionCenters#1014100]
Arguments: explode(distributionCenters#1014100), false, [distributionCenters#1014115]
(518) Filter
Input [1]: [distributionCenters#1014115]
Condition : (((size(distributionCenters#1014115.storageLocations, true) > 0) AND isnotnull(distributionCenters#1014115.storageLocations)) AND isnotnull(distributionCenters#1014115.internalRefUUID))
(519) Project
Output [2]: [distributionCenters#1014115.internalRefUUID AS _extract_internalRefUUID#1018278, distributionCenters#1014115.storageLocations AS _extract_storageLocations#1018279]
Input [1]: [distributionCenters#1014115]
(520) Generate
Input [2]: [_extract_internalRefUUID#1018278, _extract_storageLocations#1018279]
Arguments: explode(_extract_storageLocations#1018279), [_extract_internalRefUUID#1018278], false, [storageLocations#1014116]
(521) Project
Output [3]: [_extract_internalRefUUID#1018278 AS plantUuid#1014118, storageLocations#1014116.id AS storageLocId#1014119, storageLocations#1014116.internalRefUUID AS storageLocUuid#1014120]
Input [2]: [_extract_internalRefUUID#1018278, storageLocations#1014116]
(522) BroadcastExchange
Input [3]: [plantUuid#1014118, storageLocId#1014119, storageLocUuid#1014120]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638983]
(523) Scan parquet
Output [2]: [product#1014121, plant#1014122]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(524) Filter
Input [2]: [product#1014121, plant#1014122]
Condition : isnotnull(plant#1014122)
(525) Exchange
Input [2]: [product#1014121, plant#1014122]
Arguments: hashpartitioning(product#1014121, plant#1014122, 37), REPARTITION_BY_NUM, [plan_id=1638582]
(526) Scan parquet
Output [4]: [plant#1014127, product#1014128, productionAspect#1014130, systemId#1014125]
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>>>>
(527) Project
Output [4]: [plant#1014127.internalRefUUID AS _extract_internalRefUUID#1018541, product#1014128.internalRefUUID AS _extract_internalRefUUID#1018544, productionAspect#1014130.productMovementPlants.unitOfIssue.code AS _extract_code#1018542, productionAspect#1014130.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018543]
Input [4]: [plant#1014127, product#1014128, productionAspect#1014130, systemId#1014125]
(528) Exchange
Input [4]: [_extract_internalRefUUID#1018541, _extract_internalRefUUID#1018544, _extract_code#1018542, _extract_internalRefUUID#1018543]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638016]
(529) Project
Output [4]: [_extract_code#1018542, _extract_internalRefUUID#1018543, _extract_internalRefUUID#1018544, _extract_internalRefUUID#1018541]
Input [4]: [_extract_internalRefUUID#1018541, _extract_internalRefUUID#1018544, _extract_code#1018542, _extract_internalRefUUID#1018543]
(530) BroadcastExchange
Input [4]: [_extract_code#1018542, _extract_internalRefUUID#1018543, _extract_internalRefUUID#1018544, _extract_internalRefUUID#1018541]
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=1638967]
(531) BroadcastHashJoin
Left keys [4]: [coalesce(product#1014121, ), isnull(product#1014121), coalesce(plant#1014122, ), isnull(plant#1014122)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018544, ), isnull(_extract_internalRefUUID#1018544), coalesce(_extract_internalRefUUID#1018541, ), isnull(_extract_internalRefUUID#1018541)]
Join type: LeftOuter
Join condition: None
(532) Project
Output [4]: [product#1014121, plant#1014122, _extract_code#1018542, _extract_internalRefUUID#1018543]
Input [6]: [product#1014121, plant#1014122, _extract_code#1018542, _extract_internalRefUUID#1018543, _extract_internalRefUUID#1018544, _extract_internalRefUUID#1018541]
(533) Scan parquet
Output [4]: [internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142, systemId#1014135]
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>>>
(534) Filter
Input [4]: [internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142, systemId#1014135]
Condition : isnotnull(internalUUID#1014136)
(535) Project
Output [3]: [internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142]
Input [4]: [internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142, systemId#1014135]
(536) Exchange
Input [3]: [internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638023]
(537) BroadcastExchange
Input [3]: [internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1638971]
(538) BroadcastHashJoin
Left keys [1]: [product#1014121]
Right keys [1]: [internalUUID#1014136]
Join type: LeftOuter
Join condition: None
(539) Project
Output [2]: [plant#1014122, filter(unitOfMeasureConversions#1014142, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018542) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018543)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014140.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014140.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014147]
Input [7]: [product#1014121, plant#1014122, _extract_code#1018542, _extract_internalRefUUID#1018543, internalUUID#1014136, baseUnitOfMeasure#1014140, unitOfMeasureConversions#1014142]
(540) Generate
Input [2]: [plant#1014122, filteredUnitOfMeasureConversions#1014147]
Arguments: explode(filteredUnitOfMeasureConversions#1014147.quantityNumerator), [plant#1014122, filteredUnitOfMeasureConversions#1014147], true, [quantityNumerator#1014148]
(541) Project
Output [2]: [plant#1014122, filteredUnitOfMeasureConversions#1014147.quantityDenominator AS _extract_quantityDenominator#1018280]
Input [3]: [plant#1014122, filteredUnitOfMeasureConversions#1014147, quantityNumerator#1014148]
(542) Generate
Input [2]: [plant#1014122, _extract_quantityDenominator#1018280]
Arguments: explode(_extract_quantityDenominator#1018280), [plant#1014122], true, [quantityDenominator#1014149]
(543) Project
Output [1]: [plant#1014122]
Input [2]: [plant#1014122, quantityDenominator#1014149]
(544) HashAggregate
Input [1]: [plant#1014122]
Keys [1]: [plant#1014122]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1014122]
(545) Exchange
Input [1]: [plant#1014122]
Arguments: hashpartitioning(plant#1014122, 37), ENSURE_REQUIREMENTS, [plan_id=1638980]
(546) HashAggregate
Input [1]: [plant#1014122]
Keys [1]: [plant#1014122]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1014122]
(547) BroadcastHashJoin
Left keys [1]: [plantUuid#1014118]
Right keys [1]: [plant#1014122]
Join type: Inner
Join condition: None
(548) Project
Output [3]: [plantUuid#1014118, storageLocId#1014119, storageLocUuid#1014120]
Input [4]: [plantUuid#1014118, storageLocId#1014119, storageLocUuid#1014120, plant#1014122]
(549) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1014091.internalRefUUID, ), isnull(plant#1014091.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1014118, ), isnull(plantUuid#1014118)]
Join type: Inner
Join condition: None
(550) Generate
Input [9]: [systemId#1014088, internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, stockQuantities#1014093, plantUuid#1014118, storageLocId#1014119, storageLocUuid#1014120]
Arguments: explode(filter(stockQuantities#1014093, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1014120) AND (lambda x#1012695.storageLocation.Id = storageLocId#1014119)), lambda x#1012695, false))), [systemId#1014088, internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, plantUuid#1014118], false, [stockQuantity#1014152]
(551) ObjectHashAggregate
Input [7]: [systemId#1014088, internalUUID#1014089, product#1014090, plant#1014091, calculationDateTime#1014092, plantUuid#1014118, stockQuantity#1014152]
Keys [5]: [plantUuid#1014118, internalUUID#1014089, plant#1014091, product#1014090, systemId#1014088]
Functions [2]: [partial_first(calculationDateTime#1014092, false), partial_collect_list(stockQuantity#1014152, 0, 0)]
Aggregate Attributes [3]: [first#1019639, valueSet#1019640, buf#1019641]
Results [8]: [plantUuid#1014118, internalUUID#1014089, plant#1014091, product#1014090, systemId#1014088, first#1019642, valueSet#1019643, buf#1019644]
(552) ObjectHashAggregate
Input [8]: [plantUuid#1014118, internalUUID#1014089, plant#1014091, product#1014090, systemId#1014088, first#1019642, valueSet#1019643, buf#1019644]
Keys [5]: [plantUuid#1014118, internalUUID#1014089, plant#1014091, product#1014090, systemId#1014088]
Functions [2]: [first(calculationDateTime#1014092, false), collect_list(stockQuantity#1014152, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1014092)()#1012710, collect_list(stockQuantity#1014152, 0, 0)#1012711]
Results [4]: [product#1014090, plant#1014091, first(calculationDateTime#1014092)()#1012710 AS calculationDateTime#1014153, collect_list(stockQuantity#1014152, 0, 0)#1012711 AS stockQuantities#1014154]
(553) Filter
Input [4]: [product#1014090, plant#1014091, calculationDateTime#1014153, stockQuantities#1014154]
Condition : ((size(stockQuantities#1014154, true) > 0) AND isnotnull(calculationDateTime#1014153))
(554) Generate
Input [4]: [product#1014090, plant#1014091, calculationDateTime#1014153, stockQuantities#1014154]
Arguments: explode(stockQuantities#1014154), [product#1014090, plant#1014091, calculationDateTime#1014153], false, [stockQuantity#1014155]
(555) Filter
Input [4]: [product#1014090, plant#1014091, calculationDateTime#1014153, stockQuantity#1014155]
Condition : (((isnotnull(stockQuantity#1014155.specialStockIndicator.code) AND isnotnull(stockQuantity#1014155.stockType.code)) AND (stockQuantity#1014155.specialStockIndicator.code = )) AND (stockQuantity#1014155.stockType.code = 01))
(556) Project
Output [5]: [plant#1014091.internalRefUUID AS plantUuid#1014157, product#1014090.internalRefUUID AS productUuid#1014159, calculationDateTime#1014153, stockQuantity#1014155.storagelocation.id AS storageLocId#1014160, stockQuantity#1014155.quantity.measure AS quantity#1014162]
Input [4]: [product#1014090, plant#1014091, calculationDateTime#1014153, stockQuantity#1014155]
(557) Exchange
Input [5]: [plantUuid#1014157, productUuid#1014159, calculationDateTime#1014153, storageLocId#1014160, quantity#1014162]
Arguments: hashpartitioning(productUuid#1014159, plantUuid#1014157, 37), ENSURE_REQUIREMENTS, [plan_id=1639009]
(558) Sort
Input [5]: [plantUuid#1014157, productUuid#1014159, calculationDateTime#1014153, storageLocId#1014160, quantity#1014162]
Arguments: [productUuid#1014159 ASC NULLS FIRST, plantUuid#1014157 ASC NULLS FIRST], false, 0
(559) Scan parquet
Output [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(560) Filter
Input [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
Condition : ((isnotnull(orderDateTime#1014167) AND isnotnull(plant#1014166)) AND isnotnull(product#1014165))
(561) Exchange
Input [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
Arguments: hashpartitioning(product#1014165, plant#1014166, 37), REPARTITION_BY_NUM, [plan_id=1638603]
(562) Scan parquet
Output [4]: [plant#1014171, product#1014172, productionAspect#1014174, systemId#1014169]
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>>>>
(563) Project
Output [4]: [plant#1014171.internalRefUUID AS _extract_internalRefUUID#1018548, product#1014172.internalRefUUID AS _extract_internalRefUUID#1018547, productionAspect#1014174.productMovementPlants.unitOfIssue.code AS _extract_code#1018545, productionAspect#1014174.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018546]
Input [4]: [plant#1014171, product#1014172, productionAspect#1014174, systemId#1014169]
(564) Exchange
Input [4]: [_extract_internalRefUUID#1018548, _extract_internalRefUUID#1018547, _extract_code#1018545, _extract_internalRefUUID#1018546]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638048]
(565) Project
Output [4]: [_extract_code#1018545, _extract_internalRefUUID#1018546, _extract_internalRefUUID#1018547, _extract_internalRefUUID#1018548]
Input [4]: [_extract_internalRefUUID#1018548, _extract_internalRefUUID#1018547, _extract_code#1018545, _extract_internalRefUUID#1018546]
(566) BroadcastExchange
Input [4]: [_extract_code#1018545, _extract_internalRefUUID#1018546, _extract_internalRefUUID#1018547, _extract_internalRefUUID#1018548]
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=1638996]
(567) BroadcastHashJoin
Left keys [4]: [coalesce(product#1014165, ), isnull(product#1014165), coalesce(plant#1014166, ), isnull(plant#1014166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018547, ), isnull(_extract_internalRefUUID#1018547), coalesce(_extract_internalRefUUID#1018548, ), isnull(_extract_internalRefUUID#1018548)]
Join type: LeftOuter
Join condition: None
(568) Project
Output [5]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_code#1018545, _extract_internalRefUUID#1018546]
Input [7]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_code#1018545, _extract_internalRefUUID#1018546, _extract_internalRefUUID#1018547, _extract_internalRefUUID#1018548]
(569) Scan parquet
Output [4]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186, systemId#1014179]
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>>>
(570) Filter
Input [4]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186, systemId#1014179]
Condition : isnotnull(internalUUID#1014180)
(571) Project
Output [3]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
Input [4]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186, systemId#1014179]
(572) Exchange
Input [3]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638055]
(573) BroadcastExchange
Input [3]: [internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639000]
(574) BroadcastHashJoin
Left keys [1]: [product#1014165]
Right keys [1]: [internalUUID#1014180]
Join type: LeftOuter
Join condition: None
(575) Project
Output [4]: [product#1014165, plant#1014166, orderDateTime#1014167, filter(unitOfMeasureConversions#1014186, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018545) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018546)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014184.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014184.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014191]
Input [8]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_code#1018545, _extract_internalRefUUID#1018546, internalUUID#1014180, baseUnitOfMeasure#1014184, unitOfMeasureConversions#1014186]
(576) Generate
Input [4]: [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191]
Arguments: explode(filteredUnitOfMeasureConversions#1014191.quantityNumerator), [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191], true, [quantityNumerator#1014192]
(577) Project
Output [4]: [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191.quantityDenominator AS _extract_quantityDenominator#1018287]
Input [5]: [product#1014165, plant#1014166, orderDateTime#1014167, filteredUnitOfMeasureConversions#1014191, quantityNumerator#1014192]
(578) Generate
Input [4]: [product#1014165, plant#1014166, orderDateTime#1014167, _extract_quantityDenominator#1018287]
Arguments: explode(_extract_quantityDenominator#1018287), [product#1014165, plant#1014166, orderDateTime#1014167], true, [quantityDenominator#1014193]
(579) Project
Output [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
Input [4]: [product#1014165, plant#1014166, orderDateTime#1014167, quantityDenominator#1014193]
(580) Sort
Input [3]: [product#1014165, plant#1014166, orderDateTime#1014167]
Arguments: [product#1014165 ASC NULLS FIRST, plant#1014166 ASC NULLS FIRST], false, 0
(581) SortMergeJoin
Left keys [2]: [productUuid#1014159, plantUuid#1014157]
Right keys [2]: [product#1014165, plant#1014166]
Join type: Inner
Join condition: (calculationDateTime#1014153 <= orderDateTime#1014167)
(582) Project
Output [5]: [plantUuid#1014157 AS plant#1014196, productUuid#1014159 AS product#1014197, storageLocId#1014160, calculationDateTime#1014153, quantity#1014162]
Input [8]: [plantUuid#1014157, productUuid#1014159, calculationDateTime#1014153, storageLocId#1014160, quantity#1014162, product#1014165, plant#1014166, orderDateTime#1014167]
(583) Exchange
Input [5]: [plant#1014196, product#1014197, storageLocId#1014160, calculationDateTime#1014153, quantity#1014162]
Arguments: hashpartitioning(coalesce(plant#1014196, ), isnull(plant#1014196), coalesce(product#1014197, ), isnull(product#1014197), coalesce(storageLocId#1014160, ), isnull(storageLocId#1014160), coalesce(calculationDateTime#1014153, 1970-01-01 00:00:00), isnull(calculationDateTime#1014153), 37), ENSURE_REQUIREMENTS, [plan_id=1639065]
(584) Sort
Input [5]: [plant#1014196, product#1014197, storageLocId#1014160, calculationDateTime#1014153, quantity#1014162]
Arguments: [coalesce(plant#1014196, ) ASC NULLS FIRST, isnull(plant#1014196) ASC NULLS FIRST, coalesce(product#1014197, ) ASC NULLS FIRST, isnull(product#1014197) ASC NULLS FIRST, coalesce(storageLocId#1014160, ) ASC NULLS FIRST, isnull(storageLocId#1014160) ASC NULLS FIRST, coalesce(calculationDateTime#1014153, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1014153) ASC NULLS FIRST], false, 0
(585) Scan parquet
Output [6]: [internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203, systemId#1014198]
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>>>>>
(586) Filter
Input [6]: [internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203, systemId#1014198]
Condition : (isnotnull(plant#1014201.internalRefUUID) AND isnotnull(product#1014200.internalRefUUID))
(587) Project
Output [6]: [systemId#1014198, internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203]
Input [6]: [internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203, systemId#1014198]
(588) Exchange
Input [6]: [systemId#1014198, internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638067]
(589) BroadcastExchange
Input [6]: [systemId#1014198, internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203]
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=1639034]
(590) Scan parquet
Output [2]: [marketUnit#1014204, distributionCenters#1014210]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(591) Filter
Input [2]: [marketUnit#1014204, distributionCenters#1014210]
Condition : (((marketUnit#1014204 <=> STEPHI_MU) AND (size(distributionCenters#1014210, true) > 0)) AND isnotnull(distributionCenters#1014210))
(592) Project
Output [1]: [distributionCenters#1014210]
Input [2]: [marketUnit#1014204, distributionCenters#1014210]
(593) Exchange
Input [1]: [distributionCenters#1014210]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638071]
(594) Generate
Input [1]: [distributionCenters#1014210]
Arguments: explode(distributionCenters#1014210), false, [distributionCenters#1014225]
(595) Filter
Input [1]: [distributionCenters#1014225]
Condition : (((size(distributionCenters#1014225.storageLocations, true) > 0) AND isnotnull(distributionCenters#1014225.storageLocations)) AND isnotnull(distributionCenters#1014225.internalRefUUID))
(596) Project
Output [2]: [distributionCenters#1014225.internalRefUUID AS _extract_internalRefUUID#1018294, distributionCenters#1014225.storageLocations AS _extract_storageLocations#1018295]
Input [1]: [distributionCenters#1014225]
(597) Generate
Input [2]: [_extract_internalRefUUID#1018294, _extract_storageLocations#1018295]
Arguments: explode(_extract_storageLocations#1018295), [_extract_internalRefUUID#1018294], false, [storageLocations#1014226]
(598) Project
Output [3]: [_extract_internalRefUUID#1018294 AS plantUuid#1014228, storageLocations#1014226.id AS storageLocId#1014229, storageLocations#1014226.internalRefUUID AS storageLocUuid#1014230]
Input [2]: [_extract_internalRefUUID#1018294, storageLocations#1014226]
(599) BroadcastExchange
Input [3]: [plantUuid#1014228, storageLocId#1014229, storageLocUuid#1014230]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639030]
(600) Scan parquet
Output [2]: [product#1014231, plant#1014232]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(601) Filter
Input [2]: [product#1014231, plant#1014232]
Condition : isnotnull(plant#1014232)
(602) Exchange
Input [2]: [product#1014231, plant#1014232]
Arguments: hashpartitioning(product#1014231, plant#1014232, 37), REPARTITION_BY_NUM, [plan_id=1638614]
(603) Scan parquet
Output [4]: [plant#1014237, product#1014238, productionAspect#1014240, systemId#1014235]
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>>>>
(604) Project
Output [4]: [plant#1014237.internalRefUUID AS _extract_internalRefUUID#1018550, product#1014238.internalRefUUID AS _extract_internalRefUUID#1018549, productionAspect#1014240.productMovementPlants.unitOfIssue.code AS _extract_code#1018551, productionAspect#1014240.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018552]
Input [4]: [plant#1014237, product#1014238, productionAspect#1014240, systemId#1014235]
(605) Exchange
Input [4]: [_extract_internalRefUUID#1018550, _extract_internalRefUUID#1018549, _extract_code#1018551, _extract_internalRefUUID#1018552]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638083]
(606) Project
Output [4]: [_extract_code#1018551, _extract_internalRefUUID#1018552, _extract_internalRefUUID#1018549, _extract_internalRefUUID#1018550]
Input [4]: [_extract_internalRefUUID#1018550, _extract_internalRefUUID#1018549, _extract_code#1018551, _extract_internalRefUUID#1018552]
(607) BroadcastExchange
Input [4]: [_extract_code#1018551, _extract_internalRefUUID#1018552, _extract_internalRefUUID#1018549, _extract_internalRefUUID#1018550]
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=1639014]
(608) BroadcastHashJoin
Left keys [4]: [coalesce(product#1014231, ), isnull(product#1014231), coalesce(plant#1014232, ), isnull(plant#1014232)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018549, ), isnull(_extract_internalRefUUID#1018549), coalesce(_extract_internalRefUUID#1018550, ), isnull(_extract_internalRefUUID#1018550)]
Join type: LeftOuter
Join condition: None
(609) Project
Output [4]: [product#1014231, plant#1014232, _extract_code#1018551, _extract_internalRefUUID#1018552]
Input [6]: [product#1014231, plant#1014232, _extract_code#1018551, _extract_internalRefUUID#1018552, _extract_internalRefUUID#1018549, _extract_internalRefUUID#1018550]
(610) Scan parquet
Output [4]: [internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252, systemId#1014245]
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>>>
(611) Filter
Input [4]: [internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252, systemId#1014245]
Condition : isnotnull(internalUUID#1014246)
(612) Project
Output [3]: [internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252]
Input [4]: [internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252, systemId#1014245]
(613) Exchange
Input [3]: [internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638090]
(614) BroadcastExchange
Input [3]: [internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639018]
(615) BroadcastHashJoin
Left keys [1]: [product#1014231]
Right keys [1]: [internalUUID#1014246]
Join type: LeftOuter
Join condition: None
(616) Project
Output [2]: [plant#1014232, filter(unitOfMeasureConversions#1014252, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018551) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018552)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014250.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014250.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014257]
Input [7]: [product#1014231, plant#1014232, _extract_code#1018551, _extract_internalRefUUID#1018552, internalUUID#1014246, baseUnitOfMeasure#1014250, unitOfMeasureConversions#1014252]
(617) Generate
Input [2]: [plant#1014232, filteredUnitOfMeasureConversions#1014257]
Arguments: explode(filteredUnitOfMeasureConversions#1014257.quantityNumerator), [plant#1014232, filteredUnitOfMeasureConversions#1014257], true, [quantityNumerator#1014258]
(618) Project
Output [2]: [plant#1014232, filteredUnitOfMeasureConversions#1014257.quantityDenominator AS _extract_quantityDenominator#1018296]
Input [3]: [plant#1014232, filteredUnitOfMeasureConversions#1014257, quantityNumerator#1014258]
(619) Generate
Input [2]: [plant#1014232, _extract_quantityDenominator#1018296]
Arguments: explode(_extract_quantityDenominator#1018296), [plant#1014232], true, [quantityDenominator#1014259]
(620) Project
Output [1]: [plant#1014232]
Input [2]: [plant#1014232, quantityDenominator#1014259]
(621) HashAggregate
Input [1]: [plant#1014232]
Keys [1]: [plant#1014232]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1014232]
(622) Exchange
Input [1]: [plant#1014232]
Arguments: hashpartitioning(plant#1014232, 37), ENSURE_REQUIREMENTS, [plan_id=1639027]
(623) HashAggregate
Input [1]: [plant#1014232]
Keys [1]: [plant#1014232]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1014232]
(624) BroadcastHashJoin
Left keys [1]: [plantUuid#1014228]
Right keys [1]: [plant#1014232]
Join type: Inner
Join condition: None
(625) Project
Output [3]: [plantUuid#1014228, storageLocId#1014229, storageLocUuid#1014230]
Input [4]: [plantUuid#1014228, storageLocId#1014229, storageLocUuid#1014230, plant#1014232]
(626) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1014201.internalRefUUID, ), isnull(plant#1014201.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1014228, ), isnull(plantUuid#1014228)]
Join type: Inner
Join condition: None
(627) Generate
Input [9]: [systemId#1014198, internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, stockQuantities#1014203, plantUuid#1014228, storageLocId#1014229, storageLocUuid#1014230]
Arguments: explode(filter(stockQuantities#1014203, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1014230) AND (lambda x#1012695.storageLocation.Id = storageLocId#1014229)), lambda x#1012695, false))), [systemId#1014198, internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, plantUuid#1014228], false, [stockQuantity#1014262]
(628) ObjectHashAggregate
Input [7]: [systemId#1014198, internalUUID#1014199, product#1014200, plant#1014201, calculationDateTime#1014202, plantUuid#1014228, stockQuantity#1014262]
Keys [5]: [plantUuid#1014228, internalUUID#1014199, plant#1014201, product#1014200, systemId#1014198]
Functions [2]: [partial_first(calculationDateTime#1014202, false), partial_collect_list(stockQuantity#1014262, 0, 0)]
Aggregate Attributes [3]: [first#1019647, valueSet#1019648, buf#1019649]
Results [8]: [plantUuid#1014228, internalUUID#1014199, plant#1014201, product#1014200, systemId#1014198, first#1019650, valueSet#1019651, buf#1019652]
(629) ObjectHashAggregate
Input [8]: [plantUuid#1014228, internalUUID#1014199, plant#1014201, product#1014200, systemId#1014198, first#1019650, valueSet#1019651, buf#1019652]
Keys [5]: [plantUuid#1014228, internalUUID#1014199, plant#1014201, product#1014200, systemId#1014198]
Functions [2]: [first(calculationDateTime#1014202, false), collect_list(stockQuantity#1014262, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1014202)()#1012710, collect_list(stockQuantity#1014262, 0, 0)#1012711]
Results [4]: [product#1014200, plant#1014201, first(calculationDateTime#1014202)()#1012710 AS calculationDateTime#1014263, collect_list(stockQuantity#1014262, 0, 0)#1012711 AS stockQuantities#1014264]
(630) Filter
Input [4]: [product#1014200, plant#1014201, calculationDateTime#1014263, stockQuantities#1014264]
Condition : ((size(stockQuantities#1014264, true) > 0) AND isnotnull(calculationDateTime#1014263))
(631) Generate
Input [4]: [product#1014200, plant#1014201, calculationDateTime#1014263, stockQuantities#1014264]
Arguments: explode(stockQuantities#1014264), [product#1014200, plant#1014201, calculationDateTime#1014263], false, [stockQuantity#1014265]
(632) Filter
Input [4]: [product#1014200, plant#1014201, calculationDateTime#1014263, stockQuantity#1014265]
Condition : (((isnotnull(stockQuantity#1014265.specialStockIndicator.code) AND isnotnull(stockQuantity#1014265.stockType.code)) AND (stockQuantity#1014265.specialStockIndicator.code = )) AND (stockQuantity#1014265.stockType.code = 01))
(633) Project
Output [4]: [plant#1014201.internalRefUUID AS plantUuid#1014267, product#1014200.internalRefUUID AS productUuid#1014269, calculationDateTime#1014263, stockQuantity#1014265.storagelocation.id AS storageLocId#1014270]
Input [4]: [product#1014200, plant#1014201, calculationDateTime#1014263, stockQuantity#1014265]
(634) Exchange
Input [4]: [plantUuid#1014267, productUuid#1014269, calculationDateTime#1014263, storageLocId#1014270]
Arguments: hashpartitioning(productUuid#1014269, plantUuid#1014267, 37), ENSURE_REQUIREMENTS, [plan_id=1639056]
(635) Sort
Input [4]: [plantUuid#1014267, productUuid#1014269, calculationDateTime#1014263, storageLocId#1014270]
Arguments: [productUuid#1014269 ASC NULLS FIRST, plantUuid#1014267 ASC NULLS FIRST], false, 0
(636) Scan parquet
Output [3]: [product#1014275, plant#1014276, orderDateTime#1014277]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(637) Filter
Input [3]: [product#1014275, plant#1014276, orderDateTime#1014277]
Condition : ((isnotnull(orderDateTime#1014277) AND isnotnull(plant#1014276)) AND isnotnull(product#1014275))
(638) Exchange
Input [3]: [product#1014275, plant#1014276, orderDateTime#1014277]
Arguments: hashpartitioning(product#1014275, plant#1014276, 37), REPARTITION_BY_NUM, [plan_id=1638635]
(639) Scan parquet
Output [4]: [plant#1014281, product#1014282, productionAspect#1014284, systemId#1014279]
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>>>>
(640) Project
Output [4]: [plant#1014281.internalRefUUID AS _extract_internalRefUUID#1018556, product#1014282.internalRefUUID AS _extract_internalRefUUID#1018555, productionAspect#1014284.productMovementPlants.unitOfIssue.code AS _extract_code#1018553, productionAspect#1014284.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018554]
Input [4]: [plant#1014281, product#1014282, productionAspect#1014284, systemId#1014279]
(641) Exchange
Input [4]: [_extract_internalRefUUID#1018556, _extract_internalRefUUID#1018555, _extract_code#1018553, _extract_internalRefUUID#1018554]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638115]
(642) Project
Output [4]: [_extract_code#1018553, _extract_internalRefUUID#1018554, _extract_internalRefUUID#1018555, _extract_internalRefUUID#1018556]
Input [4]: [_extract_internalRefUUID#1018556, _extract_internalRefUUID#1018555, _extract_code#1018553, _extract_internalRefUUID#1018554]
(643) BroadcastExchange
Input [4]: [_extract_code#1018553, _extract_internalRefUUID#1018554, _extract_internalRefUUID#1018555, _extract_internalRefUUID#1018556]
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=1639043]
(644) BroadcastHashJoin
Left keys [4]: [coalesce(product#1014275, ), isnull(product#1014275), coalesce(plant#1014276, ), isnull(plant#1014276)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018555, ), isnull(_extract_internalRefUUID#1018555), coalesce(_extract_internalRefUUID#1018556, ), isnull(_extract_internalRefUUID#1018556)]
Join type: LeftOuter
Join condition: None
(645) Project
Output [5]: [product#1014275, plant#1014276, orderDateTime#1014277, _extract_code#1018553, _extract_internalRefUUID#1018554]
Input [7]: [product#1014275, plant#1014276, orderDateTime#1014277, _extract_code#1018553, _extract_internalRefUUID#1018554, _extract_internalRefUUID#1018555, _extract_internalRefUUID#1018556]
(646) Scan parquet
Output [4]: [internalUUID#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296, systemId#1014289]
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#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296, systemId#1014289]
Condition : isnotnull(internalUUID#1014290)
(648) Project
Output [3]: [internalUUID#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296]
Input [4]: [internalUUID#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296, systemId#1014289]
(649) Exchange
Input [3]: [internalUUID#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638122]
(650) BroadcastExchange
Input [3]: [internalUUID#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639047]
(651) BroadcastHashJoin
Left keys [1]: [product#1014275]
Right keys [1]: [internalUUID#1014290]
Join type: LeftOuter
Join condition: None
(652) Project
Output [4]: [product#1014275, plant#1014276, orderDateTime#1014277, filter(unitOfMeasureConversions#1014296, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018553) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018554)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1014294.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1014294.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1014301]
Input [8]: [product#1014275, plant#1014276, orderDateTime#1014277, _extract_code#1018553, _extract_internalRefUUID#1018554, internalUUID#1014290, baseUnitOfMeasure#1014294, unitOfMeasureConversions#1014296]
(653) Generate
Input [4]: [product#1014275, plant#1014276, orderDateTime#1014277, filteredUnitOfMeasureConversions#1014301]
Arguments: explode(filteredUnitOfMeasureConversions#1014301.quantityNumerator), [product#1014275, plant#1014276, orderDateTime#1014277, filteredUnitOfMeasureConversions#1014301], true, [quantityNumerator#1014302]
(654) Project
Output [4]: [product#1014275, plant#1014276, orderDateTime#1014277, filteredUnitOfMeasureConversions#1014301.quantityDenominator AS _extract_quantityDenominator#1018303]
Input [5]: [product#1014275, plant#1014276, orderDateTime#1014277, filteredUnitOfMeasureConversions#1014301, quantityNumerator#1014302]
(655) Generate
Input [4]: [product#1014275, plant#1014276, orderDateTime#1014277, _extract_quantityDenominator#1018303]
Arguments: explode(_extract_quantityDenominator#1018303), [product#1014275, plant#1014276, orderDateTime#1014277], true, [quantityDenominator#1014303]
(656) Project
Output [3]: [product#1014275, plant#1014276, orderDateTime#1014277]
Input [4]: [product#1014275, plant#1014276, orderDateTime#1014277, quantityDenominator#1014303]
(657) Sort
Input [3]: [product#1014275, plant#1014276, orderDateTime#1014277]
Arguments: [product#1014275 ASC NULLS FIRST, plant#1014276 ASC NULLS FIRST], false, 0
(658) SortMergeJoin
Left keys [2]: [productUuid#1014269, plantUuid#1014267]
Right keys [2]: [product#1014275, plant#1014276]
Join type: Inner
Join condition: (calculationDateTime#1014263 <= orderDateTime#1014277)
(659) Project
Output [4]: [plantUuid#1014267 AS plant#1014306, productUuid#1014269 AS product#1014307, storageLocId#1014270, calculationDateTime#1014263]
Input [7]: [plantUuid#1014267, productUuid#1014269, calculationDateTime#1014263, storageLocId#1014270, product#1014275, plant#1014276, orderDateTime#1014277]
(660) HashAggregate
Input [4]: [plant#1014306, product#1014307, storageLocId#1014270, calculationDateTime#1014263]
Keys [3]: [plant#1014306, product#1014307, storageLocId#1014270]
Functions [1]: [partial_max(calculationDateTime#1014263)]
Aggregate Attributes [1]: [max#1019645]
Results [4]: [plant#1014306, product#1014307, storageLocId#1014270, max#1019646]
(661) HashAggregate
Input [4]: [plant#1014306, product#1014307, storageLocId#1014270, max#1019646]
Keys [3]: [plant#1014306, product#1014307, storageLocId#1014270]
Functions [1]: [max(calculationDateTime#1014263)]
Aggregate Attributes [1]: [max(calculationDateTime#1014263)#1012774]
Results [4]: [plant#1014306, product#1014307, storageLocId#1014270, max(calculationDateTime#1014263)#1012774 AS max_calc_datetime#1014308]
(662) Exchange
Input [4]: [plant#1014306, product#1014307, storageLocId#1014270, max_calc_datetime#1014308]
Arguments: hashpartitioning(coalesce(plant#1014306, ), isnull(plant#1014306), coalesce(product#1014307, ), isnull(product#1014307), coalesce(storageLocId#1014270, ), isnull(storageLocId#1014270), coalesce(max_calc_datetime#1014308, 1970-01-01 00:00:00), isnull(max_calc_datetime#1014308), 37), ENSURE_REQUIREMENTS, [plan_id=1639066]
(663) Sort
Input [4]: [plant#1014306, product#1014307, storageLocId#1014270, max_calc_datetime#1014308]
Arguments: [coalesce(plant#1014306, ) ASC NULLS FIRST, isnull(plant#1014306) ASC NULLS FIRST, coalesce(product#1014307, ) ASC NULLS FIRST, isnull(product#1014307) ASC NULLS FIRST, coalesce(storageLocId#1014270, ) ASC NULLS FIRST, isnull(storageLocId#1014270) ASC NULLS FIRST, coalesce(max_calc_datetime#1014308, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1014308) ASC NULLS FIRST], false, 0
(664) SortMergeJoin
Left keys [8]: [coalesce(plant#1014196, ), isnull(plant#1014196), coalesce(product#1014197, ), isnull(product#1014197), coalesce(storageLocId#1014160, ), isnull(storageLocId#1014160), coalesce(calculationDateTime#1014153, 1970-01-01 00:00:00), isnull(calculationDateTime#1014153)]
Right keys [8]: [coalesce(plant#1014306, ), isnull(plant#1014306), coalesce(product#1014307, ), isnull(product#1014307), coalesce(storageLocId#1014270, ), isnull(storageLocId#1014270), coalesce(max_calc_datetime#1014308, 1970-01-01 00:00:00), isnull(max_calc_datetime#1014308)]
Join type: Inner
Join condition: None
(665) Project
Output [4]: [plant#1014196, product#1014197, calculationDateTime#1014153, quantity#1014162]
Input [9]: [plant#1014196, product#1014197, storageLocId#1014160, calculationDateTime#1014153, quantity#1014162, plant#1014306, product#1014307, storageLocId#1014270, max_calc_datetime#1014308]
(666) HashAggregate
Input [4]: [plant#1014196, product#1014197, calculationDateTime#1014153, quantity#1014162]
Keys [2]: [product#1014197, plant#1014196]
Functions [2]: [partial_min(calculationDateTime#1014153), partial_sum(quantity#1014162)]
Aggregate Attributes [2]: [min#1019635, sum#1019636]
Results [4]: [product#1014197, plant#1014196, min#1019637, sum#1019638]
(667) Exchange
Input [4]: [product#1014197, plant#1014196, min#1019637, sum#1019638]
Arguments: hashpartitioning(product#1014197, plant#1014196, 37), ENSURE_REQUIREMENTS, [plan_id=1639073]
(668) HashAggregate
Input [4]: [product#1014197, plant#1014196, min#1019637, sum#1019638]
Keys [2]: [product#1014197, plant#1014196]
Functions [2]: [min(calculationDateTime#1014153), sum(quantity#1014162)]
Aggregate Attributes [2]: [min(calculationDateTime#1014153)#1012901, sum(quantity#1014162)#1012900]
Results [4]: [product#1014197, plant#1014196, min(calculationDateTime#1014153)#1012901 AS minCalculationDateTime#1014310, round(sum(quantity#1014162)#1012900, 0) AS roundedQuantitySum#1014311]
(669) Sort
Input [4]: [product#1014197, plant#1014196, minCalculationDateTime#1014310, roundedQuantitySum#1014311]
Arguments: [product#1014197 ASC NULLS FIRST, plant#1014196 ASC NULLS FIRST], false, 0
(670) SortMergeJoin
Left keys [2]: [product#1014057, plant#1014058]
Right keys [2]: [product#1014197, plant#1014196]
Join type: LeftOuter
Join condition: None
(671) Project
Output [7]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, CASE WHEN isnotnull(minCalculationDateTime#1014310) THEN minCalculationDateTime#1014310 ELSE orderDateTime#1014059 END AS stockDatetime#1014312, CASE WHEN isnotnull(roundedQuantitySum#1014311) THEN array(roundedQuantitySum#1014311) ELSE [0.0] END AS stockBatchQuantities#1014313]
Input [9]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, product#1014197, plant#1014196, minCalculationDateTime#1014310, roundedQuantitySum#1014311]
(672) BroadcastExchange
Input [9]: [product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
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=1639082]
(673) BroadcastHashJoin
Left keys [4]: [coalesce(plant#1014058, ), isnull(plant#1014058), coalesce(product#1014057, ), isnull(product#1014057)]
Right keys [4]: [coalesce(plant#1012941, ), isnull(plant#1012941), coalesce(product#1012940, ), isnull(product#1012940)]
Join type: LeftOuter
Join condition: None
(674) Project
Output [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, CASE WHEN isnotnull(product#1012940) THEN struct(demandChannel, demandChannel#1012942, demandStream, demandStream#1012943, considerVariance, considerVariance#1012944, demandTimeBuckets, demandTimeBuckets#1012945, demandPointInTimeStart, demandPointInTimeStart#1012946, demandPointInTimeEnd, demandPointInTimeEnd#1012947, demandPointInTime, demandPointInTime#1012948) END AS rawDemands#1012950]
Input [16]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, product#1012940, plant#1012941, demandChannel#1012942, demandStream#1012943, considerVariance#1012944, demandTimeBuckets#1012945, demandPointInTimeStart#1012946, demandPointInTimeEnd#1012947, demandPointInTime#1012948]
(675) ObjectHashAggregate
Input [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, rawDemands#1012950]
Keys [8]: [product#1014057, plant#1014058, orderDateTime#1014059, knownfloatingpointnormalized(if (isnull(productPlant#1014070)) null else named_struct(systemId, productPlant#1014070.systemId, internalUUID, productPlant#1014070.internalUUID, plant, productPlant#1014070.plant, product, productPlant#1014070.product, blockedForReplenishmentStartingFrom, productPlant#1014070.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1014070.productionAspect)) null else named_struct(productMovementPlants, productPlant#1014070.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1014070.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1014070.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1014070.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1014070.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#1014070.salesPlant, listing, productPlant#1014070.listing, sourceOfSupplyCategory, productPlant#1014070.sourceOfSupplyCategory)) AS productPlant#1014070, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1014087)) AS outboundUnit#1014087, stockDatetime#1014312, knownfloatingpointnormalized(transform(stockBatchQuantities#1014313, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1019632)), lambda arg#1019632, false))) AS stockBatchQuantities#1014313, [7226582400000000] AS [7226582400000000]#1019631]
Functions [1]: [partial_collect_list(rawDemands#1012950, 0, 0)]
Aggregate Attributes [1]: [buf#1019633]
Results [9]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000]#1019631, buf#1019634]
(676) ObjectHashAggregate
Input [9]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000]#1019631, buf#1019634]
Keys [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000]#1019631]
Functions [1]: [collect_list(rawDemands#1012950, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1012950, 0, 0)#1012970]
Results [8]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, collect_list(rawDemands#1012950, 0, 0)#1012970 AS rawDemands#1012951]
(677) Project
Output [2]: [internalUUID#1014008, address#1014014.timeZone.code AS timezonecode#1014020]
Input [3]: [internalUUID#1014008, address#1014014, systemId#1014007]
(678) Exchange
Input [2]: [internalUUID#1014008, timezonecode#1014020]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638146]
(679) BroadcastExchange
Input [2]: [internalUUID#1014008, timezonecode#1014020]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1639088]
(680) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1014058, ), isnull(plant#1014058)]
Right keys [2]: [coalesce(internalUUID#1014008, ), isnull(internalUUID#1014008)]
Join type: LeftOuter
Join condition: None
(681) Project
Output [10]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1014314, rawDemands#1012951, CASE WHEN isnotnull(timezonecode#1014020) THEN timezonecode#1014020 ELSE UTC END AS timezonecode#1014022]
Input [10]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, rawDemands#1012951, internalUUID#1014008, timezonecode#1014020]
(682) DeserializeToObject
Input [10]: [product#1014057, plant#1014058, orderDateTime#1014059, productPlant#1014070, outboundUnit#1014087, stockDatetime#1014312, stockBatchQuantities#1014313, stockBatchShelfLifeEndDatetimes#1014314, rawDemands#1012951, timezonecode#1014022]
Arguments: createexternalrow(invoke(product#1014057.toString()), invoke(plant#1014058.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1014059)), if (isnull(productPlant#1014070)) null else createexternalrow(invoke(productPlant#1014070.systemId.toString()), invoke(productPlant#1014070.internalUUID.toString()), if (isnull(productPlant#1014070.plant)) null else createexternalrow(invoke(productPlant#1014070.plant.internalRefUUID.toString()), invoke(productPlant#1014070.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1014070.product)) null else createexternalrow(invoke(productPlant#1014070.product.internalRefUUID.toString()), invoke(productPlant#1014070.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1014070.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1014070.productionAspect)) null else createexternalrow(if (isnull(productPlant#1014070.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1014070.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#1014070.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1014070.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1014070.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#1014070.salesPlant)) null else createexternalrow(if (isnull(productPlant#1014070.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1014070.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1014070.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#1014070.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1014070.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1014070.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1014070.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#1014087)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1014312)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1014313, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1014314, 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#1012951, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1014022.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#1014043: org.apache.spark.sql.Row
(683) MapElements
Input [1]: [obj#1014043]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@2aab4875, obj#1014048: org.apache.spark.sql.Row
(684) SerializeFromObject
Input [1]: [obj#1014048]
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#1014053, 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#1014054, 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#1014055, 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#1014056]
(685) Exchange
Input [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Arguments: hashpartitioning(coalesce(plant#1014054, ), isnull(plant#1014054), coalesce(product#1014053, ), isnull(product#1014053), 37), ENSURE_REQUIREMENTS, [plan_id=1639097]
(686) Sort
Input [4]: [product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Arguments: [coalesce(plant#1014054, ) ASC NULLS FIRST, isnull(plant#1014054) ASC NULLS FIRST, coalesce(product#1014053, ) ASC NULLS FIRST, isnull(product#1014053) ASC NULLS FIRST], false, 0
(687) SortMergeJoin
Left keys [4]: [coalesce(plant#1012490, ), isnull(plant#1012490), coalesce(product#1012489, ), isnull(product#1012489)]
Right keys [4]: [coalesce(plant#1014054, ), isnull(plant#1014054), coalesce(product#1014053, ), isnull(product#1014053)]
Join type: LeftOuter
Join condition: None
(688) Project
Output [7]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056]
Input [9]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, product#1014053, plant#1014054, dayBucketDemands#1014055, pointInTimeDemands#1014056]
(689) InMemoryTableScan
Output [3]: [product#1014349, plant#1014348, openGoodsMovements#1014449]
Arguments: [product#1014349, plant#1014348, openGoodsMovements#1014449], [isnotnull(product#1014349), isnotnull(plant#1014348)]
(690) InMemoryRelation
Arguments: [product#1014349, plant#1014348, openGoodsMovements#1014449], StorageLevel(disk, memory, 2 replicas)
(691) LocalTableScan
Output [3]: [product#1014349, plant#1014348, openGoodsMovements#1014449]
Arguments: <empty>, [product#1014349, plant#1014348, openGoodsMovements#1014449]
(692) Filter
Input [3]: [product#1014349, plant#1014348, openGoodsMovements#1014449]
Condition : (isnotnull(product#1014349) AND isnotnull(plant#1014348))
(693) ObjectHashAggregate
Input [3]: [product#1014349, plant#1014348, openGoodsMovements#1014449]
Keys [2]: [product#1014349, plant#1014348]
Functions [1]: [partial_collect_list(openGoodsMovements#1014449, 0, 0)]
Aggregate Attributes [1]: [buf#1019653]
Results [3]: [product#1014349, plant#1014348, buf#1019654]
(694) Exchange
Input [3]: [product#1014349, plant#1014348, buf#1019654]
Arguments: hashpartitioning(product#1014349, plant#1014348, 37), ENSURE_REQUIREMENTS, [plan_id=1639102]
(695) ObjectHashAggregate
Input [3]: [product#1014349, plant#1014348, buf#1019654]
Keys [2]: [product#1014349, plant#1014348]
Functions [1]: [collect_list(openGoodsMovements#1014449, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1014449, 0, 0)#1015116]
Results [3]: [product#1014349, plant#1014348, flatten(collect_list(openGoodsMovements#1014449, 0, 0)#1015116) AS openGoodsMovements#1015112]
(696) Project
Output [5]: [product#1014349, plant#1014348, openGoodsMovements#1015112.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#1018514, openGoodsMovements#1015112.availabilityDatetime AS _extract_availabilityDatetime#1018515, openGoodsMovements#1015112.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#1018516]
Input [3]: [product#1014349, plant#1014348, openGoodsMovements#1015112]
(697) BroadcastExchange
Input [5]: [product#1014349, plant#1014348, _extract_openQtyInBaseUnit#1018514, _extract_availabilityDatetime#1018515, _extract_shelfLifeEndDatetime#1018516]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1639106]
(698) BroadcastHashJoin
Left keys [2]: [product#1012489, plant#1012490]
Right keys [2]: [product#1014349, plant#1014348]
Join type: LeftOuter
Join condition: None
(699) Project
Output [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, coalesce(_extract_openQtyInBaseUnit#1018514, []) AS openGoodsMovementQuantities#1015702, coalesce(_extract_availabilityDatetime#1018515, []) AS openGoodsMovementAvailabilityDatetimes#1015703, coalesce(_extract_shelfLifeEndDatetime#1018516, []) AS openGoodsMovementShelfLifeEndDatetimes#1015704]
Input [12]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, product#1014349, plant#1014348, _extract_openQtyInBaseUnit#1018514, _extract_availabilityDatetime#1018515, _extract_shelfLifeEndDatetime#1018516]
(700) Exchange
Input [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704]
Arguments: hashpartitioning(product#1012489, plant#1012490, 37), ENSURE_REQUIREMENTS, [plan_id=1639393]
(701) Sort
Input [10]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704]
Arguments: [product#1012489 ASC NULLS FIRST, plant#1012490 ASC NULLS FIRST], false, 0
(702) Scan parquet
Output [3]: [product#1016192, plant#1016193, orderDateTime#1016194]
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/10000000349/shardId=0_1_10000000349]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(703) Exchange
Input [3]: [product#1016192, plant#1016193, orderDateTime#1016194]
Arguments: hashpartitioning(product#1016192, plant#1016193, 37), REPARTITION_BY_NUM, [plan_id=1638162]
(704) Scan parquet
Output [9]: [internalUUID#1016197, plant#1016198, product#1016199, blockedForReplenishmentStartingFrom#1016200, productionAspect#1016201, salesPlant#1016202, listing#1016203, sourceOfSupplyCategory#1016204, systemId#1016196]
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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(705) Project
Output [9]: [systemId#1016196, internalUUID#1016197, plant#1016198, product#1016199, blockedForReplenishmentStartingFrom#1016200, productionAspect#1016201, salesPlant#1016202, listing#1016203, sourceOfSupplyCategory#1016204]
Input [9]: [internalUUID#1016197, plant#1016198, product#1016199, blockedForReplenishmentStartingFrom#1016200, productionAspect#1016201, salesPlant#1016202, listing#1016203, sourceOfSupplyCategory#1016204, systemId#1016196]
(706) Exchange
Input [9]: [systemId#1016196, internalUUID#1016197, plant#1016198, product#1016199, blockedForReplenishmentStartingFrom#1016200, productionAspect#1016201, salesPlant#1016202, listing#1016203, sourceOfSupplyCategory#1016204]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638165]
(707) Project
Output [1]: [struct(systemId, systemId#1016196, internalUUID, internalUUID#1016197, plant, plant#1016198, product, product#1016199, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1016200, productionAspect, productionAspect#1016201, salesPlant, salesPlant#1016202, listing, listing#1016203, sourceOfSupplyCategory, sourceOfSupplyCategory#1016204) AS productPlant#1016205]
Input [9]: [systemId#1016196, internalUUID#1016197, plant#1016198, product#1016199, blockedForReplenishmentStartingFrom#1016200, productionAspect#1016201, salesPlant#1016202, listing#1016203, sourceOfSupplyCategory#1016204]
(708) BroadcastExchange
Input [1]: [productPlant#1016205]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1639109]
(709) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016192, ), isnull(product#1016192), coalesce(plant#1016193, ), isnull(plant#1016193)]
Right keys [4]: [coalesce(productPlant#1016205.product.internalRefUUID, ), isnull(productPlant#1016205.product.internalRefUUID), coalesce(productPlant#1016205.plant.internalRefUUID, ), isnull(productPlant#1016205.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(710) Scan parquet
Output [4]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213, systemId#1016206]
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>>>
(711) Filter
Input [4]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213, systemId#1016206]
Condition : isnotnull(internalUUID#1016207)
(712) Project
Output [3]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
Input [4]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213, systemId#1016206]
(713) Exchange
Input [3]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638171]
(714) BroadcastExchange
Input [3]: [internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639112]
(715) BroadcastHashJoin
Left keys [1]: [product#1016192]
Right keys [1]: [internalUUID#1016207]
Join type: LeftOuter
Join condition: None
(716) Project
Output [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, filter(unitOfMeasureConversions#1016213, lambdafunction((((lambda u#1012565.measurementUnit1.code = productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1012565.measurementUnit1.internalRefUUID = productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016211.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016211.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016218]
Input [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, internalUUID#1016207, baseUnitOfMeasure#1016211, unitOfMeasureConversions#1016213]
(717) Project
Output [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, filteredUnitOfMeasureConversions#1016218.quantityDenominator AS _extract_quantityDenominator#1018560, filteredUnitOfMeasureConversions#1016218.quantityNumerator AS _extract_quantityNumerator#1018561]
Input [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, filteredUnitOfMeasureConversions#1016218]
(718) Generate
Input [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, _extract_quantityDenominator#1018560, _extract_quantityNumerator#1018561]
Arguments: explode(_extract_quantityNumerator#1018561), [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, _extract_quantityDenominator#1018560], true, [quantityNumerator#1016219]
(719) Generate
Input [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, _extract_quantityDenominator#1018560, quantityNumerator#1016219]
Arguments: explode(_extract_quantityDenominator#1018560), [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, quantityNumerator#1016219], true, [quantityDenominator#1016220]
(720) Project
Output [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, (cast(quantityNumerator#1016219 as double) / cast(quantityDenominator#1016220 as double)) AS outboundUnit#1016221]
Input [6]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, quantityNumerator#1016219, quantityDenominator#1016220]
(721) Project
Output [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, CASE WHEN (isnull(outboundUnit#1016221) OR (outboundUnit#1016221 <= 0.0)) THEN 1.0 ELSE outboundUnit#1016221 END AS outboundUnit#1016222]
Input [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016221]
(722) Sort
Input [5]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222]
Arguments: [product#1016192 ASC NULLS FIRST, plant#1016193 ASC NULLS FIRST], false, 0
(723) Scan parquet
Output [6]: [internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228, systemId#1016223]
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>>>>>
(724) Filter
Input [6]: [internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228, systemId#1016223]
Condition : (isnotnull(plant#1016226.internalRefUUID) AND isnotnull(product#1016225.internalRefUUID))
(725) Project
Output [6]: [systemId#1016223, internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228]
Input [6]: [internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228, systemId#1016223]
(726) Exchange
Input [6]: [systemId#1016223, internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638182]
(727) BroadcastExchange
Input [6]: [systemId#1016223, internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228]
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=1639140]
(728) Scan parquet
Output [2]: [marketUnit#1016229, distributionCenters#1016235]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(729) Filter
Input [2]: [marketUnit#1016229, distributionCenters#1016235]
Condition : (((marketUnit#1016229 <=> STEPHI_MU) AND (size(distributionCenters#1016235, true) > 0)) AND isnotnull(distributionCenters#1016235))
(730) Project
Output [1]: [distributionCenters#1016235]
Input [2]: [marketUnit#1016229, distributionCenters#1016235]
(731) Exchange
Input [1]: [distributionCenters#1016235]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638186]
(732) Generate
Input [1]: [distributionCenters#1016235]
Arguments: explode(distributionCenters#1016235), false, [distributionCenters#1016250]
(733) Filter
Input [1]: [distributionCenters#1016250]
Condition : (((size(distributionCenters#1016250.storageLocations, true) > 0) AND isnotnull(distributionCenters#1016250.storageLocations)) AND isnotnull(distributionCenters#1016250.internalRefUUID))
(734) Project
Output [2]: [distributionCenters#1016250.internalRefUUID AS _extract_internalRefUUID#1018312, distributionCenters#1016250.storageLocations AS _extract_storageLocations#1018313]
Input [1]: [distributionCenters#1016250]
(735) Generate
Input [2]: [_extract_internalRefUUID#1018312, _extract_storageLocations#1018313]
Arguments: explode(_extract_storageLocations#1018313), [_extract_internalRefUUID#1018312], false, [storageLocations#1016251]
(736) Project
Output [3]: [_extract_internalRefUUID#1018312 AS plantUuid#1016253, storageLocations#1016251.id AS storageLocId#1016254, storageLocations#1016251.internalRefUUID AS storageLocUuid#1016255]
Input [2]: [_extract_internalRefUUID#1018312, storageLocations#1016251]
(737) BroadcastExchange
Input [3]: [plantUuid#1016253, storageLocId#1016254, storageLocUuid#1016255]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639136]
(738) Scan parquet
Output [2]: [product#1016256, plant#1016257]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(739) Filter
Input [2]: [product#1016256, plant#1016257]
Condition : isnotnull(plant#1016257)
(740) Exchange
Input [2]: [product#1016256, plant#1016257]
Arguments: hashpartitioning(product#1016256, plant#1016257, 37), REPARTITION_BY_NUM, [plan_id=1638667]
(741) Scan parquet
Output [4]: [plant#1016262, product#1016263, productionAspect#1016265, systemId#1016260]
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>>>>
(742) Project
Output [4]: [plant#1016262.internalRefUUID AS _extract_internalRefUUID#1018565, product#1016263.internalRefUUID AS _extract_internalRefUUID#1018562, productionAspect#1016265.productMovementPlants.unitOfIssue.code AS _extract_code#1018563, productionAspect#1016265.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018564]
Input [4]: [plant#1016262, product#1016263, productionAspect#1016265, systemId#1016260]
(743) Exchange
Input [4]: [_extract_internalRefUUID#1018565, _extract_internalRefUUID#1018562, _extract_code#1018563, _extract_internalRefUUID#1018564]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638198]
(744) Project
Output [4]: [_extract_code#1018563, _extract_internalRefUUID#1018564, _extract_internalRefUUID#1018562, _extract_internalRefUUID#1018565]
Input [4]: [_extract_internalRefUUID#1018565, _extract_internalRefUUID#1018562, _extract_code#1018563, _extract_internalRefUUID#1018564]
(745) BroadcastExchange
Input [4]: [_extract_code#1018563, _extract_internalRefUUID#1018564, _extract_internalRefUUID#1018562, _extract_internalRefUUID#1018565]
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=1639120]
(746) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016256, ), isnull(product#1016256), coalesce(plant#1016257, ), isnull(plant#1016257)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018562, ), isnull(_extract_internalRefUUID#1018562), coalesce(_extract_internalRefUUID#1018565, ), isnull(_extract_internalRefUUID#1018565)]
Join type: LeftOuter
Join condition: None
(747) Project
Output [4]: [product#1016256, plant#1016257, _extract_code#1018563, _extract_internalRefUUID#1018564]
Input [6]: [product#1016256, plant#1016257, _extract_code#1018563, _extract_internalRefUUID#1018564, _extract_internalRefUUID#1018562, _extract_internalRefUUID#1018565]
(748) Scan parquet
Output [4]: [internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277, systemId#1016270]
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>>>
(749) Filter
Input [4]: [internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277, systemId#1016270]
Condition : isnotnull(internalUUID#1016271)
(750) Project
Output [3]: [internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277]
Input [4]: [internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277, systemId#1016270]
(751) Exchange
Input [3]: [internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638205]
(752) BroadcastExchange
Input [3]: [internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639124]
(753) BroadcastHashJoin
Left keys [1]: [product#1016256]
Right keys [1]: [internalUUID#1016271]
Join type: LeftOuter
Join condition: None
(754) Project
Output [2]: [plant#1016257, filter(unitOfMeasureConversions#1016277, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018563) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018564)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016275.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016275.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016282]
Input [7]: [product#1016256, plant#1016257, _extract_code#1018563, _extract_internalRefUUID#1018564, internalUUID#1016271, baseUnitOfMeasure#1016275, unitOfMeasureConversions#1016277]
(755) Generate
Input [2]: [plant#1016257, filteredUnitOfMeasureConversions#1016282]
Arguments: explode(filteredUnitOfMeasureConversions#1016282.quantityNumerator), [plant#1016257, filteredUnitOfMeasureConversions#1016282], true, [quantityNumerator#1016283]
(756) Project
Output [2]: [plant#1016257, filteredUnitOfMeasureConversions#1016282.quantityDenominator AS _extract_quantityDenominator#1018314]
Input [3]: [plant#1016257, filteredUnitOfMeasureConversions#1016282, quantityNumerator#1016283]
(757) Generate
Input [2]: [plant#1016257, _extract_quantityDenominator#1018314]
Arguments: explode(_extract_quantityDenominator#1018314), [plant#1016257], true, [quantityDenominator#1016284]
(758) Project
Output [1]: [plant#1016257]
Input [2]: [plant#1016257, quantityDenominator#1016284]
(759) HashAggregate
Input [1]: [plant#1016257]
Keys [1]: [plant#1016257]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016257]
(760) Exchange
Input [1]: [plant#1016257]
Arguments: hashpartitioning(plant#1016257, 37), ENSURE_REQUIREMENTS, [plan_id=1639133]
(761) HashAggregate
Input [1]: [plant#1016257]
Keys [1]: [plant#1016257]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016257]
(762) BroadcastHashJoin
Left keys [1]: [plantUuid#1016253]
Right keys [1]: [plant#1016257]
Join type: Inner
Join condition: None
(763) Project
Output [3]: [plantUuid#1016253, storageLocId#1016254, storageLocUuid#1016255]
Input [4]: [plantUuid#1016253, storageLocId#1016254, storageLocUuid#1016255, plant#1016257]
(764) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1016226.internalRefUUID, ), isnull(plant#1016226.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1016253, ), isnull(plantUuid#1016253)]
Join type: Inner
Join condition: None
(765) Generate
Input [9]: [systemId#1016223, internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, stockQuantities#1016228, plantUuid#1016253, storageLocId#1016254, storageLocUuid#1016255]
Arguments: explode(filter(stockQuantities#1016228, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1016255) AND (lambda x#1012695.storageLocation.Id = storageLocId#1016254)), lambda x#1012695, false))), [systemId#1016223, internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, plantUuid#1016253], false, [stockQuantity#1016287]
(766) ObjectHashAggregate
Input [7]: [systemId#1016223, internalUUID#1016224, product#1016225, plant#1016226, calculationDateTime#1016227, plantUuid#1016253, stockQuantity#1016287]
Keys [5]: [plantUuid#1016253, internalUUID#1016224, plant#1016226, product#1016225, systemId#1016223]
Functions [2]: [partial_first(calculationDateTime#1016227, false), partial_collect_list(stockQuantity#1016287, 0, 0)]
Aggregate Attributes [3]: [first#1019659, valueSet#1019660, buf#1019661]
Results [8]: [plantUuid#1016253, internalUUID#1016224, plant#1016226, product#1016225, systemId#1016223, first#1019662, valueSet#1019663, buf#1019664]
(767) ObjectHashAggregate
Input [8]: [plantUuid#1016253, internalUUID#1016224, plant#1016226, product#1016225, systemId#1016223, first#1019662, valueSet#1019663, buf#1019664]
Keys [5]: [plantUuid#1016253, internalUUID#1016224, plant#1016226, product#1016225, systemId#1016223]
Functions [2]: [first(calculationDateTime#1016227, false), collect_list(stockQuantity#1016287, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1016227)()#1012710, collect_list(stockQuantity#1016287, 0, 0)#1012711]
Results [4]: [product#1016225, plant#1016226, first(calculationDateTime#1016227)()#1012710 AS calculationDateTime#1016288, collect_list(stockQuantity#1016287, 0, 0)#1012711 AS stockQuantities#1016289]
(768) Filter
Input [4]: [product#1016225, plant#1016226, calculationDateTime#1016288, stockQuantities#1016289]
Condition : ((size(stockQuantities#1016289, true) > 0) AND isnotnull(calculationDateTime#1016288))
(769) Generate
Input [4]: [product#1016225, plant#1016226, calculationDateTime#1016288, stockQuantities#1016289]
Arguments: explode(stockQuantities#1016289), [product#1016225, plant#1016226, calculationDateTime#1016288], false, [stockQuantity#1016290]
(770) Filter
Input [4]: [product#1016225, plant#1016226, calculationDateTime#1016288, stockQuantity#1016290]
Condition : (((isnotnull(stockQuantity#1016290.specialStockIndicator.code) AND isnotnull(stockQuantity#1016290.stockType.code)) AND (stockQuantity#1016290.specialStockIndicator.code = )) AND (stockQuantity#1016290.stockType.code = 01))
(771) Project
Output [5]: [plant#1016226.internalRefUUID AS plantUuid#1016292, product#1016225.internalRefUUID AS productUuid#1016294, calculationDateTime#1016288, stockQuantity#1016290.storagelocation.id AS storageLocId#1016295, stockQuantity#1016290.quantity.measure AS quantity#1016297]
Input [4]: [product#1016225, plant#1016226, calculationDateTime#1016288, stockQuantity#1016290]
(772) Exchange
Input [5]: [plantUuid#1016292, productUuid#1016294, calculationDateTime#1016288, storageLocId#1016295, quantity#1016297]
Arguments: hashpartitioning(productUuid#1016294, plantUuid#1016292, 37), ENSURE_REQUIREMENTS, [plan_id=1639162]
(773) Sort
Input [5]: [plantUuid#1016292, productUuid#1016294, calculationDateTime#1016288, storageLocId#1016295, quantity#1016297]
Arguments: [productUuid#1016294 ASC NULLS FIRST, plantUuid#1016292 ASC NULLS FIRST], false, 0
(774) Scan parquet
Output [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(775) Filter
Input [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
Condition : ((isnotnull(orderDateTime#1016302) AND isnotnull(plant#1016301)) AND isnotnull(product#1016300))
(776) Exchange
Input [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
Arguments: hashpartitioning(product#1016300, plant#1016301, 37), REPARTITION_BY_NUM, [plan_id=1638688]
(777) Scan parquet
Output [4]: [plant#1016306, product#1016307, productionAspect#1016309, systemId#1016304]
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>>>>
(778) Project
Output [4]: [plant#1016306.internalRefUUID AS _extract_internalRefUUID#1018568, product#1016307.internalRefUUID AS _extract_internalRefUUID#1018569, productionAspect#1016309.productMovementPlants.unitOfIssue.code AS _extract_code#1018566, productionAspect#1016309.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018567]
Input [4]: [plant#1016306, product#1016307, productionAspect#1016309, systemId#1016304]
(779) Exchange
Input [4]: [_extract_internalRefUUID#1018568, _extract_internalRefUUID#1018569, _extract_code#1018566, _extract_internalRefUUID#1018567]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638230]
(780) Project
Output [4]: [_extract_code#1018566, _extract_internalRefUUID#1018567, _extract_internalRefUUID#1018569, _extract_internalRefUUID#1018568]
Input [4]: [_extract_internalRefUUID#1018568, _extract_internalRefUUID#1018569, _extract_code#1018566, _extract_internalRefUUID#1018567]
(781) BroadcastExchange
Input [4]: [_extract_code#1018566, _extract_internalRefUUID#1018567, _extract_internalRefUUID#1018569, _extract_internalRefUUID#1018568]
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=1639149]
(782) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016300, ), isnull(product#1016300), coalesce(plant#1016301, ), isnull(plant#1016301)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018569, ), isnull(_extract_internalRefUUID#1018569), coalesce(_extract_internalRefUUID#1018568, ), isnull(_extract_internalRefUUID#1018568)]
Join type: LeftOuter
Join condition: None
(783) Project
Output [5]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_code#1018566, _extract_internalRefUUID#1018567]
Input [7]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_code#1018566, _extract_internalRefUUID#1018567, _extract_internalRefUUID#1018569, _extract_internalRefUUID#1018568]
(784) Scan parquet
Output [4]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321, systemId#1016314]
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>>>
(785) Filter
Input [4]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321, systemId#1016314]
Condition : isnotnull(internalUUID#1016315)
(786) Project
Output [3]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
Input [4]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321, systemId#1016314]
(787) Exchange
Input [3]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638237]
(788) BroadcastExchange
Input [3]: [internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639153]
(789) BroadcastHashJoin
Left keys [1]: [product#1016300]
Right keys [1]: [internalUUID#1016315]
Join type: LeftOuter
Join condition: None
(790) Project
Output [4]: [product#1016300, plant#1016301, orderDateTime#1016302, filter(unitOfMeasureConversions#1016321, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018566) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018567)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016319.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016319.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016326]
Input [8]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_code#1018566, _extract_internalRefUUID#1018567, internalUUID#1016315, baseUnitOfMeasure#1016319, unitOfMeasureConversions#1016321]
(791) Generate
Input [4]: [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326]
Arguments: explode(filteredUnitOfMeasureConversions#1016326.quantityNumerator), [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326], true, [quantityNumerator#1016327]
(792) Project
Output [4]: [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326.quantityDenominator AS _extract_quantityDenominator#1018321]
Input [5]: [product#1016300, plant#1016301, orderDateTime#1016302, filteredUnitOfMeasureConversions#1016326, quantityNumerator#1016327]
(793) Generate
Input [4]: [product#1016300, plant#1016301, orderDateTime#1016302, _extract_quantityDenominator#1018321]
Arguments: explode(_extract_quantityDenominator#1018321), [product#1016300, plant#1016301, orderDateTime#1016302], true, [quantityDenominator#1016328]
(794) Project
Output [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
Input [4]: [product#1016300, plant#1016301, orderDateTime#1016302, quantityDenominator#1016328]
(795) Sort
Input [3]: [product#1016300, plant#1016301, orderDateTime#1016302]
Arguments: [product#1016300 ASC NULLS FIRST, plant#1016301 ASC NULLS FIRST], false, 0
(796) SortMergeJoin
Left keys [2]: [productUuid#1016294, plantUuid#1016292]
Right keys [2]: [product#1016300, plant#1016301]
Join type: Inner
Join condition: (calculationDateTime#1016288 <= orderDateTime#1016302)
(797) Project
Output [5]: [plantUuid#1016292 AS plant#1016331, productUuid#1016294 AS product#1016332, storageLocId#1016295, calculationDateTime#1016288, quantity#1016297]
Input [8]: [plantUuid#1016292, productUuid#1016294, calculationDateTime#1016288, storageLocId#1016295, quantity#1016297, product#1016300, plant#1016301, orderDateTime#1016302]
(798) Exchange
Input [5]: [plant#1016331, product#1016332, storageLocId#1016295, calculationDateTime#1016288, quantity#1016297]
Arguments: hashpartitioning(coalesce(plant#1016331, ), isnull(plant#1016331), coalesce(product#1016332, ), isnull(product#1016332), coalesce(storageLocId#1016295, ), isnull(storageLocId#1016295), coalesce(calculationDateTime#1016288, 1970-01-01 00:00:00), isnull(calculationDateTime#1016288), 37), ENSURE_REQUIREMENTS, [plan_id=1639218]
(799) Sort
Input [5]: [plant#1016331, product#1016332, storageLocId#1016295, calculationDateTime#1016288, quantity#1016297]
Arguments: [coalesce(plant#1016331, ) ASC NULLS FIRST, isnull(plant#1016331) ASC NULLS FIRST, coalesce(product#1016332, ) ASC NULLS FIRST, isnull(product#1016332) ASC NULLS FIRST, coalesce(storageLocId#1016295, ) ASC NULLS FIRST, isnull(storageLocId#1016295) ASC NULLS FIRST, coalesce(calculationDateTime#1016288, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1016288) ASC NULLS FIRST], false, 0
(800) Scan parquet
Output [6]: [internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338, systemId#1016333]
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>>>>>
(801) Filter
Input [6]: [internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338, systemId#1016333]
Condition : (isnotnull(plant#1016336.internalRefUUID) AND isnotnull(product#1016335.internalRefUUID))
(802) Project
Output [6]: [systemId#1016333, internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338]
Input [6]: [internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338, systemId#1016333]
(803) Exchange
Input [6]: [systemId#1016333, internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638249]
(804) BroadcastExchange
Input [6]: [systemId#1016333, internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338]
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=1639187]
(805) Scan parquet
Output [2]: [marketUnit#1016339, distributionCenters#1016345]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(806) Filter
Input [2]: [marketUnit#1016339, distributionCenters#1016345]
Condition : (((marketUnit#1016339 <=> STEPHI_MU) AND (size(distributionCenters#1016345, true) > 0)) AND isnotnull(distributionCenters#1016345))
(807) Project
Output [1]: [distributionCenters#1016345]
Input [2]: [marketUnit#1016339, distributionCenters#1016345]
(808) Exchange
Input [1]: [distributionCenters#1016345]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638253]
(809) Generate
Input [1]: [distributionCenters#1016345]
Arguments: explode(distributionCenters#1016345), false, [distributionCenters#1016360]
(810) Filter
Input [1]: [distributionCenters#1016360]
Condition : (((size(distributionCenters#1016360.storageLocations, true) > 0) AND isnotnull(distributionCenters#1016360.storageLocations)) AND isnotnull(distributionCenters#1016360.internalRefUUID))
(811) Project
Output [2]: [distributionCenters#1016360.internalRefUUID AS _extract_internalRefUUID#1018328, distributionCenters#1016360.storageLocations AS _extract_storageLocations#1018329]
Input [1]: [distributionCenters#1016360]
(812) Generate
Input [2]: [_extract_internalRefUUID#1018328, _extract_storageLocations#1018329]
Arguments: explode(_extract_storageLocations#1018329), [_extract_internalRefUUID#1018328], false, [storageLocations#1016361]
(813) Project
Output [3]: [_extract_internalRefUUID#1018328 AS plantUuid#1016363, storageLocations#1016361.id AS storageLocId#1016364, storageLocations#1016361.internalRefUUID AS storageLocUuid#1016365]
Input [2]: [_extract_internalRefUUID#1018328, storageLocations#1016361]
(814) BroadcastExchange
Input [3]: [plantUuid#1016363, storageLocId#1016364, storageLocUuid#1016365]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639183]
(815) Scan parquet
Output [2]: [product#1016366, plant#1016367]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(816) Filter
Input [2]: [product#1016366, plant#1016367]
Condition : isnotnull(plant#1016367)
(817) Exchange
Input [2]: [product#1016366, plant#1016367]
Arguments: hashpartitioning(product#1016366, plant#1016367, 37), REPARTITION_BY_NUM, [plan_id=1638699]
(818) Scan parquet
Output [4]: [plant#1016372, product#1016373, productionAspect#1016375, systemId#1016370]
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>>>>
(819) Project
Output [4]: [plant#1016372.internalRefUUID AS _extract_internalRefUUID#1018570, product#1016373.internalRefUUID AS _extract_internalRefUUID#1018571, productionAspect#1016375.productMovementPlants.unitOfIssue.code AS _extract_code#1018572, productionAspect#1016375.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018573]
Input [4]: [plant#1016372, product#1016373, productionAspect#1016375, systemId#1016370]
(820) Exchange
Input [4]: [_extract_internalRefUUID#1018570, _extract_internalRefUUID#1018571, _extract_code#1018572, _extract_internalRefUUID#1018573]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638265]
(821) Project
Output [4]: [_extract_code#1018572, _extract_internalRefUUID#1018573, _extract_internalRefUUID#1018571, _extract_internalRefUUID#1018570]
Input [4]: [_extract_internalRefUUID#1018570, _extract_internalRefUUID#1018571, _extract_code#1018572, _extract_internalRefUUID#1018573]
(822) BroadcastExchange
Input [4]: [_extract_code#1018572, _extract_internalRefUUID#1018573, _extract_internalRefUUID#1018571, _extract_internalRefUUID#1018570]
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=1639167]
(823) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016366, ), isnull(product#1016366), coalesce(plant#1016367, ), isnull(plant#1016367)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018571, ), isnull(_extract_internalRefUUID#1018571), coalesce(_extract_internalRefUUID#1018570, ), isnull(_extract_internalRefUUID#1018570)]
Join type: LeftOuter
Join condition: None
(824) Project
Output [4]: [product#1016366, plant#1016367, _extract_code#1018572, _extract_internalRefUUID#1018573]
Input [6]: [product#1016366, plant#1016367, _extract_code#1018572, _extract_internalRefUUID#1018573, _extract_internalRefUUID#1018571, _extract_internalRefUUID#1018570]
(825) Scan parquet
Output [4]: [internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387, systemId#1016380]
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>>>
(826) Filter
Input [4]: [internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387, systemId#1016380]
Condition : isnotnull(internalUUID#1016381)
(827) Project
Output [3]: [internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387]
Input [4]: [internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387, systemId#1016380]
(828) Exchange
Input [3]: [internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638272]
(829) BroadcastExchange
Input [3]: [internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639171]
(830) BroadcastHashJoin
Left keys [1]: [product#1016366]
Right keys [1]: [internalUUID#1016381]
Join type: LeftOuter
Join condition: None
(831) Project
Output [2]: [plant#1016367, filter(unitOfMeasureConversions#1016387, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018572) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018573)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016385.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016385.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016392]
Input [7]: [product#1016366, plant#1016367, _extract_code#1018572, _extract_internalRefUUID#1018573, internalUUID#1016381, baseUnitOfMeasure#1016385, unitOfMeasureConversions#1016387]
(832) Generate
Input [2]: [plant#1016367, filteredUnitOfMeasureConversions#1016392]
Arguments: explode(filteredUnitOfMeasureConversions#1016392.quantityNumerator), [plant#1016367, filteredUnitOfMeasureConversions#1016392], true, [quantityNumerator#1016393]
(833) Project
Output [2]: [plant#1016367, filteredUnitOfMeasureConversions#1016392.quantityDenominator AS _extract_quantityDenominator#1018330]
Input [3]: [plant#1016367, filteredUnitOfMeasureConversions#1016392, quantityNumerator#1016393]
(834) Generate
Input [2]: [plant#1016367, _extract_quantityDenominator#1018330]
Arguments: explode(_extract_quantityDenominator#1018330), [plant#1016367], true, [quantityDenominator#1016394]
(835) Project
Output [1]: [plant#1016367]
Input [2]: [plant#1016367, quantityDenominator#1016394]
(836) HashAggregate
Input [1]: [plant#1016367]
Keys [1]: [plant#1016367]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016367]
(837) Exchange
Input [1]: [plant#1016367]
Arguments: hashpartitioning(plant#1016367, 37), ENSURE_REQUIREMENTS, [plan_id=1639180]
(838) HashAggregate
Input [1]: [plant#1016367]
Keys [1]: [plant#1016367]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016367]
(839) BroadcastHashJoin
Left keys [1]: [plantUuid#1016363]
Right keys [1]: [plant#1016367]
Join type: Inner
Join condition: None
(840) Project
Output [3]: [plantUuid#1016363, storageLocId#1016364, storageLocUuid#1016365]
Input [4]: [plantUuid#1016363, storageLocId#1016364, storageLocUuid#1016365, plant#1016367]
(841) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1016336.internalRefUUID, ), isnull(plant#1016336.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1016363, ), isnull(plantUuid#1016363)]
Join type: Inner
Join condition: None
(842) Generate
Input [9]: [systemId#1016333, internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, stockQuantities#1016338, plantUuid#1016363, storageLocId#1016364, storageLocUuid#1016365]
Arguments: explode(filter(stockQuantities#1016338, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1016365) AND (lambda x#1012695.storageLocation.Id = storageLocId#1016364)), lambda x#1012695, false))), [systemId#1016333, internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, plantUuid#1016363], false, [stockQuantity#1016397]
(843) ObjectHashAggregate
Input [7]: [systemId#1016333, internalUUID#1016334, product#1016335, plant#1016336, calculationDateTime#1016337, plantUuid#1016363, stockQuantity#1016397]
Keys [5]: [plantUuid#1016363, internalUUID#1016334, plant#1016336, product#1016335, systemId#1016333]
Functions [2]: [partial_first(calculationDateTime#1016337, false), partial_collect_list(stockQuantity#1016397, 0, 0)]
Aggregate Attributes [3]: [first#1019667, valueSet#1019668, buf#1019669]
Results [8]: [plantUuid#1016363, internalUUID#1016334, plant#1016336, product#1016335, systemId#1016333, first#1019670, valueSet#1019671, buf#1019672]
(844) ObjectHashAggregate
Input [8]: [plantUuid#1016363, internalUUID#1016334, plant#1016336, product#1016335, systemId#1016333, first#1019670, valueSet#1019671, buf#1019672]
Keys [5]: [plantUuid#1016363, internalUUID#1016334, plant#1016336, product#1016335, systemId#1016333]
Functions [2]: [first(calculationDateTime#1016337, false), collect_list(stockQuantity#1016397, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1016337)()#1012710, collect_list(stockQuantity#1016397, 0, 0)#1012711]
Results [4]: [product#1016335, plant#1016336, first(calculationDateTime#1016337)()#1012710 AS calculationDateTime#1016398, collect_list(stockQuantity#1016397, 0, 0)#1012711 AS stockQuantities#1016399]
(845) Filter
Input [4]: [product#1016335, plant#1016336, calculationDateTime#1016398, stockQuantities#1016399]
Condition : ((size(stockQuantities#1016399, true) > 0) AND isnotnull(calculationDateTime#1016398))
(846) Generate
Input [4]: [product#1016335, plant#1016336, calculationDateTime#1016398, stockQuantities#1016399]
Arguments: explode(stockQuantities#1016399), [product#1016335, plant#1016336, calculationDateTime#1016398], false, [stockQuantity#1016400]
(847) Filter
Input [4]: [product#1016335, plant#1016336, calculationDateTime#1016398, stockQuantity#1016400]
Condition : (((isnotnull(stockQuantity#1016400.specialStockIndicator.code) AND isnotnull(stockQuantity#1016400.stockType.code)) AND (stockQuantity#1016400.specialStockIndicator.code = )) AND (stockQuantity#1016400.stockType.code = 01))
(848) Project
Output [4]: [plant#1016336.internalRefUUID AS plantUuid#1016402, product#1016335.internalRefUUID AS productUuid#1016404, calculationDateTime#1016398, stockQuantity#1016400.storagelocation.id AS storageLocId#1016405]
Input [4]: [product#1016335, plant#1016336, calculationDateTime#1016398, stockQuantity#1016400]
(849) Exchange
Input [4]: [plantUuid#1016402, productUuid#1016404, calculationDateTime#1016398, storageLocId#1016405]
Arguments: hashpartitioning(productUuid#1016404, plantUuid#1016402, 37), ENSURE_REQUIREMENTS, [plan_id=1639209]
(850) Sort
Input [4]: [plantUuid#1016402, productUuid#1016404, calculationDateTime#1016398, storageLocId#1016405]
Arguments: [productUuid#1016404 ASC NULLS FIRST, plantUuid#1016402 ASC NULLS FIRST], false, 0
(851) Scan parquet
Output [3]: [product#1016410, plant#1016411, orderDateTime#1016412]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(852) Filter
Input [3]: [product#1016410, plant#1016411, orderDateTime#1016412]
Condition : ((isnotnull(orderDateTime#1016412) AND isnotnull(plant#1016411)) AND isnotnull(product#1016410))
(853) Exchange
Input [3]: [product#1016410, plant#1016411, orderDateTime#1016412]
Arguments: hashpartitioning(product#1016410, plant#1016411, 37), REPARTITION_BY_NUM, [plan_id=1638720]
(854) Scan parquet
Output [4]: [plant#1016416, product#1016417, productionAspect#1016419, systemId#1016414]
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>>>>
(855) Project
Output [4]: [plant#1016416.internalRefUUID AS _extract_internalRefUUID#1018574, product#1016417.internalRefUUID AS _extract_internalRefUUID#1018575, productionAspect#1016419.productMovementPlants.unitOfIssue.code AS _extract_code#1018576, productionAspect#1016419.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018577]
Input [4]: [plant#1016416, product#1016417, productionAspect#1016419, systemId#1016414]
(856) Exchange
Input [4]: [_extract_internalRefUUID#1018574, _extract_internalRefUUID#1018575, _extract_code#1018576, _extract_internalRefUUID#1018577]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638297]
(857) Project
Output [4]: [_extract_code#1018576, _extract_internalRefUUID#1018577, _extract_internalRefUUID#1018575, _extract_internalRefUUID#1018574]
Input [4]: [_extract_internalRefUUID#1018574, _extract_internalRefUUID#1018575, _extract_code#1018576, _extract_internalRefUUID#1018577]
(858) BroadcastExchange
Input [4]: [_extract_code#1018576, _extract_internalRefUUID#1018577, _extract_internalRefUUID#1018575, _extract_internalRefUUID#1018574]
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=1639196]
(859) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016410, ), isnull(product#1016410), coalesce(plant#1016411, ), isnull(plant#1016411)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018575, ), isnull(_extract_internalRefUUID#1018575), coalesce(_extract_internalRefUUID#1018574, ), isnull(_extract_internalRefUUID#1018574)]
Join type: LeftOuter
Join condition: None
(860) Project
Output [5]: [product#1016410, plant#1016411, orderDateTime#1016412, _extract_code#1018576, _extract_internalRefUUID#1018577]
Input [7]: [product#1016410, plant#1016411, orderDateTime#1016412, _extract_code#1018576, _extract_internalRefUUID#1018577, _extract_internalRefUUID#1018575, _extract_internalRefUUID#1018574]
(861) Scan parquet
Output [4]: [internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431, systemId#1016424]
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>>>
(862) Filter
Input [4]: [internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431, systemId#1016424]
Condition : isnotnull(internalUUID#1016425)
(863) Project
Output [3]: [internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431]
Input [4]: [internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431, systemId#1016424]
(864) Exchange
Input [3]: [internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638304]
(865) BroadcastExchange
Input [3]: [internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639200]
(866) BroadcastHashJoin
Left keys [1]: [product#1016410]
Right keys [1]: [internalUUID#1016425]
Join type: LeftOuter
Join condition: None
(867) Project
Output [4]: [product#1016410, plant#1016411, orderDateTime#1016412, filter(unitOfMeasureConversions#1016431, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018576) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018577)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016429.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016429.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016436]
Input [8]: [product#1016410, plant#1016411, orderDateTime#1016412, _extract_code#1018576, _extract_internalRefUUID#1018577, internalUUID#1016425, baseUnitOfMeasure#1016429, unitOfMeasureConversions#1016431]
(868) Generate
Input [4]: [product#1016410, plant#1016411, orderDateTime#1016412, filteredUnitOfMeasureConversions#1016436]
Arguments: explode(filteredUnitOfMeasureConversions#1016436.quantityNumerator), [product#1016410, plant#1016411, orderDateTime#1016412, filteredUnitOfMeasureConversions#1016436], true, [quantityNumerator#1016437]
(869) Project
Output [4]: [product#1016410, plant#1016411, orderDateTime#1016412, filteredUnitOfMeasureConversions#1016436.quantityDenominator AS _extract_quantityDenominator#1018337]
Input [5]: [product#1016410, plant#1016411, orderDateTime#1016412, filteredUnitOfMeasureConversions#1016436, quantityNumerator#1016437]
(870) Generate
Input [4]: [product#1016410, plant#1016411, orderDateTime#1016412, _extract_quantityDenominator#1018337]
Arguments: explode(_extract_quantityDenominator#1018337), [product#1016410, plant#1016411, orderDateTime#1016412], true, [quantityDenominator#1016438]
(871) Project
Output [3]: [product#1016410, plant#1016411, orderDateTime#1016412]
Input [4]: [product#1016410, plant#1016411, orderDateTime#1016412, quantityDenominator#1016438]
(872) Sort
Input [3]: [product#1016410, plant#1016411, orderDateTime#1016412]
Arguments: [product#1016410 ASC NULLS FIRST, plant#1016411 ASC NULLS FIRST], false, 0
(873) SortMergeJoin
Left keys [2]: [productUuid#1016404, plantUuid#1016402]
Right keys [2]: [product#1016410, plant#1016411]
Join type: Inner
Join condition: (calculationDateTime#1016398 <= orderDateTime#1016412)
(874) Project
Output [4]: [plantUuid#1016402 AS plant#1016441, productUuid#1016404 AS product#1016442, storageLocId#1016405, calculationDateTime#1016398]
Input [7]: [plantUuid#1016402, productUuid#1016404, calculationDateTime#1016398, storageLocId#1016405, product#1016410, plant#1016411, orderDateTime#1016412]
(875) HashAggregate
Input [4]: [plant#1016441, product#1016442, storageLocId#1016405, calculationDateTime#1016398]
Keys [3]: [plant#1016441, product#1016442, storageLocId#1016405]
Functions [1]: [partial_max(calculationDateTime#1016398)]
Aggregate Attributes [1]: [max#1019665]
Results [4]: [plant#1016441, product#1016442, storageLocId#1016405, max#1019666]
(876) HashAggregate
Input [4]: [plant#1016441, product#1016442, storageLocId#1016405, max#1019666]
Keys [3]: [plant#1016441, product#1016442, storageLocId#1016405]
Functions [1]: [max(calculationDateTime#1016398)]
Aggregate Attributes [1]: [max(calculationDateTime#1016398)#1012774]
Results [4]: [plant#1016441, product#1016442, storageLocId#1016405, max(calculationDateTime#1016398)#1012774 AS max_calc_datetime#1016443]
(877) Exchange
Input [4]: [plant#1016441, product#1016442, storageLocId#1016405, max_calc_datetime#1016443]
Arguments: hashpartitioning(coalesce(plant#1016441, ), isnull(plant#1016441), coalesce(product#1016442, ), isnull(product#1016442), coalesce(storageLocId#1016405, ), isnull(storageLocId#1016405), coalesce(max_calc_datetime#1016443, 1970-01-01 00:00:00), isnull(max_calc_datetime#1016443), 37), ENSURE_REQUIREMENTS, [plan_id=1639219]
(878) Sort
Input [4]: [plant#1016441, product#1016442, storageLocId#1016405, max_calc_datetime#1016443]
Arguments: [coalesce(plant#1016441, ) ASC NULLS FIRST, isnull(plant#1016441) ASC NULLS FIRST, coalesce(product#1016442, ) ASC NULLS FIRST, isnull(product#1016442) ASC NULLS FIRST, coalesce(storageLocId#1016405, ) ASC NULLS FIRST, isnull(storageLocId#1016405) ASC NULLS FIRST, coalesce(max_calc_datetime#1016443, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1016443) ASC NULLS FIRST], false, 0
(879) SortMergeJoin
Left keys [8]: [coalesce(plant#1016331, ), isnull(plant#1016331), coalesce(product#1016332, ), isnull(product#1016332), coalesce(storageLocId#1016295, ), isnull(storageLocId#1016295), coalesce(calculationDateTime#1016288, 1970-01-01 00:00:00), isnull(calculationDateTime#1016288)]
Right keys [8]: [coalesce(plant#1016441, ), isnull(plant#1016441), coalesce(product#1016442, ), isnull(product#1016442), coalesce(storageLocId#1016405, ), isnull(storageLocId#1016405), coalesce(max_calc_datetime#1016443, 1970-01-01 00:00:00), isnull(max_calc_datetime#1016443)]
Join type: Inner
Join condition: None
(880) Project
Output [4]: [plant#1016331, product#1016332, calculationDateTime#1016288, quantity#1016297]
Input [9]: [plant#1016331, product#1016332, storageLocId#1016295, calculationDateTime#1016288, quantity#1016297, plant#1016441, product#1016442, storageLocId#1016405, max_calc_datetime#1016443]
(881) HashAggregate
Input [4]: [plant#1016331, product#1016332, calculationDateTime#1016288, quantity#1016297]
Keys [2]: [product#1016332, plant#1016331]
Functions [2]: [partial_min(calculationDateTime#1016288), partial_sum(quantity#1016297)]
Aggregate Attributes [2]: [min#1019655, sum#1019656]
Results [4]: [product#1016332, plant#1016331, min#1019657, sum#1019658]
(882) Exchange
Input [4]: [product#1016332, plant#1016331, min#1019657, sum#1019658]
Arguments: hashpartitioning(product#1016332, plant#1016331, 37), ENSURE_REQUIREMENTS, [plan_id=1639226]
(883) HashAggregate
Input [4]: [product#1016332, plant#1016331, min#1019657, sum#1019658]
Keys [2]: [product#1016332, plant#1016331]
Functions [2]: [min(calculationDateTime#1016288), sum(quantity#1016297)]
Aggregate Attributes [2]: [min(calculationDateTime#1016288)#1012901, sum(quantity#1016297)#1012900]
Results [4]: [product#1016332, plant#1016331, min(calculationDateTime#1016288)#1012901 AS minCalculationDateTime#1016445, round(sum(quantity#1016297)#1012900, 0) AS roundedQuantitySum#1016446]
(884) Sort
Input [4]: [product#1016332, plant#1016331, minCalculationDateTime#1016445, roundedQuantitySum#1016446]
Arguments: [product#1016332 ASC NULLS FIRST, plant#1016331 ASC NULLS FIRST], false, 0
(885) SortMergeJoin
Left keys [2]: [product#1016192, plant#1016193]
Right keys [2]: [product#1016332, plant#1016331]
Join type: LeftOuter
Join condition: None
(886) Project
Output [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, CASE WHEN isnotnull(minCalculationDateTime#1016445) THEN minCalculationDateTime#1016445 ELSE orderDateTime#1016194 END AS stockDatetime#1016447, CASE WHEN isnotnull(roundedQuantitySum#1016446) THEN array(roundedQuantitySum#1016446) ELSE [0.0] END AS stockBatchQuantities#1016448]
Input [9]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, product#1016332, plant#1016331, minCalculationDateTime#1016445, roundedQuantitySum#1016446]
(887) Exchange
Input [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448]
Arguments: hashpartitioning(coalesce(plant#1016193, ), isnull(plant#1016193), coalesce(product#1016192, ), isnull(product#1016192), 37), ENSURE_REQUIREMENTS, [plan_id=1639374]
(888) Sort
Input [7]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448]
Arguments: [coalesce(plant#1016193, ) ASC NULLS FIRST, isnull(plant#1016193) ASC NULLS FIRST, coalesce(product#1016192, ) ASC NULLS FIRST, isnull(product#1016192) ASC NULLS FIRST], false, 0
(889) Scan parquet
Output [3]: [product#1016450, plant#1016451, orderDateTime#1016452]
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/10000000349/shardId=0_1_10000000349]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(890) Exchange
Input [3]: [product#1016450, plant#1016451, orderDateTime#1016452]
Arguments: hashpartitioning(product#1016450, plant#1016451, 37), REPARTITION_BY_NUM, [plan_id=1638322]
(891) Scan parquet
Output [9]: [internalUUID#1016455, plant#1016456, product#1016457, blockedForReplenishmentStartingFrom#1016458, productionAspect#1016459, salesPlant#1016460, listing#1016461, sourceOfSupplyCategory#1016462, systemId#1016454]
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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(892) Project
Output [9]: [systemId#1016454, internalUUID#1016455, plant#1016456, product#1016457, blockedForReplenishmentStartingFrom#1016458, productionAspect#1016459, salesPlant#1016460, listing#1016461, sourceOfSupplyCategory#1016462]
Input [9]: [internalUUID#1016455, plant#1016456, product#1016457, blockedForReplenishmentStartingFrom#1016458, productionAspect#1016459, salesPlant#1016460, listing#1016461, sourceOfSupplyCategory#1016462, systemId#1016454]
(893) Exchange
Input [9]: [systemId#1016454, internalUUID#1016455, plant#1016456, product#1016457, blockedForReplenishmentStartingFrom#1016458, productionAspect#1016459, salesPlant#1016460, listing#1016461, sourceOfSupplyCategory#1016462]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638325]
(894) Project
Output [1]: [struct(systemId, systemId#1016454, internalUUID, internalUUID#1016455, plant, plant#1016456, product, product#1016457, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1016458, productionAspect, productionAspect#1016459, salesPlant, salesPlant#1016460, listing, listing#1016461, sourceOfSupplyCategory, sourceOfSupplyCategory#1016462) AS productPlant#1016463]
Input [9]: [systemId#1016454, internalUUID#1016455, plant#1016456, product#1016457, blockedForReplenishmentStartingFrom#1016458, productionAspect#1016459, salesPlant#1016460, listing#1016461, sourceOfSupplyCategory#1016462]
(895) BroadcastExchange
Input [1]: [productPlant#1016463]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1639234]
(896) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016450, ), isnull(product#1016450), coalesce(plant#1016451, ), isnull(plant#1016451)]
Right keys [4]: [coalesce(productPlant#1016463.product.internalRefUUID, ), isnull(productPlant#1016463.product.internalRefUUID), coalesce(productPlant#1016463.plant.internalRefUUID, ), isnull(productPlant#1016463.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(897) Scan parquet
Output [4]: [internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471, systemId#1016464]
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>>>
(898) Filter
Input [4]: [internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471, systemId#1016464]
Condition : isnotnull(internalUUID#1016465)
(899) Project
Output [3]: [internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471]
Input [4]: [internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471, systemId#1016464]
(900) Exchange
Input [3]: [internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638331]
(901) BroadcastExchange
Input [3]: [internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639237]
(902) BroadcastHashJoin
Left keys [1]: [product#1016450]
Right keys [1]: [internalUUID#1016465]
Join type: LeftOuter
Join condition: None
(903) Project
Output [5]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, filter(unitOfMeasureConversions#1016471, lambdafunction((((lambda u#1012565.measurementUnit1.code = productPlant#1016463.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1012565.measurementUnit1.internalRefUUID = productPlant#1016463.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016469.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016469.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016476]
Input [7]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, internalUUID#1016465, baseUnitOfMeasure#1016469, unitOfMeasureConversions#1016471]
(904) Project
Output [6]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, filteredUnitOfMeasureConversions#1016476.quantityDenominator AS _extract_quantityDenominator#1018578, filteredUnitOfMeasureConversions#1016476.quantityNumerator AS _extract_quantityNumerator#1018579]
Input [5]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, filteredUnitOfMeasureConversions#1016476]
(905) Generate
Input [6]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, _extract_quantityDenominator#1018578, _extract_quantityNumerator#1018579]
Arguments: explode(_extract_quantityNumerator#1018579), [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, _extract_quantityDenominator#1018578], true, [quantityNumerator#1016477]
(906) Generate
Input [6]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, _extract_quantityDenominator#1018578, quantityNumerator#1016477]
Arguments: explode(_extract_quantityDenominator#1018578), [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, quantityNumerator#1016477], true, [quantityDenominator#1016478]
(907) Project
Output [5]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, (cast(quantityNumerator#1016477 as double) / cast(quantityDenominator#1016478 as double)) AS outboundUnit#1016479]
Input [6]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, quantityNumerator#1016477, quantityDenominator#1016478]
(908) Project
Output [5]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, CASE WHEN (isnull(outboundUnit#1016479) OR (outboundUnit#1016479 <= 0.0)) THEN 1.0 ELSE outboundUnit#1016479 END AS outboundUnit#1016480]
Input [5]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016479]
(909) Sort
Input [5]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480]
Arguments: [product#1016450 ASC NULLS FIRST, plant#1016451 ASC NULLS FIRST], false, 0
(910) Scan parquet
Output [6]: [internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486, systemId#1016481]
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>>>>>
(911) Filter
Input [6]: [internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486, systemId#1016481]
Condition : (isnotnull(plant#1016484.internalRefUUID) AND isnotnull(product#1016483.internalRefUUID))
(912) Project
Output [6]: [systemId#1016481, internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486]
Input [6]: [internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486, systemId#1016481]
(913) Exchange
Input [6]: [systemId#1016481, internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638342]
(914) BroadcastExchange
Input [6]: [systemId#1016481, internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486]
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=1639265]
(915) Scan parquet
Output [2]: [marketUnit#1016487, distributionCenters#1016493]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(916) Filter
Input [2]: [marketUnit#1016487, distributionCenters#1016493]
Condition : (((marketUnit#1016487 <=> STEPHI_MU) AND (size(distributionCenters#1016493, true) > 0)) AND isnotnull(distributionCenters#1016493))
(917) Project
Output [1]: [distributionCenters#1016493]
Input [2]: [marketUnit#1016487, distributionCenters#1016493]
(918) Exchange
Input [1]: [distributionCenters#1016493]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638346]
(919) Generate
Input [1]: [distributionCenters#1016493]
Arguments: explode(distributionCenters#1016493), false, [distributionCenters#1016508]
(920) Filter
Input [1]: [distributionCenters#1016508]
Condition : (((size(distributionCenters#1016508.storageLocations, true) > 0) AND isnotnull(distributionCenters#1016508.storageLocations)) AND isnotnull(distributionCenters#1016508.internalRefUUID))
(921) Project
Output [2]: [distributionCenters#1016508.internalRefUUID AS _extract_internalRefUUID#1018345, distributionCenters#1016508.storageLocations AS _extract_storageLocations#1018346]
Input [1]: [distributionCenters#1016508]
(922) Generate
Input [2]: [_extract_internalRefUUID#1018345, _extract_storageLocations#1018346]
Arguments: explode(_extract_storageLocations#1018346), [_extract_internalRefUUID#1018345], false, [storageLocations#1016509]
(923) Project
Output [3]: [_extract_internalRefUUID#1018345 AS plantUuid#1016511, storageLocations#1016509.id AS storageLocId#1016512, storageLocations#1016509.internalRefUUID AS storageLocUuid#1016513]
Input [2]: [_extract_internalRefUUID#1018345, storageLocations#1016509]
(924) BroadcastExchange
Input [3]: [plantUuid#1016511, storageLocId#1016512, storageLocUuid#1016513]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639261]
(925) Scan parquet
Output [2]: [product#1016514, plant#1016515]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(926) Filter
Input [2]: [product#1016514, plant#1016515]
Condition : isnotnull(plant#1016515)
(927) Exchange
Input [2]: [product#1016514, plant#1016515]
Arguments: hashpartitioning(product#1016514, plant#1016515, 37), REPARTITION_BY_NUM, [plan_id=1638739]
(928) Scan parquet
Output [4]: [plant#1016520, product#1016521, productionAspect#1016523, systemId#1016518]
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>>>>
(929) Project
Output [4]: [plant#1016520.internalRefUUID AS _extract_internalRefUUID#1018582, product#1016521.internalRefUUID AS _extract_internalRefUUID#1018583, productionAspect#1016523.productMovementPlants.unitOfIssue.code AS _extract_code#1018580, productionAspect#1016523.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018581]
Input [4]: [plant#1016520, product#1016521, productionAspect#1016523, systemId#1016518]
(930) Exchange
Input [4]: [_extract_internalRefUUID#1018582, _extract_internalRefUUID#1018583, _extract_code#1018580, _extract_internalRefUUID#1018581]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638358]
(931) Project
Output [4]: [_extract_code#1018580, _extract_internalRefUUID#1018581, _extract_internalRefUUID#1018583, _extract_internalRefUUID#1018582]
Input [4]: [_extract_internalRefUUID#1018582, _extract_internalRefUUID#1018583, _extract_code#1018580, _extract_internalRefUUID#1018581]
(932) BroadcastExchange
Input [4]: [_extract_code#1018580, _extract_internalRefUUID#1018581, _extract_internalRefUUID#1018583, _extract_internalRefUUID#1018582]
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=1639245]
(933) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016514, ), isnull(product#1016514), coalesce(plant#1016515, ), isnull(plant#1016515)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018583, ), isnull(_extract_internalRefUUID#1018583), coalesce(_extract_internalRefUUID#1018582, ), isnull(_extract_internalRefUUID#1018582)]
Join type: LeftOuter
Join condition: None
(934) Project
Output [4]: [product#1016514, plant#1016515, _extract_code#1018580, _extract_internalRefUUID#1018581]
Input [6]: [product#1016514, plant#1016515, _extract_code#1018580, _extract_internalRefUUID#1018581, _extract_internalRefUUID#1018583, _extract_internalRefUUID#1018582]
(935) Scan parquet
Output [4]: [internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535, systemId#1016528]
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>>>
(936) Filter
Input [4]: [internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535, systemId#1016528]
Condition : isnotnull(internalUUID#1016529)
(937) Project
Output [3]: [internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535]
Input [4]: [internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535, systemId#1016528]
(938) Exchange
Input [3]: [internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638365]
(939) BroadcastExchange
Input [3]: [internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639249]
(940) BroadcastHashJoin
Left keys [1]: [product#1016514]
Right keys [1]: [internalUUID#1016529]
Join type: LeftOuter
Join condition: None
(941) Project
Output [2]: [plant#1016515, filter(unitOfMeasureConversions#1016535, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018580) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018581)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016533.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016533.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016540]
Input [7]: [product#1016514, plant#1016515, _extract_code#1018580, _extract_internalRefUUID#1018581, internalUUID#1016529, baseUnitOfMeasure#1016533, unitOfMeasureConversions#1016535]
(942) Generate
Input [2]: [plant#1016515, filteredUnitOfMeasureConversions#1016540]
Arguments: explode(filteredUnitOfMeasureConversions#1016540.quantityNumerator), [plant#1016515, filteredUnitOfMeasureConversions#1016540], true, [quantityNumerator#1016541]
(943) Project
Output [2]: [plant#1016515, filteredUnitOfMeasureConversions#1016540.quantityDenominator AS _extract_quantityDenominator#1018347]
Input [3]: [plant#1016515, filteredUnitOfMeasureConversions#1016540, quantityNumerator#1016541]
(944) Generate
Input [2]: [plant#1016515, _extract_quantityDenominator#1018347]
Arguments: explode(_extract_quantityDenominator#1018347), [plant#1016515], true, [quantityDenominator#1016542]
(945) Project
Output [1]: [plant#1016515]
Input [2]: [plant#1016515, quantityDenominator#1016542]
(946) HashAggregate
Input [1]: [plant#1016515]
Keys [1]: [plant#1016515]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016515]
(947) Exchange
Input [1]: [plant#1016515]
Arguments: hashpartitioning(plant#1016515, 37), ENSURE_REQUIREMENTS, [plan_id=1639258]
(948) HashAggregate
Input [1]: [plant#1016515]
Keys [1]: [plant#1016515]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016515]
(949) BroadcastHashJoin
Left keys [1]: [plantUuid#1016511]
Right keys [1]: [plant#1016515]
Join type: Inner
Join condition: None
(950) Project
Output [3]: [plantUuid#1016511, storageLocId#1016512, storageLocUuid#1016513]
Input [4]: [plantUuid#1016511, storageLocId#1016512, storageLocUuid#1016513, plant#1016515]
(951) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1016484.internalRefUUID, ), isnull(plant#1016484.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1016511, ), isnull(plantUuid#1016511)]
Join type: Inner
Join condition: None
(952) Generate
Input [9]: [systemId#1016481, internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, stockQuantities#1016486, plantUuid#1016511, storageLocId#1016512, storageLocUuid#1016513]
Arguments: explode(filter(stockQuantities#1016486, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1016513) AND (lambda x#1012695.storageLocation.Id = storageLocId#1016512)), lambda x#1012695, false))), [systemId#1016481, internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, plantUuid#1016511], false, [stockQuantity#1016545]
(953) ObjectHashAggregate
Input [7]: [systemId#1016481, internalUUID#1016482, product#1016483, plant#1016484, calculationDateTime#1016485, plantUuid#1016511, stockQuantity#1016545]
Keys [5]: [plantUuid#1016511, internalUUID#1016482, plant#1016484, product#1016483, systemId#1016481]
Functions [2]: [partial_first(calculationDateTime#1016485, false), partial_collect_list(stockQuantity#1016545, 0, 0)]
Aggregate Attributes [3]: [first#1019681, valueSet#1019682, buf#1019683]
Results [8]: [plantUuid#1016511, internalUUID#1016482, plant#1016484, product#1016483, systemId#1016481, first#1019684, valueSet#1019685, buf#1019686]
(954) ObjectHashAggregate
Input [8]: [plantUuid#1016511, internalUUID#1016482, plant#1016484, product#1016483, systemId#1016481, first#1019684, valueSet#1019685, buf#1019686]
Keys [5]: [plantUuid#1016511, internalUUID#1016482, plant#1016484, product#1016483, systemId#1016481]
Functions [2]: [first(calculationDateTime#1016485, false), collect_list(stockQuantity#1016545, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1016485)()#1012710, collect_list(stockQuantity#1016545, 0, 0)#1012711]
Results [4]: [product#1016483, plant#1016484, first(calculationDateTime#1016485)()#1012710 AS calculationDateTime#1016546, collect_list(stockQuantity#1016545, 0, 0)#1012711 AS stockQuantities#1016547]
(955) Filter
Input [4]: [product#1016483, plant#1016484, calculationDateTime#1016546, stockQuantities#1016547]
Condition : ((size(stockQuantities#1016547, true) > 0) AND isnotnull(calculationDateTime#1016546))
(956) Generate
Input [4]: [product#1016483, plant#1016484, calculationDateTime#1016546, stockQuantities#1016547]
Arguments: explode(stockQuantities#1016547), [product#1016483, plant#1016484, calculationDateTime#1016546], false, [stockQuantity#1016548]
(957) Filter
Input [4]: [product#1016483, plant#1016484, calculationDateTime#1016546, stockQuantity#1016548]
Condition : (((isnotnull(stockQuantity#1016548.specialStockIndicator.code) AND isnotnull(stockQuantity#1016548.stockType.code)) AND (stockQuantity#1016548.specialStockIndicator.code = )) AND (stockQuantity#1016548.stockType.code = 01))
(958) Project
Output [5]: [plant#1016484.internalRefUUID AS plantUuid#1016550, product#1016483.internalRefUUID AS productUuid#1016552, calculationDateTime#1016546, stockQuantity#1016548.storagelocation.id AS storageLocId#1016553, stockQuantity#1016548.quantity.measure AS quantity#1016555]
Input [4]: [product#1016483, plant#1016484, calculationDateTime#1016546, stockQuantity#1016548]
(959) Exchange
Input [5]: [plantUuid#1016550, productUuid#1016552, calculationDateTime#1016546, storageLocId#1016553, quantity#1016555]
Arguments: hashpartitioning(productUuid#1016552, plantUuid#1016550, 37), ENSURE_REQUIREMENTS, [plan_id=1639287]
(960) Sort
Input [5]: [plantUuid#1016550, productUuid#1016552, calculationDateTime#1016546, storageLocId#1016553, quantity#1016555]
Arguments: [productUuid#1016552 ASC NULLS FIRST, plantUuid#1016550 ASC NULLS FIRST], false, 0
(961) Scan parquet
Output [3]: [product#1016558, plant#1016559, orderDateTime#1016560]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(962) Filter
Input [3]: [product#1016558, plant#1016559, orderDateTime#1016560]
Condition : ((isnotnull(orderDateTime#1016560) AND isnotnull(plant#1016559)) AND isnotnull(product#1016558))
(963) Exchange
Input [3]: [product#1016558, plant#1016559, orderDateTime#1016560]
Arguments: hashpartitioning(product#1016558, plant#1016559, 37), REPARTITION_BY_NUM, [plan_id=1638760]
(964) Scan parquet
Output [4]: [plant#1016564, product#1016565, productionAspect#1016567, systemId#1016562]
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>>>>
(965) Project
Output [4]: [plant#1016564.internalRefUUID AS _extract_internalRefUUID#1018586, product#1016565.internalRefUUID AS _extract_internalRefUUID#1018587, productionAspect#1016567.productMovementPlants.unitOfIssue.code AS _extract_code#1018584, productionAspect#1016567.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018585]
Input [4]: [plant#1016564, product#1016565, productionAspect#1016567, systemId#1016562]
(966) Exchange
Input [4]: [_extract_internalRefUUID#1018586, _extract_internalRefUUID#1018587, _extract_code#1018584, _extract_internalRefUUID#1018585]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638390]
(967) Project
Output [4]: [_extract_code#1018584, _extract_internalRefUUID#1018585, _extract_internalRefUUID#1018587, _extract_internalRefUUID#1018586]
Input [4]: [_extract_internalRefUUID#1018586, _extract_internalRefUUID#1018587, _extract_code#1018584, _extract_internalRefUUID#1018585]
(968) BroadcastExchange
Input [4]: [_extract_code#1018584, _extract_internalRefUUID#1018585, _extract_internalRefUUID#1018587, _extract_internalRefUUID#1018586]
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=1639274]
(969) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016558, ), isnull(product#1016558), coalesce(plant#1016559, ), isnull(plant#1016559)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018587, ), isnull(_extract_internalRefUUID#1018587), coalesce(_extract_internalRefUUID#1018586, ), isnull(_extract_internalRefUUID#1018586)]
Join type: LeftOuter
Join condition: None
(970) Project
Output [5]: [product#1016558, plant#1016559, orderDateTime#1016560, _extract_code#1018584, _extract_internalRefUUID#1018585]
Input [7]: [product#1016558, plant#1016559, orderDateTime#1016560, _extract_code#1018584, _extract_internalRefUUID#1018585, _extract_internalRefUUID#1018587, _extract_internalRefUUID#1018586]
(971) Scan parquet
Output [4]: [internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579, systemId#1016572]
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>>>
(972) Filter
Input [4]: [internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579, systemId#1016572]
Condition : isnotnull(internalUUID#1016573)
(973) Project
Output [3]: [internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579]
Input [4]: [internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579, systemId#1016572]
(974) Exchange
Input [3]: [internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638397]
(975) BroadcastExchange
Input [3]: [internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639278]
(976) BroadcastHashJoin
Left keys [1]: [product#1016558]
Right keys [1]: [internalUUID#1016573]
Join type: LeftOuter
Join condition: None
(977) Project
Output [4]: [product#1016558, plant#1016559, orderDateTime#1016560, filter(unitOfMeasureConversions#1016579, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018584) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018585)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016577.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016577.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016584]
Input [8]: [product#1016558, plant#1016559, orderDateTime#1016560, _extract_code#1018584, _extract_internalRefUUID#1018585, internalUUID#1016573, baseUnitOfMeasure#1016577, unitOfMeasureConversions#1016579]
(978) Generate
Input [4]: [product#1016558, plant#1016559, orderDateTime#1016560, filteredUnitOfMeasureConversions#1016584]
Arguments: explode(filteredUnitOfMeasureConversions#1016584.quantityNumerator), [product#1016558, plant#1016559, orderDateTime#1016560, filteredUnitOfMeasureConversions#1016584], true, [quantityNumerator#1016585]
(979) Project
Output [4]: [product#1016558, plant#1016559, orderDateTime#1016560, filteredUnitOfMeasureConversions#1016584.quantityDenominator AS _extract_quantityDenominator#1018354]
Input [5]: [product#1016558, plant#1016559, orderDateTime#1016560, filteredUnitOfMeasureConversions#1016584, quantityNumerator#1016585]
(980) Generate
Input [4]: [product#1016558, plant#1016559, orderDateTime#1016560, _extract_quantityDenominator#1018354]
Arguments: explode(_extract_quantityDenominator#1018354), [product#1016558, plant#1016559, orderDateTime#1016560], true, [quantityDenominator#1016586]
(981) Project
Output [3]: [product#1016558, plant#1016559, orderDateTime#1016560]
Input [4]: [product#1016558, plant#1016559, orderDateTime#1016560, quantityDenominator#1016586]
(982) Sort
Input [3]: [product#1016558, plant#1016559, orderDateTime#1016560]
Arguments: [product#1016558 ASC NULLS FIRST, plant#1016559 ASC NULLS FIRST], false, 0
(983) SortMergeJoin
Left keys [2]: [productUuid#1016552, plantUuid#1016550]
Right keys [2]: [product#1016558, plant#1016559]
Join type: Inner
Join condition: (calculationDateTime#1016546 <= orderDateTime#1016560)
(984) Project
Output [5]: [plantUuid#1016550 AS plant#1016589, productUuid#1016552 AS product#1016590, storageLocId#1016553, calculationDateTime#1016546, quantity#1016555]
Input [8]: [plantUuid#1016550, productUuid#1016552, calculationDateTime#1016546, storageLocId#1016553, quantity#1016555, product#1016558, plant#1016559, orderDateTime#1016560]
(985) Exchange
Input [5]: [plant#1016589, product#1016590, storageLocId#1016553, calculationDateTime#1016546, quantity#1016555]
Arguments: hashpartitioning(coalesce(plant#1016589, ), isnull(plant#1016589), coalesce(product#1016590, ), isnull(product#1016590), coalesce(storageLocId#1016553, ), isnull(storageLocId#1016553), coalesce(calculationDateTime#1016546, 1970-01-01 00:00:00), isnull(calculationDateTime#1016546), 37), ENSURE_REQUIREMENTS, [plan_id=1639343]
(986) Sort
Input [5]: [plant#1016589, product#1016590, storageLocId#1016553, calculationDateTime#1016546, quantity#1016555]
Arguments: [coalesce(plant#1016589, ) ASC NULLS FIRST, isnull(plant#1016589) ASC NULLS FIRST, coalesce(product#1016590, ) ASC NULLS FIRST, isnull(product#1016590) ASC NULLS FIRST, coalesce(storageLocId#1016553, ) ASC NULLS FIRST, isnull(storageLocId#1016553) ASC NULLS FIRST, coalesce(calculationDateTime#1016546, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1016546) ASC NULLS FIRST], false, 0
(987) Scan parquet
Output [6]: [internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596, systemId#1016591]
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>>>>>
(988) Filter
Input [6]: [internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596, systemId#1016591]
Condition : (isnotnull(plant#1016594.internalRefUUID) AND isnotnull(product#1016593.internalRefUUID))
(989) Project
Output [6]: [systemId#1016591, internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596]
Input [6]: [internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596, systemId#1016591]
(990) Exchange
Input [6]: [systemId#1016591, internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638409]
(991) BroadcastExchange
Input [6]: [systemId#1016591, internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596]
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=1639312]
(992) Scan parquet
Output [2]: [marketUnit#1016597, distributionCenters#1016603]
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,STEPHI_MU), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(993) Filter
Input [2]: [marketUnit#1016597, distributionCenters#1016603]
Condition : (((marketUnit#1016597 <=> STEPHI_MU) AND (size(distributionCenters#1016603, true) > 0)) AND isnotnull(distributionCenters#1016603))
(994) Project
Output [1]: [distributionCenters#1016603]
Input [2]: [marketUnit#1016597, distributionCenters#1016603]
(995) Exchange
Input [1]: [distributionCenters#1016603]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638413]
(996) Generate
Input [1]: [distributionCenters#1016603]
Arguments: explode(distributionCenters#1016603), false, [distributionCenters#1016618]
(997) Filter
Input [1]: [distributionCenters#1016618]
Condition : (((size(distributionCenters#1016618.storageLocations, true) > 0) AND isnotnull(distributionCenters#1016618.storageLocations)) AND isnotnull(distributionCenters#1016618.internalRefUUID))
(998) Project
Output [2]: [distributionCenters#1016618.internalRefUUID AS _extract_internalRefUUID#1018361, distributionCenters#1016618.storageLocations AS _extract_storageLocations#1018362]
Input [1]: [distributionCenters#1016618]
(999) Generate
Input [2]: [_extract_internalRefUUID#1018361, _extract_storageLocations#1018362]
Arguments: explode(_extract_storageLocations#1018362), [_extract_internalRefUUID#1018361], false, [storageLocations#1016619]
(1000) Project
Output [3]: [_extract_internalRefUUID#1018361 AS plantUuid#1016621, storageLocations#1016619.id AS storageLocId#1016622, storageLocations#1016619.internalRefUUID AS storageLocUuid#1016623]
Input [2]: [_extract_internalRefUUID#1018361, storageLocations#1016619]
(1001) BroadcastExchange
Input [3]: [plantUuid#1016621, storageLocId#1016622, storageLocUuid#1016623]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639308]
(1002) Scan parquet
Output [2]: [product#1016624, plant#1016625]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1003) Filter
Input [2]: [product#1016624, plant#1016625]
Condition : isnotnull(plant#1016625)
(1004) Exchange
Input [2]: [product#1016624, plant#1016625]
Arguments: hashpartitioning(product#1016624, plant#1016625, 37), REPARTITION_BY_NUM, [plan_id=1638771]
(1005) Scan parquet
Output [4]: [plant#1016630, product#1016631, productionAspect#1016633, systemId#1016628]
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>>>>
(1006) Project
Output [4]: [plant#1016630.internalRefUUID AS _extract_internalRefUUID#1018588, product#1016631.internalRefUUID AS _extract_internalRefUUID#1018591, productionAspect#1016633.productMovementPlants.unitOfIssue.code AS _extract_code#1018589, productionAspect#1016633.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018590]
Input [4]: [plant#1016630, product#1016631, productionAspect#1016633, systemId#1016628]
(1007) Exchange
Input [4]: [_extract_internalRefUUID#1018588, _extract_internalRefUUID#1018591, _extract_code#1018589, _extract_internalRefUUID#1018590]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638425]
(1008) Project
Output [4]: [_extract_code#1018589, _extract_internalRefUUID#1018590, _extract_internalRefUUID#1018591, _extract_internalRefUUID#1018588]
Input [4]: [_extract_internalRefUUID#1018588, _extract_internalRefUUID#1018591, _extract_code#1018589, _extract_internalRefUUID#1018590]
(1009) BroadcastExchange
Input [4]: [_extract_code#1018589, _extract_internalRefUUID#1018590, _extract_internalRefUUID#1018591, _extract_internalRefUUID#1018588]
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=1639292]
(1010) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016624, ), isnull(product#1016624), coalesce(plant#1016625, ), isnull(plant#1016625)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018591, ), isnull(_extract_internalRefUUID#1018591), coalesce(_extract_internalRefUUID#1018588, ), isnull(_extract_internalRefUUID#1018588)]
Join type: LeftOuter
Join condition: None
(1011) Project
Output [4]: [product#1016624, plant#1016625, _extract_code#1018589, _extract_internalRefUUID#1018590]
Input [6]: [product#1016624, plant#1016625, _extract_code#1018589, _extract_internalRefUUID#1018590, _extract_internalRefUUID#1018591, _extract_internalRefUUID#1018588]
(1012) Scan parquet
Output [4]: [internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645, systemId#1016638]
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>>>
(1013) Filter
Input [4]: [internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645, systemId#1016638]
Condition : isnotnull(internalUUID#1016639)
(1014) Project
Output [3]: [internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645]
Input [4]: [internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645, systemId#1016638]
(1015) Exchange
Input [3]: [internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638432]
(1016) BroadcastExchange
Input [3]: [internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639296]
(1017) BroadcastHashJoin
Left keys [1]: [product#1016624]
Right keys [1]: [internalUUID#1016639]
Join type: LeftOuter
Join condition: None
(1018) Project
Output [2]: [plant#1016625, filter(unitOfMeasureConversions#1016645, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018589) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018590)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016643.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016643.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016650]
Input [7]: [product#1016624, plant#1016625, _extract_code#1018589, _extract_internalRefUUID#1018590, internalUUID#1016639, baseUnitOfMeasure#1016643, unitOfMeasureConversions#1016645]
(1019) Generate
Input [2]: [plant#1016625, filteredUnitOfMeasureConversions#1016650]
Arguments: explode(filteredUnitOfMeasureConversions#1016650.quantityNumerator), [plant#1016625, filteredUnitOfMeasureConversions#1016650], true, [quantityNumerator#1016651]
(1020) Project
Output [2]: [plant#1016625, filteredUnitOfMeasureConversions#1016650.quantityDenominator AS _extract_quantityDenominator#1018363]
Input [3]: [plant#1016625, filteredUnitOfMeasureConversions#1016650, quantityNumerator#1016651]
(1021) Generate
Input [2]: [plant#1016625, _extract_quantityDenominator#1018363]
Arguments: explode(_extract_quantityDenominator#1018363), [plant#1016625], true, [quantityDenominator#1016652]
(1022) Project
Output [1]: [plant#1016625]
Input [2]: [plant#1016625, quantityDenominator#1016652]
(1023) HashAggregate
Input [1]: [plant#1016625]
Keys [1]: [plant#1016625]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016625]
(1024) Exchange
Input [1]: [plant#1016625]
Arguments: hashpartitioning(plant#1016625, 37), ENSURE_REQUIREMENTS, [plan_id=1639305]
(1025) HashAggregate
Input [1]: [plant#1016625]
Keys [1]: [plant#1016625]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1016625]
(1026) BroadcastHashJoin
Left keys [1]: [plantUuid#1016621]
Right keys [1]: [plant#1016625]
Join type: Inner
Join condition: None
(1027) Project
Output [3]: [plantUuid#1016621, storageLocId#1016622, storageLocUuid#1016623]
Input [4]: [plantUuid#1016621, storageLocId#1016622, storageLocUuid#1016623, plant#1016625]
(1028) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1016594.internalRefUUID, ), isnull(plant#1016594.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1016621, ), isnull(plantUuid#1016621)]
Join type: Inner
Join condition: None
(1029) Generate
Input [9]: [systemId#1016591, internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, stockQuantities#1016596, plantUuid#1016621, storageLocId#1016622, storageLocUuid#1016623]
Arguments: explode(filter(stockQuantities#1016596, lambdafunction(((lambda x#1012695.storageLocation.internalRefUuid = storageLocUuid#1016623) AND (lambda x#1012695.storageLocation.Id = storageLocId#1016622)), lambda x#1012695, false))), [systemId#1016591, internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, plantUuid#1016621], false, [stockQuantity#1016655]
(1030) ObjectHashAggregate
Input [7]: [systemId#1016591, internalUUID#1016592, product#1016593, plant#1016594, calculationDateTime#1016595, plantUuid#1016621, stockQuantity#1016655]
Keys [5]: [plantUuid#1016621, internalUUID#1016592, plant#1016594, product#1016593, systemId#1016591]
Functions [2]: [partial_first(calculationDateTime#1016595, false), partial_collect_list(stockQuantity#1016655, 0, 0)]
Aggregate Attributes [3]: [first#1019689, valueSet#1019690, buf#1019691]
Results [8]: [plantUuid#1016621, internalUUID#1016592, plant#1016594, product#1016593, systemId#1016591, first#1019692, valueSet#1019693, buf#1019694]
(1031) ObjectHashAggregate
Input [8]: [plantUuid#1016621, internalUUID#1016592, plant#1016594, product#1016593, systemId#1016591, first#1019692, valueSet#1019693, buf#1019694]
Keys [5]: [plantUuid#1016621, internalUUID#1016592, plant#1016594, product#1016593, systemId#1016591]
Functions [2]: [first(calculationDateTime#1016595, false), collect_list(stockQuantity#1016655, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1016595)()#1012710, collect_list(stockQuantity#1016655, 0, 0)#1012711]
Results [4]: [product#1016593, plant#1016594, first(calculationDateTime#1016595)()#1012710 AS calculationDateTime#1016656, collect_list(stockQuantity#1016655, 0, 0)#1012711 AS stockQuantities#1016657]
(1032) Filter
Input [4]: [product#1016593, plant#1016594, calculationDateTime#1016656, stockQuantities#1016657]
Condition : ((size(stockQuantities#1016657, true) > 0) AND isnotnull(calculationDateTime#1016656))
(1033) Generate
Input [4]: [product#1016593, plant#1016594, calculationDateTime#1016656, stockQuantities#1016657]
Arguments: explode(stockQuantities#1016657), [product#1016593, plant#1016594, calculationDateTime#1016656], false, [stockQuantity#1016658]
(1034) Filter
Input [4]: [product#1016593, plant#1016594, calculationDateTime#1016656, stockQuantity#1016658]
Condition : (((isnotnull(stockQuantity#1016658.specialStockIndicator.code) AND isnotnull(stockQuantity#1016658.stockType.code)) AND (stockQuantity#1016658.specialStockIndicator.code = )) AND (stockQuantity#1016658.stockType.code = 01))
(1035) Project
Output [4]: [plant#1016594.internalRefUUID AS plantUuid#1016660, product#1016593.internalRefUUID AS productUuid#1016662, calculationDateTime#1016656, stockQuantity#1016658.storagelocation.id AS storageLocId#1016663]
Input [4]: [product#1016593, plant#1016594, calculationDateTime#1016656, stockQuantity#1016658]
(1036) Exchange
Input [4]: [plantUuid#1016660, productUuid#1016662, calculationDateTime#1016656, storageLocId#1016663]
Arguments: hashpartitioning(productUuid#1016662, plantUuid#1016660, 37), ENSURE_REQUIREMENTS, [plan_id=1639334]
(1037) Sort
Input [4]: [plantUuid#1016660, productUuid#1016662, calculationDateTime#1016656, storageLocId#1016663]
Arguments: [productUuid#1016662 ASC NULLS FIRST, plantUuid#1016660 ASC NULLS FIRST], false, 0
(1038) Scan parquet
Output [3]: [product#1016668, plant#1016669, orderDateTime#1016670]
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/10000000349/shardId=0_1_10000000349]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1039) Filter
Input [3]: [product#1016668, plant#1016669, orderDateTime#1016670]
Condition : ((isnotnull(orderDateTime#1016670) AND isnotnull(plant#1016669)) AND isnotnull(product#1016668))
(1040) Exchange
Input [3]: [product#1016668, plant#1016669, orderDateTime#1016670]
Arguments: hashpartitioning(product#1016668, plant#1016669, 37), REPARTITION_BY_NUM, [plan_id=1638792]
(1041) Scan parquet
Output [4]: [plant#1016674, product#1016675, productionAspect#1016677, systemId#1016672]
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>>>>
(1042) Project
Output [4]: [plant#1016674.internalRefUUID AS _extract_internalRefUUID#1018593, product#1016675.internalRefUUID AS _extract_internalRefUUID#1018592, productionAspect#1016677.productMovementPlants.unitOfIssue.code AS _extract_code#1018594, productionAspect#1016677.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1018595]
Input [4]: [plant#1016674, product#1016675, productionAspect#1016677, systemId#1016672]
(1043) Exchange
Input [4]: [_extract_internalRefUUID#1018593, _extract_internalRefUUID#1018592, _extract_code#1018594, _extract_internalRefUUID#1018595]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638457]
(1044) Project
Output [4]: [_extract_code#1018594, _extract_internalRefUUID#1018595, _extract_internalRefUUID#1018592, _extract_internalRefUUID#1018593]
Input [4]: [_extract_internalRefUUID#1018593, _extract_internalRefUUID#1018592, _extract_code#1018594, _extract_internalRefUUID#1018595]
(1045) BroadcastExchange
Input [4]: [_extract_code#1018594, _extract_internalRefUUID#1018595, _extract_internalRefUUID#1018592, _extract_internalRefUUID#1018593]
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=1639321]
(1046) BroadcastHashJoin
Left keys [4]: [coalesce(product#1016668, ), isnull(product#1016668), coalesce(plant#1016669, ), isnull(plant#1016669)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1018592, ), isnull(_extract_internalRefUUID#1018592), coalesce(_extract_internalRefUUID#1018593, ), isnull(_extract_internalRefUUID#1018593)]
Join type: LeftOuter
Join condition: None
(1047) Project
Output [5]: [product#1016668, plant#1016669, orderDateTime#1016670, _extract_code#1018594, _extract_internalRefUUID#1018595]
Input [7]: [product#1016668, plant#1016669, orderDateTime#1016670, _extract_code#1018594, _extract_internalRefUUID#1018595, _extract_internalRefUUID#1018592, _extract_internalRefUUID#1018593]
(1048) Scan parquet
Output [4]: [internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689, systemId#1016682]
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>>>
(1049) Filter
Input [4]: [internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689, systemId#1016682]
Condition : isnotnull(internalUUID#1016683)
(1050) Project
Output [3]: [internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689]
Input [4]: [internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689, systemId#1016682]
(1051) Exchange
Input [3]: [internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638464]
(1052) BroadcastExchange
Input [3]: [internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1639325]
(1053) BroadcastHashJoin
Left keys [1]: [product#1016668]
Right keys [1]: [internalUUID#1016683]
Join type: LeftOuter
Join condition: None
(1054) Project
Output [4]: [product#1016668, plant#1016669, orderDateTime#1016670, filter(unitOfMeasureConversions#1016689, lambdafunction((((lambda u#1012565.measurementUnit1.code = _extract_code#1018594) AND (lambda u#1012565.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1018595)) AND ((lambda u#1012565.measurementUnit2.code = baseUnitOfMeasure#1016687.code) AND (lambda u#1012565.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1016687.internalRefUUID))), lambda u#1012565, false)) AS filteredUnitOfMeasureConversions#1016694]
Input [8]: [product#1016668, plant#1016669, orderDateTime#1016670, _extract_code#1018594, _extract_internalRefUUID#1018595, internalUUID#1016683, baseUnitOfMeasure#1016687, unitOfMeasureConversions#1016689]
(1055) Generate
Input [4]: [product#1016668, plant#1016669, orderDateTime#1016670, filteredUnitOfMeasureConversions#1016694]
Arguments: explode(filteredUnitOfMeasureConversions#1016694.quantityNumerator), [product#1016668, plant#1016669, orderDateTime#1016670, filteredUnitOfMeasureConversions#1016694], true, [quantityNumerator#1016695]
(1056) Project
Output [4]: [product#1016668, plant#1016669, orderDateTime#1016670, filteredUnitOfMeasureConversions#1016694.quantityDenominator AS _extract_quantityDenominator#1018370]
Input [5]: [product#1016668, plant#1016669, orderDateTime#1016670, filteredUnitOfMeasureConversions#1016694, quantityNumerator#1016695]
(1057) Generate
Input [4]: [product#1016668, plant#1016669, orderDateTime#1016670, _extract_quantityDenominator#1018370]
Arguments: explode(_extract_quantityDenominator#1018370), [product#1016668, plant#1016669, orderDateTime#1016670], true, [quantityDenominator#1016696]
(1058) Project
Output [3]: [product#1016668, plant#1016669, orderDateTime#1016670]
Input [4]: [product#1016668, plant#1016669, orderDateTime#1016670, quantityDenominator#1016696]
(1059) Sort
Input [3]: [product#1016668, plant#1016669, orderDateTime#1016670]
Arguments: [product#1016668 ASC NULLS FIRST, plant#1016669 ASC NULLS FIRST], false, 0
(1060) SortMergeJoin
Left keys [2]: [productUuid#1016662, plantUuid#1016660]
Right keys [2]: [product#1016668, plant#1016669]
Join type: Inner
Join condition: (calculationDateTime#1016656 <= orderDateTime#1016670)
(1061) Project
Output [4]: [plantUuid#1016660 AS plant#1016699, productUuid#1016662 AS product#1016700, storageLocId#1016663, calculationDateTime#1016656]
Input [7]: [plantUuid#1016660, productUuid#1016662, calculationDateTime#1016656, storageLocId#1016663, product#1016668, plant#1016669, orderDateTime#1016670]
(1062) HashAggregate
Input [4]: [plant#1016699, product#1016700, storageLocId#1016663, calculationDateTime#1016656]
Keys [3]: [plant#1016699, product#1016700, storageLocId#1016663]
Functions [1]: [partial_max(calculationDateTime#1016656)]
Aggregate Attributes [1]: [max#1019687]
Results [4]: [plant#1016699, product#1016700, storageLocId#1016663, max#1019688]
(1063) HashAggregate
Input [4]: [plant#1016699, product#1016700, storageLocId#1016663, max#1019688]
Keys [3]: [plant#1016699, product#1016700, storageLocId#1016663]
Functions [1]: [max(calculationDateTime#1016656)]
Aggregate Attributes [1]: [max(calculationDateTime#1016656)#1012774]
Results [4]: [plant#1016699, product#1016700, storageLocId#1016663, max(calculationDateTime#1016656)#1012774 AS max_calc_datetime#1016701]
(1064) Exchange
Input [4]: [plant#1016699, product#1016700, storageLocId#1016663, max_calc_datetime#1016701]
Arguments: hashpartitioning(coalesce(plant#1016699, ), isnull(plant#1016699), coalesce(product#1016700, ), isnull(product#1016700), coalesce(storageLocId#1016663, ), isnull(storageLocId#1016663), coalesce(max_calc_datetime#1016701, 1970-01-01 00:00:00), isnull(max_calc_datetime#1016701), 37), ENSURE_REQUIREMENTS, [plan_id=1639344]
(1065) Sort
Input [4]: [plant#1016699, product#1016700, storageLocId#1016663, max_calc_datetime#1016701]
Arguments: [coalesce(plant#1016699, ) ASC NULLS FIRST, isnull(plant#1016699) ASC NULLS FIRST, coalesce(product#1016700, ) ASC NULLS FIRST, isnull(product#1016700) ASC NULLS FIRST, coalesce(storageLocId#1016663, ) ASC NULLS FIRST, isnull(storageLocId#1016663) ASC NULLS FIRST, coalesce(max_calc_datetime#1016701, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1016701) ASC NULLS FIRST], false, 0
(1066) SortMergeJoin
Left keys [8]: [coalesce(plant#1016589, ), isnull(plant#1016589), coalesce(product#1016590, ), isnull(product#1016590), coalesce(storageLocId#1016553, ), isnull(storageLocId#1016553), coalesce(calculationDateTime#1016546, 1970-01-01 00:00:00), isnull(calculationDateTime#1016546)]
Right keys [8]: [coalesce(plant#1016699, ), isnull(plant#1016699), coalesce(product#1016700, ), isnull(product#1016700), coalesce(storageLocId#1016663, ), isnull(storageLocId#1016663), coalesce(max_calc_datetime#1016701, 1970-01-01 00:00:00), isnull(max_calc_datetime#1016701)]
Join type: Inner
Join condition: None
(1067) Project
Output [4]: [plant#1016589, product#1016590, calculationDateTime#1016546, quantity#1016555]
Input [9]: [plant#1016589, product#1016590, storageLocId#1016553, calculationDateTime#1016546, quantity#1016555, plant#1016699, product#1016700, storageLocId#1016663, max_calc_datetime#1016701]
(1068) HashAggregate
Input [4]: [plant#1016589, product#1016590, calculationDateTime#1016546, quantity#1016555]
Keys [2]: [product#1016590, plant#1016589]
Functions [2]: [partial_min(calculationDateTime#1016546), partial_sum(quantity#1016555)]
Aggregate Attributes [2]: [min#1019677, sum#1019678]
Results [4]: [product#1016590, plant#1016589, min#1019679, sum#1019680]
(1069) Exchange
Input [4]: [product#1016590, plant#1016589, min#1019679, sum#1019680]
Arguments: hashpartitioning(product#1016590, plant#1016589, 37), ENSURE_REQUIREMENTS, [plan_id=1639351]
(1070) HashAggregate
Input [4]: [product#1016590, plant#1016589, min#1019679, sum#1019680]
Keys [2]: [product#1016590, plant#1016589]
Functions [2]: [min(calculationDateTime#1016546), sum(quantity#1016555)]
Aggregate Attributes [2]: [min(calculationDateTime#1016546)#1012901, sum(quantity#1016555)#1012900]
Results [4]: [product#1016590, plant#1016589, min(calculationDateTime#1016546)#1012901 AS minCalculationDateTime#1016703, round(sum(quantity#1016555)#1012900, 0) AS roundedQuantitySum#1016704]
(1071) Sort
Input [4]: [product#1016590, plant#1016589, minCalculationDateTime#1016703, roundedQuantitySum#1016704]
Arguments: [product#1016590 ASC NULLS FIRST, plant#1016589 ASC NULLS FIRST], false, 0
(1072) SortMergeJoin
Left keys [2]: [product#1016450, plant#1016451]
Right keys [2]: [product#1016590, plant#1016589]
Join type: LeftOuter
Join condition: None
(1073) Project
Output [7]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, CASE WHEN isnotnull(minCalculationDateTime#1016703) THEN minCalculationDateTime#1016703 ELSE orderDateTime#1016452 END AS stockDatetime#1016705, CASE WHEN isnotnull(roundedQuantitySum#1016704) THEN array(roundedQuantitySum#1016704) ELSE [0.0] END AS stockBatchQuantities#1016706]
Input [9]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, product#1016590, plant#1016589, minCalculationDateTime#1016703, roundedQuantitySum#1016704]
(1074) Scan parquet
Output [9]: [product#1016708, plant#1016709, demandChannel#1016710, demandStream#1016711, considerVariance#1016712, demandTimeBuckets#1016713, demandPointInTimeStart#1016714, demandPointInTimeEnd#1016715, demandPointInTime#1016716]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000349/0_1_10000000349]
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>>>
(1075) BroadcastExchange
Input [9]: [product#1016708, plant#1016709, demandChannel#1016710, demandStream#1016711, considerVariance#1016712, demandTimeBuckets#1016713, demandPointInTimeStart#1016714, demandPointInTimeEnd#1016715, demandPointInTime#1016716]
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=1639360]
(1076) BroadcastHashJoin
Left keys [4]: [coalesce(plant#1016451, ), isnull(plant#1016451), coalesce(product#1016450, ), isnull(product#1016450)]
Right keys [4]: [coalesce(plant#1016709, ), isnull(plant#1016709), coalesce(product#1016708, ), isnull(product#1016708)]
Join type: LeftOuter
Join condition: None
(1077) Project
Output [8]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, CASE WHEN isnotnull(product#1016708) THEN struct(demandChannel, demandChannel#1016710, demandStream, demandStream#1016711, considerVariance, considerVariance#1016712, demandTimeBuckets, demandTimeBuckets#1016713, demandPointInTimeStart, demandPointInTimeStart#1016714, demandPointInTimeEnd, demandPointInTimeEnd#1016715, demandPointInTime, demandPointInTime#1016716) END AS rawDemands#1016717]
Input [16]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, product#1016708, plant#1016709, demandChannel#1016710, demandStream#1016711, considerVariance#1016712, demandTimeBuckets#1016713, demandPointInTimeStart#1016714, demandPointInTimeEnd#1016715, demandPointInTime#1016716]
(1078) ObjectHashAggregate
Input [8]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, rawDemands#1016717]
Keys [8]: [product#1016450, plant#1016451, orderDateTime#1016452, knownfloatingpointnormalized(if (isnull(productPlant#1016463)) null else named_struct(systemId, productPlant#1016463.systemId, internalUUID, productPlant#1016463.internalUUID, plant, productPlant#1016463.plant, product, productPlant#1016463.product, blockedForReplenishmentStartingFrom, productPlant#1016463.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1016463.productionAspect)) null else named_struct(productMovementPlants, productPlant#1016463.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1016463.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1016463.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1016463.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1016463.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1016463.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1016463.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#1016463.salesPlant, listing, productPlant#1016463.listing, sourceOfSupplyCategory, productPlant#1016463.sourceOfSupplyCategory)) AS productPlant#1016463, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1016480)) AS outboundUnit#1016480, stockDatetime#1016705, knownfloatingpointnormalized(transform(stockBatchQuantities#1016706, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1019674)), lambda arg#1019674, false))) AS stockBatchQuantities#1016706, [7226582400000000] AS [7226582400000000]#1019673]
Functions [1]: [partial_collect_list(rawDemands#1016717, 0, 0)]
Aggregate Attributes [1]: [buf#1019675]
Results [9]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, [7226582400000000]#1019673, buf#1019676]
(1079) ObjectHashAggregate
Input [9]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, [7226582400000000]#1019673, buf#1019676]
Keys [8]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, [7226582400000000]#1019673]
Functions [1]: [collect_list(rawDemands#1016717, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1016717, 0, 0)#1012970]
Results [8]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, collect_list(rawDemands#1016717, 0, 0)#1012970 AS rawDemands#1016718]
(1080) Scan parquet
Output [3]: [internalUUID#1016720, address#1016726, systemId#1016719]
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>>>
(1081) Project
Output [2]: [internalUUID#1016720, address#1016726.timeZone.code AS timezonecode#1016731]
Input [3]: [internalUUID#1016720, address#1016726, systemId#1016719]
(1082) Exchange
Input [2]: [internalUUID#1016720, timezonecode#1016731]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1638488]
(1083) BroadcastExchange
Input [2]: [internalUUID#1016720, timezonecode#1016731]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1639366]
(1084) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1016451, ), isnull(plant#1016451)]
Right keys [2]: [coalesce(internalUUID#1016720, ), isnull(internalUUID#1016720)]
Join type: LeftOuter
Join condition: None
(1085) Project
Output [10]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1016707, rawDemands#1016718, CASE WHEN isnotnull(timezonecode#1016731) THEN timezonecode#1016731 ELSE UTC END AS timezonecode#1016732]
Input [10]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, rawDemands#1016718, internalUUID#1016720, timezonecode#1016731]
(1086) DeserializeToObject
Input [10]: [product#1016450, plant#1016451, orderDateTime#1016452, productPlant#1016463, outboundUnit#1016480, stockDatetime#1016705, stockBatchQuantities#1016706, stockBatchShelfLifeEndDatetimes#1016707, rawDemands#1016718, timezonecode#1016732]
Arguments: createexternalrow(invoke(product#1016450.toString()), invoke(plant#1016451.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1016452)), if (isnull(productPlant#1016463)) null else createexternalrow(invoke(productPlant#1016463.systemId.toString()), invoke(productPlant#1016463.internalUUID.toString()), if (isnull(productPlant#1016463.plant)) null else createexternalrow(invoke(productPlant#1016463.plant.internalRefUUID.toString()), invoke(productPlant#1016463.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1016463.product)) null else createexternalrow(invoke(productPlant#1016463.product.internalRefUUID.toString()), invoke(productPlant#1016463.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1016463.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1016463.productionAspect)) null else createexternalrow(if (isnull(productPlant#1016463.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1016463.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1016463.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1016463.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#1016463.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1016463.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1016463.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1016463.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1016463.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1016463.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1016463.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1016463.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1016463.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1016463.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1016463.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1016463.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1016463.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1016463.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#1016463.salesPlant)) null else createexternalrow(if (isnull(productPlant#1016463.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1016463.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1016463.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#1016463.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1016463.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1016463.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1016463.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#1016480)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1016705)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1016706, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1016707, 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#1016718, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1016732.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#1014043: org.apache.spark.sql.Row
(1087) MapElements
Input [1]: [obj#1014043]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@2aab4875, obj#1014048: org.apache.spark.sql.Row
(1088) SerializeFromObject
Input [1]: [obj#1014048]
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#1016733, 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#1016734, 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#1016735, 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#1016736]
(1089) Exchange
Input [4]: [product#1016733, plant#1016734, dayBucketDemands#1016735, pointInTimeDemands#1016736]
Arguments: hashpartitioning(coalesce(plant#1016734, ), isnull(plant#1016734), coalesce(product#1016733, ), isnull(product#1016733), 37), ENSURE_REQUIREMENTS, [plan_id=1639375]
(1090) Sort
Input [4]: [product#1016733, plant#1016734, dayBucketDemands#1016735, pointInTimeDemands#1016736]
Arguments: [coalesce(plant#1016734, ) ASC NULLS FIRST, isnull(plant#1016734) ASC NULLS FIRST, coalesce(product#1016733, ) ASC NULLS FIRST, isnull(product#1016733) ASC NULLS FIRST], false, 0
(1091) SortMergeJoin
Left keys [4]: [coalesce(plant#1016193, ), isnull(plant#1016193), coalesce(product#1016192, ), isnull(product#1016192)]
Right keys [4]: [coalesce(plant#1016734, ), isnull(plant#1016734), coalesce(product#1016733, ), isnull(product#1016733)]
Join type: LeftOuter
Join condition: None
(1092) Project
Output [9]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, dayBucketDemands#1016735, pointInTimeDemands#1016736]
Input [11]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, product#1016733, plant#1016734, dayBucketDemands#1016735, pointInTimeDemands#1016736]
(1093) InMemoryTableScan
Output [3]: [product#1017351, plant#1017350, openGoodsMovements#1017362]
Arguments: [product#1017351, plant#1017350, openGoodsMovements#1017362], [isnotnull(product#1017351), isnotnull(plant#1017350)]
(1094) InMemoryRelation
Arguments: [product#1017351, plant#1017350, openGoodsMovements#1017362], StorageLevel(disk, memory, 2 replicas)
(1095) Filter
Input [3]: [product#1017351, plant#1017350, openGoodsMovements#1017362]
Condition : (isnotnull(product#1017351) AND isnotnull(plant#1017350))
(1096) ObjectHashAggregate
Input [3]: [product#1017351, plant#1017350, openGoodsMovements#1017362]
Keys [2]: [product#1017351, plant#1017350]
Functions [1]: [partial_collect_list(openGoodsMovements#1017362, 0, 0)]
Aggregate Attributes [1]: [buf#1019695]
Results [3]: [product#1017351, plant#1017350, buf#1019696]
(1097) Exchange
Input [3]: [product#1017351, plant#1017350, buf#1019696]
Arguments: hashpartitioning(product#1017351, plant#1017350, 37), ENSURE_REQUIREMENTS, [plan_id=1639380]
(1098) ObjectHashAggregate
Input [3]: [product#1017351, plant#1017350, buf#1019696]
Keys [2]: [product#1017351, plant#1017350]
Functions [1]: [collect_list(openGoodsMovements#1017362, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1017362, 0, 0)#1015116]
Results [3]: [product#1017351, plant#1017350, flatten(collect_list(openGoodsMovements#1017362, 0, 0)#1015116) AS openGoodsMovements#1017928]
(1099) Project
Output [5]: [product#1017351, plant#1017350, openGoodsMovements#1017928.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#1018557, openGoodsMovements#1017928.availabilityDatetime AS _extract_availabilityDatetime#1018558, openGoodsMovements#1017928.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#1018559]
Input [3]: [product#1017351, plant#1017350, openGoodsMovements#1017928]
(1100) BroadcastExchange
Input [5]: [product#1017351, plant#1017350, _extract_openQtyInBaseUnit#1018557, _extract_availabilityDatetime#1018558, _extract_shelfLifeEndDatetime#1018559]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1639384]
(1101) BroadcastHashJoin
Left keys [2]: [product#1016192, plant#1016193]
Right keys [2]: [product#1017351, plant#1017350]
Join type: LeftOuter
Join condition: None
(1102) Project
Output [15]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1016449, dayBucketDemands#1016735, pointInTimeDemands#1016736, coalesce(_extract_openQtyInBaseUnit#1018557, []) AS openGoodsMovementQuantities#1017929, coalesce(_extract_availabilityDatetime#1018558, []) AS openGoodsMovementAvailabilityDatetimes#1017930, coalesce(_extract_shelfLifeEndDatetime#1018559, []) AS openGoodsMovementShelfLifeEndDatetimes#1017931, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1017932, array_sort(filter(CASE WHEN isnotnull(productPlant#1016205.listing) THEN productPlant#1016205.listing ELSE [] END, lambdafunction(lambda listing#1016138.isListed, lambda listing#1016138, false)), lambdafunction(if ((isnull(lambda left#1016140) AND isnull(lambda right#1016141))) 0 else if (isnull(lambda left#1016140)) 1 else if (isnull(lambda right#1016141)) -1 else if ((lambda left#1016140 < lambda right#1016141)) -1 else if ((lambda left#1016140 > lambda right#1016141)) 1 else 0, lambda left#1016140, lambda right#1016141, false), false) AS listing#1016139]
Input [14]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, dayBucketDemands#1016735, pointInTimeDemands#1016736, product#1017351, plant#1017350, _extract_openQtyInBaseUnit#1018557, _extract_availabilityDatetime#1018558, _extract_shelfLifeEndDatetime#1018559]
(1103) DeserializeToObject
Input [15]: [product#1016192, plant#1016193, orderDateTime#1016194, productPlant#1016205, outboundUnit#1016222, stockDatetime#1016447, stockBatchQuantities#1016448, stockBatchShelfLifeEndDatetimes#1016449, dayBucketDemands#1016735, pointInTimeDemands#1016736, openGoodsMovementQuantities#1017929, openGoodsMovementAvailabilityDatetimes#1017930, openGoodsMovementShelfLifeEndDatetimes#1017931, configuration#1017932, listing#1016139]
Arguments: createexternalrow(invoke(product#1016192.toString()), invoke(plant#1016193.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1016194)), if (isnull(productPlant#1016205)) null else createexternalrow(invoke(productPlant#1016205.systemId.toString()), invoke(productPlant#1016205.internalUUID.toString()), if (isnull(productPlant#1016205.plant)) null else createexternalrow(invoke(productPlant#1016205.plant.internalRefUUID.toString()), invoke(productPlant#1016205.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1016205.product)) null else createexternalrow(invoke(productPlant#1016205.product.internalRefUUID.toString()), invoke(productPlant#1016205.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1016205.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1016205.productionAspect)) null else createexternalrow(if (isnull(productPlant#1016205.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1016205.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#1016205.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1016205.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1016205.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1016205.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1016205.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#1016205.salesPlant)) null else createexternalrow(if (isnull(productPlant#1016205.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1016205.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1016205.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -21).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1016205.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1016205.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1016205.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1016205.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#1016222)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1016447)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#1016448, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#1016449, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, -25), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -25))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -26), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -26))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -27), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -27))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, -28), invoke(lambdavariable(MapObject, StringType, false, -28).toString()), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, -29), static_invoke(java.lang.Integer.valueOf(lambdavariable(MapObject, IntegerType, false, -29))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), false, -24).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true)), dayBucketDemands#1016735, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, -31), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -31))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, -32), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, false, -32))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -33), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -33))), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).demandVariances, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), false, -30).horizonEndDatetime)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true)), pointInTimeDemands#1016736, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#1017929, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#1017930, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#1017931, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37), createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, -37).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false)), configuration#1017932, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -38).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#1016139, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(dayBucketDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false),true), StructField(pointInTimeDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false),true), ... 5 more fields), obj#1016172: org.apache.spark.sql.Row
(1104) MapElements
Input [1]: [obj#1016172]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#1016179: org.apache.spark.sql.Row
(1105) SerializeFromObject
Input [1]: [obj#1016179]
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#1016186, 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#1016187, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -17), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsName#1016188, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -18), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsStartDatetime#1016189, mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -19), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsEndDatetime#1016190, if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, -20), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None) AS timeDependentSettingsValue#1016191]
(1106) Filter
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Condition : (isnotnull(product#1016186) AND isnotnull(plant#1016187))
(1107) Exchange
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: hashpartitioning(product#1016186, plant#1016187, 37), ENSURE_REQUIREMENTS, [plan_id=1639394]
(1108) Sort
Input [6]: [product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
Arguments: [product#1016186 ASC NULLS FIRST, plant#1016187 ASC NULLS FIRST], false, 0
(1109) SortMergeJoin
Left keys [2]: [product#1012489, plant#1012490]
Right keys [2]: [product#1016186, plant#1016187]
Join type: LeftOuter
Join condition: None
(1110) Project
Output [16]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1012939, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1015995, CASE WHEN isnotnull(timeDependentSettingsName#1016188) THEN timeDependentSettingsName#1016188 ELSE [] END AS timeDependentSettingsName#1018057, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#1016189) THEN timeDependentSettingsStartDatetime#1016189 ELSE [] END AS timeDependentSettingsStartDatetime#1018058, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#1016190) THEN timeDependentSettingsEndDatetime#1016190 ELSE [] END AS timeDependentSettingsEndDatetime#1018059, CASE WHEN isnotnull(timeDependentSettingsValue#1016191) THEN timeDependentSettingsValue#1016191 ELSE [] END AS timeDependentSettingsValue#1018060]
Input [16]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704, product#1016186, plant#1016187, timeDependentSettingsName#1016188, timeDependentSettingsStartDatetime#1016189, timeDependentSettingsEndDatetime#1016190, timeDependentSettingsValue#1016191]
(1111) AdaptiveSparkPlan
Output [16]: [product#1012489, plant#1012490, outboundUnit#1012577, stockDatetime#1012937, stockBatchQuantities#1012938, stockBatchShelfLifeEndDatetimes#1012939, dayBucketDemands#1014055, pointInTimeDemands#1014056, openGoodsMovementQuantities#1015702, openGoodsMovementAvailabilityDatetimes#1015703, openGoodsMovementShelfLifeEndDatetimes#1015704, configuration#1015995, timeDependentSettingsName#1018057, timeDependentSettingsStartDatetime#1018058, timeDependentSettingsEndDatetime#1018059, timeDependentSettingsValue#1018060]
Arguments: isFinalPlan=false