== Physical Plan ==
AdaptiveSparkPlan (1069)
+- == Current Plan ==
ResultQueryStage (264)
+- * Project (263)
+- * BroadcastHashJoin LeftOuter BuildRight (262)
:- AQEShuffleRead (225)
: +- ShuffleQueryStage (224), Statistics(sizeInBytes=497.3 KiB, rowCount=1.33E+3)
: +- Exchange (223)
: +- * Project (222)
: +- * Project (221)
: +- * Project (220)
: +- * BroadcastHashJoin LeftOuter BuildRight (219)
: :- AQEShuffleRead (169)
: : +- ShuffleQueryStage (168), Statistics(sizeInBytes=176.1 KiB, rowCount=1.33E+3)
: : +- Exchange (167)
: : +- * Project (166)
: : +- * BroadcastHashJoin LeftOuter BuildRight (165)
: : :- * Project (29)
: : : +- * Project (28)
: : : +- * Generate (27)
: : : +- * Generate (26)
: : : +- * Project (25)
: : : +- Project (24)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (23)
: : : :- * Project (14)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (13)
: : : : :- ShuffleQueryStage (4), Statistics(sizeInBytes=124.3 KiB, rowCount=1.33E+3)
: : : : : +- Exchange (3)
: : : : : +- * ColumnarToRow (2)
: : : : : +- Scan parquet (1)
: : : : +- BroadcastQueryStage (12), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : +- BroadcastExchange (11)
: : : : +- * Project (10)
: : : : +- ShuffleQueryStage (9), Statistics(sizeInBytes=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)
: : +- BroadcastQueryStage (164), Statistics(sizeInBytes=2.0 MiB, rowCount=359)
: : +- BroadcastExchange (163)
: : +- * HashAggregate (162)
: : +- AQEShuffleRead (161)
: : +- ShuffleQueryStage (160), Statistics(sizeInBytes=36.5 KiB, rowCount=359)
: : +- Exchange (159)
: : +- * HashAggregate (158)
: : +- * Project (157)
: : +- * BroadcastHashJoin Inner BuildLeft (156)
: : :- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=359)
: : : +- BroadcastExchange (110)
: : : +- AQEShuffleRead (109)
: : : +- ShuffleQueryStage (108), Statistics(sizeInBytes=42.1 KiB, rowCount=359)
: : : +- Exchange (107)
: : : +- * Project (106)
: : : +- * BroadcastHashJoin Inner BuildLeft (105)
: : : :- BroadcastQueryStage (87), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : : +- BroadcastExchange (86)
: : : : +- AQEShuffleRead (85)
: : : : +- ShuffleQueryStage (84), Statistics(sizeInBytes=46.2 KiB, rowCount=394)
: : : : +- Exchange (83)
: : : : +- * Project (82)
: : : : +- * Filter (81)
: : : : +- * Generate (80)
: : : : +- * Filter (79)
: : : : +- ObjectHashAggregate (78)
: : : : +- ObjectHashAggregate (77)
: : : : +- Generate (76)
: : : : +- * BroadcastHashJoin Inner BuildLeft (75)
: : : : :- BroadcastQueryStage (37), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : +- BroadcastExchange (36)
: : : : : +- ShuffleQueryStage (35), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : +- Exchange (34)
: : : : : +- * Project (33)
: : : : : +- * Filter (32)
: : : : : +- * ColumnarToRow (31)
: : : : : +- Scan parquet (30)
: : : : +- * Project (74)
: : : : +- * BroadcastHashJoin Inner BuildLeft (73)
: : : : :- BroadcastQueryStage (50), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : : +- BroadcastExchange (49)
: : : : : +- * Project (48)
: : : : : +- * Generate (47)
: : : : : +- * Project (46)
: : : : : +- * Filter (45)
: : : : : +- * Generate (44)
: : : : : +- ShuffleQueryStage (43), Statistics(sizeInBytes=1880.0 B, rowCount=1)
: : : : : +- Exchange (42)
: : : : : +- * Project (41)
: : : : : +- * Filter (40)
: : : : : +- * ColumnarToRow (39)
: : : : : +- Scan parquet (38)
: : : : +- * HashAggregate (72)
: : : : +- AQEShuffleRead (71)
: : : : +- ShuffleQueryStage (70), Statistics(sizeInBytes=16.6 KiB, rowCount=354)
: : : : +- Exchange (69)
: : : : +- * HashAggregate (68)
: : : : +- * Project (67)
: : : : +- * Generate (66)
: : : : +- * Project (65)
: : : : +- * Generate (64)
: : : : +- Project (63)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (62)
: : : : :- * Project (59)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (58)
: : : : : :- ShuffleQueryStage (55), Statistics(sizeInBytes=114.0 KiB, rowCount=1.33E+3)
: : : : : : +- Exchange (54)
: : : : : : +- * Filter (53)
: : : : : : +- * ColumnarToRow (52)
: : : : : : +- Scan parquet (51)
: : : : : +- BroadcastQueryStage (57), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- ReusedExchange (56)
: : : : +- BroadcastQueryStage (61), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : : +- ReusedExchange (60)
: : : +- * Project (104)
: : : +- * Generate (103)
: : : +- * Project (102)
: : : +- * Generate (101)
: : : +- Project (100)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (99)
: : : :- * Project (96)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (95)
: : : : :- ShuffleQueryStage (92), Statistics(sizeInBytes=124.3 KiB, rowCount=1.33E+3)
: : : : : +- Exchange (91)
: : : : : +- * Filter (90)
: : : : : +- * ColumnarToRow (89)
: : : : : +- Scan parquet (88)
: : : : +- BroadcastQueryStage (94), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : +- ReusedExchange (93)
: : : +- BroadcastQueryStage (98), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : +- ReusedExchange (97)
: : +- AQEShuffleRead (155)
: : +- ShuffleQueryStage (154), Statistics(sizeInBytes=39.3 KiB, rowCount=359)
: : +- Exchange (153)
: : +- * HashAggregate (152)
: : +- * HashAggregate (151)
: : +- * Project (150)
: : +- * BroadcastHashJoin Inner BuildLeft (149)
: : :- BroadcastQueryStage (134), Statistics(sizeInBytes=2.0 MiB, rowCount=394)
: : : +- BroadcastExchange (133)
: : : +- AQEShuffleRead (132)
: : : +- ShuffleQueryStage (131), Statistics(sizeInBytes=43.1 KiB, rowCount=394)
: : : +- Exchange (130)
: : : +- * Project (129)
: : : +- * Filter (128)
: : : +- * Generate (127)
: : : +- * Filter (126)
: : : +- ObjectHashAggregate (125)
: : : +- ObjectHashAggregate (124)
: : : +- Generate (123)
: : : +- * BroadcastHashJoin Inner BuildLeft (122)
: : : :- BroadcastQueryStage (113), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : +- ReusedExchange (112)
: : : +- * Project (121)
: : : +- * BroadcastHashJoin Inner BuildLeft (120)
: : : :- BroadcastQueryStage (115), Statistics(sizeInBytes=2.0 MiB, rowCount=11)
: : : : +- ReusedExchange (114)
: : : +- * HashAggregate (119)
: : : +- AQEShuffleRead (118)
: : : +- ShuffleQueryStage (117), Statistics(sizeInBytes=16.6 KiB, rowCount=354)
: : : +- ReusedExchange (116)
: : +- * Project (148)
: : +- * Generate (147)
: : +- * Project (146)
: : +- * Generate (145)
: : +- Project (144)
: : +- * BroadcastHashJoin LeftOuter BuildRight (143)
: : :- * Project (140)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (139)
: : : :- ShuffleQueryStage (136), Statistics(sizeInBytes=124.3 KiB, rowCount=1.33E+3)
: : : : +- ReusedExchange (135)
: : : +- BroadcastQueryStage (138), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : +- ReusedExchange (137)
: : +- BroadcastQueryStage (142), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : +- ReusedExchange (141)
: +- BroadcastQueryStage (218), Statistics(sizeInBytes=2.1 MiB, rowCount=1.33E+3)
: +- BroadcastExchange (217)
: +- AQEShuffleRead (216)
: +- ShuffleQueryStage (215), Statistics(sizeInBytes=372.9 KiB, rowCount=1.33E+3)
: +- Exchange (214)
: +- * SerializeFromObject (213)
: +- * MapElements (212)
: +- * DeserializeToObject (211)
: +- * Project (210)
: +- * BroadcastHashJoin LeftOuter BuildRight (209)
: :- ObjectHashAggregate (201)
: : +- ObjectHashAggregate (200)
: : +- * Project (199)
: : +- * BroadcastHashJoin LeftOuter BuildRight (198)
: : :- * Project (193)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (192)
: : : :- * Project (189)
: : : : +- * Project (188)
: : : : +- * Generate (187)
: : : : +- * Generate (186)
: : : : +- * Project (185)
: : : : +- Project (184)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (183)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (180)
: : : : : :- ShuffleQueryStage (171), Statistics(sizeInBytes=124.3 KiB, rowCount=1.33E+3)
: : : : : : +- ReusedExchange (170)
: : : : : +- BroadcastQueryStage (179), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- BroadcastExchange (178)
: : : : : +- * Project (177)
: : : : : +- ShuffleQueryStage (176), Statistics(sizeInBytes=1029.3 KiB, rowCount=1.43E+3)
: : : : : +- Exchange (175)
: : : : : +- * Project (174)
: : : : : +- * ColumnarToRow (173)
: : : : : +- Scan parquet (172)
: : : : +- BroadcastQueryStage (182), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : : +- ReusedExchange (181)
: : : +- BroadcastQueryStage (191), Statistics(sizeInBytes=2.0 MiB, rowCount=359)
: : : +- ReusedExchange (190)
: : +- BroadcastQueryStage (197), Statistics(sizeInBytes=2.1 MiB, rowCount=1.33E+3)
: : +- BroadcastExchange (196)
: : +- * ColumnarToRow (195)
: : +- Scan parquet (194)
: +- BroadcastQueryStage (208), Statistics(sizeInBytes=2.0 MiB, rowCount=21)
: +- BroadcastExchange (207)
: +- ShuffleQueryStage (206), Statistics(sizeInBytes=1512.0 B, rowCount=21)
: +- Exchange (205)
: +- * Project (204)
: +- * ColumnarToRow (203)
: +- Scan parquet (202)
+- BroadcastQueryStage (261), Statistics(sizeInBytes=2.1 MiB, rowCount=1.33E+3)
+- BroadcastExchange (260)
+- AQEShuffleRead (259)
+- ShuffleQueryStage (258), Statistics(sizeInBytes=300.4 KiB, rowCount=1.33E+3)
+- Exchange (257)
+- * Filter (256)
+- * SerializeFromObject (255)
+- * MapElements (254)
+- * DeserializeToObject (253)
+- Project (252)
+- * Project (251)
+- * Project (250)
+- * BroadcastHashJoin LeftOuter BuildRight (249)
:- AQEShuffleRead (246)
: +- ShuffleQueryStage (245), Statistics(sizeInBytes=1154.4 KiB, rowCount=1.33E+3)
: +- Exchange (244)
: +- * Project (243)
: +- * BroadcastHashJoin LeftOuter BuildRight (242)
: :- * Project (239)
: : +- * Project (238)
: : +- * Generate (237)
: : +- * Generate (236)
: : +- * Project (235)
: : +- Project (234)
: : +- * BroadcastHashJoin LeftOuter BuildRight (233)
: : :- * BroadcastHashJoin LeftOuter BuildRight (230)
: : : :- ShuffleQueryStage (227), Statistics(sizeInBytes=124.3 KiB, rowCount=1.33E+3)
: : : : +- ReusedExchange (226)
: : : +- BroadcastQueryStage (229), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : +- ReusedExchange (228)
: : +- BroadcastQueryStage (232), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : +- ReusedExchange (231)
: +- BroadcastQueryStage (241), Statistics(sizeInBytes=2.0 MiB, rowCount=359)
: +- ReusedExchange (240)
+- BroadcastQueryStage (248), Statistics(sizeInBytes=2.1 MiB, rowCount=1.33E+3)
+- ReusedExchange (247)
+- == Initial Plan ==
Project (1068)
+- SortMergeJoin LeftOuter (1067)
:- Sort (659)
: +- Exchange (658)
: +- Project (657)
: +- BroadcastHashJoin LeftOuter BuildRight (656)
: :- Project (646)
: : +- SortMergeJoin LeftOuter (645)
: : :- Sort (445)
: : : +- Exchange (444)
: : : +- Project (443)
: : : +- SortMergeJoin LeftOuter (442)
: : : :- Sort (283)
: : : : +- Project (282)
: : : : +- Project (281)
: : : : +- Generate (280)
: : : : +- Generate (279)
: : : : +- Project (278)
: : : : +- Project (277)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (276)
: : : : :- Project (271)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (270)
: : : : : :- Exchange (265)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (269)
: : : : : +- Project (268)
: : : : : +- Exchange (267)
: : : : : +- Project (266)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (275)
: : : : +- Exchange (274)
: : : : +- Project (273)
: : : : +- Filter (272)
: : : : +- Scan parquet (15)
: : : +- Sort (441)
: : : +- HashAggregate (440)
: : : +- Exchange (439)
: : : +- HashAggregate (438)
: : : +- Project (437)
: : : +- SortMergeJoin Inner (436)
: : : :- Sort (356)
: : : : +- Exchange (355)
: : : : +- Project (354)
: : : : +- SortMergeJoin Inner (353)
: : : : :- Sort (331)
: : : : : +- Exchange (330)
: : : : : +- Project (329)
: : : : : +- Filter (328)
: : : : : +- Generate (327)
: : : : : +- Filter (326)
: : : : : +- ObjectHashAggregate (325)
: : : : : +- ObjectHashAggregate (324)
: : : : : +- Generate (323)
: : : : : +- BroadcastHashJoin Inner BuildLeft (322)
: : : : : :- BroadcastExchange (287)
: : : : : : +- Exchange (286)
: : : : : : +- Project (285)
: : : : : : +- Filter (284)
: : : : : : +- Scan parquet (30)
: : : : : +- Project (321)
: : : : : +- BroadcastHashJoin Inner BuildLeft (320)
: : : : : :- BroadcastExchange (296)
: : : : : : +- Project (295)
: : : : : : +- Generate (294)
: : : : : : +- Project (293)
: : : : : : +- Filter (292)
: : : : : : +- Generate (291)
: : : : : : +- Exchange (290)
: : : : : : +- Project (289)
: : : : : : +- Filter (288)
: : : : : : +- Scan parquet (38)
: : : : : +- HashAggregate (319)
: : : : : +- Exchange (318)
: : : : : +- HashAggregate (317)
: : : : : +- Project (316)
: : : : : +- Generate (315)
: : : : : +- Project (314)
: : : : : +- Generate (313)
: : : : : +- Project (312)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (311)
: : : : : :- Project (305)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (304)
: : : : : : :- Exchange (298)
: : : : : : : +- Filter (297)
: : : : : : : +- Scan parquet (51)
: : : : : : +- BroadcastExchange (303)
: : : : : : +- Project (302)
: : : : : : +- Exchange (301)
: : : : : : +- Project (300)
: : : : : : +- Scan parquet (299)
: : : : : +- BroadcastExchange (310)
: : : : : +- Exchange (309)
: : : : : +- Project (308)
: : : : : +- Filter (307)
: : : : : +- Scan parquet (306)
: : : : +- Sort (352)
: : : : +- Project (351)
: : : : +- Generate (350)
: : : : +- Project (349)
: : : : +- Generate (348)
: : : : +- Project (347)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (346)
: : : : :- Project (340)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (339)
: : : : : :- Exchange (333)
: : : : : : +- Filter (332)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastExchange (338)
: : : : : +- Project (337)
: : : : : +- Exchange (336)
: : : : : +- Project (335)
: : : : : +- Scan parquet (334)
: : : : +- BroadcastExchange (345)
: : : : +- Exchange (344)
: : : : +- Project (343)
: : : : +- Filter (342)
: : : : +- Scan parquet (341)
: : : +- Sort (435)
: : : +- Exchange (434)
: : : +- HashAggregate (433)
: : : +- HashAggregate (432)
: : : +- Project (431)
: : : +- SortMergeJoin Inner (430)
: : : :- Sort (407)
: : : : +- Exchange (406)
: : : : +- Project (405)
: : : : +- Filter (404)
: : : : +- Generate (403)
: : : : +- Filter (402)
: : : : +- ObjectHashAggregate (401)
: : : : +- ObjectHashAggregate (400)
: : : : +- Generate (399)
: : : : +- BroadcastHashJoin Inner BuildLeft (398)
: : : : :- BroadcastExchange (361)
: : : : : +- Exchange (360)
: : : : : +- Project (359)
: : : : : +- Filter (358)
: : : : : +- Scan parquet (357)
: : : : +- Project (397)
: : : : +- BroadcastHashJoin Inner BuildLeft (396)
: : : : :- BroadcastExchange (371)
: : : : : +- Project (370)
: : : : : +- Generate (369)
: : : : : +- Project (368)
: : : : : +- Filter (367)
: : : : : +- Generate (366)
: : : : : +- Exchange (365)
: : : : : +- Project (364)
: : : : : +- Filter (363)
: : : : : +- Scan parquet (362)
: : : : +- HashAggregate (395)
: : : : +- Exchange (394)
: : : : +- HashAggregate (393)
: : : : +- Project (392)
: : : : +- Generate (391)
: : : : +- Project (390)
: : : : +- Generate (389)
: : : : +- Project (388)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (387)
: : : : :- Project (381)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (380)
: : : : : :- Exchange (374)
: : : : : : +- Filter (373)
: : : : : : +- Scan parquet (372)
: : : : : +- BroadcastExchange (379)
: : : : : +- Project (378)
: : : : : +- Exchange (377)
: : : : : +- Project (376)
: : : : : +- Scan parquet (375)
: : : : +- BroadcastExchange (386)
: : : : +- Exchange (385)
: : : : +- Project (384)
: : : : +- Filter (383)
: : : : +- Scan parquet (382)
: : : +- Sort (429)
: : : +- Project (428)
: : : +- Generate (427)
: : : +- Project (426)
: : : +- Generate (425)
: : : +- Project (424)
: : : +- BroadcastHashJoin LeftOuter BuildRight (423)
: : : :- Project (417)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (416)
: : : : :- Exchange (410)
: : : : : +- Filter (409)
: : : : : +- Scan parquet (408)
: : : : +- BroadcastExchange (415)
: : : : +- Project (414)
: : : : +- Exchange (413)
: : : : +- Project (412)
: : : : +- Scan parquet (411)
: : : +- BroadcastExchange (422)
: : : +- Exchange (421)
: : : +- Project (420)
: : : +- Filter (419)
: : : +- Scan parquet (418)
: : +- Sort (644)
: : +- Exchange (643)
: : +- SerializeFromObject (642)
: : +- MapElements (641)
: : +- DeserializeToObject (640)
: : +- Project (639)
: : +- BroadcastHashJoin LeftOuter BuildRight (638)
: : :- ObjectHashAggregate (634)
: : : +- ObjectHashAggregate (633)
: : : +- Project (632)
: : : +- BroadcastHashJoin LeftOuter BuildRight (631)
: : : :- Project (629)
: : : : +- SortMergeJoin LeftOuter (628)
: : : : :- Sort (465)
: : : : : +- Project (464)
: : : : : +- Project (463)
: : : : : +- Generate (462)
: : : : : +- Generate (461)
: : : : : +- Project (460)
: : : : : +- Project (459)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (458)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (452)
: : : : : : :- Exchange (447)
: : : : : : : +- Scan parquet (446)
: : : : : : +- BroadcastExchange (451)
: : : : : : +- Project (450)
: : : : : : +- Exchange (449)
: : : : : : +- Project (448)
: : : : : : +- Scan parquet (172)
: : : : : +- BroadcastExchange (457)
: : : : : +- Exchange (456)
: : : : : +- Project (455)
: : : : : +- Filter (454)
: : : : : +- Scan parquet (453)
: : : : +- Sort (627)
: : : : +- HashAggregate (626)
: : : : +- Exchange (625)
: : : : +- HashAggregate (624)
: : : : +- Project (623)
: : : : +- SortMergeJoin Inner (622)
: : : : :- Sort (542)
: : : : : +- Exchange (541)
: : : : : +- Project (540)
: : : : : +- SortMergeJoin Inner (539)
: : : : : :- Sort (516)
: : : : : : +- Exchange (515)
: : : : : : +- Project (514)
: : : : : : +- Filter (513)
: : : : : : +- Generate (512)
: : : : : : +- Filter (511)
: : : : : : +- ObjectHashAggregate (510)
: : : : : : +- ObjectHashAggregate (509)
: : : : : : +- Generate (508)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (507)
: : : : : : :- BroadcastExchange (470)
: : : : : : : +- Exchange (469)
: : : : : : : +- Project (468)
: : : : : : : +- Filter (467)
: : : : : : : +- Scan parquet (466)
: : : : : : +- Project (506)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (505)
: : : : : : :- BroadcastExchange (480)
: : : : : : : +- Project (479)
: : : : : : : +- Generate (478)
: : : : : : : +- Project (477)
: : : : : : : +- Filter (476)
: : : : : : : +- Generate (475)
: : : : : : : +- Exchange (474)
: : : : : : : +- Project (473)
: : : : : : : +- Filter (472)
: : : : : : : +- Scan parquet (471)
: : : : : : +- HashAggregate (504)
: : : : : : +- Exchange (503)
: : : : : : +- HashAggregate (502)
: : : : : : +- Project (501)
: : : : : : +- Generate (500)
: : : : : : +- Project (499)
: : : : : : +- Generate (498)
: : : : : : +- Project (497)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (496)
: : : : : : :- Project (490)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (489)
: : : : : : : :- Exchange (483)
: : : : : : : : +- Filter (482)
: : : : : : : : +- Scan parquet (481)
: : : : : : : +- BroadcastExchange (488)
: : : : : : : +- Project (487)
: : : : : : : +- Exchange (486)
: : : : : : : +- Project (485)
: : : : : : : +- Scan parquet (484)
: : : : : : +- BroadcastExchange (495)
: : : : : : +- Exchange (494)
: : : : : : +- Project (493)
: : : : : : +- Filter (492)
: : : : : : +- Scan parquet (491)
: : : : : +- Sort (538)
: : : : : +- Project (537)
: : : : : +- Generate (536)
: : : : : +- Project (535)
: : : : : +- Generate (534)
: : : : : +- Project (533)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (532)
: : : : : :- Project (526)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (525)
: : : : : : :- Exchange (519)
: : : : : : : +- Filter (518)
: : : : : : : +- Scan parquet (517)
: : : : : : +- BroadcastExchange (524)
: : : : : : +- Project (523)
: : : : : : +- Exchange (522)
: : : : : : +- Project (521)
: : : : : : +- Scan parquet (520)
: : : : : +- BroadcastExchange (531)
: : : : : +- Exchange (530)
: : : : : +- Project (529)
: : : : : +- Filter (528)
: : : : : +- Scan parquet (527)
: : : : +- Sort (621)
: : : : +- Exchange (620)
: : : : +- HashAggregate (619)
: : : : +- HashAggregate (618)
: : : : +- Project (617)
: : : : +- SortMergeJoin Inner (616)
: : : : :- Sort (593)
: : : : : +- Exchange (592)
: : : : : +- Project (591)
: : : : : +- Filter (590)
: : : : : +- Generate (589)
: : : : : +- Filter (588)
: : : : : +- ObjectHashAggregate (587)
: : : : : +- ObjectHashAggregate (586)
: : : : : +- Generate (585)
: : : : : +- BroadcastHashJoin Inner BuildLeft (584)
: : : : : :- BroadcastExchange (547)
: : : : : : +- Exchange (546)
: : : : : : +- Project (545)
: : : : : : +- Filter (544)
: : : : : : +- Scan parquet (543)
: : : : : +- Project (583)
: : : : : +- BroadcastHashJoin Inner BuildLeft (582)
: : : : : :- BroadcastExchange (557)
: : : : : : +- Project (556)
: : : : : : +- Generate (555)
: : : : : : +- Project (554)
: : : : : : +- Filter (553)
: : : : : : +- Generate (552)
: : : : : : +- Exchange (551)
: : : : : : +- Project (550)
: : : : : : +- Filter (549)
: : : : : : +- Scan parquet (548)
: : : : : +- HashAggregate (581)
: : : : : +- Exchange (580)
: : : : : +- HashAggregate (579)
: : : : : +- Project (578)
: : : : : +- Generate (577)
: : : : : +- Project (576)
: : : : : +- Generate (575)
: : : : : +- Project (574)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (573)
: : : : : :- Project (567)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (566)
: : : : : : :- Exchange (560)
: : : : : : : +- Filter (559)
: : : : : : : +- Scan parquet (558)
: : : : : : +- BroadcastExchange (565)
: : : : : : +- Project (564)
: : : : : : +- Exchange (563)
: : : : : : +- Project (562)
: : : : : : +- Scan parquet (561)
: : : : : +- BroadcastExchange (572)
: : : : : +- Exchange (571)
: : : : : +- Project (570)
: : : : : +- Filter (569)
: : : : : +- Scan parquet (568)
: : : : +- Sort (615)
: : : : +- Project (614)
: : : : +- Generate (613)
: : : : +- Project (612)
: : : : +- Generate (611)
: : : : +- Project (610)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (609)
: : : : :- Project (603)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (602)
: : : : : :- Exchange (596)
: : : : : : +- Filter (595)
: : : : : : +- Scan parquet (594)
: : : : : +- BroadcastExchange (601)
: : : : : +- Project (600)
: : : : : +- Exchange (599)
: : : : : +- Project (598)
: : : : : +- Scan parquet (597)
: : : : +- BroadcastExchange (608)
: : : : +- Exchange (607)
: : : : +- Project (606)
: : : : +- Filter (605)
: : : : +- Scan parquet (604)
: : : +- BroadcastExchange (630)
: : : +- Scan parquet (194)
: : +- BroadcastExchange (637)
: : +- Exchange (636)
: : +- Project (635)
: : +- Scan parquet (202)
: +- BroadcastExchange (655)
: +- Project (654)
: +- ObjectHashAggregate (653)
: +- Exchange (652)
: +- ObjectHashAggregate (651)
: +- Filter (650)
: +- InMemoryTableScan (647)
: +- InMemoryRelation (648)
: +- LocalTableScan (649)
+- Sort (1066)
+- Exchange (1065)
+- Filter (1064)
+- SerializeFromObject (1063)
+- MapElements (1062)
+- DeserializeToObject (1061)
+- Project (1060)
+- BroadcastHashJoin LeftOuter BuildRight (1059)
:- Project (1050)
: +- SortMergeJoin LeftOuter (1049)
: :- Sort (846)
: : +- Exchange (845)
: : +- Project (844)
: : +- SortMergeJoin LeftOuter (843)
: : :- Sort (680)
: : : +- Project (679)
: : : +- Project (678)
: : : +- Generate (677)
: : : +- Generate (676)
: : : +- Project (675)
: : : +- Project (674)
: : : +- BroadcastHashJoin LeftOuter BuildRight (673)
: : : :- BroadcastHashJoin LeftOuter BuildRight (667)
: : : : :- Exchange (661)
: : : : : +- Scan parquet (660)
: : : : +- BroadcastExchange (666)
: : : : +- Project (665)
: : : : +- Exchange (664)
: : : : +- Project (663)
: : : : +- Scan parquet (662)
: : : +- BroadcastExchange (672)
: : : +- Exchange (671)
: : : +- Project (670)
: : : +- Filter (669)
: : : +- Scan parquet (668)
: : +- Sort (842)
: : +- HashAggregate (841)
: : +- Exchange (840)
: : +- HashAggregate (839)
: : +- Project (838)
: : +- SortMergeJoin Inner (837)
: : :- Sort (757)
: : : +- Exchange (756)
: : : +- Project (755)
: : : +- SortMergeJoin Inner (754)
: : : :- Sort (731)
: : : : +- Exchange (730)
: : : : +- Project (729)
: : : : +- Filter (728)
: : : : +- Generate (727)
: : : : +- Filter (726)
: : : : +- ObjectHashAggregate (725)
: : : : +- ObjectHashAggregate (724)
: : : : +- Generate (723)
: : : : +- BroadcastHashJoin Inner BuildLeft (722)
: : : : :- BroadcastExchange (685)
: : : : : +- Exchange (684)
: : : : : +- Project (683)
: : : : : +- Filter (682)
: : : : : +- Scan parquet (681)
: : : : +- Project (721)
: : : : +- BroadcastHashJoin Inner BuildLeft (720)
: : : : :- BroadcastExchange (695)
: : : : : +- Project (694)
: : : : : +- Generate (693)
: : : : : +- Project (692)
: : : : : +- Filter (691)
: : : : : +- Generate (690)
: : : : : +- Exchange (689)
: : : : : +- Project (688)
: : : : : +- Filter (687)
: : : : : +- Scan parquet (686)
: : : : +- HashAggregate (719)
: : : : +- Exchange (718)
: : : : +- HashAggregate (717)
: : : : +- Project (716)
: : : : +- Generate (715)
: : : : +- Project (714)
: : : : +- Generate (713)
: : : : +- Project (712)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (711)
: : : : :- Project (705)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (704)
: : : : : :- Exchange (698)
: : : : : : +- Filter (697)
: : : : : : +- Scan parquet (696)
: : : : : +- BroadcastExchange (703)
: : : : : +- Project (702)
: : : : : +- Exchange (701)
: : : : : +- Project (700)
: : : : : +- Scan parquet (699)
: : : : +- BroadcastExchange (710)
: : : : +- Exchange (709)
: : : : +- Project (708)
: : : : +- Filter (707)
: : : : +- Scan parquet (706)
: : : +- Sort (753)
: : : +- Project (752)
: : : +- Generate (751)
: : : +- Project (750)
: : : +- Generate (749)
: : : +- Project (748)
: : : +- BroadcastHashJoin LeftOuter BuildRight (747)
: : : :- Project (741)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (740)
: : : : :- Exchange (734)
: : : : : +- Filter (733)
: : : : : +- Scan parquet (732)
: : : : +- BroadcastExchange (739)
: : : : +- Project (738)
: : : : +- Exchange (737)
: : : : +- Project (736)
: : : : +- Scan parquet (735)
: : : +- BroadcastExchange (746)
: : : +- Exchange (745)
: : : +- Project (744)
: : : +- Filter (743)
: : : +- Scan parquet (742)
: : +- Sort (836)
: : +- Exchange (835)
: : +- HashAggregate (834)
: : +- HashAggregate (833)
: : +- Project (832)
: : +- SortMergeJoin Inner (831)
: : :- Sort (808)
: : : +- Exchange (807)
: : : +- Project (806)
: : : +- Filter (805)
: : : +- Generate (804)
: : : +- Filter (803)
: : : +- ObjectHashAggregate (802)
: : : +- ObjectHashAggregate (801)
: : : +- Generate (800)
: : : +- BroadcastHashJoin Inner BuildLeft (799)
: : : :- BroadcastExchange (762)
: : : : +- Exchange (761)
: : : : +- Project (760)
: : : : +- Filter (759)
: : : : +- Scan parquet (758)
: : : +- Project (798)
: : : +- BroadcastHashJoin Inner BuildLeft (797)
: : : :- BroadcastExchange (772)
: : : : +- Project (771)
: : : : +- Generate (770)
: : : : +- Project (769)
: : : : +- Filter (768)
: : : : +- Generate (767)
: : : : +- Exchange (766)
: : : : +- Project (765)
: : : : +- Filter (764)
: : : : +- Scan parquet (763)
: : : +- HashAggregate (796)
: : : +- Exchange (795)
: : : +- HashAggregate (794)
: : : +- Project (793)
: : : +- Generate (792)
: : : +- Project (791)
: : : +- Generate (790)
: : : +- Project (789)
: : : +- BroadcastHashJoin LeftOuter BuildRight (788)
: : : :- Project (782)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (781)
: : : : :- Exchange (775)
: : : : : +- Filter (774)
: : : : : +- Scan parquet (773)
: : : : +- BroadcastExchange (780)
: : : : +- Project (779)
: : : : +- Exchange (778)
: : : : +- Project (777)
: : : : +- Scan parquet (776)
: : : +- BroadcastExchange (787)
: : : +- Exchange (786)
: : : +- Project (785)
: : : +- Filter (784)
: : : +- Scan parquet (783)
: : +- Sort (830)
: : +- Project (829)
: : +- Generate (828)
: : +- Project (827)
: : +- Generate (826)
: : +- Project (825)
: : +- BroadcastHashJoin LeftOuter BuildRight (824)
: : :- Project (818)
: : : +- BroadcastHashJoin LeftOuter BuildRight (817)
: : : :- Exchange (811)
: : : : +- Filter (810)
: : : : +- Scan parquet (809)
: : : +- BroadcastExchange (816)
: : : +- Project (815)
: : : +- Exchange (814)
: : : +- Project (813)
: : : +- Scan parquet (812)
: : +- BroadcastExchange (823)
: : +- Exchange (822)
: : +- Project (821)
: : +- Filter (820)
: : +- Scan parquet (819)
: +- Sort (1048)
: +- Exchange (1047)
: +- SerializeFromObject (1046)
: +- MapElements (1045)
: +- DeserializeToObject (1044)
: +- Project (1043)
: +- BroadcastHashJoin LeftOuter BuildRight (1042)
: :- ObjectHashAggregate (1037)
: : +- ObjectHashAggregate (1036)
: : +- Project (1035)
: : +- BroadcastHashJoin LeftOuter BuildRight (1034)
: : :- Project (1031)
: : : +- SortMergeJoin LeftOuter (1030)
: : : :- Sort (867)
: : : : +- Project (866)
: : : : +- Project (865)
: : : : +- Generate (864)
: : : : +- Generate (863)
: : : : +- Project (862)
: : : : +- Project (861)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (860)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (854)
: : : : : :- Exchange (848)
: : : : : : +- Scan parquet (847)
: : : : : +- BroadcastExchange (853)
: : : : : +- Project (852)
: : : : : +- Exchange (851)
: : : : : +- Project (850)
: : : : : +- Scan parquet (849)
: : : : +- BroadcastExchange (859)
: : : : +- Exchange (858)
: : : : +- Project (857)
: : : : +- Filter (856)
: : : : +- Scan parquet (855)
: : : +- Sort (1029)
: : : +- HashAggregate (1028)
: : : +- Exchange (1027)
: : : +- HashAggregate (1026)
: : : +- Project (1025)
: : : +- SortMergeJoin Inner (1024)
: : : :- Sort (944)
: : : : +- Exchange (943)
: : : : +- Project (942)
: : : : +- SortMergeJoin Inner (941)
: : : : :- Sort (918)
: : : : : +- Exchange (917)
: : : : : +- Project (916)
: : : : : +- Filter (915)
: : : : : +- Generate (914)
: : : : : +- Filter (913)
: : : : : +- ObjectHashAggregate (912)
: : : : : +- ObjectHashAggregate (911)
: : : : : +- Generate (910)
: : : : : +- BroadcastHashJoin Inner BuildLeft (909)
: : : : : :- BroadcastExchange (872)
: : : : : : +- Exchange (871)
: : : : : : +- Project (870)
: : : : : : +- Filter (869)
: : : : : : +- Scan parquet (868)
: : : : : +- Project (908)
: : : : : +- BroadcastHashJoin Inner BuildLeft (907)
: : : : : :- BroadcastExchange (882)
: : : : : : +- Project (881)
: : : : : : +- Generate (880)
: : : : : : +- Project (879)
: : : : : : +- Filter (878)
: : : : : : +- Generate (877)
: : : : : : +- Exchange (876)
: : : : : : +- Project (875)
: : : : : : +- Filter (874)
: : : : : : +- Scan parquet (873)
: : : : : +- HashAggregate (906)
: : : : : +- Exchange (905)
: : : : : +- HashAggregate (904)
: : : : : +- Project (903)
: : : : : +- Generate (902)
: : : : : +- Project (901)
: : : : : +- Generate (900)
: : : : : +- Project (899)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (898)
: : : : : :- Project (892)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (891)
: : : : : : :- Exchange (885)
: : : : : : : +- Filter (884)
: : : : : : : +- Scan parquet (883)
: : : : : : +- BroadcastExchange (890)
: : : : : : +- Project (889)
: : : : : : +- Exchange (888)
: : : : : : +- Project (887)
: : : : : : +- Scan parquet (886)
: : : : : +- BroadcastExchange (897)
: : : : : +- Exchange (896)
: : : : : +- Project (895)
: : : : : +- Filter (894)
: : : : : +- Scan parquet (893)
: : : : +- Sort (940)
: : : : +- Project (939)
: : : : +- Generate (938)
: : : : +- Project (937)
: : : : +- Generate (936)
: : : : +- Project (935)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (934)
: : : : :- Project (928)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (927)
: : : : : :- Exchange (921)
: : : : : : +- Filter (920)
: : : : : : +- Scan parquet (919)
: : : : : +- BroadcastExchange (926)
: : : : : +- Project (925)
: : : : : +- Exchange (924)
: : : : : +- Project (923)
: : : : : +- Scan parquet (922)
: : : : +- BroadcastExchange (933)
: : : : +- Exchange (932)
: : : : +- Project (931)
: : : : +- Filter (930)
: : : : +- Scan parquet (929)
: : : +- Sort (1023)
: : : +- Exchange (1022)
: : : +- HashAggregate (1021)
: : : +- HashAggregate (1020)
: : : +- Project (1019)
: : : +- SortMergeJoin Inner (1018)
: : : :- Sort (995)
: : : : +- Exchange (994)
: : : : +- Project (993)
: : : : +- Filter (992)
: : : : +- Generate (991)
: : : : +- Filter (990)
: : : : +- ObjectHashAggregate (989)
: : : : +- ObjectHashAggregate (988)
: : : : +- Generate (987)
: : : : +- BroadcastHashJoin Inner BuildLeft (986)
: : : : :- BroadcastExchange (949)
: : : : : +- Exchange (948)
: : : : : +- Project (947)
: : : : : +- Filter (946)
: : : : : +- Scan parquet (945)
: : : : +- Project (985)
: : : : +- BroadcastHashJoin Inner BuildLeft (984)
: : : : :- BroadcastExchange (959)
: : : : : +- Project (958)
: : : : : +- Generate (957)
: : : : : +- Project (956)
: : : : : +- Filter (955)
: : : : : +- Generate (954)
: : : : : +- Exchange (953)
: : : : : +- Project (952)
: : : : : +- Filter (951)
: : : : : +- Scan parquet (950)
: : : : +- HashAggregate (983)
: : : : +- Exchange (982)
: : : : +- HashAggregate (981)
: : : : +- Project (980)
: : : : +- Generate (979)
: : : : +- Project (978)
: : : : +- Generate (977)
: : : : +- Project (976)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (975)
: : : : :- Project (969)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (968)
: : : : : :- Exchange (962)
: : : : : : +- Filter (961)
: : : : : : +- Scan parquet (960)
: : : : : +- BroadcastExchange (967)
: : : : : +- Project (966)
: : : : : +- Exchange (965)
: : : : : +- Project (964)
: : : : : +- Scan parquet (963)
: : : : +- BroadcastExchange (974)
: : : : +- Exchange (973)
: : : : +- Project (972)
: : : : +- Filter (971)
: : : : +- Scan parquet (970)
: : : +- Sort (1017)
: : : +- Project (1016)
: : : +- Generate (1015)
: : : +- Project (1014)
: : : +- Generate (1013)
: : : +- Project (1012)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1011)
: : : :- Project (1005)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1004)
: : : : :- Exchange (998)
: : : : : +- Filter (997)
: : : : : +- Scan parquet (996)
: : : : +- BroadcastExchange (1003)
: : : : +- Project (1002)
: : : : +- Exchange (1001)
: : : : +- Project (1000)
: : : : +- Scan parquet (999)
: : : +- BroadcastExchange (1010)
: : : +- Exchange (1009)
: : : +- Project (1008)
: : : +- Filter (1007)
: : : +- Scan parquet (1006)
: : +- BroadcastExchange (1033)
: : +- Scan parquet (1032)
: +- BroadcastExchange (1041)
: +- Exchange (1040)
: +- Project (1039)
: +- Scan parquet (1038)
+- BroadcastExchange (1058)
+- Project (1057)
+- ObjectHashAggregate (1056)
+- Exchange (1055)
+- ObjectHashAggregate (1054)
+- Filter (1053)
+- InMemoryTableScan (1051)
+- InMemoryRelation (1052)
+- LocalTableScan (649)
(1) Scan parquet
Output [3]: [product#13791972, plant#13791973, orderDateTime#13791974]
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/10000000539/shardId=0_1_10000000539]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#13791972, plant#13791973, orderDateTime#13791974]
(3) Exchange
Input [3]: [product#13791972, plant#13791973, orderDateTime#13791974]
Arguments: hashpartitioning(product#13791972, plant#13791973, 37), REPARTITION_BY_NUM, [plan_id=13511157]
(4) ShuffleQueryStage
Output [3]: [product#13791972, plant#13791973, orderDateTime#13791974]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#13792001, product#13792002, productionAspect#13792004, systemId#13791999]
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#13792001, product#13792002, productionAspect#13792004, systemId#13791999]
(7) Project [codegen id : 2]
Output [4]: [plant#13792001.internalRefUUID AS _extract_internalRefUUID#13797980, product#13792002.internalRefUUID AS _extract_internalRefUUID#13797981, productionAspect#13792004.productMovementPlants.unitOfIssue.code AS _extract_code#13797978, productionAspect#13792004.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13797979]
Input [4]: [plant#13792001, product#13792002, productionAspect#13792004, systemId#13791999]
(8) Exchange
Input [4]: [_extract_internalRefUUID#13797980, _extract_internalRefUUID#13797981, _extract_code#13797978, _extract_internalRefUUID#13797979]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13511171]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#13797980, _extract_internalRefUUID#13797981, _extract_code#13797978, _extract_internalRefUUID#13797979]
Arguments: 1
(10) Project [codegen id : 83]
Output [4]: [_extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
Input [4]: [_extract_internalRefUUID#13797980, _extract_internalRefUUID#13797981, _extract_code#13797978, _extract_internalRefUUID#13797979]
(11) BroadcastExchange
Input [4]: [_extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
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=13527833]
(12) BroadcastQueryStage
Output [4]: [_extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
Arguments: 154
(13) BroadcastHashJoin [codegen id : 167]
Left keys [4]: [coalesce(product#13791972, ), isnull(product#13791972), coalesce(plant#13791973, ), isnull(plant#13791973)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797981, ), isnull(_extract_internalRefUUID#13797981), coalesce(_extract_internalRefUUID#13797980, ), isnull(_extract_internalRefUUID#13797980)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 167]
Output [5]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_code#13797978, _extract_internalRefUUID#13797979]
Input [7]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
(15) Scan parquet
Output [4]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041, systemId#13792034]
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#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041, systemId#13792034]
(17) Filter [codegen id : 3]
Input [4]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041, systemId#13792034]
Condition : isnotnull(internalUUID#13792035)
(18) Project [codegen id : 3]
Output [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Input [4]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041, systemId#13792034]
(19) Exchange
Input [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13511192]
(20) ShuffleQueryStage
Output [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Arguments: 2
(21) BroadcastExchange
Input [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13532912]
(22) BroadcastQueryStage
Output [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Arguments: 215
(23) BroadcastHashJoin [codegen id : 167]
Left keys [1]: [product#13791972]
Right keys [1]: [internalUUID#13792035]
Join type: LeftOuter
Join condition: None
(24) Project
Output [4]: [product#13791972, plant#13791973, orderDateTime#13791974, filter(unitOfMeasureConversions#13792041, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797978) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797979)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792039.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792039.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792047]
Input [8]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_code#13797978, _extract_internalRefUUID#13797979, internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
(25) Project [codegen id : 168]
Output [5]: [product#13791972, plant#13791973, orderDateTime#13791974, filteredUnitOfMeasureConversions#13792047.quantityDenominator AS _extract_quantityDenominator#13797976, filteredUnitOfMeasureConversions#13792047.quantityNumerator AS _extract_quantityNumerator#13797977]
Input [4]: [product#13791972, plant#13791973, orderDateTime#13791974, filteredUnitOfMeasureConversions#13792047]
(26) Generate [codegen id : 168]
Input [5]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_quantityDenominator#13797976, _extract_quantityNumerator#13797977]
Arguments: explode(_extract_quantityNumerator#13797977), [product#13791972, plant#13791973, orderDateTime#13791974, _extract_quantityDenominator#13797976], true, [quantityNumerator#13792055]
(27) Generate [codegen id : 168]
Input [5]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_quantityDenominator#13797976, quantityNumerator#13792055]
Arguments: explode(_extract_quantityDenominator#13797976), [product#13791972, plant#13791973, orderDateTime#13791974, quantityNumerator#13792055], true, [quantityDenominator#13792058]
(28) Project [codegen id : 168]
Output [4]: [product#13791972, plant#13791973, orderDateTime#13791974, (cast(quantityNumerator#13792055 as double) / cast(quantityDenominator#13792058 as double)) AS outboundUnit#13792059]
Input [5]: [product#13791972, plant#13791973, orderDateTime#13791974, quantityNumerator#13792055, quantityDenominator#13792058]
(29) Project [codegen id : 168]
Output [4]: [product#13791972, plant#13791973, orderDateTime#13791974, CASE WHEN (isnull(outboundUnit#13792059) OR (outboundUnit#13792059 <= 0.0)) THEN 1.0 ELSE outboundUnit#13792059 END AS outboundUnit#13792060]
Input [4]: [product#13791972, plant#13791973, orderDateTime#13791974, outboundUnit#13792059]
(30) Scan parquet
Output [6]: [internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, systemId#13792119]
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>>>>>
(31) ColumnarToRow [codegen id : 4]
Input [6]: [internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, systemId#13792119]
(32) Filter [codegen id : 4]
Input [6]: [internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, systemId#13792119]
Condition : (isnotnull(plant#13792122.internalRefUUID) AND isnotnull(product#13792121.internalRefUUID))
(33) Project [codegen id : 4]
Output [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
Input [6]: [internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, systemId#13792119]
(34) Exchange
Input [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13511220]
(35) ShuffleQueryStage
Output [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
Arguments: 3
(36) BroadcastExchange
Input [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
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=13526816]
(37) BroadcastQueryStage
Output [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
Arguments: 202
(38) Scan parquet
Output [2]: [marketUnit#13792061, distributionCenters#13792067]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(39) ColumnarToRow [codegen id : 5]
Input [2]: [marketUnit#13792061, distributionCenters#13792067]
(40) Filter [codegen id : 5]
Input [2]: [marketUnit#13792061, distributionCenters#13792067]
Condition : (((marketUnit#13792061 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13792067, true) > 0)) AND isnotnull(distributionCenters#13792067))
(41) Project [codegen id : 5]
Output [1]: [distributionCenters#13792067]
Input [2]: [marketUnit#13792061, distributionCenters#13792067]
(42) Exchange
Input [1]: [distributionCenters#13792067]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13511240]
(43) ShuffleQueryStage
Output [1]: [distributionCenters#13792067]
Arguments: 4
(44) Generate [codegen id : 84]
Input [1]: [distributionCenters#13792067]
Arguments: explode(distributionCenters#13792067), false, [distributionCenters#13792085]
(45) Filter [codegen id : 84]
Input [1]: [distributionCenters#13792085]
Condition : (((size(distributionCenters#13792085.storageLocations, true) > 0) AND isnotnull(distributionCenters#13792085.storageLocations)) AND isnotnull(distributionCenters#13792085.internalRefUUID))
(46) Project [codegen id : 84]
Output [2]: [distributionCenters#13792085.internalRefUUID AS _extract_internalRefUUID#13797704, distributionCenters#13792085.storageLocations AS _extract_storageLocations#13797705]
Input [1]: [distributionCenters#13792085]
(47) Generate [codegen id : 84]
Input [2]: [_extract_internalRefUUID#13797704, _extract_storageLocations#13797705]
Arguments: explode(_extract_storageLocations#13797705), [_extract_internalRefUUID#13797704], false, [storageLocations#13792092]
(48) Project [codegen id : 84]
Output [3]: [_extract_internalRefUUID#13797704 AS plantUuid#13792087, storageLocations#13792092.id AS storageLocId#13792093, storageLocations#13792092.internalRefUUID AS storageLocUuid#13792094]
Input [2]: [_extract_internalRefUUID#13797704, storageLocations#13792092]
(49) BroadcastExchange
Input [3]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13527857]
(50) BroadcastQueryStage
Output [3]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Arguments: 155
(51) Scan parquet
Output [2]: [product#13792337, plant#13792338]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(52) ColumnarToRow [codegen id : 6]
Input [2]: [product#13792337, plant#13792338]
(53) Filter [codegen id : 6]
Input [2]: [product#13792337, plant#13792338]
Condition : isnotnull(plant#13792338)
(54) Exchange
Input [2]: [product#13792337, plant#13792338]
Arguments: hashpartitioning(product#13792337, plant#13792338, 37), REPARTITION_BY_NUM, [plan_id=13511263]
(55) ShuffleQueryStage
Output [2]: [product#13792337, plant#13792338]
Arguments: 5
(56) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#13797983, _extract_internalRefUUID#13797984, _extract_internalRefUUID#13797982, _extract_internalRefUUID#13797985]
(57) BroadcastQueryStage
Output [4]: [_extract_code#13797983, _extract_internalRefUUID#13797984, _extract_internalRefUUID#13797982, _extract_internalRefUUID#13797985]
Arguments: 157
(58) BroadcastHashJoin [codegen id : 111]
Left keys [4]: [coalesce(product#13792337, ), isnull(product#13792337), coalesce(plant#13792338, ), isnull(plant#13792338)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797982, ), isnull(_extract_internalRefUUID#13797982), coalesce(_extract_internalRefUUID#13797985, ), isnull(_extract_internalRefUUID#13797985)]
Join type: LeftOuter
Join condition: None
(59) Project [codegen id : 111]
Output [4]: [product#13792337, plant#13792338, _extract_code#13797983, _extract_internalRefUUID#13797984]
Input [6]: [product#13792337, plant#13792338, _extract_code#13797983, _extract_internalRefUUID#13797984, _extract_internalRefUUID#13797982, _extract_internalRefUUID#13797985]
(60) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
(61) BroadcastQueryStage
Output [3]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
Arguments: 216
(62) BroadcastHashJoin [codegen id : 111]
Left keys [1]: [product#13792337]
Right keys [1]: [internalUUID#13792352]
Join type: LeftOuter
Join condition: None
(63) Project
Output [2]: [plant#13792338, filter(unitOfMeasureConversions#13792358, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797983) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797984)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792356.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792356.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792363]
Input [7]: [product#13792337, plant#13792338, _extract_code#13797983, _extract_internalRefUUID#13797984, internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
(64) Generate [codegen id : 112]
Input [2]: [plant#13792338, filteredUnitOfMeasureConversions#13792363]
Arguments: explode(filteredUnitOfMeasureConversions#13792363.quantityNumerator), [plant#13792338, filteredUnitOfMeasureConversions#13792363], true, [quantityNumerator#13792364]
(65) Project [codegen id : 112]
Output [2]: [plant#13792338, filteredUnitOfMeasureConversions#13792363.quantityDenominator AS _extract_quantityDenominator#13797706]
Input [3]: [plant#13792338, filteredUnitOfMeasureConversions#13792363, quantityNumerator#13792364]
(66) Generate [codegen id : 112]
Input [2]: [plant#13792338, _extract_quantityDenominator#13797706]
Arguments: explode(_extract_quantityDenominator#13797706), [plant#13792338], true, [quantityDenominator#13792365]
(67) Project [codegen id : 112]
Output [1]: [plant#13792338]
Input [2]: [plant#13792338, quantityDenominator#13792365]
(68) HashAggregate [codegen id : 112]
Input [1]: [plant#13792338]
Keys [1]: [plant#13792338]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792338]
(69) Exchange
Input [1]: [plant#13792338]
Arguments: hashpartitioning(plant#13792338, 37), ENSURE_REQUIREMENTS, [plan_id=13549863]
(70) ShuffleQueryStage
Output [1]: [plant#13792338]
Arguments: 237
(71) AQEShuffleRead
Input [1]: [plant#13792338]
Arguments: coalesced
(72) HashAggregate
Input [1]: [plant#13792338]
Keys [1]: [plant#13792338]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792338]
(73) BroadcastHashJoin
Left keys [1]: [plantUuid#13792087]
Right keys [1]: [plant#13792338]
Join type: Inner
Join condition: None
(74) Project
Output [3]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Input [4]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094, plant#13792338]
(75) BroadcastHashJoin [codegen id : 127]
Left keys [2]: [coalesce(plant#13792122.internalRefUUID, ), isnull(plant#13792122.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13792087, ), isnull(plantUuid#13792087)]
Join type: Inner
Join condition: None
(76) Generate
Input [9]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Arguments: explode(filter(stockQuantities#13792124, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13792094) AND (lambda x#13792128.storageLocation.Id = storageLocId#13792093)), lambda x#13792128, false))), [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, plantUuid#13792087], false, [stockQuantity#13792129]
(77) ObjectHashAggregate
Input [7]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, plantUuid#13792087, stockQuantity#13792129]
Keys [5]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119]
Functions [2]: [partial_first(calculationDateTime#13792123, false), partial_collect_list(stockQuantity#13792129, 0, 0)]
Aggregate Attributes [3]: [first#13799076, valueSet#13799077, buf#13799078]
Results [8]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119, first#13799079, valueSet#13799080, buf#13799081]
(78) ObjectHashAggregate
Input [8]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119, first#13799079, valueSet#13799080, buf#13799081]
Keys [5]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119]
Functions [2]: [first(calculationDateTime#13792123, false), collect_list(stockQuantity#13792129, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13792123)()#13792143, collect_list(stockQuantity#13792129, 0, 0)#13792144]
Results [4]: [product#13792121, plant#13792122, first(calculationDateTime#13792123)()#13792143 AS calculationDateTime#13792130, collect_list(stockQuantity#13792129, 0, 0)#13792144 AS stockQuantities#13792131]
(79) Filter [codegen id : 128]
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantities#13792131]
Condition : ((size(stockQuantities#13792131, true) > 0) AND isnotnull(calculationDateTime#13792130))
(80) Generate [codegen id : 128]
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantities#13792131]
Arguments: explode(stockQuantities#13792131), [product#13792121, plant#13792122, calculationDateTime#13792130], false, [stockQuantity#13792146]
(81) Filter [codegen id : 128]
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantity#13792146]
Condition : (((isnotnull(stockQuantity#13792146.specialStockIndicator.code) AND isnotnull(stockQuantity#13792146.stockType.code)) AND (stockQuantity#13792146.specialStockIndicator.code = )) AND (stockQuantity#13792146.stockType.code = 01))
(82) Project [codegen id : 128]
Output [5]: [plant#13792122.internalRefUUID AS plantUuid#13792148, product#13792121.internalRefUUID AS productUuid#13792150, calculationDateTime#13792130, stockQuantity#13792146.storagelocation.id AS storageLocId#13792151, stockQuantity#13792146.quantity.measure AS quantity#13792153]
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantity#13792146]
(83) Exchange
Input [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: hashpartitioning(productUuid#13792150, plantUuid#13792148, 37), ENSURE_REQUIREMENTS, [plan_id=13553944]
(84) ShuffleQueryStage
Output [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: 252
(85) AQEShuffleRead
Input [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: local
(86) BroadcastExchange
Input [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=13555874]
(87) BroadcastQueryStage
Output [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: 266
(88) Scan parquet
Output [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(89) ColumnarToRow [codegen id : 9]
Input [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
(90) Filter [codegen id : 9]
Input [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Condition : ((isnotnull(orderDateTime#13792167) AND isnotnull(plant#13792166)) AND isnotnull(product#13792165))
(91) Exchange
Input [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Arguments: hashpartitioning(product#13792165, plant#13792166, 37), REPARTITION_BY_NUM, [plan_id=13511343]
(92) ShuffleQueryStage
Output [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Arguments: 10
(93) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#13797988, _extract_internalRefUUID#13797989, _extract_internalRefUUID#13797987, _extract_internalRefUUID#13797986]
(94) BroadcastQueryStage
Output [4]: [_extract_code#13797988, _extract_internalRefUUID#13797989, _extract_internalRefUUID#13797987, _extract_internalRefUUID#13797986]
Arguments: 159
(95) BroadcastHashJoin [codegen id : 143]
Left keys [4]: [coalesce(product#13792165, ), isnull(product#13792165), coalesce(plant#13792166, ), isnull(plant#13792166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797987, ), isnull(_extract_internalRefUUID#13797987), coalesce(_extract_internalRefUUID#13797986, ), isnull(_extract_internalRefUUID#13797986)]
Join type: LeftOuter
Join condition: None
(96) Project [codegen id : 143]
Output [5]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_code#13797988, _extract_internalRefUUID#13797989]
Input [7]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_code#13797988, _extract_internalRefUUID#13797989, _extract_internalRefUUID#13797987, _extract_internalRefUUID#13797986]
(97) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
(98) BroadcastQueryStage
Output [3]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
Arguments: 217
(99) BroadcastHashJoin [codegen id : 143]
Left keys [1]: [product#13792165]
Right keys [1]: [internalUUID#13792180]
Join type: LeftOuter
Join condition: None
(100) Project
Output [4]: [product#13792165, plant#13792166, orderDateTime#13792167, filter(unitOfMeasureConversions#13792186, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797988) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797989)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792184.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792184.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792191]
Input [8]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_code#13797988, _extract_internalRefUUID#13797989, internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
(101) Generate
Input [4]: [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191]
Arguments: explode(filteredUnitOfMeasureConversions#13792191.quantityNumerator), [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191], true, [quantityNumerator#13792192]
(102) Project
Output [4]: [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191.quantityDenominator AS _extract_quantityDenominator#13797713]
Input [5]: [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191, quantityNumerator#13792192]
(103) Generate
Input [4]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_quantityDenominator#13797713]
Arguments: explode(_extract_quantityDenominator#13797713), [product#13792165, plant#13792166, orderDateTime#13792167], true, [quantityDenominator#13792193]
(104) Project
Output [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Input [4]: [product#13792165, plant#13792166, orderDateTime#13792167, quantityDenominator#13792193]
(105) BroadcastHashJoin [codegen id : 144]
Left keys [2]: [plantUuid#13792148, productUuid#13792150]
Right keys [2]: [plant#13792166, product#13792165]
Join type: Inner
Join condition: (calculationDateTime#13792130 <= orderDateTime#13792167)
(106) Project [codegen id : 144]
Output [5]: [plantUuid#13792148 AS plant#13792199, productUuid#13792150 AS product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Input [8]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153, product#13792165, plant#13792166, orderDateTime#13792167]
(107) Exchange
Input [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Arguments: hashpartitioning(coalesce(plant#13792199, ), isnull(plant#13792199), coalesce(product#13792200, ), isnull(product#13792200), coalesce(storageLocId#13792151, ), isnull(storageLocId#13792151), coalesce(calculationDateTime#13792130, 1970-01-01 00:00:00), isnull(calculationDateTime#13792130), 37), ENSURE_REQUIREMENTS, [plan_id=13558429]
(108) ShuffleQueryStage
Output [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Arguments: 273
(109) AQEShuffleRead
Input [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Arguments: local
(110) BroadcastExchange
Input [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
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=13562666]
(111) BroadcastQueryStage
Output [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Arguments: 294
(112) ReusedExchange [Reuses operator id: 36]
Output [6]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213]
(113) BroadcastQueryStage
Output [6]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213]
Arguments: 203
(114) ReusedExchange [Reuses operator id: 49]
Output [3]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
(115) BroadcastQueryStage
Output [3]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
Arguments: 161
(116) ReusedExchange [Reuses operator id: 69]
Output [1]: [plant#13792243]
(117) ShuffleQueryStage
Output [1]: [plant#13792243]
Arguments: 239
(118) AQEShuffleRead
Input [1]: [plant#13792243]
Arguments: coalesced
(119) HashAggregate
Input [1]: [plant#13792243]
Keys [1]: [plant#13792243]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792243]
(120) BroadcastHashJoin
Left keys [1]: [plantUuid#13792239]
Right keys [1]: [plant#13792243]
Join type: Inner
Join condition: None
(121) Project
Output [3]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
Input [4]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241, plant#13792243]
(122) BroadcastHashJoin [codegen id : 129]
Left keys [2]: [coalesce(plant#13792211.internalRefUUID, ), isnull(plant#13792211.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13792239, ), isnull(plantUuid#13792239)]
Join type: Inner
Join condition: None
(123) Generate
Input [9]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213, plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
Arguments: explode(filter(stockQuantities#13792213, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13792241) AND (lambda x#13792128.storageLocation.Id = storageLocId#13792240)), lambda x#13792128, false))), [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, plantUuid#13792239], false, [stockQuantity#13792273]
(124) ObjectHashAggregate
Input [7]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, plantUuid#13792239, stockQuantity#13792273]
Keys [5]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208]
Functions [2]: [partial_first(calculationDateTime#13792212, false), partial_collect_list(stockQuantity#13792273, 0, 0)]
Aggregate Attributes [3]: [first#13799084, valueSet#13799085, buf#13799086]
Results [8]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208, first#13799087, valueSet#13799088, buf#13799089]
(125) ObjectHashAggregate
Input [8]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208, first#13799087, valueSet#13799088, buf#13799089]
Keys [5]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208]
Functions [2]: [first(calculationDateTime#13792212, false), collect_list(stockQuantity#13792273, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13792212)()#13792143, collect_list(stockQuantity#13792273, 0, 0)#13792144]
Results [4]: [product#13792210, plant#13792211, first(calculationDateTime#13792212)()#13792143 AS calculationDateTime#13792274, collect_list(stockQuantity#13792273, 0, 0)#13792144 AS stockQuantities#13792275]
(126) Filter [codegen id : 130]
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantities#13792275]
Condition : ((size(stockQuantities#13792275, true) > 0) AND isnotnull(calculationDateTime#13792274))
(127) Generate [codegen id : 130]
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantities#13792275]
Arguments: explode(stockQuantities#13792275), [product#13792210, plant#13792211, calculationDateTime#13792274], false, [stockQuantity#13792276]
(128) Filter [codegen id : 130]
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantity#13792276]
Condition : (((isnotnull(stockQuantity#13792276.specialStockIndicator.code) AND isnotnull(stockQuantity#13792276.stockType.code)) AND (stockQuantity#13792276.specialStockIndicator.code = )) AND (stockQuantity#13792276.stockType.code = 01))
(129) Project [codegen id : 130]
Output [4]: [plant#13792211.internalRefUUID AS plantUuid#13792278, product#13792210.internalRefUUID AS productUuid#13792280, calculationDateTime#13792274, stockQuantity#13792276.storagelocation.id AS storageLocId#13792281]
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantity#13792276]
(130) Exchange
Input [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: hashpartitioning(productUuid#13792280, plantUuid#13792278, 37), ENSURE_REQUIREMENTS, [plan_id=13554012]
(131) ShuffleQueryStage
Output [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: 253
(132) AQEShuffleRead
Input [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: local
(133) BroadcastExchange
Input [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=13559694]
(134) BroadcastQueryStage
Output [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: 280
(135) ReusedExchange [Reuses operator id: 91]
Output [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
(136) ShuffleQueryStage
Output [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
Arguments: 26
(137) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#13797995, _extract_internalRefUUID#13797996, _extract_internalRefUUID#13797994, _extract_internalRefUUID#13797997]
(138) BroadcastQueryStage
Output [4]: [_extract_code#13797995, _extract_internalRefUUID#13797996, _extract_internalRefUUID#13797994, _extract_internalRefUUID#13797997]
Arguments: 165
(139) BroadcastHashJoin [codegen id : 151]
Left keys [4]: [coalesce(product#13792286, ), isnull(product#13792286), coalesce(plant#13792287, ), isnull(plant#13792287)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797994, ), isnull(_extract_internalRefUUID#13797994), coalesce(_extract_internalRefUUID#13797997, ), isnull(_extract_internalRefUUID#13797997)]
Join type: LeftOuter
Join condition: None
(140) Project [codegen id : 151]
Output [5]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_code#13797995, _extract_internalRefUUID#13797996]
Input [7]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_code#13797995, _extract_internalRefUUID#13797996, _extract_internalRefUUID#13797994, _extract_internalRefUUID#13797997]
(141) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
(142) BroadcastQueryStage
Output [3]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
Arguments: 219
(143) BroadcastHashJoin [codegen id : 151]
Left keys [1]: [product#13792286]
Right keys [1]: [internalUUID#13792301]
Join type: LeftOuter
Join condition: None
(144) Project
Output [4]: [product#13792286, plant#13792287, orderDateTime#13792288, filter(unitOfMeasureConversions#13792307, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797995) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797996)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792305.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792305.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792312]
Input [8]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_code#13797995, _extract_internalRefUUID#13797996, internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
(145) Generate
Input [4]: [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312]
Arguments: explode(filteredUnitOfMeasureConversions#13792312.quantityNumerator), [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312], true, [quantityNumerator#13792313]
(146) Project
Output [4]: [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312.quantityDenominator AS _extract_quantityDenominator#13797729]
Input [5]: [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312, quantityNumerator#13792313]
(147) Generate
Input [4]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_quantityDenominator#13797729]
Arguments: explode(_extract_quantityDenominator#13797729), [product#13792286, plant#13792287, orderDateTime#13792288], true, [quantityDenominator#13792314]
(148) Project
Output [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
Input [4]: [product#13792286, plant#13792287, orderDateTime#13792288, quantityDenominator#13792314]
(149) BroadcastHashJoin [codegen id : 152]
Left keys [2]: [plantUuid#13792278, productUuid#13792280]
Right keys [2]: [plant#13792287, product#13792286]
Join type: Inner
Join condition: (calculationDateTime#13792274 <= orderDateTime#13792288)
(150) Project [codegen id : 152]
Output [4]: [plantUuid#13792278 AS plant#13792317, productUuid#13792280 AS product#13792318, storageLocId#13792281, calculationDateTime#13792274]
Input [7]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281, product#13792286, plant#13792287, orderDateTime#13792288]
(151) HashAggregate [codegen id : 152]
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, calculationDateTime#13792274]
Keys [3]: [plant#13792317, product#13792318, storageLocId#13792281]
Functions [1]: [partial_max(calculationDateTime#13792274)]
Aggregate Attributes [1]: [max#13799082]
Results [4]: [plant#13792317, product#13792318, storageLocId#13792281, max#13799083]
(152) HashAggregate [codegen id : 152]
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, max#13799083]
Keys [3]: [plant#13792317, product#13792318, storageLocId#13792281]
Functions [1]: [max(calculationDateTime#13792274)]
Aggregate Attributes [1]: [max(calculationDateTime#13792274)#13792207]
Results [4]: [plant#13792317, product#13792318, storageLocId#13792281, max(calculationDateTime#13792274)#13792207 AS max_calc_datetime#13792201]
(153) Exchange
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
Arguments: hashpartitioning(coalesce(plant#13792317, ), isnull(plant#13792317), coalesce(product#13792318, ), isnull(product#13792318), coalesce(storageLocId#13792281, ), isnull(storageLocId#13792281), coalesce(max_calc_datetime#13792201, 1970-01-01 00:00:00), isnull(max_calc_datetime#13792201), 37), ENSURE_REQUIREMENTS, [plan_id=13561691]
(154) ShuffleQueryStage
Output [4]: [plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
Arguments: 287
(155) AQEShuffleRead
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
Arguments: local
(156) BroadcastHashJoin [codegen id : 159]
Left keys [8]: [coalesce(plant#13792199, ), isnull(plant#13792199), coalesce(product#13792200, ), isnull(product#13792200), coalesce(storageLocId#13792151, ), isnull(storageLocId#13792151), coalesce(calculationDateTime#13792130, 1970-01-01 00:00:00), isnull(calculationDateTime#13792130)]
Right keys [8]: [coalesce(plant#13792317, ), isnull(plant#13792317), coalesce(product#13792318, ), isnull(product#13792318), coalesce(storageLocId#13792281, ), isnull(storageLocId#13792281), coalesce(max_calc_datetime#13792201, 1970-01-01 00:00:00), isnull(max_calc_datetime#13792201)]
Join type: Inner
Join condition: None
(157) Project [codegen id : 159]
Output [4]: [plant#13792199, product#13792200, calculationDateTime#13792130, quantity#13792153]
Input [9]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153, plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
(158) HashAggregate [codegen id : 159]
Input [4]: [plant#13792199, product#13792200, calculationDateTime#13792130, quantity#13792153]
Keys [2]: [product#13792200, plant#13792199]
Functions [2]: [partial_min(calculationDateTime#13792130), partial_sum(quantity#13792153)]
Aggregate Attributes [2]: [min#13799072, sum#13799073]
Results [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
(159) Exchange
Input [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
Arguments: hashpartitioning(product#13792200, plant#13792199, 37), ENSURE_REQUIREMENTS, [plan_id=13564611]
(160) ShuffleQueryStage
Output [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
Arguments: 301
(161) AQEShuffleRead
Input [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
Arguments: coalesced
(162) HashAggregate [codegen id : 163]
Input [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
Keys [2]: [product#13792200, plant#13792199]
Functions [2]: [min(calculationDateTime#13792130), sum(quantity#13792153)]
Aggregate Attributes [2]: [min(calculationDateTime#13792130)#13792335, sum(quantity#13792153)#13792334]
Results [4]: [product#13792200, plant#13792199, min(calculationDateTime#13792130)#13792335 AS minCalculationDateTime#13792328, round(sum(quantity#13792153)#13792334, 0) AS roundedQuantitySum#13792336]
(163) BroadcastExchange
Input [4]: [product#13792200, plant#13792199, minCalculationDateTime#13792328, roundedQuantitySum#13792336]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=13565298]
(164) BroadcastQueryStage
Output [4]: [product#13792200, plant#13792199, minCalculationDateTime#13792328, roundedQuantitySum#13792336]
Arguments: 308
(165) BroadcastHashJoin [codegen id : 168]
Left keys [2]: [plant#13791973, product#13791972]
Right keys [2]: [plant#13792199, product#13792200]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 168]
Output [5]: [product#13791972, plant#13791973, outboundUnit#13792060, CASE WHEN isnotnull(minCalculationDateTime#13792328) THEN minCalculationDateTime#13792328 ELSE orderDateTime#13791974 END AS stockDatetime#13792371, CASE WHEN isnotnull(roundedQuantitySum#13792336) THEN array(roundedQuantitySum#13792336) ELSE [0.0] END AS stockBatchQuantities#13792372]
Input [8]: [product#13791972, plant#13791973, orderDateTime#13791974, outboundUnit#13792060, product#13792200, plant#13792199, minCalculationDateTime#13792328, roundedQuantitySum#13792336]
(167) Exchange
Input [5]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372]
Arguments: hashpartitioning(coalesce(plant#13791973, ), isnull(plant#13791973), coalesce(product#13791972, ), isnull(product#13791972), 37), ENSURE_REQUIREMENTS, [plan_id=13565878]
(168) ShuffleQueryStage
Output [5]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372]
Arguments: 315
(169) AQEShuffleRead
Input [5]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372]
Arguments: local
(170) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#13793491, plant#13793492, orderDateTime#13793493]
(171) ShuffleQueryStage
Output [3]: [product#13793491, plant#13793492, orderDateTime#13793493]
Arguments: 32
(172) Scan parquet
Output [9]: [internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503, systemId#13793495]
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>>
(173) ColumnarToRow [codegen id : 21]
Input [9]: [internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503, systemId#13793495]
(174) Project [codegen id : 21]
Output [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
Input [9]: [internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503, systemId#13793495]
(175) Exchange
Input [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13511642]
(176) ShuffleQueryStage
Output [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
Arguments: 33
(177) Project [codegen id : 108]
Output [1]: [struct(systemId, systemId#13793495, internalUUID, internalUUID#13793496, plant, plant#13793497, product, product#13793498, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#13793499, productionAspect, productionAspect#13793500, salesPlant, salesPlant#13793501, listing, listing#13793502, sourceOfSupplyCategory, sourceOfSupplyCategory#13793503) AS productPlant#13793504]
Input [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
(178) BroadcastExchange
Input [1]: [productPlant#13793504]
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=13531170]
(179) BroadcastQueryStage
Output [1]: [productPlant#13793504]
Arguments: 204
(180) BroadcastHashJoin [codegen id : 169]
Left keys [4]: [coalesce(product#13793491, ), isnull(product#13793491), coalesce(plant#13793492, ), isnull(plant#13793492)]
Right keys [4]: [coalesce(productPlant#13793504.product.internalRefUUID, ), isnull(productPlant#13793504.product.internalRefUUID), coalesce(productPlant#13793504.plant.internalRefUUID, ), isnull(productPlant#13793504.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(181) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
(182) BroadcastQueryStage
Output [3]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
Arguments: 220
(183) BroadcastHashJoin [codegen id : 169]
Left keys [1]: [product#13793491]
Right keys [1]: [internalUUID#13793506]
Join type: LeftOuter
Join condition: None
(184) Project
Output [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, filter(unitOfMeasureConversions#13793512, lambdafunction((((lambda u#13792048.measurementUnit1.code = productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#13792048.measurementUnit1.internalRefUUID = productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13793510.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13793510.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13793517]
Input [7]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
(185) Project [codegen id : 170]
Output [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, filteredUnitOfMeasureConversions#13793517.quantityDenominator AS _extract_quantityDenominator#13797998, filteredUnitOfMeasureConversions#13793517.quantityNumerator AS _extract_quantityNumerator#13797999]
Input [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, filteredUnitOfMeasureConversions#13793517]
(186) Generate [codegen id : 170]
Input [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, _extract_quantityDenominator#13797998, _extract_quantityNumerator#13797999]
Arguments: explode(_extract_quantityNumerator#13797999), [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, _extract_quantityDenominator#13797998], true, [quantityNumerator#13793518]
(187) Generate [codegen id : 170]
Input [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, _extract_quantityDenominator#13797998, quantityNumerator#13793518]
Arguments: explode(_extract_quantityDenominator#13797998), [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, quantityNumerator#13793518], true, [quantityDenominator#13793519]
(188) Project [codegen id : 170]
Output [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, (cast(quantityNumerator#13793518 as double) / cast(quantityDenominator#13793519 as double)) AS outboundUnit#13793520]
Input [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, quantityNumerator#13793518, quantityDenominator#13793519]
(189) Project [codegen id : 170]
Output [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, CASE WHEN (isnull(outboundUnit#13793520) OR (outboundUnit#13793520 <= 0.0)) THEN 1.0 ELSE outboundUnit#13793520 END AS outboundUnit#13793521]
Input [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793520]
(190) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#13793632, plant#13793631, minCalculationDateTime#13793746, roundedQuantitySum#13793747]
(191) BroadcastQueryStage
Output [4]: [product#13793632, plant#13793631, minCalculationDateTime#13793746, roundedQuantitySum#13793747]
Arguments: 310
(192) BroadcastHashJoin [codegen id : 170]
Left keys [2]: [plant#13793492, product#13793491]
Right keys [2]: [plant#13793631, product#13793632]
Join type: LeftOuter
Join condition: None
(193) Project [codegen id : 170]
Output [7]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, CASE WHEN isnotnull(minCalculationDateTime#13793746) THEN minCalculationDateTime#13793746 ELSE orderDateTime#13793493 END AS stockDatetime#13793748, CASE WHEN isnotnull(roundedQuantitySum#13793747) THEN array(roundedQuantitySum#13793747) ELSE [0.0] END AS stockBatchQuantities#13793749]
Input [9]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, product#13793632, plant#13793631, minCalculationDateTime#13793746, roundedQuantitySum#13793747]
(194) Scan parquet
Output [9]: [product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000539/0_1_10000000539]
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>>>
(195) ColumnarToRow [codegen id : 39]
Input [9]: [product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
(196) BroadcastExchange
Input [9]: [product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
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=13512104]
(197) BroadcastQueryStage
Output [9]: [product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
Arguments: 68
(198) BroadcastHashJoin [codegen id : 170]
Left keys [4]: [coalesce(plant#13793492, ), isnull(plant#13793492), coalesce(product#13793491, ), isnull(product#13793491)]
Right keys [4]: [coalesce(plant#13792375, ), isnull(plant#13792375), coalesce(product#13792374, ), isnull(product#13792374)]
Join type: LeftOuter
Join condition: None
(199) Project [codegen id : 170]
Output [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, CASE WHEN isnotnull(product#13792374) THEN struct(demandChannel, demandChannel#13792376, demandStream, demandStream#13792377, considerVariance, considerVariance#13792378, demandTimeBuckets, demandTimeBuckets#13792379, demandPointInTimeStart, demandPointInTimeStart#13792380, demandPointInTimeEnd, demandPointInTimeEnd#13792381, demandPointInTime, demandPointInTime#13792382) END AS rawDemands#13792384]
Input [16]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
(200) ObjectHashAggregate
Input [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, rawDemands#13792384]
Keys [8]: [product#13793491, plant#13793492, orderDateTime#13793493, knownfloatingpointnormalized(if (isnull(productPlant#13793504)) null else named_struct(systemId, productPlant#13793504.systemId, internalUUID, productPlant#13793504.internalUUID, plant, productPlant#13793504.plant, product, productPlant#13793504.product, blockedForReplenishmentStartingFrom, productPlant#13793504.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#13793504.productionAspect)) null else named_struct(productMovementPlants, productPlant#13793504.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#13793504.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#13793504.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#13793504.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#13793504.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#13793504.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#13793504.salesPlant, listing, productPlant#13793504.listing, sourceOfSupplyCategory, productPlant#13793504.sourceOfSupplyCategory)) AS productPlant#13793504, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#13793521)) AS outboundUnit#13793521, stockDatetime#13793748, knownfloatingpointnormalized(transform(stockBatchQuantities#13793749, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#13801615)), lambda arg#13801615, false))) AS stockBatchQuantities#13793749, [7226582400000000] AS [7226582400000000]#13801614]
Functions [1]: [partial_collect_list(rawDemands#13792384, 0, 0)]
Aggregate Attributes [1]: [buf#13799092]
Results [9]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000]#13801614, buf#13799093]
(201) ObjectHashAggregate
Input [9]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000]#13801614, buf#13799093]
Keys [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000]#13801614]
Functions [1]: [collect_list(rawDemands#13792384, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#13792384, 0, 0)#13792404]
Results [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, collect_list(rawDemands#13792384, 0, 0)#13792404 AS rawDemands#13792385]
(202) Scan parquet
Output [3]: [internalUUID#13793442, address#13793448, systemId#13793441]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(203) ColumnarToRow [codegen id : 40]
Input [3]: [internalUUID#13793442, address#13793448, systemId#13793441]
(204) Project [codegen id : 40]
Output [2]: [internalUUID#13793442, address#13793448.timeZone.code AS timezonecode#13793454]
Input [3]: [internalUUID#13793442, address#13793448, systemId#13793441]
(205) Exchange
Input [2]: [internalUUID#13793442, timezonecode#13793454]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13512121]
(206) ShuffleQueryStage
Output [2]: [internalUUID#13793442, timezonecode#13793454]
Arguments: 69
(207) BroadcastExchange
Input [2]: [internalUUID#13793442, timezonecode#13793454]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=13533113]
(208) BroadcastQueryStage
Output [2]: [internalUUID#13793442, timezonecode#13793454]
Arguments: 225
(209) BroadcastHashJoin [codegen id : 171]
Left keys [2]: [coalesce(plant#13793492, ), isnull(plant#13793492)]
Right keys [2]: [coalesce(internalUUID#13793442, ), isnull(internalUUID#13793442)]
Join type: LeftOuter
Join condition: None
(210) Project [codegen id : 171]
Output [10]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13793750, rawDemands#13792385, CASE WHEN isnotnull(timezonecode#13793454) THEN timezonecode#13793454 ELSE UTC END AS timezonecode#13793456]
Input [10]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, rawDemands#13792385, internalUUID#13793442, timezonecode#13793454]
(211) DeserializeToObject [codegen id : 171]
Input [10]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, stockBatchShelfLifeEndDatetimes#13793750, rawDemands#13792385, timezonecode#13793456]
Arguments: createexternalrow(invoke(product#13793491.toString()), invoke(plant#13793492.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#13793493)), if (isnull(productPlant#13793504)) null else createexternalrow(invoke(productPlant#13793504.systemId.toString()), invoke(productPlant#13793504.internalUUID.toString()), if (isnull(productPlant#13793504.plant)) null else createexternalrow(invoke(productPlant#13793504.plant.internalRefUUID.toString()), invoke(productPlant#13793504.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#13793504.product)) null else createexternalrow(invoke(productPlant#13793504.product.internalRefUUID.toString()), invoke(productPlant#13793504.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#13793504.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#13793504.productionAspect)) null else createexternalrow(if (isnull(productPlant#13793504.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793504.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#13793504.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793504.salesPlant)) null else createexternalrow(if (isnull(productPlant#13793504.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#13793504.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793504.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#13793504.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#13793504.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793521)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#13793748)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#13793749, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#13793750, 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#13792385, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#13793456.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#13793477: org.apache.spark.sql.Row
(212) MapElements [codegen id : 171]
Input [1]: [obj#13793477]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008020466f8@2bc6baae, obj#13793482: org.apache.spark.sql.Row
(213) SerializeFromObject [codegen id : 171]
Input [1]: [obj#13793482]
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#13793487, 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#13793488, 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#13793489, 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#13793490]
(214) Exchange
Input [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Arguments: hashpartitioning(coalesce(plant#13793488, ), isnull(plant#13793488), coalesce(product#13793487, ), isnull(product#13793487), 37), ENSURE_REQUIREMENTS, [plan_id=13565942]
(215) ShuffleQueryStage
Output [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Arguments: 316
(216) AQEShuffleRead
Input [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Arguments: local
(217) BroadcastExchange
Input [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
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=13566503]
(218) BroadcastQueryStage
Output [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Arguments: 320
(219) BroadcastHashJoin [codegen id : 177]
Left keys [4]: [coalesce(plant#13791973, ), isnull(plant#13791973), coalesce(product#13791972, ), isnull(product#13791972)]
Right keys [4]: [coalesce(plant#13793488, ), isnull(plant#13793488), coalesce(product#13793487, ), isnull(product#13793487)]
Join type: LeftOuter
Join condition: None
(220) Project [codegen id : 177]
Output [7]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Input [9]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
(221) Project [codegen id : 177]
Output [12]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, cast(null as string) AS product#13793785, cast(null as string) AS plant#13793784, cast(null as array<double>) AS _extract_openQtyInBaseUnit#13797973, cast(null as array<timestamp>) AS _extract_availabilityDatetime#13797974, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#13797975]
Input [7]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490]
(222) Project [codegen id : 177]
Output [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, coalesce(_extract_openQtyInBaseUnit#13797973, []) AS openGoodsMovementQuantities#13795147, coalesce(_extract_availabilityDatetime#13797974, []) AS openGoodsMovementAvailabilityDatetimes#13795148, coalesce(_extract_shelfLifeEndDatetime#13797975, []) AS openGoodsMovementShelfLifeEndDatetimes#13795149]
Input [12]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, product#13793785, plant#13793784, _extract_openQtyInBaseUnit#13797973, _extract_availabilityDatetime#13797974, _extract_shelfLifeEndDatetime#13797975]
(223) Exchange
Input [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149]
Arguments: hashpartitioning(product#13791972, plant#13791973, 37), ENSURE_REQUIREMENTS, [plan_id=13566636]
(224) ShuffleQueryStage
Output [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149]
Arguments: 323
(225) AQEShuffleRead
Input [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149]
Arguments: local
(226) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#13795638, plant#13795639, orderDateTime#13795640]
(227) ShuffleQueryStage
Output [3]: [product#13795638, plant#13795639, orderDateTime#13795640]
Arguments: 72
(228) ReusedExchange [Reuses operator id: 178]
Output [1]: [productPlant#13795651]
(229) BroadcastQueryStage
Output [1]: [productPlant#13795651]
Arguments: 208
(230) BroadcastHashJoin [codegen id : 172]
Left keys [4]: [coalesce(product#13795638, ), isnull(product#13795638), coalesce(plant#13795639, ), isnull(plant#13795639)]
Right keys [4]: [coalesce(productPlant#13795651.product.internalRefUUID, ), isnull(productPlant#13795651.product.internalRefUUID), coalesce(productPlant#13795651.plant.internalRefUUID, ), isnull(productPlant#13795651.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(231) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
(232) BroadcastQueryStage
Output [3]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
Arguments: 226
(233) BroadcastHashJoin [codegen id : 172]
Left keys [1]: [product#13795638]
Right keys [1]: [internalUUID#13795653]
Join type: LeftOuter
Join condition: None
(234) Project
Output [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, filter(unitOfMeasureConversions#13795659, lambdafunction((((lambda u#13792048.measurementUnit1.code = productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#13792048.measurementUnit1.internalRefUUID = productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795657.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795657.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795664]
Input [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
(235) Project [codegen id : 173]
Output [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, filteredUnitOfMeasureConversions#13795664.quantityDenominator AS _extract_quantityDenominator#13798019, filteredUnitOfMeasureConversions#13795664.quantityNumerator AS _extract_quantityNumerator#13798020]
Input [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, filteredUnitOfMeasureConversions#13795664]
(236) Generate [codegen id : 173]
Input [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, _extract_quantityDenominator#13798019, _extract_quantityNumerator#13798020]
Arguments: explode(_extract_quantityNumerator#13798020), [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, _extract_quantityDenominator#13798019], true, [quantityNumerator#13795665]
(237) Generate [codegen id : 173]
Input [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, _extract_quantityDenominator#13798019, quantityNumerator#13795665]
Arguments: explode(_extract_quantityDenominator#13798019), [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, quantityNumerator#13795665], true, [quantityDenominator#13795666]
(238) Project [codegen id : 173]
Output [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, (cast(quantityNumerator#13795665 as double) / cast(quantityDenominator#13795666 as double)) AS outboundUnit#13795667]
Input [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, quantityNumerator#13795665, quantityDenominator#13795666]
(239) Project [codegen id : 173]
Output [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, CASE WHEN (isnull(outboundUnit#13795667) OR (outboundUnit#13795667 <= 0.0)) THEN 1.0 ELSE outboundUnit#13795667 END AS outboundUnit#13795668]
Input [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795667]
(240) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#13795779, plant#13795778, minCalculationDateTime#13795893, roundedQuantitySum#13795894]
(241) BroadcastQueryStage
Output [4]: [product#13795779, plant#13795778, minCalculationDateTime#13795893, roundedQuantitySum#13795894]
Arguments: 312
(242) BroadcastHashJoin [codegen id : 173]
Left keys [2]: [plant#13795639, product#13795638]
Right keys [2]: [plant#13795778, product#13795779]
Join type: LeftOuter
Join condition: None
(243) Project [codegen id : 173]
Output [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, CASE WHEN isnotnull(minCalculationDateTime#13795893) THEN minCalculationDateTime#13795893 ELSE orderDateTime#13795640 END AS stockDatetime#13795895, CASE WHEN isnotnull(roundedQuantitySum#13795894) THEN array(roundedQuantitySum#13795894) ELSE [0.0] END AS stockBatchQuantities#13795896]
Input [9]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, product#13795779, plant#13795778, minCalculationDateTime#13795893, roundedQuantitySum#13795894]
(244) Exchange
Input [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896]
Arguments: hashpartitioning(coalesce(plant#13795639, ), isnull(plant#13795639), coalesce(product#13795638, ), isnull(product#13795638), 37), ENSURE_REQUIREMENTS, [plan_id=13566103]
(245) ShuffleQueryStage
Output [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896]
Arguments: 317
(246) AQEShuffleRead
Input [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896]
Arguments: local
(247) ReusedExchange [Reuses operator id: 217]
Output [4]: [product#13796183, plant#13796184, dayBucketDemands#13796185, pointInTimeDemands#13796186]
(248) BroadcastQueryStage
Output [4]: [product#13796183, plant#13796184, dayBucketDemands#13796185, pointInTimeDemands#13796186]
Arguments: 322
(249) BroadcastHashJoin [codegen id : 178]
Left keys [4]: [coalesce(plant#13795639, ), isnull(plant#13795639), coalesce(product#13795638, ), isnull(product#13795638)]
Right keys [4]: [coalesce(plant#13796184, ), isnull(plant#13796184), coalesce(product#13796183, ), isnull(product#13796183)]
Join type: LeftOuter
Join condition: None
(250) Project [codegen id : 178]
Output [9]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, dayBucketDemands#13796185, pointInTimeDemands#13796186]
Input [11]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, product#13796183, plant#13796184, dayBucketDemands#13796185, pointInTimeDemands#13796186]
(251) Project [codegen id : 178]
Output [14]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, dayBucketDemands#13796185, pointInTimeDemands#13796186, cast(null as string) AS product#13796806, cast(null as string) AS plant#13796805, cast(null as array<double>) AS _extract_openQtyInBaseUnit#13798016, cast(null as array<timestamp>) AS _extract_availabilityDatetime#13798017, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#13798018]
Input [9]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, dayBucketDemands#13796185, pointInTimeDemands#13796186]
(252) Project
Output [15]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13795897, dayBucketDemands#13796185, pointInTimeDemands#13796186, coalesce(_extract_openQtyInBaseUnit#13798016, []) AS openGoodsMovementQuantities#13797388, coalesce(_extract_availabilityDatetime#13798017, []) AS openGoodsMovementAvailabilityDatetimes#13797389, coalesce(_extract_shelfLifeEndDatetime#13798018, []) AS openGoodsMovementShelfLifeEndDatetimes#13797390, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#13797391, array_sort(filter(CASE WHEN isnotnull(productPlant#13795651.listing) THEN productPlant#13795651.listing ELSE [] END, lambdafunction(lambda listing#13795584.isListed, lambda listing#13795584, false)), lambdafunction(if ((isnull(lambda left#13795586) AND isnull(lambda right#13795587))) 0 else if (isnull(lambda left#13795586)) 1 else if (isnull(lambda right#13795587)) -1 else if ((lambda left#13795586 < lambda right#13795587)) -1 else if ((lambda left#13795586 > lambda right#13795587)) 1 else 0, lambda left#13795586, lambda right#13795587, false), false) AS listing#13795585]
Input [14]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, dayBucketDemands#13796185, pointInTimeDemands#13796186, product#13796806, plant#13796805, _extract_openQtyInBaseUnit#13798016, _extract_availabilityDatetime#13798017, _extract_shelfLifeEndDatetime#13798018]
(253) DeserializeToObject [codegen id : 179]
Input [15]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, stockBatchShelfLifeEndDatetimes#13795897, dayBucketDemands#13796185, pointInTimeDemands#13796186, openGoodsMovementQuantities#13797388, openGoodsMovementAvailabilityDatetimes#13797389, openGoodsMovementShelfLifeEndDatetimes#13797390, configuration#13797391, listing#13795585]
Arguments: createexternalrow(invoke(product#13795638.toString()), invoke(plant#13795639.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#13795640)), if (isnull(productPlant#13795651)) null else createexternalrow(invoke(productPlant#13795651.systemId.toString()), invoke(productPlant#13795651.internalUUID.toString()), if (isnull(productPlant#13795651.plant)) null else createexternalrow(invoke(productPlant#13795651.plant.internalRefUUID.toString()), invoke(productPlant#13795651.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#13795651.product)) null else createexternalrow(invoke(productPlant#13795651.product.internalRefUUID.toString()), invoke(productPlant#13795651.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#13795651.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#13795651.productionAspect)) null else createexternalrow(if (isnull(productPlant#13795651.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795651.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#13795651.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#13795651.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795651.salesPlant)) null else createexternalrow(if (isnull(productPlant#13795651.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#13795651.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795651.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#13795651.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#13795651.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795668)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#13795895)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#13795896, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#13795897, 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#13796185, 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#13796186, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#13797388, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#13797389, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#13797390, 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#13797391, 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#13795585, 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#13795618: org.apache.spark.sql.Row
(254) MapElements [codegen id : 179]
Input [1]: [obj#13795618]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000802070f28@3f33e2dc, obj#13795625: org.apache.spark.sql.Row
(255) SerializeFromObject [codegen id : 179]
Input [1]: [obj#13795625]
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#13795632, 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#13795633, 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#13795634, 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#13795635, 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#13795636, 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#13795637]
(256) Filter [codegen id : 179]
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Condition : (isnotnull(product#13795632) AND isnotnull(plant#13795633))
(257) Exchange
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: hashpartitioning(product#13795632, plant#13795633, 37), ENSURE_REQUIREMENTS, [plan_id=13566703]
(258) ShuffleQueryStage
Output [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: 324
(259) AQEShuffleRead
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: local
(260) BroadcastExchange
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=13566761]
(261) BroadcastQueryStage
Output [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: 325
(262) BroadcastHashJoin [codegen id : 180]
Left keys [2]: [product#13791972, plant#13791973]
Right keys [2]: [product#13795632, plant#13795633]
Join type: LeftOuter
Join condition: None
(263) Project [codegen id : 180]
Output [16]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13792373, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#13795441, CASE WHEN isnotnull(timeDependentSettingsName#13795634) THEN timeDependentSettingsName#13795634 ELSE [] END AS timeDependentSettingsName#13797516, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#13795635) THEN timeDependentSettingsStartDatetime#13795635 ELSE [] END AS timeDependentSettingsStartDatetime#13797517, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#13795636) THEN timeDependentSettingsEndDatetime#13795636 ELSE [] END AS timeDependentSettingsEndDatetime#13797518, CASE WHEN isnotnull(timeDependentSettingsValue#13795637) THEN timeDependentSettingsValue#13795637 ELSE [] END AS timeDependentSettingsValue#13797519]
Input [16]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149, product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
(264) ResultQueryStage
Output [16]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, stockBatchShelfLifeEndDatetimes#13792373, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149, configuration#13795441, timeDependentSettingsName#13797516, timeDependentSettingsStartDatetime#13797517, timeDependentSettingsEndDatetime#13797518, timeDependentSettingsValue#13797519]
Arguments: 327
(265) Exchange
Input [3]: [product#13791972, plant#13791973, orderDateTime#13791974]
Arguments: hashpartitioning(product#13791972, plant#13791973, 37), REPARTITION_BY_NUM, [plan_id=13508868]
(266) Project
Output [4]: [plant#13792001.internalRefUUID AS _extract_internalRefUUID#13797980, product#13792002.internalRefUUID AS _extract_internalRefUUID#13797981, productionAspect#13792004.productMovementPlants.unitOfIssue.code AS _extract_code#13797978, productionAspect#13792004.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13797979]
Input [4]: [plant#13792001, product#13792002, productionAspect#13792004, systemId#13791999]
(267) Exchange
Input [4]: [_extract_internalRefUUID#13797980, _extract_internalRefUUID#13797981, _extract_code#13797978, _extract_internalRefUUID#13797979]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508871]
(268) Project
Output [4]: [_extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
Input [4]: [_extract_internalRefUUID#13797980, _extract_internalRefUUID#13797981, _extract_code#13797978, _extract_internalRefUUID#13797979]
(269) BroadcastExchange
Input [4]: [_extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
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=13509879]
(270) BroadcastHashJoin
Left keys [4]: [coalesce(product#13791972, ), isnull(product#13791972), coalesce(plant#13791973, ), isnull(plant#13791973)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797981, ), isnull(_extract_internalRefUUID#13797981), coalesce(_extract_internalRefUUID#13797980, ), isnull(_extract_internalRefUUID#13797980)]
Join type: LeftOuter
Join condition: None
(271) Project
Output [5]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_code#13797978, _extract_internalRefUUID#13797979]
Input [7]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_code#13797978, _extract_internalRefUUID#13797979, _extract_internalRefUUID#13797981, _extract_internalRefUUID#13797980]
(272) Filter
Input [4]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041, systemId#13792034]
Condition : isnotnull(internalUUID#13792035)
(273) Project
Output [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Input [4]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041, systemId#13792034]
(274) Exchange
Input [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508878]
(275) BroadcastExchange
Input [3]: [internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509883]
(276) BroadcastHashJoin
Left keys [1]: [product#13791972]
Right keys [1]: [internalUUID#13792035]
Join type: LeftOuter
Join condition: None
(277) Project
Output [4]: [product#13791972, plant#13791973, orderDateTime#13791974, filter(unitOfMeasureConversions#13792041, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797978) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797979)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792039.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792039.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792047]
Input [8]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_code#13797978, _extract_internalRefUUID#13797979, internalUUID#13792035, baseUnitOfMeasure#13792039, unitOfMeasureConversions#13792041]
(278) Project
Output [5]: [product#13791972, plant#13791973, orderDateTime#13791974, filteredUnitOfMeasureConversions#13792047.quantityDenominator AS _extract_quantityDenominator#13797976, filteredUnitOfMeasureConversions#13792047.quantityNumerator AS _extract_quantityNumerator#13797977]
Input [4]: [product#13791972, plant#13791973, orderDateTime#13791974, filteredUnitOfMeasureConversions#13792047]
(279) Generate
Input [5]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_quantityDenominator#13797976, _extract_quantityNumerator#13797977]
Arguments: explode(_extract_quantityNumerator#13797977), [product#13791972, plant#13791973, orderDateTime#13791974, _extract_quantityDenominator#13797976], true, [quantityNumerator#13792055]
(280) Generate
Input [5]: [product#13791972, plant#13791973, orderDateTime#13791974, _extract_quantityDenominator#13797976, quantityNumerator#13792055]
Arguments: explode(_extract_quantityDenominator#13797976), [product#13791972, plant#13791973, orderDateTime#13791974, quantityNumerator#13792055], true, [quantityDenominator#13792058]
(281) Project
Output [4]: [product#13791972, plant#13791973, orderDateTime#13791974, (cast(quantityNumerator#13792055 as double) / cast(quantityDenominator#13792058 as double)) AS outboundUnit#13792059]
Input [5]: [product#13791972, plant#13791973, orderDateTime#13791974, quantityNumerator#13792055, quantityDenominator#13792058]
(282) Project
Output [4]: [product#13791972, plant#13791973, orderDateTime#13791974, CASE WHEN (isnull(outboundUnit#13792059) OR (outboundUnit#13792059 <= 0.0)) THEN 1.0 ELSE outboundUnit#13792059 END AS outboundUnit#13792060]
Input [4]: [product#13791972, plant#13791973, orderDateTime#13791974, outboundUnit#13792059]
(283) Sort
Input [4]: [product#13791972, plant#13791973, orderDateTime#13791974, outboundUnit#13792060]
Arguments: [product#13791972 ASC NULLS FIRST, plant#13791973 ASC NULLS FIRST], false, 0
(284) Filter
Input [6]: [internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, systemId#13792119]
Condition : (isnotnull(plant#13792122.internalRefUUID) AND isnotnull(product#13792121.internalRefUUID))
(285) Project
Output [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
Input [6]: [internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, systemId#13792119]
(286) Exchange
Input [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508889]
(287) BroadcastExchange
Input [6]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124]
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=13509911]
(288) Filter
Input [2]: [marketUnit#13792061, distributionCenters#13792067]
Condition : (((marketUnit#13792061 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13792067, true) > 0)) AND isnotnull(distributionCenters#13792067))
(289) Project
Output [1]: [distributionCenters#13792067]
Input [2]: [marketUnit#13792061, distributionCenters#13792067]
(290) Exchange
Input [1]: [distributionCenters#13792067]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508893]
(291) Generate
Input [1]: [distributionCenters#13792067]
Arguments: explode(distributionCenters#13792067), false, [distributionCenters#13792085]
(292) Filter
Input [1]: [distributionCenters#13792085]
Condition : (((size(distributionCenters#13792085.storageLocations, true) > 0) AND isnotnull(distributionCenters#13792085.storageLocations)) AND isnotnull(distributionCenters#13792085.internalRefUUID))
(293) Project
Output [2]: [distributionCenters#13792085.internalRefUUID AS _extract_internalRefUUID#13797704, distributionCenters#13792085.storageLocations AS _extract_storageLocations#13797705]
Input [1]: [distributionCenters#13792085]
(294) Generate
Input [2]: [_extract_internalRefUUID#13797704, _extract_storageLocations#13797705]
Arguments: explode(_extract_storageLocations#13797705), [_extract_internalRefUUID#13797704], false, [storageLocations#13792092]
(295) Project
Output [3]: [_extract_internalRefUUID#13797704 AS plantUuid#13792087, storageLocations#13792092.id AS storageLocId#13792093, storageLocations#13792092.internalRefUUID AS storageLocUuid#13792094]
Input [2]: [_extract_internalRefUUID#13797704, storageLocations#13792092]
(296) BroadcastExchange
Input [3]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509907]
(297) Filter
Input [2]: [product#13792337, plant#13792338]
Condition : isnotnull(plant#13792338)
(298) Exchange
Input [2]: [product#13792337, plant#13792338]
Arguments: hashpartitioning(product#13792337, plant#13792338, 37), REPARTITION_BY_NUM, [plan_id=13509559]
(299) Scan parquet
Output [4]: [plant#13792343, product#13792344, productionAspect#13792346, systemId#13792341]
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>>>>
(300) Project
Output [4]: [plant#13792343.internalRefUUID AS _extract_internalRefUUID#13797985, product#13792344.internalRefUUID AS _extract_internalRefUUID#13797982, productionAspect#13792346.productMovementPlants.unitOfIssue.code AS _extract_code#13797983, productionAspect#13792346.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13797984]
Input [4]: [plant#13792343, product#13792344, productionAspect#13792346, systemId#13792341]
(301) Exchange
Input [4]: [_extract_internalRefUUID#13797985, _extract_internalRefUUID#13797982, _extract_code#13797983, _extract_internalRefUUID#13797984]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508905]
(302) Project
Output [4]: [_extract_code#13797983, _extract_internalRefUUID#13797984, _extract_internalRefUUID#13797982, _extract_internalRefUUID#13797985]
Input [4]: [_extract_internalRefUUID#13797985, _extract_internalRefUUID#13797982, _extract_code#13797983, _extract_internalRefUUID#13797984]
(303) BroadcastExchange
Input [4]: [_extract_code#13797983, _extract_internalRefUUID#13797984, _extract_internalRefUUID#13797982, _extract_internalRefUUID#13797985]
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=13509891]
(304) BroadcastHashJoin
Left keys [4]: [coalesce(product#13792337, ), isnull(product#13792337), coalesce(plant#13792338, ), isnull(plant#13792338)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797982, ), isnull(_extract_internalRefUUID#13797982), coalesce(_extract_internalRefUUID#13797985, ), isnull(_extract_internalRefUUID#13797985)]
Join type: LeftOuter
Join condition: None
(305) Project
Output [4]: [product#13792337, plant#13792338, _extract_code#13797983, _extract_internalRefUUID#13797984]
Input [6]: [product#13792337, plant#13792338, _extract_code#13797983, _extract_internalRefUUID#13797984, _extract_internalRefUUID#13797982, _extract_internalRefUUID#13797985]
(306) Scan parquet
Output [4]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358, systemId#13792351]
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>>>
(307) Filter
Input [4]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358, systemId#13792351]
Condition : isnotnull(internalUUID#13792352)
(308) Project
Output [3]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
Input [4]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358, systemId#13792351]
(309) Exchange
Input [3]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508912]
(310) BroadcastExchange
Input [3]: [internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509895]
(311) BroadcastHashJoin
Left keys [1]: [product#13792337]
Right keys [1]: [internalUUID#13792352]
Join type: LeftOuter
Join condition: None
(312) Project
Output [2]: [plant#13792338, filter(unitOfMeasureConversions#13792358, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797983) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797984)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792356.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792356.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792363]
Input [7]: [product#13792337, plant#13792338, _extract_code#13797983, _extract_internalRefUUID#13797984, internalUUID#13792352, baseUnitOfMeasure#13792356, unitOfMeasureConversions#13792358]
(313) Generate
Input [2]: [plant#13792338, filteredUnitOfMeasureConversions#13792363]
Arguments: explode(filteredUnitOfMeasureConversions#13792363.quantityNumerator), [plant#13792338, filteredUnitOfMeasureConversions#13792363], true, [quantityNumerator#13792364]
(314) Project
Output [2]: [plant#13792338, filteredUnitOfMeasureConversions#13792363.quantityDenominator AS _extract_quantityDenominator#13797706]
Input [3]: [plant#13792338, filteredUnitOfMeasureConversions#13792363, quantityNumerator#13792364]
(315) Generate
Input [2]: [plant#13792338, _extract_quantityDenominator#13797706]
Arguments: explode(_extract_quantityDenominator#13797706), [plant#13792338], true, [quantityDenominator#13792365]
(316) Project
Output [1]: [plant#13792338]
Input [2]: [plant#13792338, quantityDenominator#13792365]
(317) HashAggregate
Input [1]: [plant#13792338]
Keys [1]: [plant#13792338]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792338]
(318) Exchange
Input [1]: [plant#13792338]
Arguments: hashpartitioning(plant#13792338, 37), ENSURE_REQUIREMENTS, [plan_id=13509904]
(319) HashAggregate
Input [1]: [plant#13792338]
Keys [1]: [plant#13792338]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792338]
(320) BroadcastHashJoin
Left keys [1]: [plantUuid#13792087]
Right keys [1]: [plant#13792338]
Join type: Inner
Join condition: None
(321) Project
Output [3]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Input [4]: [plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094, plant#13792338]
(322) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13792122.internalRefUUID, ), isnull(plant#13792122.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13792087, ), isnull(plantUuid#13792087)]
Join type: Inner
Join condition: None
(323) Generate
Input [9]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, stockQuantities#13792124, plantUuid#13792087, storageLocId#13792093, storageLocUuid#13792094]
Arguments: explode(filter(stockQuantities#13792124, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13792094) AND (lambda x#13792128.storageLocation.Id = storageLocId#13792093)), lambda x#13792128, false))), [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, plantUuid#13792087], false, [stockQuantity#13792129]
(324) ObjectHashAggregate
Input [7]: [systemId#13792119, internalUUID#13792120, product#13792121, plant#13792122, calculationDateTime#13792123, plantUuid#13792087, stockQuantity#13792129]
Keys [5]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119]
Functions [2]: [partial_first(calculationDateTime#13792123, false), partial_collect_list(stockQuantity#13792129, 0, 0)]
Aggregate Attributes [3]: [first#13799076, valueSet#13799077, buf#13799078]
Results [8]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119, first#13799079, valueSet#13799080, buf#13799081]
(325) ObjectHashAggregate
Input [8]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119, first#13799079, valueSet#13799080, buf#13799081]
Keys [5]: [plantUuid#13792087, internalUUID#13792120, plant#13792122, product#13792121, systemId#13792119]
Functions [2]: [first(calculationDateTime#13792123, false), collect_list(stockQuantity#13792129, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13792123)()#13792143, collect_list(stockQuantity#13792129, 0, 0)#13792144]
Results [4]: [product#13792121, plant#13792122, first(calculationDateTime#13792123)()#13792143 AS calculationDateTime#13792130, collect_list(stockQuantity#13792129, 0, 0)#13792144 AS stockQuantities#13792131]
(326) Filter
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantities#13792131]
Condition : ((size(stockQuantities#13792131, true) > 0) AND isnotnull(calculationDateTime#13792130))
(327) Generate
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantities#13792131]
Arguments: explode(stockQuantities#13792131), [product#13792121, plant#13792122, calculationDateTime#13792130], false, [stockQuantity#13792146]
(328) Filter
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantity#13792146]
Condition : (((isnotnull(stockQuantity#13792146.specialStockIndicator.code) AND isnotnull(stockQuantity#13792146.stockType.code)) AND (stockQuantity#13792146.specialStockIndicator.code = )) AND (stockQuantity#13792146.stockType.code = 01))
(329) Project
Output [5]: [plant#13792122.internalRefUUID AS plantUuid#13792148, product#13792121.internalRefUUID AS productUuid#13792150, calculationDateTime#13792130, stockQuantity#13792146.storagelocation.id AS storageLocId#13792151, stockQuantity#13792146.quantity.measure AS quantity#13792153]
Input [4]: [product#13792121, plant#13792122, calculationDateTime#13792130, stockQuantity#13792146]
(330) Exchange
Input [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: hashpartitioning(productUuid#13792150, plantUuid#13792148, 37), ENSURE_REQUIREMENTS, [plan_id=13509933]
(331) Sort
Input [5]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153]
Arguments: [productUuid#13792150 ASC NULLS FIRST, plantUuid#13792148 ASC NULLS FIRST], false, 0
(332) Filter
Input [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Condition : ((isnotnull(orderDateTime#13792167) AND isnotnull(plant#13792166)) AND isnotnull(product#13792165))
(333) Exchange
Input [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Arguments: hashpartitioning(product#13792165, plant#13792166, 37), REPARTITION_BY_NUM, [plan_id=13509580]
(334) Scan parquet
Output [4]: [plant#13792171, product#13792172, productionAspect#13792174, systemId#13792169]
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>>>>
(335) Project
Output [4]: [plant#13792171.internalRefUUID AS _extract_internalRefUUID#13797986, product#13792172.internalRefUUID AS _extract_internalRefUUID#13797987, productionAspect#13792174.productMovementPlants.unitOfIssue.code AS _extract_code#13797988, productionAspect#13792174.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13797989]
Input [4]: [plant#13792171, product#13792172, productionAspect#13792174, systemId#13792169]
(336) Exchange
Input [4]: [_extract_internalRefUUID#13797986, _extract_internalRefUUID#13797987, _extract_code#13797988, _extract_internalRefUUID#13797989]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508937]
(337) Project
Output [4]: [_extract_code#13797988, _extract_internalRefUUID#13797989, _extract_internalRefUUID#13797987, _extract_internalRefUUID#13797986]
Input [4]: [_extract_internalRefUUID#13797986, _extract_internalRefUUID#13797987, _extract_code#13797988, _extract_internalRefUUID#13797989]
(338) BroadcastExchange
Input [4]: [_extract_code#13797988, _extract_internalRefUUID#13797989, _extract_internalRefUUID#13797987, _extract_internalRefUUID#13797986]
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=13509920]
(339) BroadcastHashJoin
Left keys [4]: [coalesce(product#13792165, ), isnull(product#13792165), coalesce(plant#13792166, ), isnull(plant#13792166)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797987, ), isnull(_extract_internalRefUUID#13797987), coalesce(_extract_internalRefUUID#13797986, ), isnull(_extract_internalRefUUID#13797986)]
Join type: LeftOuter
Join condition: None
(340) Project
Output [5]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_code#13797988, _extract_internalRefUUID#13797989]
Input [7]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_code#13797988, _extract_internalRefUUID#13797989, _extract_internalRefUUID#13797987, _extract_internalRefUUID#13797986]
(341) Scan parquet
Output [4]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186, systemId#13792179]
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>>>
(342) Filter
Input [4]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186, systemId#13792179]
Condition : isnotnull(internalUUID#13792180)
(343) Project
Output [3]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
Input [4]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186, systemId#13792179]
(344) Exchange
Input [3]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508944]
(345) BroadcastExchange
Input [3]: [internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509924]
(346) BroadcastHashJoin
Left keys [1]: [product#13792165]
Right keys [1]: [internalUUID#13792180]
Join type: LeftOuter
Join condition: None
(347) Project
Output [4]: [product#13792165, plant#13792166, orderDateTime#13792167, filter(unitOfMeasureConversions#13792186, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797988) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797989)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792184.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792184.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792191]
Input [8]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_code#13797988, _extract_internalRefUUID#13797989, internalUUID#13792180, baseUnitOfMeasure#13792184, unitOfMeasureConversions#13792186]
(348) Generate
Input [4]: [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191]
Arguments: explode(filteredUnitOfMeasureConversions#13792191.quantityNumerator), [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191], true, [quantityNumerator#13792192]
(349) Project
Output [4]: [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191.quantityDenominator AS _extract_quantityDenominator#13797713]
Input [5]: [product#13792165, plant#13792166, orderDateTime#13792167, filteredUnitOfMeasureConversions#13792191, quantityNumerator#13792192]
(350) Generate
Input [4]: [product#13792165, plant#13792166, orderDateTime#13792167, _extract_quantityDenominator#13797713]
Arguments: explode(_extract_quantityDenominator#13797713), [product#13792165, plant#13792166, orderDateTime#13792167], true, [quantityDenominator#13792193]
(351) Project
Output [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Input [4]: [product#13792165, plant#13792166, orderDateTime#13792167, quantityDenominator#13792193]
(352) Sort
Input [3]: [product#13792165, plant#13792166, orderDateTime#13792167]
Arguments: [product#13792165 ASC NULLS FIRST, plant#13792166 ASC NULLS FIRST], false, 0
(353) SortMergeJoin
Left keys [2]: [productUuid#13792150, plantUuid#13792148]
Right keys [2]: [product#13792165, plant#13792166]
Join type: Inner
Join condition: (calculationDateTime#13792130 <= orderDateTime#13792167)
(354) Project
Output [5]: [plantUuid#13792148 AS plant#13792199, productUuid#13792150 AS product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Input [8]: [plantUuid#13792148, productUuid#13792150, calculationDateTime#13792130, storageLocId#13792151, quantity#13792153, product#13792165, plant#13792166, orderDateTime#13792167]
(355) Exchange
Input [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Arguments: hashpartitioning(coalesce(plant#13792199, ), isnull(plant#13792199), coalesce(product#13792200, ), isnull(product#13792200), coalesce(storageLocId#13792151, ), isnull(storageLocId#13792151), coalesce(calculationDateTime#13792130, 1970-01-01 00:00:00), isnull(calculationDateTime#13792130), 37), ENSURE_REQUIREMENTS, [plan_id=13509989]
(356) Sort
Input [5]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153]
Arguments: [coalesce(plant#13792199, ) ASC NULLS FIRST, isnull(plant#13792199) ASC NULLS FIRST, coalesce(product#13792200, ) ASC NULLS FIRST, isnull(product#13792200) ASC NULLS FIRST, coalesce(storageLocId#13792151, ) ASC NULLS FIRST, isnull(storageLocId#13792151) ASC NULLS FIRST, coalesce(calculationDateTime#13792130, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#13792130) ASC NULLS FIRST], false, 0
(357) Scan parquet
Output [6]: [internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213, systemId#13792208]
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>>>>>
(358) Filter
Input [6]: [internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213, systemId#13792208]
Condition : (isnotnull(plant#13792211.internalRefUUID) AND isnotnull(product#13792210.internalRefUUID))
(359) Project
Output [6]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213]
Input [6]: [internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213, systemId#13792208]
(360) Exchange
Input [6]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508956]
(361) BroadcastExchange
Input [6]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213]
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=13509958]
(362) Scan parquet
Output [2]: [marketUnit#13792214, distributionCenters#13792220]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(363) Filter
Input [2]: [marketUnit#13792214, distributionCenters#13792220]
Condition : (((marketUnit#13792214 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13792220, true) > 0)) AND isnotnull(distributionCenters#13792220))
(364) Project
Output [1]: [distributionCenters#13792220]
Input [2]: [marketUnit#13792214, distributionCenters#13792220]
(365) Exchange
Input [1]: [distributionCenters#13792220]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508960]
(366) Generate
Input [1]: [distributionCenters#13792220]
Arguments: explode(distributionCenters#13792220), false, [distributionCenters#13792236]
(367) Filter
Input [1]: [distributionCenters#13792236]
Condition : (((size(distributionCenters#13792236.storageLocations, true) > 0) AND isnotnull(distributionCenters#13792236.storageLocations)) AND isnotnull(distributionCenters#13792236.internalRefUUID))
(368) Project
Output [2]: [distributionCenters#13792236.internalRefUUID AS _extract_internalRefUUID#13797720, distributionCenters#13792236.storageLocations AS _extract_storageLocations#13797721]
Input [1]: [distributionCenters#13792236]
(369) Generate
Input [2]: [_extract_internalRefUUID#13797720, _extract_storageLocations#13797721]
Arguments: explode(_extract_storageLocations#13797721), [_extract_internalRefUUID#13797720], false, [storageLocations#13792237]
(370) Project
Output [3]: [_extract_internalRefUUID#13797720 AS plantUuid#13792239, storageLocations#13792237.id AS storageLocId#13792240, storageLocations#13792237.internalRefUUID AS storageLocUuid#13792241]
Input [2]: [_extract_internalRefUUID#13797720, storageLocations#13792237]
(371) BroadcastExchange
Input [3]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509954]
(372) Scan parquet
Output [2]: [product#13792242, plant#13792243]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(373) Filter
Input [2]: [product#13792242, plant#13792243]
Condition : isnotnull(plant#13792243)
(374) Exchange
Input [2]: [product#13792242, plant#13792243]
Arguments: hashpartitioning(product#13792242, plant#13792243, 37), REPARTITION_BY_NUM, [plan_id=13509591]
(375) Scan parquet
Output [4]: [plant#13792248, product#13792249, productionAspect#13792251, systemId#13792246]
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>>>>
(376) Project
Output [4]: [plant#13792248.internalRefUUID AS _extract_internalRefUUID#13797993, product#13792249.internalRefUUID AS _extract_internalRefUUID#13797990, productionAspect#13792251.productMovementPlants.unitOfIssue.code AS _extract_code#13797991, productionAspect#13792251.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13797992]
Input [4]: [plant#13792248, product#13792249, productionAspect#13792251, systemId#13792246]
(377) Exchange
Input [4]: [_extract_internalRefUUID#13797993, _extract_internalRefUUID#13797990, _extract_code#13797991, _extract_internalRefUUID#13797992]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508972]
(378) Project
Output [4]: [_extract_code#13797991, _extract_internalRefUUID#13797992, _extract_internalRefUUID#13797990, _extract_internalRefUUID#13797993]
Input [4]: [_extract_internalRefUUID#13797993, _extract_internalRefUUID#13797990, _extract_code#13797991, _extract_internalRefUUID#13797992]
(379) BroadcastExchange
Input [4]: [_extract_code#13797991, _extract_internalRefUUID#13797992, _extract_internalRefUUID#13797990, _extract_internalRefUUID#13797993]
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=13509938]
(380) BroadcastHashJoin
Left keys [4]: [coalesce(product#13792242, ), isnull(product#13792242), coalesce(plant#13792243, ), isnull(plant#13792243)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797990, ), isnull(_extract_internalRefUUID#13797990), coalesce(_extract_internalRefUUID#13797993, ), isnull(_extract_internalRefUUID#13797993)]
Join type: LeftOuter
Join condition: None
(381) Project
Output [4]: [product#13792242, plant#13792243, _extract_code#13797991, _extract_internalRefUUID#13797992]
Input [6]: [product#13792242, plant#13792243, _extract_code#13797991, _extract_internalRefUUID#13797992, _extract_internalRefUUID#13797990, _extract_internalRefUUID#13797993]
(382) Scan parquet
Output [4]: [internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263, systemId#13792256]
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>>>
(383) Filter
Input [4]: [internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263, systemId#13792256]
Condition : isnotnull(internalUUID#13792257)
(384) Project
Output [3]: [internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263]
Input [4]: [internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263, systemId#13792256]
(385) Exchange
Input [3]: [internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13508979]
(386) BroadcastExchange
Input [3]: [internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509942]
(387) BroadcastHashJoin
Left keys [1]: [product#13792242]
Right keys [1]: [internalUUID#13792257]
Join type: LeftOuter
Join condition: None
(388) Project
Output [2]: [plant#13792243, filter(unitOfMeasureConversions#13792263, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797991) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797992)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792261.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792261.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792268]
Input [7]: [product#13792242, plant#13792243, _extract_code#13797991, _extract_internalRefUUID#13797992, internalUUID#13792257, baseUnitOfMeasure#13792261, unitOfMeasureConversions#13792263]
(389) Generate
Input [2]: [plant#13792243, filteredUnitOfMeasureConversions#13792268]
Arguments: explode(filteredUnitOfMeasureConversions#13792268.quantityNumerator), [plant#13792243, filteredUnitOfMeasureConversions#13792268], true, [quantityNumerator#13792269]
(390) Project
Output [2]: [plant#13792243, filteredUnitOfMeasureConversions#13792268.quantityDenominator AS _extract_quantityDenominator#13797722]
Input [3]: [plant#13792243, filteredUnitOfMeasureConversions#13792268, quantityNumerator#13792269]
(391) Generate
Input [2]: [plant#13792243, _extract_quantityDenominator#13797722]
Arguments: explode(_extract_quantityDenominator#13797722), [plant#13792243], true, [quantityDenominator#13792270]
(392) Project
Output [1]: [plant#13792243]
Input [2]: [plant#13792243, quantityDenominator#13792270]
(393) HashAggregate
Input [1]: [plant#13792243]
Keys [1]: [plant#13792243]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792243]
(394) Exchange
Input [1]: [plant#13792243]
Arguments: hashpartitioning(plant#13792243, 37), ENSURE_REQUIREMENTS, [plan_id=13509951]
(395) HashAggregate
Input [1]: [plant#13792243]
Keys [1]: [plant#13792243]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13792243]
(396) BroadcastHashJoin
Left keys [1]: [plantUuid#13792239]
Right keys [1]: [plant#13792243]
Join type: Inner
Join condition: None
(397) Project
Output [3]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
Input [4]: [plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241, plant#13792243]
(398) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13792211.internalRefUUID, ), isnull(plant#13792211.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13792239, ), isnull(plantUuid#13792239)]
Join type: Inner
Join condition: None
(399) Generate
Input [9]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, stockQuantities#13792213, plantUuid#13792239, storageLocId#13792240, storageLocUuid#13792241]
Arguments: explode(filter(stockQuantities#13792213, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13792241) AND (lambda x#13792128.storageLocation.Id = storageLocId#13792240)), lambda x#13792128, false))), [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, plantUuid#13792239], false, [stockQuantity#13792273]
(400) ObjectHashAggregate
Input [7]: [systemId#13792208, internalUUID#13792209, product#13792210, plant#13792211, calculationDateTime#13792212, plantUuid#13792239, stockQuantity#13792273]
Keys [5]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208]
Functions [2]: [partial_first(calculationDateTime#13792212, false), partial_collect_list(stockQuantity#13792273, 0, 0)]
Aggregate Attributes [3]: [first#13799084, valueSet#13799085, buf#13799086]
Results [8]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208, first#13799087, valueSet#13799088, buf#13799089]
(401) ObjectHashAggregate
Input [8]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208, first#13799087, valueSet#13799088, buf#13799089]
Keys [5]: [plantUuid#13792239, internalUUID#13792209, plant#13792211, product#13792210, systemId#13792208]
Functions [2]: [first(calculationDateTime#13792212, false), collect_list(stockQuantity#13792273, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13792212)()#13792143, collect_list(stockQuantity#13792273, 0, 0)#13792144]
Results [4]: [product#13792210, plant#13792211, first(calculationDateTime#13792212)()#13792143 AS calculationDateTime#13792274, collect_list(stockQuantity#13792273, 0, 0)#13792144 AS stockQuantities#13792275]
(402) Filter
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantities#13792275]
Condition : ((size(stockQuantities#13792275, true) > 0) AND isnotnull(calculationDateTime#13792274))
(403) Generate
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantities#13792275]
Arguments: explode(stockQuantities#13792275), [product#13792210, plant#13792211, calculationDateTime#13792274], false, [stockQuantity#13792276]
(404) Filter
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantity#13792276]
Condition : (((isnotnull(stockQuantity#13792276.specialStockIndicator.code) AND isnotnull(stockQuantity#13792276.stockType.code)) AND (stockQuantity#13792276.specialStockIndicator.code = )) AND (stockQuantity#13792276.stockType.code = 01))
(405) Project
Output [4]: [plant#13792211.internalRefUUID AS plantUuid#13792278, product#13792210.internalRefUUID AS productUuid#13792280, calculationDateTime#13792274, stockQuantity#13792276.storagelocation.id AS storageLocId#13792281]
Input [4]: [product#13792210, plant#13792211, calculationDateTime#13792274, stockQuantity#13792276]
(406) Exchange
Input [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: hashpartitioning(productUuid#13792280, plantUuid#13792278, 37), ENSURE_REQUIREMENTS, [plan_id=13509980]
(407) Sort
Input [4]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281]
Arguments: [productUuid#13792280 ASC NULLS FIRST, plantUuid#13792278 ASC NULLS FIRST], false, 0
(408) Scan parquet
Output [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(409) Filter
Input [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
Condition : ((isnotnull(orderDateTime#13792288) AND isnotnull(plant#13792287)) AND isnotnull(product#13792286))
(410) Exchange
Input [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
Arguments: hashpartitioning(product#13792286, plant#13792287, 37), REPARTITION_BY_NUM, [plan_id=13509612]
(411) Scan parquet
Output [4]: [plant#13792292, product#13792293, productionAspect#13792295, systemId#13792290]
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>>>>
(412) Project
Output [4]: [plant#13792292.internalRefUUID AS _extract_internalRefUUID#13797997, product#13792293.internalRefUUID AS _extract_internalRefUUID#13797994, productionAspect#13792295.productMovementPlants.unitOfIssue.code AS _extract_code#13797995, productionAspect#13792295.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13797996]
Input [4]: [plant#13792292, product#13792293, productionAspect#13792295, systemId#13792290]
(413) Exchange
Input [4]: [_extract_internalRefUUID#13797997, _extract_internalRefUUID#13797994, _extract_code#13797995, _extract_internalRefUUID#13797996]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509004]
(414) Project
Output [4]: [_extract_code#13797995, _extract_internalRefUUID#13797996, _extract_internalRefUUID#13797994, _extract_internalRefUUID#13797997]
Input [4]: [_extract_internalRefUUID#13797997, _extract_internalRefUUID#13797994, _extract_code#13797995, _extract_internalRefUUID#13797996]
(415) BroadcastExchange
Input [4]: [_extract_code#13797995, _extract_internalRefUUID#13797996, _extract_internalRefUUID#13797994, _extract_internalRefUUID#13797997]
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=13509967]
(416) BroadcastHashJoin
Left keys [4]: [coalesce(product#13792286, ), isnull(product#13792286), coalesce(plant#13792287, ), isnull(plant#13792287)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13797994, ), isnull(_extract_internalRefUUID#13797994), coalesce(_extract_internalRefUUID#13797997, ), isnull(_extract_internalRefUUID#13797997)]
Join type: LeftOuter
Join condition: None
(417) Project
Output [5]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_code#13797995, _extract_internalRefUUID#13797996]
Input [7]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_code#13797995, _extract_internalRefUUID#13797996, _extract_internalRefUUID#13797994, _extract_internalRefUUID#13797997]
(418) Scan parquet
Output [4]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307, systemId#13792300]
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>>>
(419) Filter
Input [4]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307, systemId#13792300]
Condition : isnotnull(internalUUID#13792301)
(420) Project
Output [3]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
Input [4]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307, systemId#13792300]
(421) Exchange
Input [3]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509011]
(422) BroadcastExchange
Input [3]: [internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13509971]
(423) BroadcastHashJoin
Left keys [1]: [product#13792286]
Right keys [1]: [internalUUID#13792301]
Join type: LeftOuter
Join condition: None
(424) Project
Output [4]: [product#13792286, plant#13792287, orderDateTime#13792288, filter(unitOfMeasureConversions#13792307, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13797995) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13797996)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13792305.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13792305.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13792312]
Input [8]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_code#13797995, _extract_internalRefUUID#13797996, internalUUID#13792301, baseUnitOfMeasure#13792305, unitOfMeasureConversions#13792307]
(425) Generate
Input [4]: [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312]
Arguments: explode(filteredUnitOfMeasureConversions#13792312.quantityNumerator), [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312], true, [quantityNumerator#13792313]
(426) Project
Output [4]: [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312.quantityDenominator AS _extract_quantityDenominator#13797729]
Input [5]: [product#13792286, plant#13792287, orderDateTime#13792288, filteredUnitOfMeasureConversions#13792312, quantityNumerator#13792313]
(427) Generate
Input [4]: [product#13792286, plant#13792287, orderDateTime#13792288, _extract_quantityDenominator#13797729]
Arguments: explode(_extract_quantityDenominator#13797729), [product#13792286, plant#13792287, orderDateTime#13792288], true, [quantityDenominator#13792314]
(428) Project
Output [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
Input [4]: [product#13792286, plant#13792287, orderDateTime#13792288, quantityDenominator#13792314]
(429) Sort
Input [3]: [product#13792286, plant#13792287, orderDateTime#13792288]
Arguments: [product#13792286 ASC NULLS FIRST, plant#13792287 ASC NULLS FIRST], false, 0
(430) SortMergeJoin
Left keys [2]: [productUuid#13792280, plantUuid#13792278]
Right keys [2]: [product#13792286, plant#13792287]
Join type: Inner
Join condition: (calculationDateTime#13792274 <= orderDateTime#13792288)
(431) Project
Output [4]: [plantUuid#13792278 AS plant#13792317, productUuid#13792280 AS product#13792318, storageLocId#13792281, calculationDateTime#13792274]
Input [7]: [plantUuid#13792278, productUuid#13792280, calculationDateTime#13792274, storageLocId#13792281, product#13792286, plant#13792287, orderDateTime#13792288]
(432) HashAggregate
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, calculationDateTime#13792274]
Keys [3]: [plant#13792317, product#13792318, storageLocId#13792281]
Functions [1]: [partial_max(calculationDateTime#13792274)]
Aggregate Attributes [1]: [max#13799082]
Results [4]: [plant#13792317, product#13792318, storageLocId#13792281, max#13799083]
(433) HashAggregate
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, max#13799083]
Keys [3]: [plant#13792317, product#13792318, storageLocId#13792281]
Functions [1]: [max(calculationDateTime#13792274)]
Aggregate Attributes [1]: [max(calculationDateTime#13792274)#13792207]
Results [4]: [plant#13792317, product#13792318, storageLocId#13792281, max(calculationDateTime#13792274)#13792207 AS max_calc_datetime#13792201]
(434) Exchange
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
Arguments: hashpartitioning(coalesce(plant#13792317, ), isnull(plant#13792317), coalesce(product#13792318, ), isnull(product#13792318), coalesce(storageLocId#13792281, ), isnull(storageLocId#13792281), coalesce(max_calc_datetime#13792201, 1970-01-01 00:00:00), isnull(max_calc_datetime#13792201), 37), ENSURE_REQUIREMENTS, [plan_id=13509990]
(435) Sort
Input [4]: [plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
Arguments: [coalesce(plant#13792317, ) ASC NULLS FIRST, isnull(plant#13792317) ASC NULLS FIRST, coalesce(product#13792318, ) ASC NULLS FIRST, isnull(product#13792318) ASC NULLS FIRST, coalesce(storageLocId#13792281, ) ASC NULLS FIRST, isnull(storageLocId#13792281) ASC NULLS FIRST, coalesce(max_calc_datetime#13792201, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#13792201) ASC NULLS FIRST], false, 0
(436) SortMergeJoin
Left keys [8]: [coalesce(plant#13792199, ), isnull(plant#13792199), coalesce(product#13792200, ), isnull(product#13792200), coalesce(storageLocId#13792151, ), isnull(storageLocId#13792151), coalesce(calculationDateTime#13792130, 1970-01-01 00:00:00), isnull(calculationDateTime#13792130)]
Right keys [8]: [coalesce(plant#13792317, ), isnull(plant#13792317), coalesce(product#13792318, ), isnull(product#13792318), coalesce(storageLocId#13792281, ), isnull(storageLocId#13792281), coalesce(max_calc_datetime#13792201, 1970-01-01 00:00:00), isnull(max_calc_datetime#13792201)]
Join type: Inner
Join condition: None
(437) Project
Output [4]: [plant#13792199, product#13792200, calculationDateTime#13792130, quantity#13792153]
Input [9]: [plant#13792199, product#13792200, storageLocId#13792151, calculationDateTime#13792130, quantity#13792153, plant#13792317, product#13792318, storageLocId#13792281, max_calc_datetime#13792201]
(438) HashAggregate
Input [4]: [plant#13792199, product#13792200, calculationDateTime#13792130, quantity#13792153]
Keys [2]: [product#13792200, plant#13792199]
Functions [2]: [partial_min(calculationDateTime#13792130), partial_sum(quantity#13792153)]
Aggregate Attributes [2]: [min#13799072, sum#13799073]
Results [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
(439) Exchange
Input [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
Arguments: hashpartitioning(product#13792200, plant#13792199, 37), ENSURE_REQUIREMENTS, [plan_id=13509997]
(440) HashAggregate
Input [4]: [product#13792200, plant#13792199, min#13799074, sum#13799075]
Keys [2]: [product#13792200, plant#13792199]
Functions [2]: [min(calculationDateTime#13792130), sum(quantity#13792153)]
Aggregate Attributes [2]: [min(calculationDateTime#13792130)#13792335, sum(quantity#13792153)#13792334]
Results [4]: [product#13792200, plant#13792199, min(calculationDateTime#13792130)#13792335 AS minCalculationDateTime#13792328, round(sum(quantity#13792153)#13792334, 0) AS roundedQuantitySum#13792336]
(441) Sort
Input [4]: [product#13792200, plant#13792199, minCalculationDateTime#13792328, roundedQuantitySum#13792336]
Arguments: [product#13792200 ASC NULLS FIRST, plant#13792199 ASC NULLS FIRST], false, 0
(442) SortMergeJoin
Left keys [2]: [product#13791972, plant#13791973]
Right keys [2]: [product#13792200, plant#13792199]
Join type: LeftOuter
Join condition: None
(443) Project
Output [5]: [product#13791972, plant#13791973, outboundUnit#13792060, CASE WHEN isnotnull(minCalculationDateTime#13792328) THEN minCalculationDateTime#13792328 ELSE orderDateTime#13791974 END AS stockDatetime#13792371, CASE WHEN isnotnull(roundedQuantitySum#13792336) THEN array(roundedQuantitySum#13792336) ELSE [0.0] END AS stockBatchQuantities#13792372]
Input [8]: [product#13791972, plant#13791973, orderDateTime#13791974, outboundUnit#13792060, product#13792200, plant#13792199, minCalculationDateTime#13792328, roundedQuantitySum#13792336]
(444) Exchange
Input [5]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372]
Arguments: hashpartitioning(coalesce(plant#13791973, ), isnull(plant#13791973), coalesce(product#13791972, ), isnull(product#13791972), 37), ENSURE_REQUIREMENTS, [plan_id=13510145]
(445) Sort
Input [5]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372]
Arguments: [coalesce(plant#13791973, ) ASC NULLS FIRST, isnull(plant#13791973) ASC NULLS FIRST, coalesce(product#13791972, ) ASC NULLS FIRST, isnull(product#13791972) ASC NULLS FIRST], false, 0
(446) Scan parquet
Output [3]: [product#13793491, plant#13793492, orderDateTime#13793493]
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/10000000539/shardId=0_1_10000000539]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(447) Exchange
Input [3]: [product#13793491, plant#13793492, orderDateTime#13793493]
Arguments: hashpartitioning(product#13793491, plant#13793492, 37), REPARTITION_BY_NUM, [plan_id=13509029]
(448) Project
Output [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
Input [9]: [internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503, systemId#13793495]
(449) Exchange
Input [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509032]
(450) Project
Output [1]: [struct(systemId, systemId#13793495, internalUUID, internalUUID#13793496, plant, plant#13793497, product, product#13793498, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#13793499, productionAspect, productionAspect#13793500, salesPlant, salesPlant#13793501, listing, listing#13793502, sourceOfSupplyCategory, sourceOfSupplyCategory#13793503) AS productPlant#13793504]
Input [9]: [systemId#13793495, internalUUID#13793496, plant#13793497, product#13793498, blockedForReplenishmentStartingFrom#13793499, productionAspect#13793500, salesPlant#13793501, listing#13793502, sourceOfSupplyCategory#13793503]
(451) BroadcastExchange
Input [1]: [productPlant#13793504]
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=13510005]
(452) BroadcastHashJoin
Left keys [4]: [coalesce(product#13793491, ), isnull(product#13793491), coalesce(plant#13793492, ), isnull(plant#13793492)]
Right keys [4]: [coalesce(productPlant#13793504.product.internalRefUUID, ), isnull(productPlant#13793504.product.internalRefUUID), coalesce(productPlant#13793504.plant.internalRefUUID, ), isnull(productPlant#13793504.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(453) Scan parquet
Output [4]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512, systemId#13793505]
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>>>
(454) Filter
Input [4]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512, systemId#13793505]
Condition : isnotnull(internalUUID#13793506)
(455) Project
Output [3]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
Input [4]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512, systemId#13793505]
(456) Exchange
Input [3]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509038]
(457) BroadcastExchange
Input [3]: [internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510008]
(458) BroadcastHashJoin
Left keys [1]: [product#13793491]
Right keys [1]: [internalUUID#13793506]
Join type: LeftOuter
Join condition: None
(459) Project
Output [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, filter(unitOfMeasureConversions#13793512, lambdafunction((((lambda u#13792048.measurementUnit1.code = productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#13792048.measurementUnit1.internalRefUUID = productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13793510.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13793510.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13793517]
Input [7]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, internalUUID#13793506, baseUnitOfMeasure#13793510, unitOfMeasureConversions#13793512]
(460) Project
Output [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, filteredUnitOfMeasureConversions#13793517.quantityDenominator AS _extract_quantityDenominator#13797998, filteredUnitOfMeasureConversions#13793517.quantityNumerator AS _extract_quantityNumerator#13797999]
Input [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, filteredUnitOfMeasureConversions#13793517]
(461) Generate
Input [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, _extract_quantityDenominator#13797998, _extract_quantityNumerator#13797999]
Arguments: explode(_extract_quantityNumerator#13797999), [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, _extract_quantityDenominator#13797998], true, [quantityNumerator#13793518]
(462) Generate
Input [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, _extract_quantityDenominator#13797998, quantityNumerator#13793518]
Arguments: explode(_extract_quantityDenominator#13797998), [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, quantityNumerator#13793518], true, [quantityDenominator#13793519]
(463) Project
Output [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, (cast(quantityNumerator#13793518 as double) / cast(quantityDenominator#13793519 as double)) AS outboundUnit#13793520]
Input [6]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, quantityNumerator#13793518, quantityDenominator#13793519]
(464) Project
Output [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, CASE WHEN (isnull(outboundUnit#13793520) OR (outboundUnit#13793520 <= 0.0)) THEN 1.0 ELSE outboundUnit#13793520 END AS outboundUnit#13793521]
Input [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793520]
(465) Sort
Input [5]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521]
Arguments: [product#13793491 ASC NULLS FIRST, plant#13793492 ASC NULLS FIRST], false, 0
(466) Scan parquet
Output [6]: [internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527, systemId#13793522]
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>>>>>
(467) Filter
Input [6]: [internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527, systemId#13793522]
Condition : (isnotnull(plant#13793525.internalRefUUID) AND isnotnull(product#13793524.internalRefUUID))
(468) Project
Output [6]: [systemId#13793522, internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527]
Input [6]: [internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527, systemId#13793522]
(469) Exchange
Input [6]: [systemId#13793522, internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509049]
(470) BroadcastExchange
Input [6]: [systemId#13793522, internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527]
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=13510036]
(471) Scan parquet
Output [2]: [marketUnit#13793528, distributionCenters#13793534]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(472) Filter
Input [2]: [marketUnit#13793528, distributionCenters#13793534]
Condition : (((marketUnit#13793528 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13793534, true) > 0)) AND isnotnull(distributionCenters#13793534))
(473) Project
Output [1]: [distributionCenters#13793534]
Input [2]: [marketUnit#13793528, distributionCenters#13793534]
(474) Exchange
Input [1]: [distributionCenters#13793534]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509053]
(475) Generate
Input [1]: [distributionCenters#13793534]
Arguments: explode(distributionCenters#13793534), false, [distributionCenters#13793550]
(476) Filter
Input [1]: [distributionCenters#13793550]
Condition : (((size(distributionCenters#13793550.storageLocations, true) > 0) AND isnotnull(distributionCenters#13793550.storageLocations)) AND isnotnull(distributionCenters#13793550.internalRefUUID))
(477) Project
Output [2]: [distributionCenters#13793550.internalRefUUID AS _extract_internalRefUUID#13797737, distributionCenters#13793550.storageLocations AS _extract_storageLocations#13797738]
Input [1]: [distributionCenters#13793550]
(478) Generate
Input [2]: [_extract_internalRefUUID#13797737, _extract_storageLocations#13797738]
Arguments: explode(_extract_storageLocations#13797738), [_extract_internalRefUUID#13797737], false, [storageLocations#13793551]
(479) Project
Output [3]: [_extract_internalRefUUID#13797737 AS plantUuid#13793553, storageLocations#13793551.id AS storageLocId#13793554, storageLocations#13793551.internalRefUUID AS storageLocUuid#13793555]
Input [2]: [_extract_internalRefUUID#13797737, storageLocations#13793551]
(480) BroadcastExchange
Input [3]: [plantUuid#13793553, storageLocId#13793554, storageLocUuid#13793555]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510032]
(481) Scan parquet
Output [2]: [product#13793556, plant#13793557]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(482) Filter
Input [2]: [product#13793556, plant#13793557]
Condition : isnotnull(plant#13793557)
(483) Exchange
Input [2]: [product#13793556, plant#13793557]
Arguments: hashpartitioning(product#13793556, plant#13793557, 37), REPARTITION_BY_NUM, [plan_id=13509631]
(484) Scan parquet
Output [4]: [plant#13793562, product#13793563, productionAspect#13793565, systemId#13793560]
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>>>>
(485) Project
Output [4]: [plant#13793562.internalRefUUID AS _extract_internalRefUUID#13798000, product#13793563.internalRefUUID AS _extract_internalRefUUID#13798003, productionAspect#13793565.productMovementPlants.unitOfIssue.code AS _extract_code#13798001, productionAspect#13793565.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798002]
Input [4]: [plant#13793562, product#13793563, productionAspect#13793565, systemId#13793560]
(486) Exchange
Input [4]: [_extract_internalRefUUID#13798000, _extract_internalRefUUID#13798003, _extract_code#13798001, _extract_internalRefUUID#13798002]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509065]
(487) Project
Output [4]: [_extract_code#13798001, _extract_internalRefUUID#13798002, _extract_internalRefUUID#13798003, _extract_internalRefUUID#13798000]
Input [4]: [_extract_internalRefUUID#13798000, _extract_internalRefUUID#13798003, _extract_code#13798001, _extract_internalRefUUID#13798002]
(488) BroadcastExchange
Input [4]: [_extract_code#13798001, _extract_internalRefUUID#13798002, _extract_internalRefUUID#13798003, _extract_internalRefUUID#13798000]
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=13510016]
(489) BroadcastHashJoin
Left keys [4]: [coalesce(product#13793556, ), isnull(product#13793556), coalesce(plant#13793557, ), isnull(plant#13793557)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798003, ), isnull(_extract_internalRefUUID#13798003), coalesce(_extract_internalRefUUID#13798000, ), isnull(_extract_internalRefUUID#13798000)]
Join type: LeftOuter
Join condition: None
(490) Project
Output [4]: [product#13793556, plant#13793557, _extract_code#13798001, _extract_internalRefUUID#13798002]
Input [6]: [product#13793556, plant#13793557, _extract_code#13798001, _extract_internalRefUUID#13798002, _extract_internalRefUUID#13798003, _extract_internalRefUUID#13798000]
(491) Scan parquet
Output [4]: [internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577, systemId#13793570]
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>>>
(492) Filter
Input [4]: [internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577, systemId#13793570]
Condition : isnotnull(internalUUID#13793571)
(493) Project
Output [3]: [internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577]
Input [4]: [internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577, systemId#13793570]
(494) Exchange
Input [3]: [internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509072]
(495) BroadcastExchange
Input [3]: [internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510020]
(496) BroadcastHashJoin
Left keys [1]: [product#13793556]
Right keys [1]: [internalUUID#13793571]
Join type: LeftOuter
Join condition: None
(497) Project
Output [2]: [plant#13793557, filter(unitOfMeasureConversions#13793577, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798001) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798002)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13793575.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13793575.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13793582]
Input [7]: [product#13793556, plant#13793557, _extract_code#13798001, _extract_internalRefUUID#13798002, internalUUID#13793571, baseUnitOfMeasure#13793575, unitOfMeasureConversions#13793577]
(498) Generate
Input [2]: [plant#13793557, filteredUnitOfMeasureConversions#13793582]
Arguments: explode(filteredUnitOfMeasureConversions#13793582.quantityNumerator), [plant#13793557, filteredUnitOfMeasureConversions#13793582], true, [quantityNumerator#13793583]
(499) Project
Output [2]: [plant#13793557, filteredUnitOfMeasureConversions#13793582.quantityDenominator AS _extract_quantityDenominator#13797739]
Input [3]: [plant#13793557, filteredUnitOfMeasureConversions#13793582, quantityNumerator#13793583]
(500) Generate
Input [2]: [plant#13793557, _extract_quantityDenominator#13797739]
Arguments: explode(_extract_quantityDenominator#13797739), [plant#13793557], true, [quantityDenominator#13793584]
(501) Project
Output [1]: [plant#13793557]
Input [2]: [plant#13793557, quantityDenominator#13793584]
(502) HashAggregate
Input [1]: [plant#13793557]
Keys [1]: [plant#13793557]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13793557]
(503) Exchange
Input [1]: [plant#13793557]
Arguments: hashpartitioning(plant#13793557, 37), ENSURE_REQUIREMENTS, [plan_id=13510029]
(504) HashAggregate
Input [1]: [plant#13793557]
Keys [1]: [plant#13793557]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13793557]
(505) BroadcastHashJoin
Left keys [1]: [plantUuid#13793553]
Right keys [1]: [plant#13793557]
Join type: Inner
Join condition: None
(506) Project
Output [3]: [plantUuid#13793553, storageLocId#13793554, storageLocUuid#13793555]
Input [4]: [plantUuid#13793553, storageLocId#13793554, storageLocUuid#13793555, plant#13793557]
(507) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13793525.internalRefUUID, ), isnull(plant#13793525.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13793553, ), isnull(plantUuid#13793553)]
Join type: Inner
Join condition: None
(508) Generate
Input [9]: [systemId#13793522, internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, stockQuantities#13793527, plantUuid#13793553, storageLocId#13793554, storageLocUuid#13793555]
Arguments: explode(filter(stockQuantities#13793527, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13793555) AND (lambda x#13792128.storageLocation.Id = storageLocId#13793554)), lambda x#13792128, false))), [systemId#13793522, internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, plantUuid#13793553], false, [stockQuantity#13793587]
(509) ObjectHashAggregate
Input [7]: [systemId#13793522, internalUUID#13793523, product#13793524, plant#13793525, calculationDateTime#13793526, plantUuid#13793553, stockQuantity#13793587]
Keys [5]: [plantUuid#13793553, internalUUID#13793523, plant#13793525, product#13793524, systemId#13793522]
Functions [2]: [partial_first(calculationDateTime#13793526, false), partial_collect_list(stockQuantity#13793587, 0, 0)]
Aggregate Attributes [3]: [first#13799098, valueSet#13799099, buf#13799100]
Results [8]: [plantUuid#13793553, internalUUID#13793523, plant#13793525, product#13793524, systemId#13793522, first#13799101, valueSet#13799102, buf#13799103]
(510) ObjectHashAggregate
Input [8]: [plantUuid#13793553, internalUUID#13793523, plant#13793525, product#13793524, systemId#13793522, first#13799101, valueSet#13799102, buf#13799103]
Keys [5]: [plantUuid#13793553, internalUUID#13793523, plant#13793525, product#13793524, systemId#13793522]
Functions [2]: [first(calculationDateTime#13793526, false), collect_list(stockQuantity#13793587, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13793526)()#13792143, collect_list(stockQuantity#13793587, 0, 0)#13792144]
Results [4]: [product#13793524, plant#13793525, first(calculationDateTime#13793526)()#13792143 AS calculationDateTime#13793588, collect_list(stockQuantity#13793587, 0, 0)#13792144 AS stockQuantities#13793589]
(511) Filter
Input [4]: [product#13793524, plant#13793525, calculationDateTime#13793588, stockQuantities#13793589]
Condition : ((size(stockQuantities#13793589, true) > 0) AND isnotnull(calculationDateTime#13793588))
(512) Generate
Input [4]: [product#13793524, plant#13793525, calculationDateTime#13793588, stockQuantities#13793589]
Arguments: explode(stockQuantities#13793589), [product#13793524, plant#13793525, calculationDateTime#13793588], false, [stockQuantity#13793590]
(513) Filter
Input [4]: [product#13793524, plant#13793525, calculationDateTime#13793588, stockQuantity#13793590]
Condition : (((isnotnull(stockQuantity#13793590.specialStockIndicator.code) AND isnotnull(stockQuantity#13793590.stockType.code)) AND (stockQuantity#13793590.specialStockIndicator.code = )) AND (stockQuantity#13793590.stockType.code = 01))
(514) Project
Output [5]: [plant#13793525.internalRefUUID AS plantUuid#13793592, product#13793524.internalRefUUID AS productUuid#13793594, calculationDateTime#13793588, stockQuantity#13793590.storagelocation.id AS storageLocId#13793595, stockQuantity#13793590.quantity.measure AS quantity#13793597]
Input [4]: [product#13793524, plant#13793525, calculationDateTime#13793588, stockQuantity#13793590]
(515) Exchange
Input [5]: [plantUuid#13793592, productUuid#13793594, calculationDateTime#13793588, storageLocId#13793595, quantity#13793597]
Arguments: hashpartitioning(productUuid#13793594, plantUuid#13793592, 37), ENSURE_REQUIREMENTS, [plan_id=13510058]
(516) Sort
Input [5]: [plantUuid#13793592, productUuid#13793594, calculationDateTime#13793588, storageLocId#13793595, quantity#13793597]
Arguments: [productUuid#13793594 ASC NULLS FIRST, plantUuid#13793592 ASC NULLS FIRST], false, 0
(517) Scan parquet
Output [3]: [product#13793600, plant#13793601, orderDateTime#13793602]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(518) Filter
Input [3]: [product#13793600, plant#13793601, orderDateTime#13793602]
Condition : ((isnotnull(orderDateTime#13793602) AND isnotnull(plant#13793601)) AND isnotnull(product#13793600))
(519) Exchange
Input [3]: [product#13793600, plant#13793601, orderDateTime#13793602]
Arguments: hashpartitioning(product#13793600, plant#13793601, 37), REPARTITION_BY_NUM, [plan_id=13509652]
(520) Scan parquet
Output [4]: [plant#13793606, product#13793607, productionAspect#13793609, systemId#13793604]
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>>>>
(521) Project
Output [4]: [plant#13793606.internalRefUUID AS _extract_internalRefUUID#13798005, product#13793607.internalRefUUID AS _extract_internalRefUUID#13798004, productionAspect#13793609.productMovementPlants.unitOfIssue.code AS _extract_code#13798006, productionAspect#13793609.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798007]
Input [4]: [plant#13793606, product#13793607, productionAspect#13793609, systemId#13793604]
(522) Exchange
Input [4]: [_extract_internalRefUUID#13798005, _extract_internalRefUUID#13798004, _extract_code#13798006, _extract_internalRefUUID#13798007]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509097]
(523) Project
Output [4]: [_extract_code#13798006, _extract_internalRefUUID#13798007, _extract_internalRefUUID#13798004, _extract_internalRefUUID#13798005]
Input [4]: [_extract_internalRefUUID#13798005, _extract_internalRefUUID#13798004, _extract_code#13798006, _extract_internalRefUUID#13798007]
(524) BroadcastExchange
Input [4]: [_extract_code#13798006, _extract_internalRefUUID#13798007, _extract_internalRefUUID#13798004, _extract_internalRefUUID#13798005]
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=13510045]
(525) BroadcastHashJoin
Left keys [4]: [coalesce(product#13793600, ), isnull(product#13793600), coalesce(plant#13793601, ), isnull(plant#13793601)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798004, ), isnull(_extract_internalRefUUID#13798004), coalesce(_extract_internalRefUUID#13798005, ), isnull(_extract_internalRefUUID#13798005)]
Join type: LeftOuter
Join condition: None
(526) Project
Output [5]: [product#13793600, plant#13793601, orderDateTime#13793602, _extract_code#13798006, _extract_internalRefUUID#13798007]
Input [7]: [product#13793600, plant#13793601, orderDateTime#13793602, _extract_code#13798006, _extract_internalRefUUID#13798007, _extract_internalRefUUID#13798004, _extract_internalRefUUID#13798005]
(527) Scan parquet
Output [4]: [internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621, systemId#13793614]
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>>>
(528) Filter
Input [4]: [internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621, systemId#13793614]
Condition : isnotnull(internalUUID#13793615)
(529) Project
Output [3]: [internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621]
Input [4]: [internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621, systemId#13793614]
(530) Exchange
Input [3]: [internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509104]
(531) BroadcastExchange
Input [3]: [internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510049]
(532) BroadcastHashJoin
Left keys [1]: [product#13793600]
Right keys [1]: [internalUUID#13793615]
Join type: LeftOuter
Join condition: None
(533) Project
Output [4]: [product#13793600, plant#13793601, orderDateTime#13793602, filter(unitOfMeasureConversions#13793621, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798006) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798007)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13793619.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13793619.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13793626]
Input [8]: [product#13793600, plant#13793601, orderDateTime#13793602, _extract_code#13798006, _extract_internalRefUUID#13798007, internalUUID#13793615, baseUnitOfMeasure#13793619, unitOfMeasureConversions#13793621]
(534) Generate
Input [4]: [product#13793600, plant#13793601, orderDateTime#13793602, filteredUnitOfMeasureConversions#13793626]
Arguments: explode(filteredUnitOfMeasureConversions#13793626.quantityNumerator), [product#13793600, plant#13793601, orderDateTime#13793602, filteredUnitOfMeasureConversions#13793626], true, [quantityNumerator#13793627]
(535) Project
Output [4]: [product#13793600, plant#13793601, orderDateTime#13793602, filteredUnitOfMeasureConversions#13793626.quantityDenominator AS _extract_quantityDenominator#13797746]
Input [5]: [product#13793600, plant#13793601, orderDateTime#13793602, filteredUnitOfMeasureConversions#13793626, quantityNumerator#13793627]
(536) Generate
Input [4]: [product#13793600, plant#13793601, orderDateTime#13793602, _extract_quantityDenominator#13797746]
Arguments: explode(_extract_quantityDenominator#13797746), [product#13793600, plant#13793601, orderDateTime#13793602], true, [quantityDenominator#13793628]
(537) Project
Output [3]: [product#13793600, plant#13793601, orderDateTime#13793602]
Input [4]: [product#13793600, plant#13793601, orderDateTime#13793602, quantityDenominator#13793628]
(538) Sort
Input [3]: [product#13793600, plant#13793601, orderDateTime#13793602]
Arguments: [product#13793600 ASC NULLS FIRST, plant#13793601 ASC NULLS FIRST], false, 0
(539) SortMergeJoin
Left keys [2]: [productUuid#13793594, plantUuid#13793592]
Right keys [2]: [product#13793600, plant#13793601]
Join type: Inner
Join condition: (calculationDateTime#13793588 <= orderDateTime#13793602)
(540) Project
Output [5]: [plantUuid#13793592 AS plant#13793631, productUuid#13793594 AS product#13793632, storageLocId#13793595, calculationDateTime#13793588, quantity#13793597]
Input [8]: [plantUuid#13793592, productUuid#13793594, calculationDateTime#13793588, storageLocId#13793595, quantity#13793597, product#13793600, plant#13793601, orderDateTime#13793602]
(541) Exchange
Input [5]: [plant#13793631, product#13793632, storageLocId#13793595, calculationDateTime#13793588, quantity#13793597]
Arguments: hashpartitioning(coalesce(plant#13793631, ), isnull(plant#13793631), coalesce(product#13793632, ), isnull(product#13793632), coalesce(storageLocId#13793595, ), isnull(storageLocId#13793595), coalesce(calculationDateTime#13793588, 1970-01-01 00:00:00), isnull(calculationDateTime#13793588), 37), ENSURE_REQUIREMENTS, [plan_id=13510114]
(542) Sort
Input [5]: [plant#13793631, product#13793632, storageLocId#13793595, calculationDateTime#13793588, quantity#13793597]
Arguments: [coalesce(plant#13793631, ) ASC NULLS FIRST, isnull(plant#13793631) ASC NULLS FIRST, coalesce(product#13793632, ) ASC NULLS FIRST, isnull(product#13793632) ASC NULLS FIRST, coalesce(storageLocId#13793595, ) ASC NULLS FIRST, isnull(storageLocId#13793595) ASC NULLS FIRST, coalesce(calculationDateTime#13793588, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#13793588) ASC NULLS FIRST], false, 0
(543) Scan parquet
Output [6]: [internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638, systemId#13793633]
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>>>>>
(544) Filter
Input [6]: [internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638, systemId#13793633]
Condition : (isnotnull(plant#13793636.internalRefUUID) AND isnotnull(product#13793635.internalRefUUID))
(545) Project
Output [6]: [systemId#13793633, internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638]
Input [6]: [internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638, systemId#13793633]
(546) Exchange
Input [6]: [systemId#13793633, internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509116]
(547) BroadcastExchange
Input [6]: [systemId#13793633, internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638]
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=13510083]
(548) Scan parquet
Output [2]: [marketUnit#13793639, distributionCenters#13793645]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(549) Filter
Input [2]: [marketUnit#13793639, distributionCenters#13793645]
Condition : (((marketUnit#13793639 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13793645, true) > 0)) AND isnotnull(distributionCenters#13793645))
(550) Project
Output [1]: [distributionCenters#13793645]
Input [2]: [marketUnit#13793639, distributionCenters#13793645]
(551) Exchange
Input [1]: [distributionCenters#13793645]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509120]
(552) Generate
Input [1]: [distributionCenters#13793645]
Arguments: explode(distributionCenters#13793645), false, [distributionCenters#13793661]
(553) Filter
Input [1]: [distributionCenters#13793661]
Condition : (((size(distributionCenters#13793661.storageLocations, true) > 0) AND isnotnull(distributionCenters#13793661.storageLocations)) AND isnotnull(distributionCenters#13793661.internalRefUUID))
(554) Project
Output [2]: [distributionCenters#13793661.internalRefUUID AS _extract_internalRefUUID#13797753, distributionCenters#13793661.storageLocations AS _extract_storageLocations#13797754]
Input [1]: [distributionCenters#13793661]
(555) Generate
Input [2]: [_extract_internalRefUUID#13797753, _extract_storageLocations#13797754]
Arguments: explode(_extract_storageLocations#13797754), [_extract_internalRefUUID#13797753], false, [storageLocations#13793662]
(556) Project
Output [3]: [_extract_internalRefUUID#13797753 AS plantUuid#13793664, storageLocations#13793662.id AS storageLocId#13793665, storageLocations#13793662.internalRefUUID AS storageLocUuid#13793666]
Input [2]: [_extract_internalRefUUID#13797753, storageLocations#13793662]
(557) BroadcastExchange
Input [3]: [plantUuid#13793664, storageLocId#13793665, storageLocUuid#13793666]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510079]
(558) Scan parquet
Output [2]: [product#13793667, plant#13793668]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(559) Filter
Input [2]: [product#13793667, plant#13793668]
Condition : isnotnull(plant#13793668)
(560) Exchange
Input [2]: [product#13793667, plant#13793668]
Arguments: hashpartitioning(product#13793667, plant#13793668, 37), REPARTITION_BY_NUM, [plan_id=13509663]
(561) Scan parquet
Output [4]: [plant#13793673, product#13793674, productionAspect#13793676, systemId#13793671]
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>>>>
(562) Project
Output [4]: [plant#13793673.internalRefUUID AS _extract_internalRefUUID#13798010, product#13793674.internalRefUUID AS _extract_internalRefUUID#13798011, productionAspect#13793676.productMovementPlants.unitOfIssue.code AS _extract_code#13798008, productionAspect#13793676.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798009]
Input [4]: [plant#13793673, product#13793674, productionAspect#13793676, systemId#13793671]
(563) Exchange
Input [4]: [_extract_internalRefUUID#13798010, _extract_internalRefUUID#13798011, _extract_code#13798008, _extract_internalRefUUID#13798009]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509132]
(564) Project
Output [4]: [_extract_code#13798008, _extract_internalRefUUID#13798009, _extract_internalRefUUID#13798011, _extract_internalRefUUID#13798010]
Input [4]: [_extract_internalRefUUID#13798010, _extract_internalRefUUID#13798011, _extract_code#13798008, _extract_internalRefUUID#13798009]
(565) BroadcastExchange
Input [4]: [_extract_code#13798008, _extract_internalRefUUID#13798009, _extract_internalRefUUID#13798011, _extract_internalRefUUID#13798010]
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=13510063]
(566) BroadcastHashJoin
Left keys [4]: [coalesce(product#13793667, ), isnull(product#13793667), coalesce(plant#13793668, ), isnull(plant#13793668)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798011, ), isnull(_extract_internalRefUUID#13798011), coalesce(_extract_internalRefUUID#13798010, ), isnull(_extract_internalRefUUID#13798010)]
Join type: LeftOuter
Join condition: None
(567) Project
Output [4]: [product#13793667, plant#13793668, _extract_code#13798008, _extract_internalRefUUID#13798009]
Input [6]: [product#13793667, plant#13793668, _extract_code#13798008, _extract_internalRefUUID#13798009, _extract_internalRefUUID#13798011, _extract_internalRefUUID#13798010]
(568) Scan parquet
Output [4]: [internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688, systemId#13793681]
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>>>
(569) Filter
Input [4]: [internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688, systemId#13793681]
Condition : isnotnull(internalUUID#13793682)
(570) Project
Output [3]: [internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688]
Input [4]: [internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688, systemId#13793681]
(571) Exchange
Input [3]: [internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509139]
(572) BroadcastExchange
Input [3]: [internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510067]
(573) BroadcastHashJoin
Left keys [1]: [product#13793667]
Right keys [1]: [internalUUID#13793682]
Join type: LeftOuter
Join condition: None
(574) Project
Output [2]: [plant#13793668, filter(unitOfMeasureConversions#13793688, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798008) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798009)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13793686.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13793686.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13793693]
Input [7]: [product#13793667, plant#13793668, _extract_code#13798008, _extract_internalRefUUID#13798009, internalUUID#13793682, baseUnitOfMeasure#13793686, unitOfMeasureConversions#13793688]
(575) Generate
Input [2]: [plant#13793668, filteredUnitOfMeasureConversions#13793693]
Arguments: explode(filteredUnitOfMeasureConversions#13793693.quantityNumerator), [plant#13793668, filteredUnitOfMeasureConversions#13793693], true, [quantityNumerator#13793694]
(576) Project
Output [2]: [plant#13793668, filteredUnitOfMeasureConversions#13793693.quantityDenominator AS _extract_quantityDenominator#13797755]
Input [3]: [plant#13793668, filteredUnitOfMeasureConversions#13793693, quantityNumerator#13793694]
(577) Generate
Input [2]: [plant#13793668, _extract_quantityDenominator#13797755]
Arguments: explode(_extract_quantityDenominator#13797755), [plant#13793668], true, [quantityDenominator#13793695]
(578) Project
Output [1]: [plant#13793668]
Input [2]: [plant#13793668, quantityDenominator#13793695]
(579) HashAggregate
Input [1]: [plant#13793668]
Keys [1]: [plant#13793668]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13793668]
(580) Exchange
Input [1]: [plant#13793668]
Arguments: hashpartitioning(plant#13793668, 37), ENSURE_REQUIREMENTS, [plan_id=13510076]
(581) HashAggregate
Input [1]: [plant#13793668]
Keys [1]: [plant#13793668]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13793668]
(582) BroadcastHashJoin
Left keys [1]: [plantUuid#13793664]
Right keys [1]: [plant#13793668]
Join type: Inner
Join condition: None
(583) Project
Output [3]: [plantUuid#13793664, storageLocId#13793665, storageLocUuid#13793666]
Input [4]: [plantUuid#13793664, storageLocId#13793665, storageLocUuid#13793666, plant#13793668]
(584) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13793636.internalRefUUID, ), isnull(plant#13793636.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13793664, ), isnull(plantUuid#13793664)]
Join type: Inner
Join condition: None
(585) Generate
Input [9]: [systemId#13793633, internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, stockQuantities#13793638, plantUuid#13793664, storageLocId#13793665, storageLocUuid#13793666]
Arguments: explode(filter(stockQuantities#13793638, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13793666) AND (lambda x#13792128.storageLocation.Id = storageLocId#13793665)), lambda x#13792128, false))), [systemId#13793633, internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, plantUuid#13793664], false, [stockQuantity#13793698]
(586) ObjectHashAggregate
Input [7]: [systemId#13793633, internalUUID#13793634, product#13793635, plant#13793636, calculationDateTime#13793637, plantUuid#13793664, stockQuantity#13793698]
Keys [5]: [plantUuid#13793664, internalUUID#13793634, plant#13793636, product#13793635, systemId#13793633]
Functions [2]: [partial_first(calculationDateTime#13793637, false), partial_collect_list(stockQuantity#13793698, 0, 0)]
Aggregate Attributes [3]: [first#13799106, valueSet#13799107, buf#13799108]
Results [8]: [plantUuid#13793664, internalUUID#13793634, plant#13793636, product#13793635, systemId#13793633, first#13799109, valueSet#13799110, buf#13799111]
(587) ObjectHashAggregate
Input [8]: [plantUuid#13793664, internalUUID#13793634, plant#13793636, product#13793635, systemId#13793633, first#13799109, valueSet#13799110, buf#13799111]
Keys [5]: [plantUuid#13793664, internalUUID#13793634, plant#13793636, product#13793635, systemId#13793633]
Functions [2]: [first(calculationDateTime#13793637, false), collect_list(stockQuantity#13793698, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13793637)()#13792143, collect_list(stockQuantity#13793698, 0, 0)#13792144]
Results [4]: [product#13793635, plant#13793636, first(calculationDateTime#13793637)()#13792143 AS calculationDateTime#13793699, collect_list(stockQuantity#13793698, 0, 0)#13792144 AS stockQuantities#13793700]
(588) Filter
Input [4]: [product#13793635, plant#13793636, calculationDateTime#13793699, stockQuantities#13793700]
Condition : ((size(stockQuantities#13793700, true) > 0) AND isnotnull(calculationDateTime#13793699))
(589) Generate
Input [4]: [product#13793635, plant#13793636, calculationDateTime#13793699, stockQuantities#13793700]
Arguments: explode(stockQuantities#13793700), [product#13793635, plant#13793636, calculationDateTime#13793699], false, [stockQuantity#13793701]
(590) Filter
Input [4]: [product#13793635, plant#13793636, calculationDateTime#13793699, stockQuantity#13793701]
Condition : (((isnotnull(stockQuantity#13793701.specialStockIndicator.code) AND isnotnull(stockQuantity#13793701.stockType.code)) AND (stockQuantity#13793701.specialStockIndicator.code = )) AND (stockQuantity#13793701.stockType.code = 01))
(591) Project
Output [4]: [plant#13793636.internalRefUUID AS plantUuid#13793703, product#13793635.internalRefUUID AS productUuid#13793705, calculationDateTime#13793699, stockQuantity#13793701.storagelocation.id AS storageLocId#13793706]
Input [4]: [product#13793635, plant#13793636, calculationDateTime#13793699, stockQuantity#13793701]
(592) Exchange
Input [4]: [plantUuid#13793703, productUuid#13793705, calculationDateTime#13793699, storageLocId#13793706]
Arguments: hashpartitioning(productUuid#13793705, plantUuid#13793703, 37), ENSURE_REQUIREMENTS, [plan_id=13510105]
(593) Sort
Input [4]: [plantUuid#13793703, productUuid#13793705, calculationDateTime#13793699, storageLocId#13793706]
Arguments: [productUuid#13793705 ASC NULLS FIRST, plantUuid#13793703 ASC NULLS FIRST], false, 0
(594) Scan parquet
Output [3]: [product#13793711, plant#13793712, orderDateTime#13793713]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(595) Filter
Input [3]: [product#13793711, plant#13793712, orderDateTime#13793713]
Condition : ((isnotnull(orderDateTime#13793713) AND isnotnull(plant#13793712)) AND isnotnull(product#13793711))
(596) Exchange
Input [3]: [product#13793711, plant#13793712, orderDateTime#13793713]
Arguments: hashpartitioning(product#13793711, plant#13793712, 37), REPARTITION_BY_NUM, [plan_id=13509684]
(597) Scan parquet
Output [4]: [plant#13793717, product#13793718, productionAspect#13793720, systemId#13793715]
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>>>>
(598) Project
Output [4]: [plant#13793717.internalRefUUID AS _extract_internalRefUUID#13798013, product#13793718.internalRefUUID AS _extract_internalRefUUID#13798012, productionAspect#13793720.productMovementPlants.unitOfIssue.code AS _extract_code#13798014, productionAspect#13793720.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798015]
Input [4]: [plant#13793717, product#13793718, productionAspect#13793720, systemId#13793715]
(599) Exchange
Input [4]: [_extract_internalRefUUID#13798013, _extract_internalRefUUID#13798012, _extract_code#13798014, _extract_internalRefUUID#13798015]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509164]
(600) Project
Output [4]: [_extract_code#13798014, _extract_internalRefUUID#13798015, _extract_internalRefUUID#13798012, _extract_internalRefUUID#13798013]
Input [4]: [_extract_internalRefUUID#13798013, _extract_internalRefUUID#13798012, _extract_code#13798014, _extract_internalRefUUID#13798015]
(601) BroadcastExchange
Input [4]: [_extract_code#13798014, _extract_internalRefUUID#13798015, _extract_internalRefUUID#13798012, _extract_internalRefUUID#13798013]
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=13510092]
(602) BroadcastHashJoin
Left keys [4]: [coalesce(product#13793711, ), isnull(product#13793711), coalesce(plant#13793712, ), isnull(plant#13793712)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798012, ), isnull(_extract_internalRefUUID#13798012), coalesce(_extract_internalRefUUID#13798013, ), isnull(_extract_internalRefUUID#13798013)]
Join type: LeftOuter
Join condition: None
(603) Project
Output [5]: [product#13793711, plant#13793712, orderDateTime#13793713, _extract_code#13798014, _extract_internalRefUUID#13798015]
Input [7]: [product#13793711, plant#13793712, orderDateTime#13793713, _extract_code#13798014, _extract_internalRefUUID#13798015, _extract_internalRefUUID#13798012, _extract_internalRefUUID#13798013]
(604) Scan parquet
Output [4]: [internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732, systemId#13793725]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(605) Filter
Input [4]: [internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732, systemId#13793725]
Condition : isnotnull(internalUUID#13793726)
(606) Project
Output [3]: [internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732]
Input [4]: [internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732, systemId#13793725]
(607) Exchange
Input [3]: [internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509171]
(608) BroadcastExchange
Input [3]: [internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510096]
(609) BroadcastHashJoin
Left keys [1]: [product#13793711]
Right keys [1]: [internalUUID#13793726]
Join type: LeftOuter
Join condition: None
(610) Project
Output [4]: [product#13793711, plant#13793712, orderDateTime#13793713, filter(unitOfMeasureConversions#13793732, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798014) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798015)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13793730.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13793730.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13793737]
Input [8]: [product#13793711, plant#13793712, orderDateTime#13793713, _extract_code#13798014, _extract_internalRefUUID#13798015, internalUUID#13793726, baseUnitOfMeasure#13793730, unitOfMeasureConversions#13793732]
(611) Generate
Input [4]: [product#13793711, plant#13793712, orderDateTime#13793713, filteredUnitOfMeasureConversions#13793737]
Arguments: explode(filteredUnitOfMeasureConversions#13793737.quantityNumerator), [product#13793711, plant#13793712, orderDateTime#13793713, filteredUnitOfMeasureConversions#13793737], true, [quantityNumerator#13793738]
(612) Project
Output [4]: [product#13793711, plant#13793712, orderDateTime#13793713, filteredUnitOfMeasureConversions#13793737.quantityDenominator AS _extract_quantityDenominator#13797762]
Input [5]: [product#13793711, plant#13793712, orderDateTime#13793713, filteredUnitOfMeasureConversions#13793737, quantityNumerator#13793738]
(613) Generate
Input [4]: [product#13793711, plant#13793712, orderDateTime#13793713, _extract_quantityDenominator#13797762]
Arguments: explode(_extract_quantityDenominator#13797762), [product#13793711, plant#13793712, orderDateTime#13793713], true, [quantityDenominator#13793739]
(614) Project
Output [3]: [product#13793711, plant#13793712, orderDateTime#13793713]
Input [4]: [product#13793711, plant#13793712, orderDateTime#13793713, quantityDenominator#13793739]
(615) Sort
Input [3]: [product#13793711, plant#13793712, orderDateTime#13793713]
Arguments: [product#13793711 ASC NULLS FIRST, plant#13793712 ASC NULLS FIRST], false, 0
(616) SortMergeJoin
Left keys [2]: [productUuid#13793705, plantUuid#13793703]
Right keys [2]: [product#13793711, plant#13793712]
Join type: Inner
Join condition: (calculationDateTime#13793699 <= orderDateTime#13793713)
(617) Project
Output [4]: [plantUuid#13793703 AS plant#13793742, productUuid#13793705 AS product#13793743, storageLocId#13793706, calculationDateTime#13793699]
Input [7]: [plantUuid#13793703, productUuid#13793705, calculationDateTime#13793699, storageLocId#13793706, product#13793711, plant#13793712, orderDateTime#13793713]
(618) HashAggregate
Input [4]: [plant#13793742, product#13793743, storageLocId#13793706, calculationDateTime#13793699]
Keys [3]: [plant#13793742, product#13793743, storageLocId#13793706]
Functions [1]: [partial_max(calculationDateTime#13793699)]
Aggregate Attributes [1]: [max#13799104]
Results [4]: [plant#13793742, product#13793743, storageLocId#13793706, max#13799105]
(619) HashAggregate
Input [4]: [plant#13793742, product#13793743, storageLocId#13793706, max#13799105]
Keys [3]: [plant#13793742, product#13793743, storageLocId#13793706]
Functions [1]: [max(calculationDateTime#13793699)]
Aggregate Attributes [1]: [max(calculationDateTime#13793699)#13792207]
Results [4]: [plant#13793742, product#13793743, storageLocId#13793706, max(calculationDateTime#13793699)#13792207 AS max_calc_datetime#13793744]
(620) Exchange
Input [4]: [plant#13793742, product#13793743, storageLocId#13793706, max_calc_datetime#13793744]
Arguments: hashpartitioning(coalesce(plant#13793742, ), isnull(plant#13793742), coalesce(product#13793743, ), isnull(product#13793743), coalesce(storageLocId#13793706, ), isnull(storageLocId#13793706), coalesce(max_calc_datetime#13793744, 1970-01-01 00:00:00), isnull(max_calc_datetime#13793744), 37), ENSURE_REQUIREMENTS, [plan_id=13510115]
(621) Sort
Input [4]: [plant#13793742, product#13793743, storageLocId#13793706, max_calc_datetime#13793744]
Arguments: [coalesce(plant#13793742, ) ASC NULLS FIRST, isnull(plant#13793742) ASC NULLS FIRST, coalesce(product#13793743, ) ASC NULLS FIRST, isnull(product#13793743) ASC NULLS FIRST, coalesce(storageLocId#13793706, ) ASC NULLS FIRST, isnull(storageLocId#13793706) ASC NULLS FIRST, coalesce(max_calc_datetime#13793744, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#13793744) ASC NULLS FIRST], false, 0
(622) SortMergeJoin
Left keys [8]: [coalesce(plant#13793631, ), isnull(plant#13793631), coalesce(product#13793632, ), isnull(product#13793632), coalesce(storageLocId#13793595, ), isnull(storageLocId#13793595), coalesce(calculationDateTime#13793588, 1970-01-01 00:00:00), isnull(calculationDateTime#13793588)]
Right keys [8]: [coalesce(plant#13793742, ), isnull(plant#13793742), coalesce(product#13793743, ), isnull(product#13793743), coalesce(storageLocId#13793706, ), isnull(storageLocId#13793706), coalesce(max_calc_datetime#13793744, 1970-01-01 00:00:00), isnull(max_calc_datetime#13793744)]
Join type: Inner
Join condition: None
(623) Project
Output [4]: [plant#13793631, product#13793632, calculationDateTime#13793588, quantity#13793597]
Input [9]: [plant#13793631, product#13793632, storageLocId#13793595, calculationDateTime#13793588, quantity#13793597, plant#13793742, product#13793743, storageLocId#13793706, max_calc_datetime#13793744]
(624) HashAggregate
Input [4]: [plant#13793631, product#13793632, calculationDateTime#13793588, quantity#13793597]
Keys [2]: [product#13793632, plant#13793631]
Functions [2]: [partial_min(calculationDateTime#13793588), partial_sum(quantity#13793597)]
Aggregate Attributes [2]: [min#13799094, sum#13799095]
Results [4]: [product#13793632, plant#13793631, min#13799096, sum#13799097]
(625) Exchange
Input [4]: [product#13793632, plant#13793631, min#13799096, sum#13799097]
Arguments: hashpartitioning(product#13793632, plant#13793631, 37), ENSURE_REQUIREMENTS, [plan_id=13510122]
(626) HashAggregate
Input [4]: [product#13793632, plant#13793631, min#13799096, sum#13799097]
Keys [2]: [product#13793632, plant#13793631]
Functions [2]: [min(calculationDateTime#13793588), sum(quantity#13793597)]
Aggregate Attributes [2]: [min(calculationDateTime#13793588)#13792335, sum(quantity#13793597)#13792334]
Results [4]: [product#13793632, plant#13793631, min(calculationDateTime#13793588)#13792335 AS minCalculationDateTime#13793746, round(sum(quantity#13793597)#13792334, 0) AS roundedQuantitySum#13793747]
(627) Sort
Input [4]: [product#13793632, plant#13793631, minCalculationDateTime#13793746, roundedQuantitySum#13793747]
Arguments: [product#13793632 ASC NULLS FIRST, plant#13793631 ASC NULLS FIRST], false, 0
(628) SortMergeJoin
Left keys [2]: [product#13793491, plant#13793492]
Right keys [2]: [product#13793632, plant#13793631]
Join type: LeftOuter
Join condition: None
(629) Project
Output [7]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, CASE WHEN isnotnull(minCalculationDateTime#13793746) THEN minCalculationDateTime#13793746 ELSE orderDateTime#13793493 END AS stockDatetime#13793748, CASE WHEN isnotnull(roundedQuantitySum#13793747) THEN array(roundedQuantitySum#13793747) ELSE [0.0] END AS stockBatchQuantities#13793749]
Input [9]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, product#13793632, plant#13793631, minCalculationDateTime#13793746, roundedQuantitySum#13793747]
(630) BroadcastExchange
Input [9]: [product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
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=13510131]
(631) BroadcastHashJoin
Left keys [4]: [coalesce(plant#13793492, ), isnull(plant#13793492), coalesce(product#13793491, ), isnull(product#13793491)]
Right keys [4]: [coalesce(plant#13792375, ), isnull(plant#13792375), coalesce(product#13792374, ), isnull(product#13792374)]
Join type: LeftOuter
Join condition: None
(632) Project
Output [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, CASE WHEN isnotnull(product#13792374) THEN struct(demandChannel, demandChannel#13792376, demandStream, demandStream#13792377, considerVariance, considerVariance#13792378, demandTimeBuckets, demandTimeBuckets#13792379, demandPointInTimeStart, demandPointInTimeStart#13792380, demandPointInTimeEnd, demandPointInTimeEnd#13792381, demandPointInTime, demandPointInTime#13792382) END AS rawDemands#13792384]
Input [16]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, product#13792374, plant#13792375, demandChannel#13792376, demandStream#13792377, considerVariance#13792378, demandTimeBuckets#13792379, demandPointInTimeStart#13792380, demandPointInTimeEnd#13792381, demandPointInTime#13792382]
(633) ObjectHashAggregate
Input [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, rawDemands#13792384]
Keys [8]: [product#13793491, plant#13793492, orderDateTime#13793493, knownfloatingpointnormalized(if (isnull(productPlant#13793504)) null else named_struct(systemId, productPlant#13793504.systemId, internalUUID, productPlant#13793504.internalUUID, plant, productPlant#13793504.plant, product, productPlant#13793504.product, blockedForReplenishmentStartingFrom, productPlant#13793504.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#13793504.productionAspect)) null else named_struct(productMovementPlants, productPlant#13793504.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#13793504.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#13793504.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#13793504.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#13793504.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#13793504.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#13793504.salesPlant, listing, productPlant#13793504.listing, sourceOfSupplyCategory, productPlant#13793504.sourceOfSupplyCategory)) AS productPlant#13793504, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#13793521)) AS outboundUnit#13793521, stockDatetime#13793748, knownfloatingpointnormalized(transform(stockBatchQuantities#13793749, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#13799091)), lambda arg#13799091, false))) AS stockBatchQuantities#13793749, [7226582400000000] AS [7226582400000000]#13799090]
Functions [1]: [partial_collect_list(rawDemands#13792384, 0, 0)]
Aggregate Attributes [1]: [buf#13799092]
Results [9]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000]#13799090, buf#13799093]
(634) ObjectHashAggregate
Input [9]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000]#13799090, buf#13799093]
Keys [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000]#13799090]
Functions [1]: [collect_list(rawDemands#13792384, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#13792384, 0, 0)#13792404]
Results [8]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, collect_list(rawDemands#13792384, 0, 0)#13792404 AS rawDemands#13792385]
(635) Project
Output [2]: [internalUUID#13793442, address#13793448.timeZone.code AS timezonecode#13793454]
Input [3]: [internalUUID#13793442, address#13793448, systemId#13793441]
(636) Exchange
Input [2]: [internalUUID#13793442, timezonecode#13793454]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509195]
(637) BroadcastExchange
Input [2]: [internalUUID#13793442, timezonecode#13793454]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=13510137]
(638) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13793492, ), isnull(plant#13793492)]
Right keys [2]: [coalesce(internalUUID#13793442, ), isnull(internalUUID#13793442)]
Join type: LeftOuter
Join condition: None
(639) Project
Output [10]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13793750, rawDemands#13792385, CASE WHEN isnotnull(timezonecode#13793454) THEN timezonecode#13793454 ELSE UTC END AS timezonecode#13793456]
Input [10]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, rawDemands#13792385, internalUUID#13793442, timezonecode#13793454]
(640) DeserializeToObject
Input [10]: [product#13793491, plant#13793492, orderDateTime#13793493, productPlant#13793504, outboundUnit#13793521, stockDatetime#13793748, stockBatchQuantities#13793749, stockBatchShelfLifeEndDatetimes#13793750, rawDemands#13792385, timezonecode#13793456]
Arguments: createexternalrow(invoke(product#13793491.toString()), invoke(plant#13793492.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#13793493)), if (isnull(productPlant#13793504)) null else createexternalrow(invoke(productPlant#13793504.systemId.toString()), invoke(productPlant#13793504.internalUUID.toString()), if (isnull(productPlant#13793504.plant)) null else createexternalrow(invoke(productPlant#13793504.plant.internalRefUUID.toString()), invoke(productPlant#13793504.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#13793504.product)) null else createexternalrow(invoke(productPlant#13793504.product.internalRefUUID.toString()), invoke(productPlant#13793504.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#13793504.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#13793504.productionAspect)) null else createexternalrow(if (isnull(productPlant#13793504.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793504.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#13793504.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#13793504.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#13793504.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#13793504.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#13793504.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793504.salesPlant)) null else createexternalrow(if (isnull(productPlant#13793504.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#13793504.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793504.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#13793504.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#13793504.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#13793504.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#13793521)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#13793748)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#13793749, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#13793750, 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#13792385, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#13793456.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#13793477: org.apache.spark.sql.Row
(641) MapElements
Input [1]: [obj#13793477]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008020466f8@2bc6baae, obj#13793482: org.apache.spark.sql.Row
(642) SerializeFromObject
Input [1]: [obj#13793482]
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#13793487, 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#13793488, 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#13793489, 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#13793490]
(643) Exchange
Input [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Arguments: hashpartitioning(coalesce(plant#13793488, ), isnull(plant#13793488), coalesce(product#13793487, ), isnull(product#13793487), 37), ENSURE_REQUIREMENTS, [plan_id=13510146]
(644) Sort
Input [4]: [product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Arguments: [coalesce(plant#13793488, ) ASC NULLS FIRST, isnull(plant#13793488) ASC NULLS FIRST, coalesce(product#13793487, ) ASC NULLS FIRST, isnull(product#13793487) ASC NULLS FIRST], false, 0
(645) SortMergeJoin
Left keys [4]: [coalesce(plant#13791973, ), isnull(plant#13791973), coalesce(product#13791972, ), isnull(product#13791972)]
Right keys [4]: [coalesce(plant#13793488, ), isnull(plant#13793488), coalesce(product#13793487, ), isnull(product#13793487)]
Join type: LeftOuter
Join condition: None
(646) Project
Output [7]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490]
Input [9]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, product#13793487, plant#13793488, dayBucketDemands#13793489, pointInTimeDemands#13793490]
(647) InMemoryTableScan
Output [3]: [product#13793785, plant#13793784, openGoodsMovements#13793886]
Arguments: [product#13793785, plant#13793784, openGoodsMovements#13793886], [isnotnull(product#13793785), isnotnull(plant#13793784)]
(648) InMemoryRelation
Arguments: [product#13793785, plant#13793784, openGoodsMovements#13793886], StorageLevel(disk, memory, 2 replicas)
(649) LocalTableScan
Output [3]: [product#13793785, plant#13793784, openGoodsMovements#13793886]
Arguments: <empty>, [product#13793785, plant#13793784, openGoodsMovements#13793886]
(650) Filter
Input [3]: [product#13793785, plant#13793784, openGoodsMovements#13793886]
Condition : (isnotnull(product#13793785) AND isnotnull(plant#13793784))
(651) ObjectHashAggregate
Input [3]: [product#13793785, plant#13793784, openGoodsMovements#13793886]
Keys [2]: [product#13793785, plant#13793784]
Functions [1]: [partial_collect_list(openGoodsMovements#13793886, 0, 0)]
Aggregate Attributes [1]: [buf#13799112]
Results [3]: [product#13793785, plant#13793784, buf#13799113]
(652) Exchange
Input [3]: [product#13793785, plant#13793784, buf#13799113]
Arguments: hashpartitioning(product#13793785, plant#13793784, 37), ENSURE_REQUIREMENTS, [plan_id=13510151]
(653) ObjectHashAggregate
Input [3]: [product#13793785, plant#13793784, buf#13799113]
Keys [2]: [product#13793785, plant#13793784]
Functions [1]: [collect_list(openGoodsMovements#13793886, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#13793886, 0, 0)#13794557]
Results [3]: [product#13793785, plant#13793784, flatten(collect_list(openGoodsMovements#13793886, 0, 0)#13794557) AS openGoodsMovements#13794553]
(654) Project
Output [5]: [product#13793785, plant#13793784, openGoodsMovements#13794553.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#13797973, openGoodsMovements#13794553.availabilityDatetime AS _extract_availabilityDatetime#13797974, openGoodsMovements#13794553.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#13797975]
Input [3]: [product#13793785, plant#13793784, openGoodsMovements#13794553]
(655) BroadcastExchange
Input [5]: [product#13793785, plant#13793784, _extract_openQtyInBaseUnit#13797973, _extract_availabilityDatetime#13797974, _extract_shelfLifeEndDatetime#13797975]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=13510155]
(656) BroadcastHashJoin
Left keys [2]: [product#13791972, plant#13791973]
Right keys [2]: [product#13793785, plant#13793784]
Join type: LeftOuter
Join condition: None
(657) Project
Output [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, coalesce(_extract_openQtyInBaseUnit#13797973, []) AS openGoodsMovementQuantities#13795147, coalesce(_extract_availabilityDatetime#13797974, []) AS openGoodsMovementAvailabilityDatetimes#13795148, coalesce(_extract_shelfLifeEndDatetime#13797975, []) AS openGoodsMovementShelfLifeEndDatetimes#13795149]
Input [12]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, product#13793785, plant#13793784, _extract_openQtyInBaseUnit#13797973, _extract_availabilityDatetime#13797974, _extract_shelfLifeEndDatetime#13797975]
(658) Exchange
Input [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149]
Arguments: hashpartitioning(product#13791972, plant#13791973, 37), ENSURE_REQUIREMENTS, [plan_id=13510442]
(659) Sort
Input [10]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149]
Arguments: [product#13791972 ASC NULLS FIRST, plant#13791973 ASC NULLS FIRST], false, 0
(660) Scan parquet
Output [3]: [product#13795638, plant#13795639, orderDateTime#13795640]
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/10000000539/shardId=0_1_10000000539]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(661) Exchange
Input [3]: [product#13795638, plant#13795639, orderDateTime#13795640]
Arguments: hashpartitioning(product#13795638, plant#13795639, 37), REPARTITION_BY_NUM, [plan_id=13509211]
(662) Scan parquet
Output [9]: [internalUUID#13795643, plant#13795644, product#13795645, blockedForReplenishmentStartingFrom#13795646, productionAspect#13795647, salesPlant#13795648, listing#13795649, sourceOfSupplyCategory#13795650, systemId#13795642]
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>>
(663) Project
Output [9]: [systemId#13795642, internalUUID#13795643, plant#13795644, product#13795645, blockedForReplenishmentStartingFrom#13795646, productionAspect#13795647, salesPlant#13795648, listing#13795649, sourceOfSupplyCategory#13795650]
Input [9]: [internalUUID#13795643, plant#13795644, product#13795645, blockedForReplenishmentStartingFrom#13795646, productionAspect#13795647, salesPlant#13795648, listing#13795649, sourceOfSupplyCategory#13795650, systemId#13795642]
(664) Exchange
Input [9]: [systemId#13795642, internalUUID#13795643, plant#13795644, product#13795645, blockedForReplenishmentStartingFrom#13795646, productionAspect#13795647, salesPlant#13795648, listing#13795649, sourceOfSupplyCategory#13795650]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509214]
(665) Project
Output [1]: [struct(systemId, systemId#13795642, internalUUID, internalUUID#13795643, plant, plant#13795644, product, product#13795645, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#13795646, productionAspect, productionAspect#13795647, salesPlant, salesPlant#13795648, listing, listing#13795649, sourceOfSupplyCategory, sourceOfSupplyCategory#13795650) AS productPlant#13795651]
Input [9]: [systemId#13795642, internalUUID#13795643, plant#13795644, product#13795645, blockedForReplenishmentStartingFrom#13795646, productionAspect#13795647, salesPlant#13795648, listing#13795649, sourceOfSupplyCategory#13795650]
(666) BroadcastExchange
Input [1]: [productPlant#13795651]
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=13510158]
(667) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795638, ), isnull(product#13795638), coalesce(plant#13795639, ), isnull(plant#13795639)]
Right keys [4]: [coalesce(productPlant#13795651.product.internalRefUUID, ), isnull(productPlant#13795651.product.internalRefUUID), coalesce(productPlant#13795651.plant.internalRefUUID, ), isnull(productPlant#13795651.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(668) Scan parquet
Output [4]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659, systemId#13795652]
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>>>
(669) Filter
Input [4]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659, systemId#13795652]
Condition : isnotnull(internalUUID#13795653)
(670) Project
Output [3]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
Input [4]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659, systemId#13795652]
(671) Exchange
Input [3]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509220]
(672) BroadcastExchange
Input [3]: [internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510161]
(673) BroadcastHashJoin
Left keys [1]: [product#13795638]
Right keys [1]: [internalUUID#13795653]
Join type: LeftOuter
Join condition: None
(674) Project
Output [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, filter(unitOfMeasureConversions#13795659, lambdafunction((((lambda u#13792048.measurementUnit1.code = productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#13792048.measurementUnit1.internalRefUUID = productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795657.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795657.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795664]
Input [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, internalUUID#13795653, baseUnitOfMeasure#13795657, unitOfMeasureConversions#13795659]
(675) Project
Output [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, filteredUnitOfMeasureConversions#13795664.quantityDenominator AS _extract_quantityDenominator#13798019, filteredUnitOfMeasureConversions#13795664.quantityNumerator AS _extract_quantityNumerator#13798020]
Input [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, filteredUnitOfMeasureConversions#13795664]
(676) Generate
Input [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, _extract_quantityDenominator#13798019, _extract_quantityNumerator#13798020]
Arguments: explode(_extract_quantityNumerator#13798020), [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, _extract_quantityDenominator#13798019], true, [quantityNumerator#13795665]
(677) Generate
Input [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, _extract_quantityDenominator#13798019, quantityNumerator#13795665]
Arguments: explode(_extract_quantityDenominator#13798019), [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, quantityNumerator#13795665], true, [quantityDenominator#13795666]
(678) Project
Output [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, (cast(quantityNumerator#13795665 as double) / cast(quantityDenominator#13795666 as double)) AS outboundUnit#13795667]
Input [6]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, quantityNumerator#13795665, quantityDenominator#13795666]
(679) Project
Output [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, CASE WHEN (isnull(outboundUnit#13795667) OR (outboundUnit#13795667 <= 0.0)) THEN 1.0 ELSE outboundUnit#13795667 END AS outboundUnit#13795668]
Input [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795667]
(680) Sort
Input [5]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668]
Arguments: [product#13795638 ASC NULLS FIRST, plant#13795639 ASC NULLS FIRST], false, 0
(681) Scan parquet
Output [6]: [internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674, systemId#13795669]
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>>>>>
(682) Filter
Input [6]: [internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674, systemId#13795669]
Condition : (isnotnull(plant#13795672.internalRefUUID) AND isnotnull(product#13795671.internalRefUUID))
(683) Project
Output [6]: [systemId#13795669, internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674]
Input [6]: [internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674, systemId#13795669]
(684) Exchange
Input [6]: [systemId#13795669, internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509231]
(685) BroadcastExchange
Input [6]: [systemId#13795669, internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674]
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=13510189]
(686) Scan parquet
Output [2]: [marketUnit#13795675, distributionCenters#13795681]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(687) Filter
Input [2]: [marketUnit#13795675, distributionCenters#13795681]
Condition : (((marketUnit#13795675 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13795681, true) > 0)) AND isnotnull(distributionCenters#13795681))
(688) Project
Output [1]: [distributionCenters#13795681]
Input [2]: [marketUnit#13795675, distributionCenters#13795681]
(689) Exchange
Input [1]: [distributionCenters#13795681]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509235]
(690) Generate
Input [1]: [distributionCenters#13795681]
Arguments: explode(distributionCenters#13795681), false, [distributionCenters#13795697]
(691) Filter
Input [1]: [distributionCenters#13795697]
Condition : (((size(distributionCenters#13795697.storageLocations, true) > 0) AND isnotnull(distributionCenters#13795697.storageLocations)) AND isnotnull(distributionCenters#13795697.internalRefUUID))
(692) Project
Output [2]: [distributionCenters#13795697.internalRefUUID AS _extract_internalRefUUID#13797771, distributionCenters#13795697.storageLocations AS _extract_storageLocations#13797772]
Input [1]: [distributionCenters#13795697]
(693) Generate
Input [2]: [_extract_internalRefUUID#13797771, _extract_storageLocations#13797772]
Arguments: explode(_extract_storageLocations#13797772), [_extract_internalRefUUID#13797771], false, [storageLocations#13795698]
(694) Project
Output [3]: [_extract_internalRefUUID#13797771 AS plantUuid#13795700, storageLocations#13795698.id AS storageLocId#13795701, storageLocations#13795698.internalRefUUID AS storageLocUuid#13795702]
Input [2]: [_extract_internalRefUUID#13797771, storageLocations#13795698]
(695) BroadcastExchange
Input [3]: [plantUuid#13795700, storageLocId#13795701, storageLocUuid#13795702]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510185]
(696) Scan parquet
Output [2]: [product#13795703, plant#13795704]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(697) Filter
Input [2]: [product#13795703, plant#13795704]
Condition : isnotnull(plant#13795704)
(698) Exchange
Input [2]: [product#13795703, plant#13795704]
Arguments: hashpartitioning(product#13795703, plant#13795704, 37), REPARTITION_BY_NUM, [plan_id=13509716]
(699) Scan parquet
Output [4]: [plant#13795709, product#13795710, productionAspect#13795712, systemId#13795707]
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>>>>
(700) Project
Output [4]: [plant#13795709.internalRefUUID AS _extract_internalRefUUID#13798021, product#13795710.internalRefUUID AS _extract_internalRefUUID#13798022, productionAspect#13795712.productMovementPlants.unitOfIssue.code AS _extract_code#13798023, productionAspect#13795712.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798024]
Input [4]: [plant#13795709, product#13795710, productionAspect#13795712, systemId#13795707]
(701) Exchange
Input [4]: [_extract_internalRefUUID#13798021, _extract_internalRefUUID#13798022, _extract_code#13798023, _extract_internalRefUUID#13798024]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509247]
(702) Project
Output [4]: [_extract_code#13798023, _extract_internalRefUUID#13798024, _extract_internalRefUUID#13798022, _extract_internalRefUUID#13798021]
Input [4]: [_extract_internalRefUUID#13798021, _extract_internalRefUUID#13798022, _extract_code#13798023, _extract_internalRefUUID#13798024]
(703) BroadcastExchange
Input [4]: [_extract_code#13798023, _extract_internalRefUUID#13798024, _extract_internalRefUUID#13798022, _extract_internalRefUUID#13798021]
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=13510169]
(704) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795703, ), isnull(product#13795703), coalesce(plant#13795704, ), isnull(plant#13795704)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798022, ), isnull(_extract_internalRefUUID#13798022), coalesce(_extract_internalRefUUID#13798021, ), isnull(_extract_internalRefUUID#13798021)]
Join type: LeftOuter
Join condition: None
(705) Project
Output [4]: [product#13795703, plant#13795704, _extract_code#13798023, _extract_internalRefUUID#13798024]
Input [6]: [product#13795703, plant#13795704, _extract_code#13798023, _extract_internalRefUUID#13798024, _extract_internalRefUUID#13798022, _extract_internalRefUUID#13798021]
(706) Scan parquet
Output [4]: [internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724, systemId#13795717]
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>>>
(707) Filter
Input [4]: [internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724, systemId#13795717]
Condition : isnotnull(internalUUID#13795718)
(708) Project
Output [3]: [internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724]
Input [4]: [internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724, systemId#13795717]
(709) Exchange
Input [3]: [internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509254]
(710) BroadcastExchange
Input [3]: [internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510173]
(711) BroadcastHashJoin
Left keys [1]: [product#13795703]
Right keys [1]: [internalUUID#13795718]
Join type: LeftOuter
Join condition: None
(712) Project
Output [2]: [plant#13795704, filter(unitOfMeasureConversions#13795724, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798023) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798024)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795722.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795722.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795729]
Input [7]: [product#13795703, plant#13795704, _extract_code#13798023, _extract_internalRefUUID#13798024, internalUUID#13795718, baseUnitOfMeasure#13795722, unitOfMeasureConversions#13795724]
(713) Generate
Input [2]: [plant#13795704, filteredUnitOfMeasureConversions#13795729]
Arguments: explode(filteredUnitOfMeasureConversions#13795729.quantityNumerator), [plant#13795704, filteredUnitOfMeasureConversions#13795729], true, [quantityNumerator#13795730]
(714) Project
Output [2]: [plant#13795704, filteredUnitOfMeasureConversions#13795729.quantityDenominator AS _extract_quantityDenominator#13797773]
Input [3]: [plant#13795704, filteredUnitOfMeasureConversions#13795729, quantityNumerator#13795730]
(715) Generate
Input [2]: [plant#13795704, _extract_quantityDenominator#13797773]
Arguments: explode(_extract_quantityDenominator#13797773), [plant#13795704], true, [quantityDenominator#13795731]
(716) Project
Output [1]: [plant#13795704]
Input [2]: [plant#13795704, quantityDenominator#13795731]
(717) HashAggregate
Input [1]: [plant#13795704]
Keys [1]: [plant#13795704]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13795704]
(718) Exchange
Input [1]: [plant#13795704]
Arguments: hashpartitioning(plant#13795704, 37), ENSURE_REQUIREMENTS, [plan_id=13510182]
(719) HashAggregate
Input [1]: [plant#13795704]
Keys [1]: [plant#13795704]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13795704]
(720) BroadcastHashJoin
Left keys [1]: [plantUuid#13795700]
Right keys [1]: [plant#13795704]
Join type: Inner
Join condition: None
(721) Project
Output [3]: [plantUuid#13795700, storageLocId#13795701, storageLocUuid#13795702]
Input [4]: [plantUuid#13795700, storageLocId#13795701, storageLocUuid#13795702, plant#13795704]
(722) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13795672.internalRefUUID, ), isnull(plant#13795672.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13795700, ), isnull(plantUuid#13795700)]
Join type: Inner
Join condition: None
(723) Generate
Input [9]: [systemId#13795669, internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, stockQuantities#13795674, plantUuid#13795700, storageLocId#13795701, storageLocUuid#13795702]
Arguments: explode(filter(stockQuantities#13795674, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13795702) AND (lambda x#13792128.storageLocation.Id = storageLocId#13795701)), lambda x#13792128, false))), [systemId#13795669, internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, plantUuid#13795700], false, [stockQuantity#13795734]
(724) ObjectHashAggregate
Input [7]: [systemId#13795669, internalUUID#13795670, product#13795671, plant#13795672, calculationDateTime#13795673, plantUuid#13795700, stockQuantity#13795734]
Keys [5]: [plantUuid#13795700, internalUUID#13795670, plant#13795672, product#13795671, systemId#13795669]
Functions [2]: [partial_first(calculationDateTime#13795673, false), partial_collect_list(stockQuantity#13795734, 0, 0)]
Aggregate Attributes [3]: [first#13799118, valueSet#13799119, buf#13799120]
Results [8]: [plantUuid#13795700, internalUUID#13795670, plant#13795672, product#13795671, systemId#13795669, first#13799121, valueSet#13799122, buf#13799123]
(725) ObjectHashAggregate
Input [8]: [plantUuid#13795700, internalUUID#13795670, plant#13795672, product#13795671, systemId#13795669, first#13799121, valueSet#13799122, buf#13799123]
Keys [5]: [plantUuid#13795700, internalUUID#13795670, plant#13795672, product#13795671, systemId#13795669]
Functions [2]: [first(calculationDateTime#13795673, false), collect_list(stockQuantity#13795734, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13795673)()#13792143, collect_list(stockQuantity#13795734, 0, 0)#13792144]
Results [4]: [product#13795671, plant#13795672, first(calculationDateTime#13795673)()#13792143 AS calculationDateTime#13795735, collect_list(stockQuantity#13795734, 0, 0)#13792144 AS stockQuantities#13795736]
(726) Filter
Input [4]: [product#13795671, plant#13795672, calculationDateTime#13795735, stockQuantities#13795736]
Condition : ((size(stockQuantities#13795736, true) > 0) AND isnotnull(calculationDateTime#13795735))
(727) Generate
Input [4]: [product#13795671, plant#13795672, calculationDateTime#13795735, stockQuantities#13795736]
Arguments: explode(stockQuantities#13795736), [product#13795671, plant#13795672, calculationDateTime#13795735], false, [stockQuantity#13795737]
(728) Filter
Input [4]: [product#13795671, plant#13795672, calculationDateTime#13795735, stockQuantity#13795737]
Condition : (((isnotnull(stockQuantity#13795737.specialStockIndicator.code) AND isnotnull(stockQuantity#13795737.stockType.code)) AND (stockQuantity#13795737.specialStockIndicator.code = )) AND (stockQuantity#13795737.stockType.code = 01))
(729) Project
Output [5]: [plant#13795672.internalRefUUID AS plantUuid#13795739, product#13795671.internalRefUUID AS productUuid#13795741, calculationDateTime#13795735, stockQuantity#13795737.storagelocation.id AS storageLocId#13795742, stockQuantity#13795737.quantity.measure AS quantity#13795744]
Input [4]: [product#13795671, plant#13795672, calculationDateTime#13795735, stockQuantity#13795737]
(730) Exchange
Input [5]: [plantUuid#13795739, productUuid#13795741, calculationDateTime#13795735, storageLocId#13795742, quantity#13795744]
Arguments: hashpartitioning(productUuid#13795741, plantUuid#13795739, 37), ENSURE_REQUIREMENTS, [plan_id=13510211]
(731) Sort
Input [5]: [plantUuid#13795739, productUuid#13795741, calculationDateTime#13795735, storageLocId#13795742, quantity#13795744]
Arguments: [productUuid#13795741 ASC NULLS FIRST, plantUuid#13795739 ASC NULLS FIRST], false, 0
(732) Scan parquet
Output [3]: [product#13795747, plant#13795748, orderDateTime#13795749]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(733) Filter
Input [3]: [product#13795747, plant#13795748, orderDateTime#13795749]
Condition : ((isnotnull(orderDateTime#13795749) AND isnotnull(plant#13795748)) AND isnotnull(product#13795747))
(734) Exchange
Input [3]: [product#13795747, plant#13795748, orderDateTime#13795749]
Arguments: hashpartitioning(product#13795747, plant#13795748, 37), REPARTITION_BY_NUM, [plan_id=13509737]
(735) Scan parquet
Output [4]: [plant#13795753, product#13795754, productionAspect#13795756, systemId#13795751]
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>>>>
(736) Project
Output [4]: [plant#13795753.internalRefUUID AS _extract_internalRefUUID#13798026, product#13795754.internalRefUUID AS _extract_internalRefUUID#13798025, productionAspect#13795756.productMovementPlants.unitOfIssue.code AS _extract_code#13798027, productionAspect#13795756.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798028]
Input [4]: [plant#13795753, product#13795754, productionAspect#13795756, systemId#13795751]
(737) Exchange
Input [4]: [_extract_internalRefUUID#13798026, _extract_internalRefUUID#13798025, _extract_code#13798027, _extract_internalRefUUID#13798028]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509279]
(738) Project
Output [4]: [_extract_code#13798027, _extract_internalRefUUID#13798028, _extract_internalRefUUID#13798025, _extract_internalRefUUID#13798026]
Input [4]: [_extract_internalRefUUID#13798026, _extract_internalRefUUID#13798025, _extract_code#13798027, _extract_internalRefUUID#13798028]
(739) BroadcastExchange
Input [4]: [_extract_code#13798027, _extract_internalRefUUID#13798028, _extract_internalRefUUID#13798025, _extract_internalRefUUID#13798026]
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=13510198]
(740) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795747, ), isnull(product#13795747), coalesce(plant#13795748, ), isnull(plant#13795748)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798025, ), isnull(_extract_internalRefUUID#13798025), coalesce(_extract_internalRefUUID#13798026, ), isnull(_extract_internalRefUUID#13798026)]
Join type: LeftOuter
Join condition: None
(741) Project
Output [5]: [product#13795747, plant#13795748, orderDateTime#13795749, _extract_code#13798027, _extract_internalRefUUID#13798028]
Input [7]: [product#13795747, plant#13795748, orderDateTime#13795749, _extract_code#13798027, _extract_internalRefUUID#13798028, _extract_internalRefUUID#13798025, _extract_internalRefUUID#13798026]
(742) Scan parquet
Output [4]: [internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768, systemId#13795761]
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>>>
(743) Filter
Input [4]: [internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768, systemId#13795761]
Condition : isnotnull(internalUUID#13795762)
(744) Project
Output [3]: [internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768]
Input [4]: [internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768, systemId#13795761]
(745) Exchange
Input [3]: [internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509286]
(746) BroadcastExchange
Input [3]: [internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510202]
(747) BroadcastHashJoin
Left keys [1]: [product#13795747]
Right keys [1]: [internalUUID#13795762]
Join type: LeftOuter
Join condition: None
(748) Project
Output [4]: [product#13795747, plant#13795748, orderDateTime#13795749, filter(unitOfMeasureConversions#13795768, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798027) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798028)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795766.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795766.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795773]
Input [8]: [product#13795747, plant#13795748, orderDateTime#13795749, _extract_code#13798027, _extract_internalRefUUID#13798028, internalUUID#13795762, baseUnitOfMeasure#13795766, unitOfMeasureConversions#13795768]
(749) Generate
Input [4]: [product#13795747, plant#13795748, orderDateTime#13795749, filteredUnitOfMeasureConversions#13795773]
Arguments: explode(filteredUnitOfMeasureConversions#13795773.quantityNumerator), [product#13795747, plant#13795748, orderDateTime#13795749, filteredUnitOfMeasureConversions#13795773], true, [quantityNumerator#13795774]
(750) Project
Output [4]: [product#13795747, plant#13795748, orderDateTime#13795749, filteredUnitOfMeasureConversions#13795773.quantityDenominator AS _extract_quantityDenominator#13797780]
Input [5]: [product#13795747, plant#13795748, orderDateTime#13795749, filteredUnitOfMeasureConversions#13795773, quantityNumerator#13795774]
(751) Generate
Input [4]: [product#13795747, plant#13795748, orderDateTime#13795749, _extract_quantityDenominator#13797780]
Arguments: explode(_extract_quantityDenominator#13797780), [product#13795747, plant#13795748, orderDateTime#13795749], true, [quantityDenominator#13795775]
(752) Project
Output [3]: [product#13795747, plant#13795748, orderDateTime#13795749]
Input [4]: [product#13795747, plant#13795748, orderDateTime#13795749, quantityDenominator#13795775]
(753) Sort
Input [3]: [product#13795747, plant#13795748, orderDateTime#13795749]
Arguments: [product#13795747 ASC NULLS FIRST, plant#13795748 ASC NULLS FIRST], false, 0
(754) SortMergeJoin
Left keys [2]: [productUuid#13795741, plantUuid#13795739]
Right keys [2]: [product#13795747, plant#13795748]
Join type: Inner
Join condition: (calculationDateTime#13795735 <= orderDateTime#13795749)
(755) Project
Output [5]: [plantUuid#13795739 AS plant#13795778, productUuid#13795741 AS product#13795779, storageLocId#13795742, calculationDateTime#13795735, quantity#13795744]
Input [8]: [plantUuid#13795739, productUuid#13795741, calculationDateTime#13795735, storageLocId#13795742, quantity#13795744, product#13795747, plant#13795748, orderDateTime#13795749]
(756) Exchange
Input [5]: [plant#13795778, product#13795779, storageLocId#13795742, calculationDateTime#13795735, quantity#13795744]
Arguments: hashpartitioning(coalesce(plant#13795778, ), isnull(plant#13795778), coalesce(product#13795779, ), isnull(product#13795779), coalesce(storageLocId#13795742, ), isnull(storageLocId#13795742), coalesce(calculationDateTime#13795735, 1970-01-01 00:00:00), isnull(calculationDateTime#13795735), 37), ENSURE_REQUIREMENTS, [plan_id=13510267]
(757) Sort
Input [5]: [plant#13795778, product#13795779, storageLocId#13795742, calculationDateTime#13795735, quantity#13795744]
Arguments: [coalesce(plant#13795778, ) ASC NULLS FIRST, isnull(plant#13795778) ASC NULLS FIRST, coalesce(product#13795779, ) ASC NULLS FIRST, isnull(product#13795779) ASC NULLS FIRST, coalesce(storageLocId#13795742, ) ASC NULLS FIRST, isnull(storageLocId#13795742) ASC NULLS FIRST, coalesce(calculationDateTime#13795735, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#13795735) ASC NULLS FIRST], false, 0
(758) Scan parquet
Output [6]: [internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785, systemId#13795780]
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>>>>>
(759) Filter
Input [6]: [internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785, systemId#13795780]
Condition : (isnotnull(plant#13795783.internalRefUUID) AND isnotnull(product#13795782.internalRefUUID))
(760) Project
Output [6]: [systemId#13795780, internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785]
Input [6]: [internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785, systemId#13795780]
(761) Exchange
Input [6]: [systemId#13795780, internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509298]
(762) BroadcastExchange
Input [6]: [systemId#13795780, internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785]
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=13510236]
(763) Scan parquet
Output [2]: [marketUnit#13795786, distributionCenters#13795792]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(764) Filter
Input [2]: [marketUnit#13795786, distributionCenters#13795792]
Condition : (((marketUnit#13795786 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13795792, true) > 0)) AND isnotnull(distributionCenters#13795792))
(765) Project
Output [1]: [distributionCenters#13795792]
Input [2]: [marketUnit#13795786, distributionCenters#13795792]
(766) Exchange
Input [1]: [distributionCenters#13795792]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509302]
(767) Generate
Input [1]: [distributionCenters#13795792]
Arguments: explode(distributionCenters#13795792), false, [distributionCenters#13795808]
(768) Filter
Input [1]: [distributionCenters#13795808]
Condition : (((size(distributionCenters#13795808.storageLocations, true) > 0) AND isnotnull(distributionCenters#13795808.storageLocations)) AND isnotnull(distributionCenters#13795808.internalRefUUID))
(769) Project
Output [2]: [distributionCenters#13795808.internalRefUUID AS _extract_internalRefUUID#13797787, distributionCenters#13795808.storageLocations AS _extract_storageLocations#13797788]
Input [1]: [distributionCenters#13795808]
(770) Generate
Input [2]: [_extract_internalRefUUID#13797787, _extract_storageLocations#13797788]
Arguments: explode(_extract_storageLocations#13797788), [_extract_internalRefUUID#13797787], false, [storageLocations#13795809]
(771) Project
Output [3]: [_extract_internalRefUUID#13797787 AS plantUuid#13795811, storageLocations#13795809.id AS storageLocId#13795812, storageLocations#13795809.internalRefUUID AS storageLocUuid#13795813]
Input [2]: [_extract_internalRefUUID#13797787, storageLocations#13795809]
(772) BroadcastExchange
Input [3]: [plantUuid#13795811, storageLocId#13795812, storageLocUuid#13795813]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510232]
(773) Scan parquet
Output [2]: [product#13795814, plant#13795815]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(774) Filter
Input [2]: [product#13795814, plant#13795815]
Condition : isnotnull(plant#13795815)
(775) Exchange
Input [2]: [product#13795814, plant#13795815]
Arguments: hashpartitioning(product#13795814, plant#13795815, 37), REPARTITION_BY_NUM, [plan_id=13509748]
(776) Scan parquet
Output [4]: [plant#13795820, product#13795821, productionAspect#13795823, systemId#13795818]
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>>>>
(777) Project
Output [4]: [plant#13795820.internalRefUUID AS _extract_internalRefUUID#13798031, product#13795821.internalRefUUID AS _extract_internalRefUUID#13798032, productionAspect#13795823.productMovementPlants.unitOfIssue.code AS _extract_code#13798029, productionAspect#13795823.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798030]
Input [4]: [plant#13795820, product#13795821, productionAspect#13795823, systemId#13795818]
(778) Exchange
Input [4]: [_extract_internalRefUUID#13798031, _extract_internalRefUUID#13798032, _extract_code#13798029, _extract_internalRefUUID#13798030]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509314]
(779) Project
Output [4]: [_extract_code#13798029, _extract_internalRefUUID#13798030, _extract_internalRefUUID#13798032, _extract_internalRefUUID#13798031]
Input [4]: [_extract_internalRefUUID#13798031, _extract_internalRefUUID#13798032, _extract_code#13798029, _extract_internalRefUUID#13798030]
(780) BroadcastExchange
Input [4]: [_extract_code#13798029, _extract_internalRefUUID#13798030, _extract_internalRefUUID#13798032, _extract_internalRefUUID#13798031]
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=13510216]
(781) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795814, ), isnull(product#13795814), coalesce(plant#13795815, ), isnull(plant#13795815)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798032, ), isnull(_extract_internalRefUUID#13798032), coalesce(_extract_internalRefUUID#13798031, ), isnull(_extract_internalRefUUID#13798031)]
Join type: LeftOuter
Join condition: None
(782) Project
Output [4]: [product#13795814, plant#13795815, _extract_code#13798029, _extract_internalRefUUID#13798030]
Input [6]: [product#13795814, plant#13795815, _extract_code#13798029, _extract_internalRefUUID#13798030, _extract_internalRefUUID#13798032, _extract_internalRefUUID#13798031]
(783) Scan parquet
Output [4]: [internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835, systemId#13795828]
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>>>
(784) Filter
Input [4]: [internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835, systemId#13795828]
Condition : isnotnull(internalUUID#13795829)
(785) Project
Output [3]: [internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835]
Input [4]: [internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835, systemId#13795828]
(786) Exchange
Input [3]: [internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509321]
(787) BroadcastExchange
Input [3]: [internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510220]
(788) BroadcastHashJoin
Left keys [1]: [product#13795814]
Right keys [1]: [internalUUID#13795829]
Join type: LeftOuter
Join condition: None
(789) Project
Output [2]: [plant#13795815, filter(unitOfMeasureConversions#13795835, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798029) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798030)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795833.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795833.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795840]
Input [7]: [product#13795814, plant#13795815, _extract_code#13798029, _extract_internalRefUUID#13798030, internalUUID#13795829, baseUnitOfMeasure#13795833, unitOfMeasureConversions#13795835]
(790) Generate
Input [2]: [plant#13795815, filteredUnitOfMeasureConversions#13795840]
Arguments: explode(filteredUnitOfMeasureConversions#13795840.quantityNumerator), [plant#13795815, filteredUnitOfMeasureConversions#13795840], true, [quantityNumerator#13795841]
(791) Project
Output [2]: [plant#13795815, filteredUnitOfMeasureConversions#13795840.quantityDenominator AS _extract_quantityDenominator#13797789]
Input [3]: [plant#13795815, filteredUnitOfMeasureConversions#13795840, quantityNumerator#13795841]
(792) Generate
Input [2]: [plant#13795815, _extract_quantityDenominator#13797789]
Arguments: explode(_extract_quantityDenominator#13797789), [plant#13795815], true, [quantityDenominator#13795842]
(793) Project
Output [1]: [plant#13795815]
Input [2]: [plant#13795815, quantityDenominator#13795842]
(794) HashAggregate
Input [1]: [plant#13795815]
Keys [1]: [plant#13795815]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13795815]
(795) Exchange
Input [1]: [plant#13795815]
Arguments: hashpartitioning(plant#13795815, 37), ENSURE_REQUIREMENTS, [plan_id=13510229]
(796) HashAggregate
Input [1]: [plant#13795815]
Keys [1]: [plant#13795815]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13795815]
(797) BroadcastHashJoin
Left keys [1]: [plantUuid#13795811]
Right keys [1]: [plant#13795815]
Join type: Inner
Join condition: None
(798) Project
Output [3]: [plantUuid#13795811, storageLocId#13795812, storageLocUuid#13795813]
Input [4]: [plantUuid#13795811, storageLocId#13795812, storageLocUuid#13795813, plant#13795815]
(799) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13795783.internalRefUUID, ), isnull(plant#13795783.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13795811, ), isnull(plantUuid#13795811)]
Join type: Inner
Join condition: None
(800) Generate
Input [9]: [systemId#13795780, internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, stockQuantities#13795785, plantUuid#13795811, storageLocId#13795812, storageLocUuid#13795813]
Arguments: explode(filter(stockQuantities#13795785, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13795813) AND (lambda x#13792128.storageLocation.Id = storageLocId#13795812)), lambda x#13792128, false))), [systemId#13795780, internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, plantUuid#13795811], false, [stockQuantity#13795845]
(801) ObjectHashAggregate
Input [7]: [systemId#13795780, internalUUID#13795781, product#13795782, plant#13795783, calculationDateTime#13795784, plantUuid#13795811, stockQuantity#13795845]
Keys [5]: [plantUuid#13795811, internalUUID#13795781, plant#13795783, product#13795782, systemId#13795780]
Functions [2]: [partial_first(calculationDateTime#13795784, false), partial_collect_list(stockQuantity#13795845, 0, 0)]
Aggregate Attributes [3]: [first#13799126, valueSet#13799127, buf#13799128]
Results [8]: [plantUuid#13795811, internalUUID#13795781, plant#13795783, product#13795782, systemId#13795780, first#13799129, valueSet#13799130, buf#13799131]
(802) ObjectHashAggregate
Input [8]: [plantUuid#13795811, internalUUID#13795781, plant#13795783, product#13795782, systemId#13795780, first#13799129, valueSet#13799130, buf#13799131]
Keys [5]: [plantUuid#13795811, internalUUID#13795781, plant#13795783, product#13795782, systemId#13795780]
Functions [2]: [first(calculationDateTime#13795784, false), collect_list(stockQuantity#13795845, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13795784)()#13792143, collect_list(stockQuantity#13795845, 0, 0)#13792144]
Results [4]: [product#13795782, plant#13795783, first(calculationDateTime#13795784)()#13792143 AS calculationDateTime#13795846, collect_list(stockQuantity#13795845, 0, 0)#13792144 AS stockQuantities#13795847]
(803) Filter
Input [4]: [product#13795782, plant#13795783, calculationDateTime#13795846, stockQuantities#13795847]
Condition : ((size(stockQuantities#13795847, true) > 0) AND isnotnull(calculationDateTime#13795846))
(804) Generate
Input [4]: [product#13795782, plant#13795783, calculationDateTime#13795846, stockQuantities#13795847]
Arguments: explode(stockQuantities#13795847), [product#13795782, plant#13795783, calculationDateTime#13795846], false, [stockQuantity#13795848]
(805) Filter
Input [4]: [product#13795782, plant#13795783, calculationDateTime#13795846, stockQuantity#13795848]
Condition : (((isnotnull(stockQuantity#13795848.specialStockIndicator.code) AND isnotnull(stockQuantity#13795848.stockType.code)) AND (stockQuantity#13795848.specialStockIndicator.code = )) AND (stockQuantity#13795848.stockType.code = 01))
(806) Project
Output [4]: [plant#13795783.internalRefUUID AS plantUuid#13795850, product#13795782.internalRefUUID AS productUuid#13795852, calculationDateTime#13795846, stockQuantity#13795848.storagelocation.id AS storageLocId#13795853]
Input [4]: [product#13795782, plant#13795783, calculationDateTime#13795846, stockQuantity#13795848]
(807) Exchange
Input [4]: [plantUuid#13795850, productUuid#13795852, calculationDateTime#13795846, storageLocId#13795853]
Arguments: hashpartitioning(productUuid#13795852, plantUuid#13795850, 37), ENSURE_REQUIREMENTS, [plan_id=13510258]
(808) Sort
Input [4]: [plantUuid#13795850, productUuid#13795852, calculationDateTime#13795846, storageLocId#13795853]
Arguments: [productUuid#13795852 ASC NULLS FIRST, plantUuid#13795850 ASC NULLS FIRST], false, 0
(809) Scan parquet
Output [3]: [product#13795858, plant#13795859, orderDateTime#13795860]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(810) Filter
Input [3]: [product#13795858, plant#13795859, orderDateTime#13795860]
Condition : ((isnotnull(orderDateTime#13795860) AND isnotnull(plant#13795859)) AND isnotnull(product#13795858))
(811) Exchange
Input [3]: [product#13795858, plant#13795859, orderDateTime#13795860]
Arguments: hashpartitioning(product#13795858, plant#13795859, 37), REPARTITION_BY_NUM, [plan_id=13509769]
(812) Scan parquet
Output [4]: [plant#13795864, product#13795865, productionAspect#13795867, systemId#13795862]
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>>>>
(813) Project
Output [4]: [plant#13795864.internalRefUUID AS _extract_internalRefUUID#13798036, product#13795865.internalRefUUID AS _extract_internalRefUUID#13798033, productionAspect#13795867.productMovementPlants.unitOfIssue.code AS _extract_code#13798034, productionAspect#13795867.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798035]
Input [4]: [plant#13795864, product#13795865, productionAspect#13795867, systemId#13795862]
(814) Exchange
Input [4]: [_extract_internalRefUUID#13798036, _extract_internalRefUUID#13798033, _extract_code#13798034, _extract_internalRefUUID#13798035]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509346]
(815) Project
Output [4]: [_extract_code#13798034, _extract_internalRefUUID#13798035, _extract_internalRefUUID#13798033, _extract_internalRefUUID#13798036]
Input [4]: [_extract_internalRefUUID#13798036, _extract_internalRefUUID#13798033, _extract_code#13798034, _extract_internalRefUUID#13798035]
(816) BroadcastExchange
Input [4]: [_extract_code#13798034, _extract_internalRefUUID#13798035, _extract_internalRefUUID#13798033, _extract_internalRefUUID#13798036]
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=13510245]
(817) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795858, ), isnull(product#13795858), coalesce(plant#13795859, ), isnull(plant#13795859)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798033, ), isnull(_extract_internalRefUUID#13798033), coalesce(_extract_internalRefUUID#13798036, ), isnull(_extract_internalRefUUID#13798036)]
Join type: LeftOuter
Join condition: None
(818) Project
Output [5]: [product#13795858, plant#13795859, orderDateTime#13795860, _extract_code#13798034, _extract_internalRefUUID#13798035]
Input [7]: [product#13795858, plant#13795859, orderDateTime#13795860, _extract_code#13798034, _extract_internalRefUUID#13798035, _extract_internalRefUUID#13798033, _extract_internalRefUUID#13798036]
(819) Scan parquet
Output [4]: [internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879, systemId#13795872]
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>>>
(820) Filter
Input [4]: [internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879, systemId#13795872]
Condition : isnotnull(internalUUID#13795873)
(821) Project
Output [3]: [internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879]
Input [4]: [internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879, systemId#13795872]
(822) Exchange
Input [3]: [internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509353]
(823) BroadcastExchange
Input [3]: [internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510249]
(824) BroadcastHashJoin
Left keys [1]: [product#13795858]
Right keys [1]: [internalUUID#13795873]
Join type: LeftOuter
Join condition: None
(825) Project
Output [4]: [product#13795858, plant#13795859, orderDateTime#13795860, filter(unitOfMeasureConversions#13795879, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798034) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798035)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795877.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795877.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795884]
Input [8]: [product#13795858, plant#13795859, orderDateTime#13795860, _extract_code#13798034, _extract_internalRefUUID#13798035, internalUUID#13795873, baseUnitOfMeasure#13795877, unitOfMeasureConversions#13795879]
(826) Generate
Input [4]: [product#13795858, plant#13795859, orderDateTime#13795860, filteredUnitOfMeasureConversions#13795884]
Arguments: explode(filteredUnitOfMeasureConversions#13795884.quantityNumerator), [product#13795858, plant#13795859, orderDateTime#13795860, filteredUnitOfMeasureConversions#13795884], true, [quantityNumerator#13795885]
(827) Project
Output [4]: [product#13795858, plant#13795859, orderDateTime#13795860, filteredUnitOfMeasureConversions#13795884.quantityDenominator AS _extract_quantityDenominator#13797796]
Input [5]: [product#13795858, plant#13795859, orderDateTime#13795860, filteredUnitOfMeasureConversions#13795884, quantityNumerator#13795885]
(828) Generate
Input [4]: [product#13795858, plant#13795859, orderDateTime#13795860, _extract_quantityDenominator#13797796]
Arguments: explode(_extract_quantityDenominator#13797796), [product#13795858, plant#13795859, orderDateTime#13795860], true, [quantityDenominator#13795886]
(829) Project
Output [3]: [product#13795858, plant#13795859, orderDateTime#13795860]
Input [4]: [product#13795858, plant#13795859, orderDateTime#13795860, quantityDenominator#13795886]
(830) Sort
Input [3]: [product#13795858, plant#13795859, orderDateTime#13795860]
Arguments: [product#13795858 ASC NULLS FIRST, plant#13795859 ASC NULLS FIRST], false, 0
(831) SortMergeJoin
Left keys [2]: [productUuid#13795852, plantUuid#13795850]
Right keys [2]: [product#13795858, plant#13795859]
Join type: Inner
Join condition: (calculationDateTime#13795846 <= orderDateTime#13795860)
(832) Project
Output [4]: [plantUuid#13795850 AS plant#13795889, productUuid#13795852 AS product#13795890, storageLocId#13795853, calculationDateTime#13795846]
Input [7]: [plantUuid#13795850, productUuid#13795852, calculationDateTime#13795846, storageLocId#13795853, product#13795858, plant#13795859, orderDateTime#13795860]
(833) HashAggregate
Input [4]: [plant#13795889, product#13795890, storageLocId#13795853, calculationDateTime#13795846]
Keys [3]: [plant#13795889, product#13795890, storageLocId#13795853]
Functions [1]: [partial_max(calculationDateTime#13795846)]
Aggregate Attributes [1]: [max#13799124]
Results [4]: [plant#13795889, product#13795890, storageLocId#13795853, max#13799125]
(834) HashAggregate
Input [4]: [plant#13795889, product#13795890, storageLocId#13795853, max#13799125]
Keys [3]: [plant#13795889, product#13795890, storageLocId#13795853]
Functions [1]: [max(calculationDateTime#13795846)]
Aggregate Attributes [1]: [max(calculationDateTime#13795846)#13792207]
Results [4]: [plant#13795889, product#13795890, storageLocId#13795853, max(calculationDateTime#13795846)#13792207 AS max_calc_datetime#13795891]
(835) Exchange
Input [4]: [plant#13795889, product#13795890, storageLocId#13795853, max_calc_datetime#13795891]
Arguments: hashpartitioning(coalesce(plant#13795889, ), isnull(plant#13795889), coalesce(product#13795890, ), isnull(product#13795890), coalesce(storageLocId#13795853, ), isnull(storageLocId#13795853), coalesce(max_calc_datetime#13795891, 1970-01-01 00:00:00), isnull(max_calc_datetime#13795891), 37), ENSURE_REQUIREMENTS, [plan_id=13510268]
(836) Sort
Input [4]: [plant#13795889, product#13795890, storageLocId#13795853, max_calc_datetime#13795891]
Arguments: [coalesce(plant#13795889, ) ASC NULLS FIRST, isnull(plant#13795889) ASC NULLS FIRST, coalesce(product#13795890, ) ASC NULLS FIRST, isnull(product#13795890) ASC NULLS FIRST, coalesce(storageLocId#13795853, ) ASC NULLS FIRST, isnull(storageLocId#13795853) ASC NULLS FIRST, coalesce(max_calc_datetime#13795891, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#13795891) ASC NULLS FIRST], false, 0
(837) SortMergeJoin
Left keys [8]: [coalesce(plant#13795778, ), isnull(plant#13795778), coalesce(product#13795779, ), isnull(product#13795779), coalesce(storageLocId#13795742, ), isnull(storageLocId#13795742), coalesce(calculationDateTime#13795735, 1970-01-01 00:00:00), isnull(calculationDateTime#13795735)]
Right keys [8]: [coalesce(plant#13795889, ), isnull(plant#13795889), coalesce(product#13795890, ), isnull(product#13795890), coalesce(storageLocId#13795853, ), isnull(storageLocId#13795853), coalesce(max_calc_datetime#13795891, 1970-01-01 00:00:00), isnull(max_calc_datetime#13795891)]
Join type: Inner
Join condition: None
(838) Project
Output [4]: [plant#13795778, product#13795779, calculationDateTime#13795735, quantity#13795744]
Input [9]: [plant#13795778, product#13795779, storageLocId#13795742, calculationDateTime#13795735, quantity#13795744, plant#13795889, product#13795890, storageLocId#13795853, max_calc_datetime#13795891]
(839) HashAggregate
Input [4]: [plant#13795778, product#13795779, calculationDateTime#13795735, quantity#13795744]
Keys [2]: [product#13795779, plant#13795778]
Functions [2]: [partial_min(calculationDateTime#13795735), partial_sum(quantity#13795744)]
Aggregate Attributes [2]: [min#13799114, sum#13799115]
Results [4]: [product#13795779, plant#13795778, min#13799116, sum#13799117]
(840) Exchange
Input [4]: [product#13795779, plant#13795778, min#13799116, sum#13799117]
Arguments: hashpartitioning(product#13795779, plant#13795778, 37), ENSURE_REQUIREMENTS, [plan_id=13510275]
(841) HashAggregate
Input [4]: [product#13795779, plant#13795778, min#13799116, sum#13799117]
Keys [2]: [product#13795779, plant#13795778]
Functions [2]: [min(calculationDateTime#13795735), sum(quantity#13795744)]
Aggregate Attributes [2]: [min(calculationDateTime#13795735)#13792335, sum(quantity#13795744)#13792334]
Results [4]: [product#13795779, plant#13795778, min(calculationDateTime#13795735)#13792335 AS minCalculationDateTime#13795893, round(sum(quantity#13795744)#13792334, 0) AS roundedQuantitySum#13795894]
(842) Sort
Input [4]: [product#13795779, plant#13795778, minCalculationDateTime#13795893, roundedQuantitySum#13795894]
Arguments: [product#13795779 ASC NULLS FIRST, plant#13795778 ASC NULLS FIRST], false, 0
(843) SortMergeJoin
Left keys [2]: [product#13795638, plant#13795639]
Right keys [2]: [product#13795779, plant#13795778]
Join type: LeftOuter
Join condition: None
(844) Project
Output [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, CASE WHEN isnotnull(minCalculationDateTime#13795893) THEN minCalculationDateTime#13795893 ELSE orderDateTime#13795640 END AS stockDatetime#13795895, CASE WHEN isnotnull(roundedQuantitySum#13795894) THEN array(roundedQuantitySum#13795894) ELSE [0.0] END AS stockBatchQuantities#13795896]
Input [9]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, product#13795779, plant#13795778, minCalculationDateTime#13795893, roundedQuantitySum#13795894]
(845) Exchange
Input [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896]
Arguments: hashpartitioning(coalesce(plant#13795639, ), isnull(plant#13795639), coalesce(product#13795638, ), isnull(product#13795638), 37), ENSURE_REQUIREMENTS, [plan_id=13510423]
(846) Sort
Input [7]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896]
Arguments: [coalesce(plant#13795639, ) ASC NULLS FIRST, isnull(plant#13795639) ASC NULLS FIRST, coalesce(product#13795638, ) ASC NULLS FIRST, isnull(product#13795638) ASC NULLS FIRST], false, 0
(847) Scan parquet
Output [3]: [product#13795898, plant#13795899, orderDateTime#13795900]
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/10000000539/shardId=0_1_10000000539]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(848) Exchange
Input [3]: [product#13795898, plant#13795899, orderDateTime#13795900]
Arguments: hashpartitioning(product#13795898, plant#13795899, 37), REPARTITION_BY_NUM, [plan_id=13509371]
(849) Scan parquet
Output [9]: [internalUUID#13795903, plant#13795904, product#13795905, blockedForReplenishmentStartingFrom#13795906, productionAspect#13795907, salesPlant#13795908, listing#13795909, sourceOfSupplyCategory#13795910, systemId#13795902]
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>>
(850) Project
Output [9]: [systemId#13795902, internalUUID#13795903, plant#13795904, product#13795905, blockedForReplenishmentStartingFrom#13795906, productionAspect#13795907, salesPlant#13795908, listing#13795909, sourceOfSupplyCategory#13795910]
Input [9]: [internalUUID#13795903, plant#13795904, product#13795905, blockedForReplenishmentStartingFrom#13795906, productionAspect#13795907, salesPlant#13795908, listing#13795909, sourceOfSupplyCategory#13795910, systemId#13795902]
(851) Exchange
Input [9]: [systemId#13795902, internalUUID#13795903, plant#13795904, product#13795905, blockedForReplenishmentStartingFrom#13795906, productionAspect#13795907, salesPlant#13795908, listing#13795909, sourceOfSupplyCategory#13795910]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509374]
(852) Project
Output [1]: [struct(systemId, systemId#13795902, internalUUID, internalUUID#13795903, plant, plant#13795904, product, product#13795905, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#13795906, productionAspect, productionAspect#13795907, salesPlant, salesPlant#13795908, listing, listing#13795909, sourceOfSupplyCategory, sourceOfSupplyCategory#13795910) AS productPlant#13795911]
Input [9]: [systemId#13795902, internalUUID#13795903, plant#13795904, product#13795905, blockedForReplenishmentStartingFrom#13795906, productionAspect#13795907, salesPlant#13795908, listing#13795909, sourceOfSupplyCategory#13795910]
(853) BroadcastExchange
Input [1]: [productPlant#13795911]
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=13510283]
(854) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795898, ), isnull(product#13795898), coalesce(plant#13795899, ), isnull(plant#13795899)]
Right keys [4]: [coalesce(productPlant#13795911.product.internalRefUUID, ), isnull(productPlant#13795911.product.internalRefUUID), coalesce(productPlant#13795911.plant.internalRefUUID, ), isnull(productPlant#13795911.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(855) Scan parquet
Output [4]: [internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919, systemId#13795912]
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>>>
(856) Filter
Input [4]: [internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919, systemId#13795912]
Condition : isnotnull(internalUUID#13795913)
(857) Project
Output [3]: [internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919]
Input [4]: [internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919, systemId#13795912]
(858) Exchange
Input [3]: [internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509380]
(859) BroadcastExchange
Input [3]: [internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510286]
(860) BroadcastHashJoin
Left keys [1]: [product#13795898]
Right keys [1]: [internalUUID#13795913]
Join type: LeftOuter
Join condition: None
(861) Project
Output [5]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, filter(unitOfMeasureConversions#13795919, lambdafunction((((lambda u#13792048.measurementUnit1.code = productPlant#13795911.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#13792048.measurementUnit1.internalRefUUID = productPlant#13795911.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795917.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795917.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795924]
Input [7]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, internalUUID#13795913, baseUnitOfMeasure#13795917, unitOfMeasureConversions#13795919]
(862) Project
Output [6]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, filteredUnitOfMeasureConversions#13795924.quantityDenominator AS _extract_quantityDenominator#13798037, filteredUnitOfMeasureConversions#13795924.quantityNumerator AS _extract_quantityNumerator#13798038]
Input [5]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, filteredUnitOfMeasureConversions#13795924]
(863) Generate
Input [6]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, _extract_quantityDenominator#13798037, _extract_quantityNumerator#13798038]
Arguments: explode(_extract_quantityNumerator#13798038), [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, _extract_quantityDenominator#13798037], true, [quantityNumerator#13795925]
(864) Generate
Input [6]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, _extract_quantityDenominator#13798037, quantityNumerator#13795925]
Arguments: explode(_extract_quantityDenominator#13798037), [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, quantityNumerator#13795925], true, [quantityDenominator#13795926]
(865) Project
Output [5]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, (cast(quantityNumerator#13795925 as double) / cast(quantityDenominator#13795926 as double)) AS outboundUnit#13795927]
Input [6]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, quantityNumerator#13795925, quantityDenominator#13795926]
(866) Project
Output [5]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, CASE WHEN (isnull(outboundUnit#13795927) OR (outboundUnit#13795927 <= 0.0)) THEN 1.0 ELSE outboundUnit#13795927 END AS outboundUnit#13795928]
Input [5]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795927]
(867) Sort
Input [5]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928]
Arguments: [product#13795898 ASC NULLS FIRST, plant#13795899 ASC NULLS FIRST], false, 0
(868) Scan parquet
Output [6]: [internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934, systemId#13795929]
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>>>>>
(869) Filter
Input [6]: [internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934, systemId#13795929]
Condition : (isnotnull(plant#13795932.internalRefUUID) AND isnotnull(product#13795931.internalRefUUID))
(870) Project
Output [6]: [systemId#13795929, internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934]
Input [6]: [internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934, systemId#13795929]
(871) Exchange
Input [6]: [systemId#13795929, internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509391]
(872) BroadcastExchange
Input [6]: [systemId#13795929, internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934]
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=13510314]
(873) Scan parquet
Output [2]: [marketUnit#13795935, distributionCenters#13795941]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(874) Filter
Input [2]: [marketUnit#13795935, distributionCenters#13795941]
Condition : (((marketUnit#13795935 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13795941, true) > 0)) AND isnotnull(distributionCenters#13795941))
(875) Project
Output [1]: [distributionCenters#13795941]
Input [2]: [marketUnit#13795935, distributionCenters#13795941]
(876) Exchange
Input [1]: [distributionCenters#13795941]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509395]
(877) Generate
Input [1]: [distributionCenters#13795941]
Arguments: explode(distributionCenters#13795941), false, [distributionCenters#13795957]
(878) Filter
Input [1]: [distributionCenters#13795957]
Condition : (((size(distributionCenters#13795957.storageLocations, true) > 0) AND isnotnull(distributionCenters#13795957.storageLocations)) AND isnotnull(distributionCenters#13795957.internalRefUUID))
(879) Project
Output [2]: [distributionCenters#13795957.internalRefUUID AS _extract_internalRefUUID#13797804, distributionCenters#13795957.storageLocations AS _extract_storageLocations#13797805]
Input [1]: [distributionCenters#13795957]
(880) Generate
Input [2]: [_extract_internalRefUUID#13797804, _extract_storageLocations#13797805]
Arguments: explode(_extract_storageLocations#13797805), [_extract_internalRefUUID#13797804], false, [storageLocations#13795958]
(881) Project
Output [3]: [_extract_internalRefUUID#13797804 AS plantUuid#13795960, storageLocations#13795958.id AS storageLocId#13795961, storageLocations#13795958.internalRefUUID AS storageLocUuid#13795962]
Input [2]: [_extract_internalRefUUID#13797804, storageLocations#13795958]
(882) BroadcastExchange
Input [3]: [plantUuid#13795960, storageLocId#13795961, storageLocUuid#13795962]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510310]
(883) Scan parquet
Output [2]: [product#13795963, plant#13795964]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(884) Filter
Input [2]: [product#13795963, plant#13795964]
Condition : isnotnull(plant#13795964)
(885) Exchange
Input [2]: [product#13795963, plant#13795964]
Arguments: hashpartitioning(product#13795963, plant#13795964, 37), REPARTITION_BY_NUM, [plan_id=13509788]
(886) Scan parquet
Output [4]: [plant#13795969, product#13795970, productionAspect#13795972, systemId#13795967]
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>>>>
(887) Project
Output [4]: [plant#13795969.internalRefUUID AS _extract_internalRefUUID#13798039, product#13795970.internalRefUUID AS _extract_internalRefUUID#13798042, productionAspect#13795972.productMovementPlants.unitOfIssue.code AS _extract_code#13798040, productionAspect#13795972.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798041]
Input [4]: [plant#13795969, product#13795970, productionAspect#13795972, systemId#13795967]
(888) Exchange
Input [4]: [_extract_internalRefUUID#13798039, _extract_internalRefUUID#13798042, _extract_code#13798040, _extract_internalRefUUID#13798041]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509407]
(889) Project
Output [4]: [_extract_code#13798040, _extract_internalRefUUID#13798041, _extract_internalRefUUID#13798042, _extract_internalRefUUID#13798039]
Input [4]: [_extract_internalRefUUID#13798039, _extract_internalRefUUID#13798042, _extract_code#13798040, _extract_internalRefUUID#13798041]
(890) BroadcastExchange
Input [4]: [_extract_code#13798040, _extract_internalRefUUID#13798041, _extract_internalRefUUID#13798042, _extract_internalRefUUID#13798039]
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=13510294]
(891) BroadcastHashJoin
Left keys [4]: [coalesce(product#13795963, ), isnull(product#13795963), coalesce(plant#13795964, ), isnull(plant#13795964)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798042, ), isnull(_extract_internalRefUUID#13798042), coalesce(_extract_internalRefUUID#13798039, ), isnull(_extract_internalRefUUID#13798039)]
Join type: LeftOuter
Join condition: None
(892) Project
Output [4]: [product#13795963, plant#13795964, _extract_code#13798040, _extract_internalRefUUID#13798041]
Input [6]: [product#13795963, plant#13795964, _extract_code#13798040, _extract_internalRefUUID#13798041, _extract_internalRefUUID#13798042, _extract_internalRefUUID#13798039]
(893) Scan parquet
Output [4]: [internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984, systemId#13795977]
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>>>
(894) Filter
Input [4]: [internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984, systemId#13795977]
Condition : isnotnull(internalUUID#13795978)
(895) Project
Output [3]: [internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984]
Input [4]: [internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984, systemId#13795977]
(896) Exchange
Input [3]: [internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509414]
(897) BroadcastExchange
Input [3]: [internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510298]
(898) BroadcastHashJoin
Left keys [1]: [product#13795963]
Right keys [1]: [internalUUID#13795978]
Join type: LeftOuter
Join condition: None
(899) Project
Output [2]: [plant#13795964, filter(unitOfMeasureConversions#13795984, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798040) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798041)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13795982.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13795982.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13795989]
Input [7]: [product#13795963, plant#13795964, _extract_code#13798040, _extract_internalRefUUID#13798041, internalUUID#13795978, baseUnitOfMeasure#13795982, unitOfMeasureConversions#13795984]
(900) Generate
Input [2]: [plant#13795964, filteredUnitOfMeasureConversions#13795989]
Arguments: explode(filteredUnitOfMeasureConversions#13795989.quantityNumerator), [plant#13795964, filteredUnitOfMeasureConversions#13795989], true, [quantityNumerator#13795990]
(901) Project
Output [2]: [plant#13795964, filteredUnitOfMeasureConversions#13795989.quantityDenominator AS _extract_quantityDenominator#13797806]
Input [3]: [plant#13795964, filteredUnitOfMeasureConversions#13795989, quantityNumerator#13795990]
(902) Generate
Input [2]: [plant#13795964, _extract_quantityDenominator#13797806]
Arguments: explode(_extract_quantityDenominator#13797806), [plant#13795964], true, [quantityDenominator#13795991]
(903) Project
Output [1]: [plant#13795964]
Input [2]: [plant#13795964, quantityDenominator#13795991]
(904) HashAggregate
Input [1]: [plant#13795964]
Keys [1]: [plant#13795964]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13795964]
(905) Exchange
Input [1]: [plant#13795964]
Arguments: hashpartitioning(plant#13795964, 37), ENSURE_REQUIREMENTS, [plan_id=13510307]
(906) HashAggregate
Input [1]: [plant#13795964]
Keys [1]: [plant#13795964]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13795964]
(907) BroadcastHashJoin
Left keys [1]: [plantUuid#13795960]
Right keys [1]: [plant#13795964]
Join type: Inner
Join condition: None
(908) Project
Output [3]: [plantUuid#13795960, storageLocId#13795961, storageLocUuid#13795962]
Input [4]: [plantUuid#13795960, storageLocId#13795961, storageLocUuid#13795962, plant#13795964]
(909) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13795932.internalRefUUID, ), isnull(plant#13795932.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13795960, ), isnull(plantUuid#13795960)]
Join type: Inner
Join condition: None
(910) Generate
Input [9]: [systemId#13795929, internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, stockQuantities#13795934, plantUuid#13795960, storageLocId#13795961, storageLocUuid#13795962]
Arguments: explode(filter(stockQuantities#13795934, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13795962) AND (lambda x#13792128.storageLocation.Id = storageLocId#13795961)), lambda x#13792128, false))), [systemId#13795929, internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, plantUuid#13795960], false, [stockQuantity#13795994]
(911) ObjectHashAggregate
Input [7]: [systemId#13795929, internalUUID#13795930, product#13795931, plant#13795932, calculationDateTime#13795933, plantUuid#13795960, stockQuantity#13795994]
Keys [5]: [plantUuid#13795960, internalUUID#13795930, plant#13795932, product#13795931, systemId#13795929]
Functions [2]: [partial_first(calculationDateTime#13795933, false), partial_collect_list(stockQuantity#13795994, 0, 0)]
Aggregate Attributes [3]: [first#13799140, valueSet#13799141, buf#13799142]
Results [8]: [plantUuid#13795960, internalUUID#13795930, plant#13795932, product#13795931, systemId#13795929, first#13799143, valueSet#13799144, buf#13799145]
(912) ObjectHashAggregate
Input [8]: [plantUuid#13795960, internalUUID#13795930, plant#13795932, product#13795931, systemId#13795929, first#13799143, valueSet#13799144, buf#13799145]
Keys [5]: [plantUuid#13795960, internalUUID#13795930, plant#13795932, product#13795931, systemId#13795929]
Functions [2]: [first(calculationDateTime#13795933, false), collect_list(stockQuantity#13795994, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13795933)()#13792143, collect_list(stockQuantity#13795994, 0, 0)#13792144]
Results [4]: [product#13795931, plant#13795932, first(calculationDateTime#13795933)()#13792143 AS calculationDateTime#13795995, collect_list(stockQuantity#13795994, 0, 0)#13792144 AS stockQuantities#13795996]
(913) Filter
Input [4]: [product#13795931, plant#13795932, calculationDateTime#13795995, stockQuantities#13795996]
Condition : ((size(stockQuantities#13795996, true) > 0) AND isnotnull(calculationDateTime#13795995))
(914) Generate
Input [4]: [product#13795931, plant#13795932, calculationDateTime#13795995, stockQuantities#13795996]
Arguments: explode(stockQuantities#13795996), [product#13795931, plant#13795932, calculationDateTime#13795995], false, [stockQuantity#13795997]
(915) Filter
Input [4]: [product#13795931, plant#13795932, calculationDateTime#13795995, stockQuantity#13795997]
Condition : (((isnotnull(stockQuantity#13795997.specialStockIndicator.code) AND isnotnull(stockQuantity#13795997.stockType.code)) AND (stockQuantity#13795997.specialStockIndicator.code = )) AND (stockQuantity#13795997.stockType.code = 01))
(916) Project
Output [5]: [plant#13795932.internalRefUUID AS plantUuid#13795999, product#13795931.internalRefUUID AS productUuid#13796001, calculationDateTime#13795995, stockQuantity#13795997.storagelocation.id AS storageLocId#13796002, stockQuantity#13795997.quantity.measure AS quantity#13796004]
Input [4]: [product#13795931, plant#13795932, calculationDateTime#13795995, stockQuantity#13795997]
(917) Exchange
Input [5]: [plantUuid#13795999, productUuid#13796001, calculationDateTime#13795995, storageLocId#13796002, quantity#13796004]
Arguments: hashpartitioning(productUuid#13796001, plantUuid#13795999, 37), ENSURE_REQUIREMENTS, [plan_id=13510336]
(918) Sort
Input [5]: [plantUuid#13795999, productUuid#13796001, calculationDateTime#13795995, storageLocId#13796002, quantity#13796004]
Arguments: [productUuid#13796001 ASC NULLS FIRST, plantUuid#13795999 ASC NULLS FIRST], false, 0
(919) Scan parquet
Output [3]: [product#13796007, plant#13796008, orderDateTime#13796009]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(920) Filter
Input [3]: [product#13796007, plant#13796008, orderDateTime#13796009]
Condition : ((isnotnull(orderDateTime#13796009) AND isnotnull(plant#13796008)) AND isnotnull(product#13796007))
(921) Exchange
Input [3]: [product#13796007, plant#13796008, orderDateTime#13796009]
Arguments: hashpartitioning(product#13796007, plant#13796008, 37), REPARTITION_BY_NUM, [plan_id=13509809]
(922) Scan parquet
Output [4]: [plant#13796013, product#13796014, productionAspect#13796016, systemId#13796011]
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>>>>
(923) Project
Output [4]: [plant#13796013.internalRefUUID AS _extract_internalRefUUID#13798043, product#13796014.internalRefUUID AS _extract_internalRefUUID#13798046, productionAspect#13796016.productMovementPlants.unitOfIssue.code AS _extract_code#13798044, productionAspect#13796016.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798045]
Input [4]: [plant#13796013, product#13796014, productionAspect#13796016, systemId#13796011]
(924) Exchange
Input [4]: [_extract_internalRefUUID#13798043, _extract_internalRefUUID#13798046, _extract_code#13798044, _extract_internalRefUUID#13798045]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509439]
(925) Project
Output [4]: [_extract_code#13798044, _extract_internalRefUUID#13798045, _extract_internalRefUUID#13798046, _extract_internalRefUUID#13798043]
Input [4]: [_extract_internalRefUUID#13798043, _extract_internalRefUUID#13798046, _extract_code#13798044, _extract_internalRefUUID#13798045]
(926) BroadcastExchange
Input [4]: [_extract_code#13798044, _extract_internalRefUUID#13798045, _extract_internalRefUUID#13798046, _extract_internalRefUUID#13798043]
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=13510323]
(927) BroadcastHashJoin
Left keys [4]: [coalesce(product#13796007, ), isnull(product#13796007), coalesce(plant#13796008, ), isnull(plant#13796008)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798046, ), isnull(_extract_internalRefUUID#13798046), coalesce(_extract_internalRefUUID#13798043, ), isnull(_extract_internalRefUUID#13798043)]
Join type: LeftOuter
Join condition: None
(928) Project
Output [5]: [product#13796007, plant#13796008, orderDateTime#13796009, _extract_code#13798044, _extract_internalRefUUID#13798045]
Input [7]: [product#13796007, plant#13796008, orderDateTime#13796009, _extract_code#13798044, _extract_internalRefUUID#13798045, _extract_internalRefUUID#13798046, _extract_internalRefUUID#13798043]
(929) Scan parquet
Output [4]: [internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028, systemId#13796021]
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>>>
(930) Filter
Input [4]: [internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028, systemId#13796021]
Condition : isnotnull(internalUUID#13796022)
(931) Project
Output [3]: [internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028]
Input [4]: [internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028, systemId#13796021]
(932) Exchange
Input [3]: [internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509446]
(933) BroadcastExchange
Input [3]: [internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510327]
(934) BroadcastHashJoin
Left keys [1]: [product#13796007]
Right keys [1]: [internalUUID#13796022]
Join type: LeftOuter
Join condition: None
(935) Project
Output [4]: [product#13796007, plant#13796008, orderDateTime#13796009, filter(unitOfMeasureConversions#13796028, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798044) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798045)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13796026.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13796026.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13796033]
Input [8]: [product#13796007, plant#13796008, orderDateTime#13796009, _extract_code#13798044, _extract_internalRefUUID#13798045, internalUUID#13796022, baseUnitOfMeasure#13796026, unitOfMeasureConversions#13796028]
(936) Generate
Input [4]: [product#13796007, plant#13796008, orderDateTime#13796009, filteredUnitOfMeasureConversions#13796033]
Arguments: explode(filteredUnitOfMeasureConversions#13796033.quantityNumerator), [product#13796007, plant#13796008, orderDateTime#13796009, filteredUnitOfMeasureConversions#13796033], true, [quantityNumerator#13796034]
(937) Project
Output [4]: [product#13796007, plant#13796008, orderDateTime#13796009, filteredUnitOfMeasureConversions#13796033.quantityDenominator AS _extract_quantityDenominator#13797813]
Input [5]: [product#13796007, plant#13796008, orderDateTime#13796009, filteredUnitOfMeasureConversions#13796033, quantityNumerator#13796034]
(938) Generate
Input [4]: [product#13796007, plant#13796008, orderDateTime#13796009, _extract_quantityDenominator#13797813]
Arguments: explode(_extract_quantityDenominator#13797813), [product#13796007, plant#13796008, orderDateTime#13796009], true, [quantityDenominator#13796035]
(939) Project
Output [3]: [product#13796007, plant#13796008, orderDateTime#13796009]
Input [4]: [product#13796007, plant#13796008, orderDateTime#13796009, quantityDenominator#13796035]
(940) Sort
Input [3]: [product#13796007, plant#13796008, orderDateTime#13796009]
Arguments: [product#13796007 ASC NULLS FIRST, plant#13796008 ASC NULLS FIRST], false, 0
(941) SortMergeJoin
Left keys [2]: [productUuid#13796001, plantUuid#13795999]
Right keys [2]: [product#13796007, plant#13796008]
Join type: Inner
Join condition: (calculationDateTime#13795995 <= orderDateTime#13796009)
(942) Project
Output [5]: [plantUuid#13795999 AS plant#13796038, productUuid#13796001 AS product#13796039, storageLocId#13796002, calculationDateTime#13795995, quantity#13796004]
Input [8]: [plantUuid#13795999, productUuid#13796001, calculationDateTime#13795995, storageLocId#13796002, quantity#13796004, product#13796007, plant#13796008, orderDateTime#13796009]
(943) Exchange
Input [5]: [plant#13796038, product#13796039, storageLocId#13796002, calculationDateTime#13795995, quantity#13796004]
Arguments: hashpartitioning(coalesce(plant#13796038, ), isnull(plant#13796038), coalesce(product#13796039, ), isnull(product#13796039), coalesce(storageLocId#13796002, ), isnull(storageLocId#13796002), coalesce(calculationDateTime#13795995, 1970-01-01 00:00:00), isnull(calculationDateTime#13795995), 37), ENSURE_REQUIREMENTS, [plan_id=13510392]
(944) Sort
Input [5]: [plant#13796038, product#13796039, storageLocId#13796002, calculationDateTime#13795995, quantity#13796004]
Arguments: [coalesce(plant#13796038, ) ASC NULLS FIRST, isnull(plant#13796038) ASC NULLS FIRST, coalesce(product#13796039, ) ASC NULLS FIRST, isnull(product#13796039) ASC NULLS FIRST, coalesce(storageLocId#13796002, ) ASC NULLS FIRST, isnull(storageLocId#13796002) ASC NULLS FIRST, coalesce(calculationDateTime#13795995, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#13795995) ASC NULLS FIRST], false, 0
(945) Scan parquet
Output [6]: [internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045, systemId#13796040]
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>>>>>
(946) Filter
Input [6]: [internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045, systemId#13796040]
Condition : (isnotnull(plant#13796043.internalRefUUID) AND isnotnull(product#13796042.internalRefUUID))
(947) Project
Output [6]: [systemId#13796040, internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045]
Input [6]: [internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045, systemId#13796040]
(948) Exchange
Input [6]: [systemId#13796040, internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509458]
(949) BroadcastExchange
Input [6]: [systemId#13796040, internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045]
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=13510361]
(950) Scan parquet
Output [2]: [marketUnit#13796046, distributionCenters#13796052]
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,AUTO_ALL_ProdLoc), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(951) Filter
Input [2]: [marketUnit#13796046, distributionCenters#13796052]
Condition : (((marketUnit#13796046 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#13796052, true) > 0)) AND isnotnull(distributionCenters#13796052))
(952) Project
Output [1]: [distributionCenters#13796052]
Input [2]: [marketUnit#13796046, distributionCenters#13796052]
(953) Exchange
Input [1]: [distributionCenters#13796052]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509462]
(954) Generate
Input [1]: [distributionCenters#13796052]
Arguments: explode(distributionCenters#13796052), false, [distributionCenters#13796068]
(955) Filter
Input [1]: [distributionCenters#13796068]
Condition : (((size(distributionCenters#13796068.storageLocations, true) > 0) AND isnotnull(distributionCenters#13796068.storageLocations)) AND isnotnull(distributionCenters#13796068.internalRefUUID))
(956) Project
Output [2]: [distributionCenters#13796068.internalRefUUID AS _extract_internalRefUUID#13797820, distributionCenters#13796068.storageLocations AS _extract_storageLocations#13797821]
Input [1]: [distributionCenters#13796068]
(957) Generate
Input [2]: [_extract_internalRefUUID#13797820, _extract_storageLocations#13797821]
Arguments: explode(_extract_storageLocations#13797821), [_extract_internalRefUUID#13797820], false, [storageLocations#13796069]
(958) Project
Output [3]: [_extract_internalRefUUID#13797820 AS plantUuid#13796071, storageLocations#13796069.id AS storageLocId#13796072, storageLocations#13796069.internalRefUUID AS storageLocUuid#13796073]
Input [2]: [_extract_internalRefUUID#13797820, storageLocations#13796069]
(959) BroadcastExchange
Input [3]: [plantUuid#13796071, storageLocId#13796072, storageLocUuid#13796073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510357]
(960) Scan parquet
Output [2]: [product#13796074, plant#13796075]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(961) Filter
Input [2]: [product#13796074, plant#13796075]
Condition : isnotnull(plant#13796075)
(962) Exchange
Input [2]: [product#13796074, plant#13796075]
Arguments: hashpartitioning(product#13796074, plant#13796075, 37), REPARTITION_BY_NUM, [plan_id=13509820]
(963) Scan parquet
Output [4]: [plant#13796080, product#13796081, productionAspect#13796083, systemId#13796078]
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>>>>
(964) Project
Output [4]: [plant#13796080.internalRefUUID AS _extract_internalRefUUID#13798049, product#13796081.internalRefUUID AS _extract_internalRefUUID#13798050, productionAspect#13796083.productMovementPlants.unitOfIssue.code AS _extract_code#13798047, productionAspect#13796083.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798048]
Input [4]: [plant#13796080, product#13796081, productionAspect#13796083, systemId#13796078]
(965) Exchange
Input [4]: [_extract_internalRefUUID#13798049, _extract_internalRefUUID#13798050, _extract_code#13798047, _extract_internalRefUUID#13798048]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509474]
(966) Project
Output [4]: [_extract_code#13798047, _extract_internalRefUUID#13798048, _extract_internalRefUUID#13798050, _extract_internalRefUUID#13798049]
Input [4]: [_extract_internalRefUUID#13798049, _extract_internalRefUUID#13798050, _extract_code#13798047, _extract_internalRefUUID#13798048]
(967) BroadcastExchange
Input [4]: [_extract_code#13798047, _extract_internalRefUUID#13798048, _extract_internalRefUUID#13798050, _extract_internalRefUUID#13798049]
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=13510341]
(968) BroadcastHashJoin
Left keys [4]: [coalesce(product#13796074, ), isnull(product#13796074), coalesce(plant#13796075, ), isnull(plant#13796075)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798050, ), isnull(_extract_internalRefUUID#13798050), coalesce(_extract_internalRefUUID#13798049, ), isnull(_extract_internalRefUUID#13798049)]
Join type: LeftOuter
Join condition: None
(969) Project
Output [4]: [product#13796074, plant#13796075, _extract_code#13798047, _extract_internalRefUUID#13798048]
Input [6]: [product#13796074, plant#13796075, _extract_code#13798047, _extract_internalRefUUID#13798048, _extract_internalRefUUID#13798050, _extract_internalRefUUID#13798049]
(970) Scan parquet
Output [4]: [internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095, systemId#13796088]
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>>>
(971) Filter
Input [4]: [internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095, systemId#13796088]
Condition : isnotnull(internalUUID#13796089)
(972) Project
Output [3]: [internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095]
Input [4]: [internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095, systemId#13796088]
(973) Exchange
Input [3]: [internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509481]
(974) BroadcastExchange
Input [3]: [internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510345]
(975) BroadcastHashJoin
Left keys [1]: [product#13796074]
Right keys [1]: [internalUUID#13796089]
Join type: LeftOuter
Join condition: None
(976) Project
Output [2]: [plant#13796075, filter(unitOfMeasureConversions#13796095, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798047) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798048)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13796093.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13796093.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13796100]
Input [7]: [product#13796074, plant#13796075, _extract_code#13798047, _extract_internalRefUUID#13798048, internalUUID#13796089, baseUnitOfMeasure#13796093, unitOfMeasureConversions#13796095]
(977) Generate
Input [2]: [plant#13796075, filteredUnitOfMeasureConversions#13796100]
Arguments: explode(filteredUnitOfMeasureConversions#13796100.quantityNumerator), [plant#13796075, filteredUnitOfMeasureConversions#13796100], true, [quantityNumerator#13796101]
(978) Project
Output [2]: [plant#13796075, filteredUnitOfMeasureConversions#13796100.quantityDenominator AS _extract_quantityDenominator#13797822]
Input [3]: [plant#13796075, filteredUnitOfMeasureConversions#13796100, quantityNumerator#13796101]
(979) Generate
Input [2]: [plant#13796075, _extract_quantityDenominator#13797822]
Arguments: explode(_extract_quantityDenominator#13797822), [plant#13796075], true, [quantityDenominator#13796102]
(980) Project
Output [1]: [plant#13796075]
Input [2]: [plant#13796075, quantityDenominator#13796102]
(981) HashAggregate
Input [1]: [plant#13796075]
Keys [1]: [plant#13796075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13796075]
(982) Exchange
Input [1]: [plant#13796075]
Arguments: hashpartitioning(plant#13796075, 37), ENSURE_REQUIREMENTS, [plan_id=13510354]
(983) HashAggregate
Input [1]: [plant#13796075]
Keys [1]: [plant#13796075]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#13796075]
(984) BroadcastHashJoin
Left keys [1]: [plantUuid#13796071]
Right keys [1]: [plant#13796075]
Join type: Inner
Join condition: None
(985) Project
Output [3]: [plantUuid#13796071, storageLocId#13796072, storageLocUuid#13796073]
Input [4]: [plantUuid#13796071, storageLocId#13796072, storageLocUuid#13796073, plant#13796075]
(986) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13796043.internalRefUUID, ), isnull(plant#13796043.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#13796071, ), isnull(plantUuid#13796071)]
Join type: Inner
Join condition: None
(987) Generate
Input [9]: [systemId#13796040, internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, stockQuantities#13796045, plantUuid#13796071, storageLocId#13796072, storageLocUuid#13796073]
Arguments: explode(filter(stockQuantities#13796045, lambdafunction(((lambda x#13792128.storageLocation.internalRefUuid = storageLocUuid#13796073) AND (lambda x#13792128.storageLocation.Id = storageLocId#13796072)), lambda x#13792128, false))), [systemId#13796040, internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, plantUuid#13796071], false, [stockQuantity#13796105]
(988) ObjectHashAggregate
Input [7]: [systemId#13796040, internalUUID#13796041, product#13796042, plant#13796043, calculationDateTime#13796044, plantUuid#13796071, stockQuantity#13796105]
Keys [5]: [plantUuid#13796071, internalUUID#13796041, plant#13796043, product#13796042, systemId#13796040]
Functions [2]: [partial_first(calculationDateTime#13796044, false), partial_collect_list(stockQuantity#13796105, 0, 0)]
Aggregate Attributes [3]: [first#13799148, valueSet#13799149, buf#13799150]
Results [8]: [plantUuid#13796071, internalUUID#13796041, plant#13796043, product#13796042, systemId#13796040, first#13799151, valueSet#13799152, buf#13799153]
(989) ObjectHashAggregate
Input [8]: [plantUuid#13796071, internalUUID#13796041, plant#13796043, product#13796042, systemId#13796040, first#13799151, valueSet#13799152, buf#13799153]
Keys [5]: [plantUuid#13796071, internalUUID#13796041, plant#13796043, product#13796042, systemId#13796040]
Functions [2]: [first(calculationDateTime#13796044, false), collect_list(stockQuantity#13796105, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#13796044)()#13792143, collect_list(stockQuantity#13796105, 0, 0)#13792144]
Results [4]: [product#13796042, plant#13796043, first(calculationDateTime#13796044)()#13792143 AS calculationDateTime#13796106, collect_list(stockQuantity#13796105, 0, 0)#13792144 AS stockQuantities#13796107]
(990) Filter
Input [4]: [product#13796042, plant#13796043, calculationDateTime#13796106, stockQuantities#13796107]
Condition : ((size(stockQuantities#13796107, true) > 0) AND isnotnull(calculationDateTime#13796106))
(991) Generate
Input [4]: [product#13796042, plant#13796043, calculationDateTime#13796106, stockQuantities#13796107]
Arguments: explode(stockQuantities#13796107), [product#13796042, plant#13796043, calculationDateTime#13796106], false, [stockQuantity#13796108]
(992) Filter
Input [4]: [product#13796042, plant#13796043, calculationDateTime#13796106, stockQuantity#13796108]
Condition : (((isnotnull(stockQuantity#13796108.specialStockIndicator.code) AND isnotnull(stockQuantity#13796108.stockType.code)) AND (stockQuantity#13796108.specialStockIndicator.code = )) AND (stockQuantity#13796108.stockType.code = 01))
(993) Project
Output [4]: [plant#13796043.internalRefUUID AS plantUuid#13796110, product#13796042.internalRefUUID AS productUuid#13796112, calculationDateTime#13796106, stockQuantity#13796108.storagelocation.id AS storageLocId#13796113]
Input [4]: [product#13796042, plant#13796043, calculationDateTime#13796106, stockQuantity#13796108]
(994) Exchange
Input [4]: [plantUuid#13796110, productUuid#13796112, calculationDateTime#13796106, storageLocId#13796113]
Arguments: hashpartitioning(productUuid#13796112, plantUuid#13796110, 37), ENSURE_REQUIREMENTS, [plan_id=13510383]
(995) Sort
Input [4]: [plantUuid#13796110, productUuid#13796112, calculationDateTime#13796106, storageLocId#13796113]
Arguments: [productUuid#13796112 ASC NULLS FIRST, plantUuid#13796110 ASC NULLS FIRST], false, 0
(996) Scan parquet
Output [3]: [product#13796118, plant#13796119, orderDateTime#13796120]
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/10000000539/shardId=0_1_10000000539]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(997) Filter
Input [3]: [product#13796118, plant#13796119, orderDateTime#13796120]
Condition : ((isnotnull(orderDateTime#13796120) AND isnotnull(plant#13796119)) AND isnotnull(product#13796118))
(998) Exchange
Input [3]: [product#13796118, plant#13796119, orderDateTime#13796120]
Arguments: hashpartitioning(product#13796118, plant#13796119, 37), REPARTITION_BY_NUM, [plan_id=13509841]
(999) Scan parquet
Output [4]: [plant#13796124, product#13796125, productionAspect#13796127, systemId#13796122]
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>>>>
(1000) Project
Output [4]: [plant#13796124.internalRefUUID AS _extract_internalRefUUID#13798051, product#13796125.internalRefUUID AS _extract_internalRefUUID#13798054, productionAspect#13796127.productMovementPlants.unitOfIssue.code AS _extract_code#13798052, productionAspect#13796127.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#13798053]
Input [4]: [plant#13796124, product#13796125, productionAspect#13796127, systemId#13796122]
(1001) Exchange
Input [4]: [_extract_internalRefUUID#13798051, _extract_internalRefUUID#13798054, _extract_code#13798052, _extract_internalRefUUID#13798053]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509506]
(1002) Project
Output [4]: [_extract_code#13798052, _extract_internalRefUUID#13798053, _extract_internalRefUUID#13798054, _extract_internalRefUUID#13798051]
Input [4]: [_extract_internalRefUUID#13798051, _extract_internalRefUUID#13798054, _extract_code#13798052, _extract_internalRefUUID#13798053]
(1003) BroadcastExchange
Input [4]: [_extract_code#13798052, _extract_internalRefUUID#13798053, _extract_internalRefUUID#13798054, _extract_internalRefUUID#13798051]
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=13510370]
(1004) BroadcastHashJoin
Left keys [4]: [coalesce(product#13796118, ), isnull(product#13796118), coalesce(plant#13796119, ), isnull(plant#13796119)]
Right keys [4]: [coalesce(_extract_internalRefUUID#13798054, ), isnull(_extract_internalRefUUID#13798054), coalesce(_extract_internalRefUUID#13798051, ), isnull(_extract_internalRefUUID#13798051)]
Join type: LeftOuter
Join condition: None
(1005) Project
Output [5]: [product#13796118, plant#13796119, orderDateTime#13796120, _extract_code#13798052, _extract_internalRefUUID#13798053]
Input [7]: [product#13796118, plant#13796119, orderDateTime#13796120, _extract_code#13798052, _extract_internalRefUUID#13798053, _extract_internalRefUUID#13798054, _extract_internalRefUUID#13798051]
(1006) Scan parquet
Output [4]: [internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139, systemId#13796132]
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>>>
(1007) Filter
Input [4]: [internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139, systemId#13796132]
Condition : isnotnull(internalUUID#13796133)
(1008) Project
Output [3]: [internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139]
Input [4]: [internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139, systemId#13796132]
(1009) Exchange
Input [3]: [internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509513]
(1010) BroadcastExchange
Input [3]: [internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=13510374]
(1011) BroadcastHashJoin
Left keys [1]: [product#13796118]
Right keys [1]: [internalUUID#13796133]
Join type: LeftOuter
Join condition: None
(1012) Project
Output [4]: [product#13796118, plant#13796119, orderDateTime#13796120, filter(unitOfMeasureConversions#13796139, lambdafunction((((lambda u#13792048.measurementUnit1.code = _extract_code#13798052) AND (lambda u#13792048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#13798053)) AND ((lambda u#13792048.measurementUnit2.code = baseUnitOfMeasure#13796137.code) AND (lambda u#13792048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#13796137.internalRefUUID))), lambda u#13792048, false)) AS filteredUnitOfMeasureConversions#13796144]
Input [8]: [product#13796118, plant#13796119, orderDateTime#13796120, _extract_code#13798052, _extract_internalRefUUID#13798053, internalUUID#13796133, baseUnitOfMeasure#13796137, unitOfMeasureConversions#13796139]
(1013) Generate
Input [4]: [product#13796118, plant#13796119, orderDateTime#13796120, filteredUnitOfMeasureConversions#13796144]
Arguments: explode(filteredUnitOfMeasureConversions#13796144.quantityNumerator), [product#13796118, plant#13796119, orderDateTime#13796120, filteredUnitOfMeasureConversions#13796144], true, [quantityNumerator#13796145]
(1014) Project
Output [4]: [product#13796118, plant#13796119, orderDateTime#13796120, filteredUnitOfMeasureConversions#13796144.quantityDenominator AS _extract_quantityDenominator#13797829]
Input [5]: [product#13796118, plant#13796119, orderDateTime#13796120, filteredUnitOfMeasureConversions#13796144, quantityNumerator#13796145]
(1015) Generate
Input [4]: [product#13796118, plant#13796119, orderDateTime#13796120, _extract_quantityDenominator#13797829]
Arguments: explode(_extract_quantityDenominator#13797829), [product#13796118, plant#13796119, orderDateTime#13796120], true, [quantityDenominator#13796146]
(1016) Project
Output [3]: [product#13796118, plant#13796119, orderDateTime#13796120]
Input [4]: [product#13796118, plant#13796119, orderDateTime#13796120, quantityDenominator#13796146]
(1017) Sort
Input [3]: [product#13796118, plant#13796119, orderDateTime#13796120]
Arguments: [product#13796118 ASC NULLS FIRST, plant#13796119 ASC NULLS FIRST], false, 0
(1018) SortMergeJoin
Left keys [2]: [productUuid#13796112, plantUuid#13796110]
Right keys [2]: [product#13796118, plant#13796119]
Join type: Inner
Join condition: (calculationDateTime#13796106 <= orderDateTime#13796120)
(1019) Project
Output [4]: [plantUuid#13796110 AS plant#13796149, productUuid#13796112 AS product#13796150, storageLocId#13796113, calculationDateTime#13796106]
Input [7]: [plantUuid#13796110, productUuid#13796112, calculationDateTime#13796106, storageLocId#13796113, product#13796118, plant#13796119, orderDateTime#13796120]
(1020) HashAggregate
Input [4]: [plant#13796149, product#13796150, storageLocId#13796113, calculationDateTime#13796106]
Keys [3]: [plant#13796149, product#13796150, storageLocId#13796113]
Functions [1]: [partial_max(calculationDateTime#13796106)]
Aggregate Attributes [1]: [max#13799146]
Results [4]: [plant#13796149, product#13796150, storageLocId#13796113, max#13799147]
(1021) HashAggregate
Input [4]: [plant#13796149, product#13796150, storageLocId#13796113, max#13799147]
Keys [3]: [plant#13796149, product#13796150, storageLocId#13796113]
Functions [1]: [max(calculationDateTime#13796106)]
Aggregate Attributes [1]: [max(calculationDateTime#13796106)#13792207]
Results [4]: [plant#13796149, product#13796150, storageLocId#13796113, max(calculationDateTime#13796106)#13792207 AS max_calc_datetime#13796151]
(1022) Exchange
Input [4]: [plant#13796149, product#13796150, storageLocId#13796113, max_calc_datetime#13796151]
Arguments: hashpartitioning(coalesce(plant#13796149, ), isnull(plant#13796149), coalesce(product#13796150, ), isnull(product#13796150), coalesce(storageLocId#13796113, ), isnull(storageLocId#13796113), coalesce(max_calc_datetime#13796151, 1970-01-01 00:00:00), isnull(max_calc_datetime#13796151), 37), ENSURE_REQUIREMENTS, [plan_id=13510393]
(1023) Sort
Input [4]: [plant#13796149, product#13796150, storageLocId#13796113, max_calc_datetime#13796151]
Arguments: [coalesce(plant#13796149, ) ASC NULLS FIRST, isnull(plant#13796149) ASC NULLS FIRST, coalesce(product#13796150, ) ASC NULLS FIRST, isnull(product#13796150) ASC NULLS FIRST, coalesce(storageLocId#13796113, ) ASC NULLS FIRST, isnull(storageLocId#13796113) ASC NULLS FIRST, coalesce(max_calc_datetime#13796151, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#13796151) ASC NULLS FIRST], false, 0
(1024) SortMergeJoin
Left keys [8]: [coalesce(plant#13796038, ), isnull(plant#13796038), coalesce(product#13796039, ), isnull(product#13796039), coalesce(storageLocId#13796002, ), isnull(storageLocId#13796002), coalesce(calculationDateTime#13795995, 1970-01-01 00:00:00), isnull(calculationDateTime#13795995)]
Right keys [8]: [coalesce(plant#13796149, ), isnull(plant#13796149), coalesce(product#13796150, ), isnull(product#13796150), coalesce(storageLocId#13796113, ), isnull(storageLocId#13796113), coalesce(max_calc_datetime#13796151, 1970-01-01 00:00:00), isnull(max_calc_datetime#13796151)]
Join type: Inner
Join condition: None
(1025) Project
Output [4]: [plant#13796038, product#13796039, calculationDateTime#13795995, quantity#13796004]
Input [9]: [plant#13796038, product#13796039, storageLocId#13796002, calculationDateTime#13795995, quantity#13796004, plant#13796149, product#13796150, storageLocId#13796113, max_calc_datetime#13796151]
(1026) HashAggregate
Input [4]: [plant#13796038, product#13796039, calculationDateTime#13795995, quantity#13796004]
Keys [2]: [product#13796039, plant#13796038]
Functions [2]: [partial_min(calculationDateTime#13795995), partial_sum(quantity#13796004)]
Aggregate Attributes [2]: [min#13799136, sum#13799137]
Results [4]: [product#13796039, plant#13796038, min#13799138, sum#13799139]
(1027) Exchange
Input [4]: [product#13796039, plant#13796038, min#13799138, sum#13799139]
Arguments: hashpartitioning(product#13796039, plant#13796038, 37), ENSURE_REQUIREMENTS, [plan_id=13510400]
(1028) HashAggregate
Input [4]: [product#13796039, plant#13796038, min#13799138, sum#13799139]
Keys [2]: [product#13796039, plant#13796038]
Functions [2]: [min(calculationDateTime#13795995), sum(quantity#13796004)]
Aggregate Attributes [2]: [min(calculationDateTime#13795995)#13792335, sum(quantity#13796004)#13792334]
Results [4]: [product#13796039, plant#13796038, min(calculationDateTime#13795995)#13792335 AS minCalculationDateTime#13796153, round(sum(quantity#13796004)#13792334, 0) AS roundedQuantitySum#13796154]
(1029) Sort
Input [4]: [product#13796039, plant#13796038, minCalculationDateTime#13796153, roundedQuantitySum#13796154]
Arguments: [product#13796039 ASC NULLS FIRST, plant#13796038 ASC NULLS FIRST], false, 0
(1030) SortMergeJoin
Left keys [2]: [product#13795898, plant#13795899]
Right keys [2]: [product#13796039, plant#13796038]
Join type: LeftOuter
Join condition: None
(1031) Project
Output [7]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, CASE WHEN isnotnull(minCalculationDateTime#13796153) THEN minCalculationDateTime#13796153 ELSE orderDateTime#13795900 END AS stockDatetime#13796155, CASE WHEN isnotnull(roundedQuantitySum#13796154) THEN array(roundedQuantitySum#13796154) ELSE [0.0] END AS stockBatchQuantities#13796156]
Input [9]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, product#13796039, plant#13796038, minCalculationDateTime#13796153, roundedQuantitySum#13796154]
(1032) Scan parquet
Output [9]: [product#13796158, plant#13796159, demandChannel#13796160, demandStream#13796161, considerVariance#13796162, demandTimeBuckets#13796163, demandPointInTimeStart#13796164, demandPointInTimeEnd#13796165, demandPointInTime#13796166]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000539/0_1_10000000539]
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>>>
(1033) BroadcastExchange
Input [9]: [product#13796158, plant#13796159, demandChannel#13796160, demandStream#13796161, considerVariance#13796162, demandTimeBuckets#13796163, demandPointInTimeStart#13796164, demandPointInTimeEnd#13796165, demandPointInTime#13796166]
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=13510409]
(1034) BroadcastHashJoin
Left keys [4]: [coalesce(plant#13795899, ), isnull(plant#13795899), coalesce(product#13795898, ), isnull(product#13795898)]
Right keys [4]: [coalesce(plant#13796159, ), isnull(plant#13796159), coalesce(product#13796158, ), isnull(product#13796158)]
Join type: LeftOuter
Join condition: None
(1035) Project
Output [8]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, CASE WHEN isnotnull(product#13796158) THEN struct(demandChannel, demandChannel#13796160, demandStream, demandStream#13796161, considerVariance, considerVariance#13796162, demandTimeBuckets, demandTimeBuckets#13796163, demandPointInTimeStart, demandPointInTimeStart#13796164, demandPointInTimeEnd, demandPointInTimeEnd#13796165, demandPointInTime, demandPointInTime#13796166) END AS rawDemands#13796167]
Input [16]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, product#13796158, plant#13796159, demandChannel#13796160, demandStream#13796161, considerVariance#13796162, demandTimeBuckets#13796163, demandPointInTimeStart#13796164, demandPointInTimeEnd#13796165, demandPointInTime#13796166]
(1036) ObjectHashAggregate
Input [8]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, rawDemands#13796167]
Keys [8]: [product#13795898, plant#13795899, orderDateTime#13795900, knownfloatingpointnormalized(if (isnull(productPlant#13795911)) null else named_struct(systemId, productPlant#13795911.systemId, internalUUID, productPlant#13795911.internalUUID, plant, productPlant#13795911.plant, product, productPlant#13795911.product, blockedForReplenishmentStartingFrom, productPlant#13795911.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#13795911.productionAspect)) null else named_struct(productMovementPlants, productPlant#13795911.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#13795911.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#13795911.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#13795911.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#13795911.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#13795911.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#13795911.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#13795911.salesPlant, listing, productPlant#13795911.listing, sourceOfSupplyCategory, productPlant#13795911.sourceOfSupplyCategory)) AS productPlant#13795911, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#13795928)) AS outboundUnit#13795928, stockDatetime#13796155, knownfloatingpointnormalized(transform(stockBatchQuantities#13796156, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#13799133)), lambda arg#13799133, false))) AS stockBatchQuantities#13796156, [7226582400000000] AS [7226582400000000]#13799132]
Functions [1]: [partial_collect_list(rawDemands#13796167, 0, 0)]
Aggregate Attributes [1]: [buf#13799134]
Results [9]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, [7226582400000000]#13799132, buf#13799135]
(1037) ObjectHashAggregate
Input [9]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, [7226582400000000]#13799132, buf#13799135]
Keys [8]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, [7226582400000000]#13799132]
Functions [1]: [collect_list(rawDemands#13796167, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#13796167, 0, 0)#13792404]
Results [8]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, collect_list(rawDemands#13796167, 0, 0)#13792404 AS rawDemands#13796168]
(1038) Scan parquet
Output [3]: [internalUUID#13796170, address#13796176, systemId#13796169]
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>>>
(1039) Project
Output [2]: [internalUUID#13796170, address#13796176.timeZone.code AS timezonecode#13796181]
Input [3]: [internalUUID#13796170, address#13796176, systemId#13796169]
(1040) Exchange
Input [2]: [internalUUID#13796170, timezonecode#13796181]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=13509537]
(1041) BroadcastExchange
Input [2]: [internalUUID#13796170, timezonecode#13796181]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=13510415]
(1042) BroadcastHashJoin
Left keys [2]: [coalesce(plant#13795899, ), isnull(plant#13795899)]
Right keys [2]: [coalesce(internalUUID#13796170, ), isnull(internalUUID#13796170)]
Join type: LeftOuter
Join condition: None
(1043) Project
Output [10]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13796157, rawDemands#13796168, CASE WHEN isnotnull(timezonecode#13796181) THEN timezonecode#13796181 ELSE UTC END AS timezonecode#13796182]
Input [10]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, rawDemands#13796168, internalUUID#13796170, timezonecode#13796181]
(1044) DeserializeToObject
Input [10]: [product#13795898, plant#13795899, orderDateTime#13795900, productPlant#13795911, outboundUnit#13795928, stockDatetime#13796155, stockBatchQuantities#13796156, stockBatchShelfLifeEndDatetimes#13796157, rawDemands#13796168, timezonecode#13796182]
Arguments: createexternalrow(invoke(product#13795898.toString()), invoke(plant#13795899.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#13795900)), if (isnull(productPlant#13795911)) null else createexternalrow(invoke(productPlant#13795911.systemId.toString()), invoke(productPlant#13795911.internalUUID.toString()), if (isnull(productPlant#13795911.plant)) null else createexternalrow(invoke(productPlant#13795911.plant.internalRefUUID.toString()), invoke(productPlant#13795911.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#13795911.product)) null else createexternalrow(invoke(productPlant#13795911.product.internalRefUUID.toString()), invoke(productPlant#13795911.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#13795911.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#13795911.productionAspect)) null else createexternalrow(if (isnull(productPlant#13795911.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#13795911.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#13795911.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#13795911.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#13795911.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#13795911.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#13795911.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#13795911.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13795911.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#13795911.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#13795911.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13795911.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#13795911.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#13795911.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#13795911.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#13795911.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#13795911.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#13795911.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#13795911.salesPlant)) null else createexternalrow(if (isnull(productPlant#13795911.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#13795911.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#13795911.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#13795911.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#13795911.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#13795911.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#13795911.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#13795928)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#13796155)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#13796156, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#13796157, 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#13796168, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#13796182.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#13793477: org.apache.spark.sql.Row
(1045) MapElements
Input [1]: [obj#13793477]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008020466f8@2bc6baae, obj#13793482: org.apache.spark.sql.Row
(1046) SerializeFromObject
Input [1]: [obj#13793482]
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#13796183, 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#13796184, 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#13796185, 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#13796186]
(1047) Exchange
Input [4]: [product#13796183, plant#13796184, dayBucketDemands#13796185, pointInTimeDemands#13796186]
Arguments: hashpartitioning(coalesce(plant#13796184, ), isnull(plant#13796184), coalesce(product#13796183, ), isnull(product#13796183), 37), ENSURE_REQUIREMENTS, [plan_id=13510424]
(1048) Sort
Input [4]: [product#13796183, plant#13796184, dayBucketDemands#13796185, pointInTimeDemands#13796186]
Arguments: [coalesce(plant#13796184, ) ASC NULLS FIRST, isnull(plant#13796184) ASC NULLS FIRST, coalesce(product#13796183, ) ASC NULLS FIRST, isnull(product#13796183) ASC NULLS FIRST], false, 0
(1049) SortMergeJoin
Left keys [4]: [coalesce(plant#13795639, ), isnull(plant#13795639), coalesce(product#13795638, ), isnull(product#13795638)]
Right keys [4]: [coalesce(plant#13796184, ), isnull(plant#13796184), coalesce(product#13796183, ), isnull(product#13796183)]
Join type: LeftOuter
Join condition: None
(1050) Project
Output [9]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, dayBucketDemands#13796185, pointInTimeDemands#13796186]
Input [11]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, product#13796183, plant#13796184, dayBucketDemands#13796185, pointInTimeDemands#13796186]
(1051) InMemoryTableScan
Output [3]: [product#13796806, plant#13796805, openGoodsMovements#13796817]
Arguments: [product#13796806, plant#13796805, openGoodsMovements#13796817], [isnotnull(product#13796806), isnotnull(plant#13796805)]
(1052) InMemoryRelation
Arguments: [product#13796806, plant#13796805, openGoodsMovements#13796817], StorageLevel(disk, memory, 2 replicas)
(1053) Filter
Input [3]: [product#13796806, plant#13796805, openGoodsMovements#13796817]
Condition : (isnotnull(product#13796806) AND isnotnull(plant#13796805))
(1054) ObjectHashAggregate
Input [3]: [product#13796806, plant#13796805, openGoodsMovements#13796817]
Keys [2]: [product#13796806, plant#13796805]
Functions [1]: [partial_collect_list(openGoodsMovements#13796817, 0, 0)]
Aggregate Attributes [1]: [buf#13799154]
Results [3]: [product#13796806, plant#13796805, buf#13799155]
(1055) Exchange
Input [3]: [product#13796806, plant#13796805, buf#13799155]
Arguments: hashpartitioning(product#13796806, plant#13796805, 37), ENSURE_REQUIREMENTS, [plan_id=13510429]
(1056) ObjectHashAggregate
Input [3]: [product#13796806, plant#13796805, buf#13799155]
Keys [2]: [product#13796806, plant#13796805]
Functions [1]: [collect_list(openGoodsMovements#13796817, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#13796817, 0, 0)#13794557]
Results [3]: [product#13796806, plant#13796805, flatten(collect_list(openGoodsMovements#13796817, 0, 0)#13794557) AS openGoodsMovements#13797387]
(1057) Project
Output [5]: [product#13796806, plant#13796805, openGoodsMovements#13797387.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#13798016, openGoodsMovements#13797387.availabilityDatetime AS _extract_availabilityDatetime#13798017, openGoodsMovements#13797387.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#13798018]
Input [3]: [product#13796806, plant#13796805, openGoodsMovements#13797387]
(1058) BroadcastExchange
Input [5]: [product#13796806, plant#13796805, _extract_openQtyInBaseUnit#13798016, _extract_availabilityDatetime#13798017, _extract_shelfLifeEndDatetime#13798018]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=13510433]
(1059) BroadcastHashJoin
Left keys [2]: [product#13795638, plant#13795639]
Right keys [2]: [product#13796806, plant#13796805]
Join type: LeftOuter
Join condition: None
(1060) Project
Output [15]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13795897, dayBucketDemands#13796185, pointInTimeDemands#13796186, coalesce(_extract_openQtyInBaseUnit#13798016, []) AS openGoodsMovementQuantities#13797388, coalesce(_extract_availabilityDatetime#13798017, []) AS openGoodsMovementAvailabilityDatetimes#13797389, coalesce(_extract_shelfLifeEndDatetime#13798018, []) AS openGoodsMovementShelfLifeEndDatetimes#13797390, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#13797391, array_sort(filter(CASE WHEN isnotnull(productPlant#13795651.listing) THEN productPlant#13795651.listing ELSE [] END, lambdafunction(lambda listing#13795584.isListed, lambda listing#13795584, false)), lambdafunction(if ((isnull(lambda left#13795586) AND isnull(lambda right#13795587))) 0 else if (isnull(lambda left#13795586)) 1 else if (isnull(lambda right#13795587)) -1 else if ((lambda left#13795586 < lambda right#13795587)) -1 else if ((lambda left#13795586 > lambda right#13795587)) 1 else 0, lambda left#13795586, lambda right#13795587, false), false) AS listing#13795585]
Input [14]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, dayBucketDemands#13796185, pointInTimeDemands#13796186, product#13796806, plant#13796805, _extract_openQtyInBaseUnit#13798016, _extract_availabilityDatetime#13798017, _extract_shelfLifeEndDatetime#13798018]
(1061) DeserializeToObject
Input [15]: [product#13795638, plant#13795639, orderDateTime#13795640, productPlant#13795651, outboundUnit#13795668, stockDatetime#13795895, stockBatchQuantities#13795896, stockBatchShelfLifeEndDatetimes#13795897, dayBucketDemands#13796185, pointInTimeDemands#13796186, openGoodsMovementQuantities#13797388, openGoodsMovementAvailabilityDatetimes#13797389, openGoodsMovementShelfLifeEndDatetimes#13797390, configuration#13797391, listing#13795585]
Arguments: createexternalrow(invoke(product#13795638.toString()), invoke(plant#13795639.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#13795640)), if (isnull(productPlant#13795651)) null else createexternalrow(invoke(productPlant#13795651.systemId.toString()), invoke(productPlant#13795651.internalUUID.toString()), if (isnull(productPlant#13795651.plant)) null else createexternalrow(invoke(productPlant#13795651.plant.internalRefUUID.toString()), invoke(productPlant#13795651.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#13795651.product)) null else createexternalrow(invoke(productPlant#13795651.product.internalRefUUID.toString()), invoke(productPlant#13795651.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#13795651.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#13795651.productionAspect)) null else createexternalrow(if (isnull(productPlant#13795651.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795651.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#13795651.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#13795651.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#13795651.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#13795651.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#13795651.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795651.salesPlant)) null else createexternalrow(if (isnull(productPlant#13795651.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#13795651.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795651.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#13795651.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#13795651.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#13795651.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#13795668)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#13795895)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#13795896, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#13795897, 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#13796185, 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#13796186, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#13797388, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#13797389, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#13797390, 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#13797391, 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#13795585, 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#13795618: org.apache.spark.sql.Row
(1062) MapElements
Input [1]: [obj#13795618]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000802070f28@3f33e2dc, obj#13795625: org.apache.spark.sql.Row
(1063) SerializeFromObject
Input [1]: [obj#13795625]
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#13795632, 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#13795633, 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#13795634, 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#13795635, 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#13795636, 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#13795637]
(1064) Filter
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Condition : (isnotnull(product#13795632) AND isnotnull(plant#13795633))
(1065) Exchange
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: hashpartitioning(product#13795632, plant#13795633, 37), ENSURE_REQUIREMENTS, [plan_id=13510443]
(1066) Sort
Input [6]: [product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
Arguments: [product#13795632 ASC NULLS FIRST, plant#13795633 ASC NULLS FIRST], false, 0
(1067) SortMergeJoin
Left keys [2]: [product#13791972, plant#13791973]
Right keys [2]: [product#13795632, plant#13795633]
Join type: LeftOuter
Join condition: None
(1068) Project
Output [16]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#13792373, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#13795441, CASE WHEN isnotnull(timeDependentSettingsName#13795634) THEN timeDependentSettingsName#13795634 ELSE [] END AS timeDependentSettingsName#13797516, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#13795635) THEN timeDependentSettingsStartDatetime#13795635 ELSE [] END AS timeDependentSettingsStartDatetime#13797517, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#13795636) THEN timeDependentSettingsEndDatetime#13795636 ELSE [] END AS timeDependentSettingsEndDatetime#13797518, CASE WHEN isnotnull(timeDependentSettingsValue#13795637) THEN timeDependentSettingsValue#13795637 ELSE [] END AS timeDependentSettingsValue#13797519]
Input [16]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149, product#13795632, plant#13795633, timeDependentSettingsName#13795634, timeDependentSettingsStartDatetime#13795635, timeDependentSettingsEndDatetime#13795636, timeDependentSettingsValue#13795637]
(1069) AdaptiveSparkPlan
Output [16]: [product#13791972, plant#13791973, outboundUnit#13792060, stockDatetime#13792371, stockBatchQuantities#13792372, stockBatchShelfLifeEndDatetimes#13792373, dayBucketDemands#13793489, pointInTimeDemands#13793490, openGoodsMovementQuantities#13795147, openGoodsMovementAvailabilityDatetimes#13795148, openGoodsMovementShelfLifeEndDatetimes#13795149, configuration#13795441, timeDependentSettingsName#13797516, timeDependentSettingsStartDatetime#13797517, timeDependentSettingsEndDatetime#13797518, timeDependentSettingsValue#13797519]
Arguments: isFinalPlan=false