== Physical Plan ==
AdaptiveSparkPlan (1071)
+- == Current Plan ==
ResultQueryStage (258)
+- * Project (257)
+- * BroadcastHashJoin LeftOuter BuildRight (256)
:- AQEShuffleRead (234)
: +- ShuffleQueryStage (233), Statistics(sizeInBytes=1718.1 KiB, rowCount=990)
: +- Exchange (232)
: +- * Project (231)
: +- * Project (230)
: +- * Project (229)
: +- * SortMergeJoin LeftOuter (228)
: :- * Sort (170)
: : +- AQEShuffleRead (169)
: : +- ShuffleQueryStage (168), Statistics(sizeInBytes=131.5 KiB, rowCount=990)
: : +- 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=92.8 KiB, rowCount=990)
: : : : : +- 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=228)
: : +- BroadcastExchange (163)
: : +- * HashAggregate (162)
: : +- AQEShuffleRead (161)
: : +- ShuffleQueryStage (160), Statistics(sizeInBytes=23.2 KiB, rowCount=228)
: : +- Exchange (159)
: : +- * HashAggregate (158)
: : +- * Project (157)
: : +- * BroadcastHashJoin Inner BuildLeft (156)
: : :- BroadcastQueryStage (111), Statistics(sizeInBytes=2.0 MiB, rowCount=228)
: : : +- BroadcastExchange (110)
: : : +- AQEShuffleRead (109)
: : : +- ShuffleQueryStage (108), Statistics(sizeInBytes=26.7 KiB, rowCount=228)
: : : +- 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.1 KiB, rowCount=343)
: : : : +- 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=85.1 KiB, rowCount=990)
: : : : : : +- 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=92.8 KiB, rowCount=990)
: : : : : +- 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=24.9 KiB, rowCount=228)
: : +- 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.1 KiB, rowCount=343)
: : : +- 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=92.8 KiB, rowCount=990)
: : : : +- 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)
: +- * Sort (227)
: +- AQEShuffleRead (226)
: +- ShuffleQueryStage (225), Statistics(sizeInBytes=1625.3 KiB, rowCount=990)
: +- Exchange (224)
: +- * SerializeFromObject (223)
: +- * MapElements (222)
: +- * DeserializeToObject (221)
: +- * Project (220)
: +- * BroadcastHashJoin LeftOuter BuildRight (219)
: :- ObjectHashAggregate (211)
: : +- AQEShuffleRead (210)
: : +- ShuffleQueryStage (209), Statistics(sizeInBytes=4.2 MiB, rowCount=990)
: : +- Exchange (208)
: : +- ObjectHashAggregate (207)
: : +- * Project (206)
: : +- * SortMergeJoin LeftOuter (205)
: : :- * Sort (198)
: : : +- AQEShuffleRead (197)
: : : +- ShuffleQueryStage (196), Statistics(sizeInBytes=861.4 KiB, rowCount=990)
: : : +- Exchange (195)
: : : +- * Project (194)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (193)
: : : :- * Project (190)
: : : : +- * Project (189)
: : : : +- * Generate (188)
: : : : +- * Generate (187)
: : : : +- * Project (186)
: : : : +- Project (185)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (184)
: : : : :- * BroadcastHashJoin LeftOuter BuildRight (181)
: : : : : :- ShuffleQueryStage (172), Statistics(sizeInBytes=92.8 KiB, rowCount=990)
: : : : : : +- ReusedExchange (171)
: : : : : +- BroadcastQueryStage (180), Statistics(sizeInBytes=2.1 MiB, rowCount=1.43E+3)
: : : : : +- BroadcastExchange (179)
: : : : : +- * Project (178)
: : : : : +- ShuffleQueryStage (177), Statistics(sizeInBytes=1029.3 KiB, rowCount=1.43E+3)
: : : : : +- Exchange (176)
: : : : : +- * Project (175)
: : : : : +- * ColumnarToRow (174)
: : : : : +- Scan parquet (173)
: : : : +- BroadcastQueryStage (183), Statistics(sizeInBytes=2.0 MiB, rowCount=144)
: : : : +- ReusedExchange (182)
: : : +- BroadcastQueryStage (192), Statistics(sizeInBytes=2.0 MiB, rowCount=228)
: : : +- ReusedExchange (191)
: : +- * Sort (204)
: : +- AQEShuffleRead (203)
: : +- ShuffleQueryStage (202), Statistics(sizeInBytes=3.4 MiB, rowCount=990)
: : +- Exchange (201)
: : +- * ColumnarToRow (200)
: : +- Scan parquet (199)
: +- BroadcastQueryStage (218), Statistics(sizeInBytes=2.0 MiB, rowCount=21)
: +- BroadcastExchange (217)
: +- ShuffleQueryStage (216), Statistics(sizeInBytes=1512.0 B, rowCount=21)
: +- Exchange (215)
: +- * Project (214)
: +- * ColumnarToRow (213)
: +- Scan parquet (212)
+- BroadcastQueryStage (255), Statistics(sizeInBytes=2.0 MiB, rowCount=990)
+- BroadcastExchange (254)
+- AQEShuffleRead (253)
+- ShuffleQueryStage (252), Statistics(sizeInBytes=224.3 KiB, rowCount=990)
+- Exchange (251)
+- * Filter (250)
+- * SerializeFromObject (249)
+- * MapElements (248)
+- * DeserializeToObject (247)
+- Project (246)
+- * Project (245)
+- * Project (244)
+- * SortMergeJoin LeftOuter (243)
:- * Sort (238)
: +- AQEShuffleRead (237)
: +- ShuffleQueryStage (236), Statistics(sizeInBytes=861.4 KiB, rowCount=990)
: +- ReusedExchange (235)
+- * Sort (242)
+- AQEShuffleRead (241)
+- ShuffleQueryStage (240), Statistics(sizeInBytes=1625.3 KiB, rowCount=990)
+- ReusedExchange (239)
+- == Initial Plan ==
Project (1070)
+- SortMergeJoin LeftOuter (1069)
:- Sort (657)
: +- Exchange (656)
: +- Project (655)
: +- BroadcastHashJoin LeftOuter BuildRight (654)
: :- Project (644)
: : +- SortMergeJoin LeftOuter (643)
: : :- Sort (439)
: : : +- Exchange (438)
: : : +- Project (437)
: : : +- SortMergeJoin LeftOuter (436)
: : : :- Sort (277)
: : : : +- Project (276)
: : : : +- Project (275)
: : : : +- Generate (274)
: : : : +- Generate (273)
: : : : +- Project (272)
: : : : +- Project (271)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (270)
: : : : :- Project (265)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (264)
: : : : : :- Exchange (259)
: : : : : : +- Scan parquet (1)
: : : : : +- BroadcastExchange (263)
: : : : : +- Project (262)
: : : : : +- Exchange (261)
: : : : : +- Project (260)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (269)
: : : : +- Exchange (268)
: : : : +- Project (267)
: : : : +- Filter (266)
: : : : +- Scan parquet (15)
: : : +- Sort (435)
: : : +- HashAggregate (434)
: : : +- Exchange (433)
: : : +- HashAggregate (432)
: : : +- Project (431)
: : : +- SortMergeJoin Inner (430)
: : : :- Sort (350)
: : : : +- Exchange (349)
: : : : +- Project (348)
: : : : +- SortMergeJoin Inner (347)
: : : : :- Sort (325)
: : : : : +- Exchange (324)
: : : : : +- Project (323)
: : : : : +- Filter (322)
: : : : : +- Generate (321)
: : : : : +- Filter (320)
: : : : : +- ObjectHashAggregate (319)
: : : : : +- ObjectHashAggregate (318)
: : : : : +- Generate (317)
: : : : : +- BroadcastHashJoin Inner BuildLeft (316)
: : : : : :- BroadcastExchange (281)
: : : : : : +- Exchange (280)
: : : : : : +- Project (279)
: : : : : : +- Filter (278)
: : : : : : +- Scan parquet (30)
: : : : : +- Project (315)
: : : : : +- BroadcastHashJoin Inner BuildLeft (314)
: : : : : :- BroadcastExchange (290)
: : : : : : +- Project (289)
: : : : : : +- Generate (288)
: : : : : : +- Project (287)
: : : : : : +- Filter (286)
: : : : : : +- Generate (285)
: : : : : : +- Exchange (284)
: : : : : : +- Project (283)
: : : : : : +- Filter (282)
: : : : : : +- Scan parquet (38)
: : : : : +- HashAggregate (313)
: : : : : +- Exchange (312)
: : : : : +- HashAggregate (311)
: : : : : +- Project (310)
: : : : : +- Generate (309)
: : : : : +- Project (308)
: : : : : +- Generate (307)
: : : : : +- Project (306)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (305)
: : : : : :- Project (299)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (298)
: : : : : : :- Exchange (292)
: : : : : : : +- Filter (291)
: : : : : : : +- Scan parquet (51)
: : : : : : +- BroadcastExchange (297)
: : : : : : +- Project (296)
: : : : : : +- Exchange (295)
: : : : : : +- Project (294)
: : : : : : +- Scan parquet (293)
: : : : : +- BroadcastExchange (304)
: : : : : +- Exchange (303)
: : : : : +- Project (302)
: : : : : +- Filter (301)
: : : : : +- Scan parquet (300)
: : : : +- Sort (346)
: : : : +- Project (345)
: : : : +- Generate (344)
: : : : +- Project (343)
: : : : +- Generate (342)
: : : : +- Project (341)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (340)
: : : : :- Project (334)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (333)
: : : : : :- Exchange (327)
: : : : : : +- Filter (326)
: : : : : : +- Scan parquet (88)
: : : : : +- BroadcastExchange (332)
: : : : : +- Project (331)
: : : : : +- Exchange (330)
: : : : : +- Project (329)
: : : : : +- Scan parquet (328)
: : : : +- BroadcastExchange (339)
: : : : +- Exchange (338)
: : : : +- Project (337)
: : : : +- Filter (336)
: : : : +- Scan parquet (335)
: : : +- Sort (429)
: : : +- Exchange (428)
: : : +- HashAggregate (427)
: : : +- HashAggregate (426)
: : : +- Project (425)
: : : +- SortMergeJoin Inner (424)
: : : :- Sort (401)
: : : : +- Exchange (400)
: : : : +- Project (399)
: : : : +- Filter (398)
: : : : +- Generate (397)
: : : : +- Filter (396)
: : : : +- ObjectHashAggregate (395)
: : : : +- ObjectHashAggregate (394)
: : : : +- Generate (393)
: : : : +- BroadcastHashJoin Inner BuildLeft (392)
: : : : :- BroadcastExchange (355)
: : : : : +- Exchange (354)
: : : : : +- Project (353)
: : : : : +- Filter (352)
: : : : : +- Scan parquet (351)
: : : : +- Project (391)
: : : : +- BroadcastHashJoin Inner BuildLeft (390)
: : : : :- BroadcastExchange (365)
: : : : : +- Project (364)
: : : : : +- Generate (363)
: : : : : +- Project (362)
: : : : : +- Filter (361)
: : : : : +- Generate (360)
: : : : : +- Exchange (359)
: : : : : +- Project (358)
: : : : : +- Filter (357)
: : : : : +- Scan parquet (356)
: : : : +- HashAggregate (389)
: : : : +- Exchange (388)
: : : : +- HashAggregate (387)
: : : : +- Project (386)
: : : : +- Generate (385)
: : : : +- Project (384)
: : : : +- Generate (383)
: : : : +- Project (382)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (381)
: : : : :- Project (375)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (374)
: : : : : :- Exchange (368)
: : : : : : +- Filter (367)
: : : : : : +- Scan parquet (366)
: : : : : +- BroadcastExchange (373)
: : : : : +- Project (372)
: : : : : +- Exchange (371)
: : : : : +- Project (370)
: : : : : +- Scan parquet (369)
: : : : +- BroadcastExchange (380)
: : : : +- Exchange (379)
: : : : +- Project (378)
: : : : +- Filter (377)
: : : : +- Scan parquet (376)
: : : +- Sort (423)
: : : +- Project (422)
: : : +- Generate (421)
: : : +- Project (420)
: : : +- Generate (419)
: : : +- Project (418)
: : : +- BroadcastHashJoin LeftOuter BuildRight (417)
: : : :- Project (411)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (410)
: : : : :- Exchange (404)
: : : : : +- Filter (403)
: : : : : +- Scan parquet (402)
: : : : +- BroadcastExchange (409)
: : : : +- Project (408)
: : : : +- Exchange (407)
: : : : +- Project (406)
: : : : +- Scan parquet (405)
: : : +- BroadcastExchange (416)
: : : +- Exchange (415)
: : : +- Project (414)
: : : +- Filter (413)
: : : +- Scan parquet (412)
: : +- Sort (642)
: : +- Exchange (641)
: : +- SerializeFromObject (640)
: : +- MapElements (639)
: : +- DeserializeToObject (638)
: : +- Project (637)
: : +- BroadcastHashJoin LeftOuter BuildRight (636)
: : :- ObjectHashAggregate (632)
: : : +- Exchange (631)
: : : +- ObjectHashAggregate (630)
: : : +- Project (629)
: : : +- SortMergeJoin LeftOuter (628)
: : : :- Sort (625)
: : : : +- Exchange (624)
: : : : +- Project (623)
: : : : +- SortMergeJoin LeftOuter (622)
: : : : :- Sort (459)
: : : : : +- Project (458)
: : : : : +- Project (457)
: : : : : +- Generate (456)
: : : : : +- Generate (455)
: : : : : +- Project (454)
: : : : : +- Project (453)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (452)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (446)
: : : : : : :- Exchange (441)
: : : : : : : +- Scan parquet (440)
: : : : : : +- BroadcastExchange (445)
: : : : : : +- Project (444)
: : : : : : +- Exchange (443)
: : : : : : +- Project (442)
: : : : : : +- Scan parquet (173)
: : : : : +- BroadcastExchange (451)
: : : : : +- Exchange (450)
: : : : : +- Project (449)
: : : : : +- Filter (448)
: : : : : +- Scan parquet (447)
: : : : +- Sort (621)
: : : : +- HashAggregate (620)
: : : : +- Exchange (619)
: : : : +- HashAggregate (618)
: : : : +- Project (617)
: : : : +- SortMergeJoin Inner (616)
: : : : :- Sort (536)
: : : : : +- Exchange (535)
: : : : : +- Project (534)
: : : : : +- SortMergeJoin Inner (533)
: : : : : :- Sort (510)
: : : : : : +- Exchange (509)
: : : : : : +- Project (508)
: : : : : : +- Filter (507)
: : : : : : +- Generate (506)
: : : : : : +- Filter (505)
: : : : : : +- ObjectHashAggregate (504)
: : : : : : +- ObjectHashAggregate (503)
: : : : : : +- Generate (502)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (501)
: : : : : : :- BroadcastExchange (464)
: : : : : : : +- Exchange (463)
: : : : : : : +- Project (462)
: : : : : : : +- Filter (461)
: : : : : : : +- Scan parquet (460)
: : : : : : +- Project (500)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (499)
: : : : : : :- BroadcastExchange (474)
: : : : : : : +- Project (473)
: : : : : : : +- Generate (472)
: : : : : : : +- Project (471)
: : : : : : : +- Filter (470)
: : : : : : : +- Generate (469)
: : : : : : : +- Exchange (468)
: : : : : : : +- Project (467)
: : : : : : : +- Filter (466)
: : : : : : : +- Scan parquet (465)
: : : : : : +- HashAggregate (498)
: : : : : : +- Exchange (497)
: : : : : : +- HashAggregate (496)
: : : : : : +- Project (495)
: : : : : : +- Generate (494)
: : : : : : +- Project (493)
: : : : : : +- Generate (492)
: : : : : : +- Project (491)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (490)
: : : : : : :- Project (484)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (483)
: : : : : : : :- Exchange (477)
: : : : : : : : +- Filter (476)
: : : : : : : : +- Scan parquet (475)
: : : : : : : +- BroadcastExchange (482)
: : : : : : : +- Project (481)
: : : : : : : +- Exchange (480)
: : : : : : : +- Project (479)
: : : : : : : +- Scan parquet (478)
: : : : : : +- BroadcastExchange (489)
: : : : : : +- Exchange (488)
: : : : : : +- Project (487)
: : : : : : +- Filter (486)
: : : : : : +- Scan parquet (485)
: : : : : +- Sort (532)
: : : : : +- Project (531)
: : : : : +- Generate (530)
: : : : : +- Project (529)
: : : : : +- Generate (528)
: : : : : +- Project (527)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (526)
: : : : : :- Project (520)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (519)
: : : : : : :- Exchange (513)
: : : : : : : +- Filter (512)
: : : : : : : +- Scan parquet (511)
: : : : : : +- BroadcastExchange (518)
: : : : : : +- Project (517)
: : : : : : +- Exchange (516)
: : : : : : +- Project (515)
: : : : : : +- Scan parquet (514)
: : : : : +- BroadcastExchange (525)
: : : : : +- Exchange (524)
: : : : : +- Project (523)
: : : : : +- Filter (522)
: : : : : +- Scan parquet (521)
: : : : +- Sort (615)
: : : : +- Exchange (614)
: : : : +- HashAggregate (613)
: : : : +- HashAggregate (612)
: : : : +- Project (611)
: : : : +- SortMergeJoin Inner (610)
: : : : :- Sort (587)
: : : : : +- Exchange (586)
: : : : : +- Project (585)
: : : : : +- Filter (584)
: : : : : +- Generate (583)
: : : : : +- Filter (582)
: : : : : +- ObjectHashAggregate (581)
: : : : : +- ObjectHashAggregate (580)
: : : : : +- Generate (579)
: : : : : +- BroadcastHashJoin Inner BuildLeft (578)
: : : : : :- BroadcastExchange (541)
: : : : : : +- Exchange (540)
: : : : : : +- Project (539)
: : : : : : +- Filter (538)
: : : : : : +- Scan parquet (537)
: : : : : +- Project (577)
: : : : : +- BroadcastHashJoin Inner BuildLeft (576)
: : : : : :- BroadcastExchange (551)
: : : : : : +- Project (550)
: : : : : : +- Generate (549)
: : : : : : +- Project (548)
: : : : : : +- Filter (547)
: : : : : : +- Generate (546)
: : : : : : +- Exchange (545)
: : : : : : +- Project (544)
: : : : : : +- Filter (543)
: : : : : : +- Scan parquet (542)
: : : : : +- HashAggregate (575)
: : : : : +- Exchange (574)
: : : : : +- HashAggregate (573)
: : : : : +- Project (572)
: : : : : +- Generate (571)
: : : : : +- Project (570)
: : : : : +- Generate (569)
: : : : : +- Project (568)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (567)
: : : : : :- Project (561)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (560)
: : : : : : :- Exchange (554)
: : : : : : : +- Filter (553)
: : : : : : : +- Scan parquet (552)
: : : : : : +- BroadcastExchange (559)
: : : : : : +- Project (558)
: : : : : : +- Exchange (557)
: : : : : : +- Project (556)
: : : : : : +- Scan parquet (555)
: : : : : +- BroadcastExchange (566)
: : : : : +- Exchange (565)
: : : : : +- Project (564)
: : : : : +- Filter (563)
: : : : : +- Scan parquet (562)
: : : : +- Sort (609)
: : : : +- Project (608)
: : : : +- Generate (607)
: : : : +- Project (606)
: : : : +- Generate (605)
: : : : +- Project (604)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (603)
: : : : :- Project (597)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (596)
: : : : : :- Exchange (590)
: : : : : : +- Filter (589)
: : : : : : +- Scan parquet (588)
: : : : : +- BroadcastExchange (595)
: : : : : +- Project (594)
: : : : : +- Exchange (593)
: : : : : +- Project (592)
: : : : : +- Scan parquet (591)
: : : : +- BroadcastExchange (602)
: : : : +- Exchange (601)
: : : : +- Project (600)
: : : : +- Filter (599)
: : : : +- Scan parquet (598)
: : : +- Sort (627)
: : : +- Exchange (626)
: : : +- Scan parquet (199)
: : +- BroadcastExchange (635)
: : +- Exchange (634)
: : +- Project (633)
: : +- Scan parquet (212)
: +- BroadcastExchange (653)
: +- Project (652)
: +- ObjectHashAggregate (651)
: +- Exchange (650)
: +- ObjectHashAggregate (649)
: +- Filter (648)
: +- InMemoryTableScan (645)
: +- InMemoryRelation (646)
: +- LocalTableScan (647)
+- Sort (1068)
+- Exchange (1067)
+- Filter (1066)
+- SerializeFromObject (1065)
+- MapElements (1064)
+- DeserializeToObject (1063)
+- Project (1062)
+- BroadcastHashJoin LeftOuter BuildRight (1061)
:- Project (1052)
: +- SortMergeJoin LeftOuter (1051)
: :- Sort (844)
: : +- Exchange (843)
: : +- Project (842)
: : +- SortMergeJoin LeftOuter (841)
: : :- Sort (678)
: : : +- Project (677)
: : : +- Project (676)
: : : +- Generate (675)
: : : +- Generate (674)
: : : +- Project (673)
: : : +- Project (672)
: : : +- BroadcastHashJoin LeftOuter BuildRight (671)
: : : :- BroadcastHashJoin LeftOuter BuildRight (665)
: : : : :- Exchange (659)
: : : : : +- Scan parquet (658)
: : : : +- BroadcastExchange (664)
: : : : +- Project (663)
: : : : +- Exchange (662)
: : : : +- Project (661)
: : : : +- Scan parquet (660)
: : : +- BroadcastExchange (670)
: : : +- Exchange (669)
: : : +- Project (668)
: : : +- Filter (667)
: : : +- Scan parquet (666)
: : +- Sort (840)
: : +- HashAggregate (839)
: : +- Exchange (838)
: : +- HashAggregate (837)
: : +- Project (836)
: : +- SortMergeJoin Inner (835)
: : :- Sort (755)
: : : +- Exchange (754)
: : : +- Project (753)
: : : +- SortMergeJoin Inner (752)
: : : :- Sort (729)
: : : : +- Exchange (728)
: : : : +- Project (727)
: : : : +- Filter (726)
: : : : +- Generate (725)
: : : : +- Filter (724)
: : : : +- ObjectHashAggregate (723)
: : : : +- ObjectHashAggregate (722)
: : : : +- Generate (721)
: : : : +- BroadcastHashJoin Inner BuildLeft (720)
: : : : :- BroadcastExchange (683)
: : : : : +- Exchange (682)
: : : : : +- Project (681)
: : : : : +- Filter (680)
: : : : : +- Scan parquet (679)
: : : : +- Project (719)
: : : : +- BroadcastHashJoin Inner BuildLeft (718)
: : : : :- BroadcastExchange (693)
: : : : : +- Project (692)
: : : : : +- Generate (691)
: : : : : +- Project (690)
: : : : : +- Filter (689)
: : : : : +- Generate (688)
: : : : : +- Exchange (687)
: : : : : +- Project (686)
: : : : : +- Filter (685)
: : : : : +- Scan parquet (684)
: : : : +- HashAggregate (717)
: : : : +- Exchange (716)
: : : : +- HashAggregate (715)
: : : : +- Project (714)
: : : : +- Generate (713)
: : : : +- Project (712)
: : : : +- Generate (711)
: : : : +- Project (710)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (709)
: : : : :- Project (703)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (702)
: : : : : :- Exchange (696)
: : : : : : +- Filter (695)
: : : : : : +- Scan parquet (694)
: : : : : +- BroadcastExchange (701)
: : : : : +- Project (700)
: : : : : +- Exchange (699)
: : : : : +- Project (698)
: : : : : +- Scan parquet (697)
: : : : +- BroadcastExchange (708)
: : : : +- Exchange (707)
: : : : +- Project (706)
: : : : +- Filter (705)
: : : : +- Scan parquet (704)
: : : +- Sort (751)
: : : +- Project (750)
: : : +- Generate (749)
: : : +- Project (748)
: : : +- Generate (747)
: : : +- Project (746)
: : : +- BroadcastHashJoin LeftOuter BuildRight (745)
: : : :- Project (739)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (738)
: : : : :- Exchange (732)
: : : : : +- Filter (731)
: : : : : +- Scan parquet (730)
: : : : +- BroadcastExchange (737)
: : : : +- Project (736)
: : : : +- Exchange (735)
: : : : +- Project (734)
: : : : +- Scan parquet (733)
: : : +- BroadcastExchange (744)
: : : +- Exchange (743)
: : : +- Project (742)
: : : +- Filter (741)
: : : +- Scan parquet (740)
: : +- Sort (834)
: : +- Exchange (833)
: : +- HashAggregate (832)
: : +- HashAggregate (831)
: : +- Project (830)
: : +- SortMergeJoin Inner (829)
: : :- Sort (806)
: : : +- Exchange (805)
: : : +- Project (804)
: : : +- Filter (803)
: : : +- Generate (802)
: : : +- Filter (801)
: : : +- ObjectHashAggregate (800)
: : : +- ObjectHashAggregate (799)
: : : +- Generate (798)
: : : +- BroadcastHashJoin Inner BuildLeft (797)
: : : :- BroadcastExchange (760)
: : : : +- Exchange (759)
: : : : +- Project (758)
: : : : +- Filter (757)
: : : : +- Scan parquet (756)
: : : +- Project (796)
: : : +- BroadcastHashJoin Inner BuildLeft (795)
: : : :- BroadcastExchange (770)
: : : : +- Project (769)
: : : : +- Generate (768)
: : : : +- Project (767)
: : : : +- Filter (766)
: : : : +- Generate (765)
: : : : +- Exchange (764)
: : : : +- Project (763)
: : : : +- Filter (762)
: : : : +- Scan parquet (761)
: : : +- HashAggregate (794)
: : : +- Exchange (793)
: : : +- HashAggregate (792)
: : : +- Project (791)
: : : +- Generate (790)
: : : +- Project (789)
: : : +- Generate (788)
: : : +- Project (787)
: : : +- BroadcastHashJoin LeftOuter BuildRight (786)
: : : :- Project (780)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (779)
: : : : :- Exchange (773)
: : : : : +- Filter (772)
: : : : : +- Scan parquet (771)
: : : : +- BroadcastExchange (778)
: : : : +- Project (777)
: : : : +- Exchange (776)
: : : : +- Project (775)
: : : : +- Scan parquet (774)
: : : +- BroadcastExchange (785)
: : : +- Exchange (784)
: : : +- Project (783)
: : : +- Filter (782)
: : : +- Scan parquet (781)
: : +- Sort (828)
: : +- Project (827)
: : +- Generate (826)
: : +- Project (825)
: : +- Generate (824)
: : +- Project (823)
: : +- BroadcastHashJoin LeftOuter BuildRight (822)
: : :- Project (816)
: : : +- BroadcastHashJoin LeftOuter BuildRight (815)
: : : :- Exchange (809)
: : : : +- Filter (808)
: : : : +- Scan parquet (807)
: : : +- BroadcastExchange (814)
: : : +- Project (813)
: : : +- Exchange (812)
: : : +- Project (811)
: : : +- Scan parquet (810)
: : +- BroadcastExchange (821)
: : +- Exchange (820)
: : +- Project (819)
: : +- Filter (818)
: : +- Scan parquet (817)
: +- Sort (1050)
: +- Exchange (1049)
: +- SerializeFromObject (1048)
: +- MapElements (1047)
: +- DeserializeToObject (1046)
: +- Project (1045)
: +- BroadcastHashJoin LeftOuter BuildRight (1044)
: :- ObjectHashAggregate (1039)
: : +- Exchange (1038)
: : +- ObjectHashAggregate (1037)
: : +- Project (1036)
: : +- SortMergeJoin LeftOuter (1035)
: : :- Sort (1031)
: : : +- Exchange (1030)
: : : +- Project (1029)
: : : +- SortMergeJoin LeftOuter (1028)
: : : :- Sort (865)
: : : : +- Project (864)
: : : : +- Project (863)
: : : : +- Generate (862)
: : : : +- Generate (861)
: : : : +- Project (860)
: : : : +- Project (859)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (858)
: : : : :- BroadcastHashJoin LeftOuter BuildRight (852)
: : : : : :- Exchange (846)
: : : : : : +- Scan parquet (845)
: : : : : +- BroadcastExchange (851)
: : : : : +- Project (850)
: : : : : +- Exchange (849)
: : : : : +- Project (848)
: : : : : +- Scan parquet (847)
: : : : +- BroadcastExchange (857)
: : : : +- Exchange (856)
: : : : +- Project (855)
: : : : +- Filter (854)
: : : : +- Scan parquet (853)
: : : +- Sort (1027)
: : : +- HashAggregate (1026)
: : : +- Exchange (1025)
: : : +- HashAggregate (1024)
: : : +- Project (1023)
: : : +- SortMergeJoin Inner (1022)
: : : :- Sort (942)
: : : : +- Exchange (941)
: : : : +- Project (940)
: : : : +- SortMergeJoin Inner (939)
: : : : :- Sort (916)
: : : : : +- Exchange (915)
: : : : : +- Project (914)
: : : : : +- Filter (913)
: : : : : +- Generate (912)
: : : : : +- Filter (911)
: : : : : +- ObjectHashAggregate (910)
: : : : : +- ObjectHashAggregate (909)
: : : : : +- Generate (908)
: : : : : +- BroadcastHashJoin Inner BuildLeft (907)
: : : : : :- BroadcastExchange (870)
: : : : : : +- Exchange (869)
: : : : : : +- Project (868)
: : : : : : +- Filter (867)
: : : : : : +- Scan parquet (866)
: : : : : +- Project (906)
: : : : : +- BroadcastHashJoin Inner BuildLeft (905)
: : : : : :- BroadcastExchange (880)
: : : : : : +- Project (879)
: : : : : : +- Generate (878)
: : : : : : +- Project (877)
: : : : : : +- Filter (876)
: : : : : : +- Generate (875)
: : : : : : +- Exchange (874)
: : : : : : +- Project (873)
: : : : : : +- Filter (872)
: : : : : : +- Scan parquet (871)
: : : : : +- HashAggregate (904)
: : : : : +- Exchange (903)
: : : : : +- HashAggregate (902)
: : : : : +- Project (901)
: : : : : +- Generate (900)
: : : : : +- Project (899)
: : : : : +- Generate (898)
: : : : : +- Project (897)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (896)
: : : : : :- Project (890)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (889)
: : : : : : :- Exchange (883)
: : : : : : : +- Filter (882)
: : : : : : : +- Scan parquet (881)
: : : : : : +- BroadcastExchange (888)
: : : : : : +- Project (887)
: : : : : : +- Exchange (886)
: : : : : : +- Project (885)
: : : : : : +- Scan parquet (884)
: : : : : +- BroadcastExchange (895)
: : : : : +- Exchange (894)
: : : : : +- Project (893)
: : : : : +- Filter (892)
: : : : : +- Scan parquet (891)
: : : : +- Sort (938)
: : : : +- Project (937)
: : : : +- Generate (936)
: : : : +- Project (935)
: : : : +- Generate (934)
: : : : +- Project (933)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (932)
: : : : :- Project (926)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (925)
: : : : : :- Exchange (919)
: : : : : : +- Filter (918)
: : : : : : +- Scan parquet (917)
: : : : : +- BroadcastExchange (924)
: : : : : +- Project (923)
: : : : : +- Exchange (922)
: : : : : +- Project (921)
: : : : : +- Scan parquet (920)
: : : : +- BroadcastExchange (931)
: : : : +- Exchange (930)
: : : : +- Project (929)
: : : : +- Filter (928)
: : : : +- Scan parquet (927)
: : : +- Sort (1021)
: : : +- Exchange (1020)
: : : +- HashAggregate (1019)
: : : +- HashAggregate (1018)
: : : +- Project (1017)
: : : +- SortMergeJoin Inner (1016)
: : : :- Sort (993)
: : : : +- Exchange (992)
: : : : +- Project (991)
: : : : +- Filter (990)
: : : : +- Generate (989)
: : : : +- Filter (988)
: : : : +- ObjectHashAggregate (987)
: : : : +- ObjectHashAggregate (986)
: : : : +- Generate (985)
: : : : +- BroadcastHashJoin Inner BuildLeft (984)
: : : : :- BroadcastExchange (947)
: : : : : +- Exchange (946)
: : : : : +- Project (945)
: : : : : +- Filter (944)
: : : : : +- Scan parquet (943)
: : : : +- Project (983)
: : : : +- BroadcastHashJoin Inner BuildLeft (982)
: : : : :- BroadcastExchange (957)
: : : : : +- Project (956)
: : : : : +- Generate (955)
: : : : : +- Project (954)
: : : : : +- Filter (953)
: : : : : +- Generate (952)
: : : : : +- Exchange (951)
: : : : : +- Project (950)
: : : : : +- Filter (949)
: : : : : +- Scan parquet (948)
: : : : +- HashAggregate (981)
: : : : +- Exchange (980)
: : : : +- HashAggregate (979)
: : : : +- Project (978)
: : : : +- Generate (977)
: : : : +- Project (976)
: : : : +- Generate (975)
: : : : +- Project (974)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (973)
: : : : :- Project (967)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (966)
: : : : : :- Exchange (960)
: : : : : : +- Filter (959)
: : : : : : +- Scan parquet (958)
: : : : : +- BroadcastExchange (965)
: : : : : +- Project (964)
: : : : : +- Exchange (963)
: : : : : +- Project (962)
: : : : : +- Scan parquet (961)
: : : : +- BroadcastExchange (972)
: : : : +- Exchange (971)
: : : : +- Project (970)
: : : : +- Filter (969)
: : : : +- Scan parquet (968)
: : : +- Sort (1015)
: : : +- Project (1014)
: : : +- Generate (1013)
: : : +- Project (1012)
: : : +- Generate (1011)
: : : +- Project (1010)
: : : +- BroadcastHashJoin LeftOuter BuildRight (1009)
: : : :- Project (1003)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (1002)
: : : : :- Exchange (996)
: : : : : +- Filter (995)
: : : : : +- Scan parquet (994)
: : : : +- BroadcastExchange (1001)
: : : : +- Project (1000)
: : : : +- Exchange (999)
: : : : +- Project (998)
: : : : +- Scan parquet (997)
: : : +- BroadcastExchange (1008)
: : : +- Exchange (1007)
: : : +- Project (1006)
: : : +- Filter (1005)
: : : +- Scan parquet (1004)
: : +- Sort (1034)
: : +- Exchange (1033)
: : +- Scan parquet (1032)
: +- BroadcastExchange (1043)
: +- Exchange (1042)
: +- Project (1041)
: +- Scan parquet (1040)
+- BroadcastExchange (1060)
+- Project (1059)
+- ObjectHashAggregate (1058)
+- Exchange (1057)
+- ObjectHashAggregate (1056)
+- Filter (1055)
+- InMemoryTableScan (1053)
+- InMemoryRelation (1054)
+- LocalTableScan (647)
(1) Scan parquet
Output [3]: [product#1101131, plant#1101132, orderDateTime#1101133]
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/10000000350/shardId=0_1_10000000350]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#1101131, plant#1101132, orderDateTime#1101133]
(3) Exchange
Input [3]: [product#1101131, plant#1101132, orderDateTime#1101133]
Arguments: hashpartitioning(product#1101131, plant#1101132, 37), REPARTITION_BY_NUM, [plan_id=1705519]
(4) ShuffleQueryStage
Output [3]: [product#1101131, plant#1101132, orderDateTime#1101133]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#1101160, product#1101161, productionAspect#1101163, systemId#1101158]
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#1101160, product#1101161, productionAspect#1101163, systemId#1101158]
(7) Project [codegen id : 2]
Output [4]: [plant#1101160.internalRefUUID AS _extract_internalRefUUID#1107163, product#1101161.internalRefUUID AS _extract_internalRefUUID#1107164, productionAspect#1101163.productMovementPlants.unitOfIssue.code AS _extract_code#1107161, productionAspect#1101163.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107162]
Input [4]: [plant#1101160, product#1101161, productionAspect#1101163, systemId#1101158]
(8) Exchange
Input [4]: [_extract_internalRefUUID#1107163, _extract_internalRefUUID#1107164, _extract_code#1107161, _extract_internalRefUUID#1107162]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1705533]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#1107163, _extract_internalRefUUID#1107164, _extract_code#1107161, _extract_internalRefUUID#1107162]
Arguments: 1
(10) Project [codegen id : 82]
Output [4]: [_extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
Input [4]: [_extract_internalRefUUID#1107163, _extract_internalRefUUID#1107164, _extract_code#1107161, _extract_internalRefUUID#1107162]
(11) BroadcastExchange
Input [4]: [_extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
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=1713664]
(12) BroadcastQueryStage
Output [4]: [_extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
Arguments: 153
(13) BroadcastHashJoin [codegen id : 168]
Left keys [4]: [coalesce(product#1101131, ), isnull(product#1101131), coalesce(plant#1101132, ), isnull(plant#1101132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107164, ), isnull(_extract_internalRefUUID#1107164), coalesce(_extract_internalRefUUID#1107163, ), isnull(_extract_internalRefUUID#1107163)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 168]
Output [5]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_code#1107161, _extract_internalRefUUID#1107162]
Input [7]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
(15) Scan parquet
Output [4]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200, systemId#1101193]
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#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200, systemId#1101193]
(17) Filter [codegen id : 3]
Input [4]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200, systemId#1101193]
Condition : isnotnull(internalUUID#1101194)
(18) Project [codegen id : 3]
Output [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Input [4]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200, systemId#1101193]
(19) Exchange
Input [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1705554]
(20) ShuffleQueryStage
Output [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Arguments: 2
(21) BroadcastExchange
Input [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1716055]
(22) BroadcastQueryStage
Output [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Arguments: 187
(23) BroadcastHashJoin [codegen id : 168]
Left keys [1]: [product#1101131]
Right keys [1]: [internalUUID#1101194]
Join type: LeftOuter
Join condition: None
(24) Project
Output [4]: [product#1101131, plant#1101132, orderDateTime#1101133, filter(unitOfMeasureConversions#1101200, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107161) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107162)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101198.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101198.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101206]
Input [8]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_code#1107161, _extract_internalRefUUID#1107162, internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
(25) Project [codegen id : 169]
Output [5]: [product#1101131, plant#1101132, orderDateTime#1101133, filteredUnitOfMeasureConversions#1101206.quantityDenominator AS _extract_quantityDenominator#1107159, filteredUnitOfMeasureConversions#1101206.quantityNumerator AS _extract_quantityNumerator#1107160]
Input [4]: [product#1101131, plant#1101132, orderDateTime#1101133, filteredUnitOfMeasureConversions#1101206]
(26) Generate [codegen id : 169]
Input [5]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_quantityDenominator#1107159, _extract_quantityNumerator#1107160]
Arguments: explode(_extract_quantityNumerator#1107160), [product#1101131, plant#1101132, orderDateTime#1101133, _extract_quantityDenominator#1107159], true, [quantityNumerator#1101214]
(27) Generate [codegen id : 169]
Input [5]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_quantityDenominator#1107159, quantityNumerator#1101214]
Arguments: explode(_extract_quantityDenominator#1107159), [product#1101131, plant#1101132, orderDateTime#1101133, quantityNumerator#1101214], true, [quantityDenominator#1101217]
(28) Project [codegen id : 169]
Output [4]: [product#1101131, plant#1101132, orderDateTime#1101133, (cast(quantityNumerator#1101214 as double) / cast(quantityDenominator#1101217 as double)) AS outboundUnit#1101218]
Input [5]: [product#1101131, plant#1101132, orderDateTime#1101133, quantityNumerator#1101214, quantityDenominator#1101217]
(29) Project [codegen id : 169]
Output [4]: [product#1101131, plant#1101132, orderDateTime#1101133, CASE WHEN (isnull(outboundUnit#1101218) OR (outboundUnit#1101218 <= 0.0)) THEN 1.0 ELSE outboundUnit#1101218 END AS outboundUnit#1101219]
Input [4]: [product#1101131, plant#1101132, orderDateTime#1101133, outboundUnit#1101218]
(30) Scan parquet
Output [6]: [internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, systemId#1101328]
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#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, systemId#1101328]
(32) Filter [codegen id : 4]
Input [6]: [internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, systemId#1101328]
Condition : (isnotnull(plant#1101331.internalRefUUID) AND isnotnull(product#1101330.internalRefUUID))
(33) Project [codegen id : 4]
Output [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
Input [6]: [internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, systemId#1101328]
(34) Exchange
Input [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1705582]
(35) ShuffleQueryStage
Output [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
Arguments: 3
(36) BroadcastExchange
Input [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
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=1724258]
(37) BroadcastQueryStage
Output [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
Arguments: 230
(38) Scan parquet
Output [2]: [marketUnit#1101271, distributionCenters#1101277]
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#1101271, distributionCenters#1101277]
(40) Filter [codegen id : 5]
Input [2]: [marketUnit#1101271, distributionCenters#1101277]
Condition : (((marketUnit#1101271 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1101277, true) > 0)) AND isnotnull(distributionCenters#1101277))
(41) Project [codegen id : 5]
Output [1]: [distributionCenters#1101277]
Input [2]: [marketUnit#1101271, distributionCenters#1101277]
(42) Exchange
Input [1]: [distributionCenters#1101277]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1705602]
(43) ShuffleQueryStage
Output [1]: [distributionCenters#1101277]
Arguments: 4
(44) Generate [codegen id : 100]
Input [1]: [distributionCenters#1101277]
Arguments: explode(distributionCenters#1101277), false, [distributionCenters#1101294]
(45) Filter [codegen id : 100]
Input [1]: [distributionCenters#1101294]
Condition : (((size(distributionCenters#1101294.storageLocations, true) > 0) AND isnotnull(distributionCenters#1101294.storageLocations)) AND isnotnull(distributionCenters#1101294.internalRefUUID))
(46) Project [codegen id : 100]
Output [2]: [distributionCenters#1101294.internalRefUUID AS _extract_internalRefUUID#1106887, distributionCenters#1101294.storageLocations AS _extract_storageLocations#1106888]
Input [1]: [distributionCenters#1101294]
(47) Generate [codegen id : 100]
Input [2]: [_extract_internalRefUUID#1106887, _extract_storageLocations#1106888]
Arguments: explode(_extract_storageLocations#1106888), [_extract_internalRefUUID#1106887], false, [storageLocations#1101301]
(48) Project [codegen id : 100]
Output [3]: [_extract_internalRefUUID#1106887 AS plantUuid#1101296, storageLocations#1101301.id AS storageLocId#1101302, storageLocations#1101301.internalRefUUID AS storageLocUuid#1101303]
Input [2]: [_extract_internalRefUUID#1106887, storageLocations#1101301]
(49) BroadcastExchange
Input [3]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1719957]
(50) BroadcastQueryStage
Output [3]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Arguments: 207
(51) Scan parquet
Output [2]: [product#1101545, plant#1101546]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(52) ColumnarToRow [codegen id : 6]
Input [2]: [product#1101545, plant#1101546]
(53) Filter [codegen id : 6]
Input [2]: [product#1101545, plant#1101546]
Condition : isnotnull(plant#1101546)
(54) Exchange
Input [2]: [product#1101545, plant#1101546]
Arguments: hashpartitioning(product#1101545, plant#1101546, 37), REPARTITION_BY_NUM, [plan_id=1705625]
(55) ShuffleQueryStage
Output [2]: [product#1101545, plant#1101546]
Arguments: 5
(56) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1107166, _extract_internalRefUUID#1107167, _extract_internalRefUUID#1107168, _extract_internalRefUUID#1107165]
(57) BroadcastQueryStage
Output [4]: [_extract_code#1107166, _extract_internalRefUUID#1107167, _extract_internalRefUUID#1107168, _extract_internalRefUUID#1107165]
Arguments: 155
(58) BroadcastHashJoin [codegen id : 112]
Left keys [4]: [coalesce(product#1101545, ), isnull(product#1101545), coalesce(plant#1101546, ), isnull(plant#1101546)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107168, ), isnull(_extract_internalRefUUID#1107168), coalesce(_extract_internalRefUUID#1107165, ), isnull(_extract_internalRefUUID#1107165)]
Join type: LeftOuter
Join condition: None
(59) Project [codegen id : 112]
Output [4]: [product#1101545, plant#1101546, _extract_code#1107166, _extract_internalRefUUID#1107167]
Input [6]: [product#1101545, plant#1101546, _extract_code#1107166, _extract_internalRefUUID#1107167, _extract_internalRefUUID#1107168, _extract_internalRefUUID#1107165]
(60) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
(61) BroadcastQueryStage
Output [3]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
Arguments: 188
(62) BroadcastHashJoin [codegen id : 112]
Left keys [1]: [product#1101545]
Right keys [1]: [internalUUID#1101560]
Join type: LeftOuter
Join condition: None
(63) Project
Output [2]: [plant#1101546, filter(unitOfMeasureConversions#1101566, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107166) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107167)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101564.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101564.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101571]
Input [7]: [product#1101545, plant#1101546, _extract_code#1107166, _extract_internalRefUUID#1107167, internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
(64) Generate [codegen id : 113]
Input [2]: [plant#1101546, filteredUnitOfMeasureConversions#1101571]
Arguments: explode(filteredUnitOfMeasureConversions#1101571.quantityNumerator), [plant#1101546, filteredUnitOfMeasureConversions#1101571], true, [quantityNumerator#1101572]
(65) Project [codegen id : 113]
Output [2]: [plant#1101546, filteredUnitOfMeasureConversions#1101571.quantityDenominator AS _extract_quantityDenominator#1106889]
Input [3]: [plant#1101546, filteredUnitOfMeasureConversions#1101571, quantityNumerator#1101572]
(66) Generate [codegen id : 113]
Input [2]: [plant#1101546, _extract_quantityDenominator#1106889]
Arguments: explode(_extract_quantityDenominator#1106889), [plant#1101546], true, [quantityDenominator#1101573]
(67) Project [codegen id : 113]
Output [1]: [plant#1101546]
Input [2]: [plant#1101546, quantityDenominator#1101573]
(68) HashAggregate [codegen id : 113]
Input [1]: [plant#1101546]
Keys [1]: [plant#1101546]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101546]
(69) Exchange
Input [1]: [plant#1101546]
Arguments: hashpartitioning(plant#1101546, 37), ENSURE_REQUIREMENTS, [plan_id=1729747]
(70) ShuffleQueryStage
Output [1]: [plant#1101546]
Arguments: 238
(71) AQEShuffleRead
Input [1]: [plant#1101546]
Arguments: coalesced
(72) HashAggregate
Input [1]: [plant#1101546]
Keys [1]: [plant#1101546]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101546]
(73) BroadcastHashJoin
Left keys [1]: [plantUuid#1101296]
Right keys [1]: [plant#1101546]
Join type: Inner
Join condition: None
(74) Project
Output [3]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Input [4]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303, plant#1101546]
(75) BroadcastHashJoin [codegen id : 128]
Left keys [2]: [coalesce(plant#1101331.internalRefUUID, ), isnull(plant#1101331.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1101296, ), isnull(plantUuid#1101296)]
Join type: Inner
Join condition: None
(76) Generate
Input [9]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Arguments: explode(filter(stockQuantities#1101333, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1101303) AND (lambda x#1101337.storageLocation.Id = storageLocId#1101302)), lambda x#1101337, false))), [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, plantUuid#1101296], false, [stockQuantity#1101338]
(77) ObjectHashAggregate
Input [7]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, plantUuid#1101296, stockQuantity#1101338]
Keys [5]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328]
Functions [2]: [partial_first(calculationDateTime#1101332, false), partial_collect_list(stockQuantity#1101338, 0, 0)]
Aggregate Attributes [3]: [first#1108259, valueSet#1108260, buf#1108261]
Results [8]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328, first#1108262, valueSet#1108263, buf#1108264]
(78) ObjectHashAggregate
Input [8]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328, first#1108262, valueSet#1108263, buf#1108264]
Keys [5]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328]
Functions [2]: [first(calculationDateTime#1101332, false), collect_list(stockQuantity#1101338, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1101332)()#1101352, collect_list(stockQuantity#1101338, 0, 0)#1101353]
Results [4]: [product#1101330, plant#1101331, first(calculationDateTime#1101332)()#1101352 AS calculationDateTime#1101339, collect_list(stockQuantity#1101338, 0, 0)#1101353 AS stockQuantities#1101340]
(79) Filter [codegen id : 129]
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantities#1101340]
Condition : ((size(stockQuantities#1101340, true) > 0) AND isnotnull(calculationDateTime#1101339))
(80) Generate [codegen id : 129]
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantities#1101340]
Arguments: explode(stockQuantities#1101340), [product#1101330, plant#1101331, calculationDateTime#1101339], false, [stockQuantity#1101355]
(81) Filter [codegen id : 129]
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantity#1101355]
Condition : (((isnotnull(stockQuantity#1101355.specialStockIndicator.code) AND isnotnull(stockQuantity#1101355.stockType.code)) AND (stockQuantity#1101355.specialStockIndicator.code = )) AND (stockQuantity#1101355.stockType.code = 01))
(82) Project [codegen id : 129]
Output [5]: [plant#1101331.internalRefUUID AS plantUuid#1101357, product#1101330.internalRefUUID AS productUuid#1101359, calculationDateTime#1101339, stockQuantity#1101355.storagelocation.id AS storageLocId#1101360, stockQuantity#1101355.quantity.measure AS quantity#1101362]
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantity#1101355]
(83) Exchange
Input [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: hashpartitioning(productUuid#1101359, plantUuid#1101357, 37), ENSURE_REQUIREMENTS, [plan_id=1737338]
(84) ShuffleQueryStage
Output [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: 253
(85) AQEShuffleRead
Input [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: local
(86) BroadcastExchange
Input [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1739304]
(87) BroadcastQueryStage
Output [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: 267
(88) Scan parquet
Output [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(89) ColumnarToRow [codegen id : 9]
Input [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
(90) Filter [codegen id : 9]
Input [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Condition : ((isnotnull(orderDateTime#1101376) AND isnotnull(plant#1101375)) AND isnotnull(product#1101374))
(91) Exchange
Input [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Arguments: hashpartitioning(product#1101374, plant#1101375, 37), REPARTITION_BY_NUM, [plan_id=1705705]
(92) ShuffleQueryStage
Output [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Arguments: 10
(93) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1107171, _extract_internalRefUUID#1107172, _extract_internalRefUUID#1107169, _extract_internalRefUUID#1107170]
(94) BroadcastQueryStage
Output [4]: [_extract_code#1107171, _extract_internalRefUUID#1107172, _extract_internalRefUUID#1107169, _extract_internalRefUUID#1107170]
Arguments: 157
(95) BroadcastHashJoin [codegen id : 144]
Left keys [4]: [coalesce(product#1101374, ), isnull(product#1101374), coalesce(plant#1101375, ), isnull(plant#1101375)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107169, ), isnull(_extract_internalRefUUID#1107169), coalesce(_extract_internalRefUUID#1107170, ), isnull(_extract_internalRefUUID#1107170)]
Join type: LeftOuter
Join condition: None
(96) Project [codegen id : 144]
Output [5]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_code#1107171, _extract_internalRefUUID#1107172]
Input [7]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_code#1107171, _extract_internalRefUUID#1107172, _extract_internalRefUUID#1107169, _extract_internalRefUUID#1107170]
(97) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
(98) BroadcastQueryStage
Output [3]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
Arguments: 189
(99) BroadcastHashJoin [codegen id : 144]
Left keys [1]: [product#1101374]
Right keys [1]: [internalUUID#1101389]
Join type: LeftOuter
Join condition: None
(100) Project
Output [4]: [product#1101374, plant#1101375, orderDateTime#1101376, filter(unitOfMeasureConversions#1101395, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107171) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107172)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101393.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101393.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101400]
Input [8]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_code#1107171, _extract_internalRefUUID#1107172, internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
(101) Generate
Input [4]: [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400]
Arguments: explode(filteredUnitOfMeasureConversions#1101400.quantityNumerator), [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400], true, [quantityNumerator#1101401]
(102) Project
Output [4]: [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400.quantityDenominator AS _extract_quantityDenominator#1106896]
Input [5]: [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400, quantityNumerator#1101401]
(103) Generate
Input [4]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_quantityDenominator#1106896]
Arguments: explode(_extract_quantityDenominator#1106896), [product#1101374, plant#1101375, orderDateTime#1101376], true, [quantityDenominator#1101402]
(104) Project
Output [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Input [4]: [product#1101374, plant#1101375, orderDateTime#1101376, quantityDenominator#1101402]
(105) BroadcastHashJoin [codegen id : 145]
Left keys [2]: [plantUuid#1101357, productUuid#1101359]
Right keys [2]: [plant#1101375, product#1101374]
Join type: Inner
Join condition: (calculationDateTime#1101339 <= orderDateTime#1101376)
(106) Project [codegen id : 145]
Output [5]: [plantUuid#1101357 AS plant#1101408, productUuid#1101359 AS product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Input [8]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362, product#1101374, plant#1101375, orderDateTime#1101376]
(107) Exchange
Input [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Arguments: hashpartitioning(coalesce(plant#1101408, ), isnull(plant#1101408), coalesce(product#1101409, ), isnull(product#1101409), coalesce(storageLocId#1101360, ), isnull(storageLocId#1101360), coalesce(calculationDateTime#1101339, 1970-01-01 00:00:00), isnull(calculationDateTime#1101339), 37), ENSURE_REQUIREMENTS, [plan_id=1742001]
(108) ShuffleQueryStage
Output [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Arguments: 281
(109) AQEShuffleRead
Input [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Arguments: local
(110) BroadcastExchange
Input [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
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=1744296]
(111) BroadcastQueryStage
Output [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Arguments: 295
(112) ReusedExchange [Reuses operator id: 36]
Output [6]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422]
(113) BroadcastQueryStage
Output [6]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422]
Arguments: 231
(114) ReusedExchange [Reuses operator id: 49]
Output [3]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
(115) BroadcastQueryStage
Output [3]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
Arguments: 209
(116) ReusedExchange [Reuses operator id: 69]
Output [1]: [plant#1101451]
(117) ShuffleQueryStage
Output [1]: [plant#1101451]
Arguments: 240
(118) AQEShuffleRead
Input [1]: [plant#1101451]
Arguments: coalesced
(119) HashAggregate
Input [1]: [plant#1101451]
Keys [1]: [plant#1101451]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101451]
(120) BroadcastHashJoin
Left keys [1]: [plantUuid#1101447]
Right keys [1]: [plant#1101451]
Join type: Inner
Join condition: None
(121) Project
Output [3]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
Input [4]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449, plant#1101451]
(122) BroadcastHashJoin [codegen id : 130]
Left keys [2]: [coalesce(plant#1101420.internalRefUUID, ), isnull(plant#1101420.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1101447, ), isnull(plantUuid#1101447)]
Join type: Inner
Join condition: None
(123) Generate
Input [9]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422, plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
Arguments: explode(filter(stockQuantities#1101422, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1101449) AND (lambda x#1101337.storageLocation.Id = storageLocId#1101448)), lambda x#1101337, false))), [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, plantUuid#1101447], false, [stockQuantity#1101481]
(124) ObjectHashAggregate
Input [7]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, plantUuid#1101447, stockQuantity#1101481]
Keys [5]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417]
Functions [2]: [partial_first(calculationDateTime#1101421, false), partial_collect_list(stockQuantity#1101481, 0, 0)]
Aggregate Attributes [3]: [first#1108267, valueSet#1108268, buf#1108269]
Results [8]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417, first#1108270, valueSet#1108271, buf#1108272]
(125) ObjectHashAggregate
Input [8]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417, first#1108270, valueSet#1108271, buf#1108272]
Keys [5]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417]
Functions [2]: [first(calculationDateTime#1101421, false), collect_list(stockQuantity#1101481, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1101421)()#1101352, collect_list(stockQuantity#1101481, 0, 0)#1101353]
Results [4]: [product#1101419, plant#1101420, first(calculationDateTime#1101421)()#1101352 AS calculationDateTime#1101482, collect_list(stockQuantity#1101481, 0, 0)#1101353 AS stockQuantities#1101483]
(126) Filter [codegen id : 131]
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantities#1101483]
Condition : ((size(stockQuantities#1101483, true) > 0) AND isnotnull(calculationDateTime#1101482))
(127) Generate [codegen id : 131]
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantities#1101483]
Arguments: explode(stockQuantities#1101483), [product#1101419, plant#1101420, calculationDateTime#1101482], false, [stockQuantity#1101484]
(128) Filter [codegen id : 131]
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantity#1101484]
Condition : (((isnotnull(stockQuantity#1101484.specialStockIndicator.code) AND isnotnull(stockQuantity#1101484.stockType.code)) AND (stockQuantity#1101484.specialStockIndicator.code = )) AND (stockQuantity#1101484.stockType.code = 01))
(129) Project [codegen id : 131]
Output [4]: [plant#1101420.internalRefUUID AS plantUuid#1101486, product#1101419.internalRefUUID AS productUuid#1101488, calculationDateTime#1101482, stockQuantity#1101484.storagelocation.id AS storageLocId#1101489]
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantity#1101484]
(130) Exchange
Input [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: hashpartitioning(productUuid#1101488, plantUuid#1101486, 37), ENSURE_REQUIREMENTS, [plan_id=1737406]
(131) ShuffleQueryStage
Output [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: 254
(132) AQEShuffleRead
Input [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: local
(133) BroadcastExchange
Input [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1740658]
(134) BroadcastQueryStage
Output [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: 274
(135) ReusedExchange [Reuses operator id: 91]
Output [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
(136) ShuffleQueryStage
Output [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
Arguments: 26
(137) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#1107177, _extract_internalRefUUID#1107178, _extract_internalRefUUID#1107180, _extract_internalRefUUID#1107179]
(138) BroadcastQueryStage
Output [4]: [_extract_code#1107177, _extract_internalRefUUID#1107178, _extract_internalRefUUID#1107180, _extract_internalRefUUID#1107179]
Arguments: 161
(139) BroadcastHashJoin [codegen id : 152]
Left keys [4]: [coalesce(product#1101494, ), isnull(product#1101494), coalesce(plant#1101495, ), isnull(plant#1101495)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107180, ), isnull(_extract_internalRefUUID#1107180), coalesce(_extract_internalRefUUID#1107179, ), isnull(_extract_internalRefUUID#1107179)]
Join type: LeftOuter
Join condition: None
(140) Project [codegen id : 152]
Output [5]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_code#1107177, _extract_internalRefUUID#1107178]
Input [7]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_code#1107177, _extract_internalRefUUID#1107178, _extract_internalRefUUID#1107180, _extract_internalRefUUID#1107179]
(141) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
(142) BroadcastQueryStage
Output [3]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
Arguments: 191
(143) BroadcastHashJoin [codegen id : 152]
Left keys [1]: [product#1101494]
Right keys [1]: [internalUUID#1101509]
Join type: LeftOuter
Join condition: None
(144) Project
Output [4]: [product#1101494, plant#1101495, orderDateTime#1101496, filter(unitOfMeasureConversions#1101515, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107177) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107178)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101513.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101513.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101520]
Input [8]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_code#1107177, _extract_internalRefUUID#1107178, internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
(145) Generate
Input [4]: [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520]
Arguments: explode(filteredUnitOfMeasureConversions#1101520.quantityNumerator), [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520], true, [quantityNumerator#1101521]
(146) Project
Output [4]: [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520.quantityDenominator AS _extract_quantityDenominator#1106912]
Input [5]: [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520, quantityNumerator#1101521]
(147) Generate
Input [4]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_quantityDenominator#1106912]
Arguments: explode(_extract_quantityDenominator#1106912), [product#1101494, plant#1101495, orderDateTime#1101496], true, [quantityDenominator#1101522]
(148) Project
Output [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
Input [4]: [product#1101494, plant#1101495, orderDateTime#1101496, quantityDenominator#1101522]
(149) BroadcastHashJoin [codegen id : 153]
Left keys [2]: [plantUuid#1101486, productUuid#1101488]
Right keys [2]: [plant#1101495, product#1101494]
Join type: Inner
Join condition: (calculationDateTime#1101482 <= orderDateTime#1101496)
(150) Project [codegen id : 153]
Output [4]: [plantUuid#1101486 AS plant#1101525, productUuid#1101488 AS product#1101526, storageLocId#1101489, calculationDateTime#1101482]
Input [7]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489, product#1101494, plant#1101495, orderDateTime#1101496]
(151) HashAggregate [codegen id : 153]
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, calculationDateTime#1101482]
Keys [3]: [plant#1101525, product#1101526, storageLocId#1101489]
Functions [1]: [partial_max(calculationDateTime#1101482)]
Aggregate Attributes [1]: [max#1108265]
Results [4]: [plant#1101525, product#1101526, storageLocId#1101489, max#1108266]
(152) HashAggregate [codegen id : 153]
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, max#1108266]
Keys [3]: [plant#1101525, product#1101526, storageLocId#1101489]
Functions [1]: [max(calculationDateTime#1101482)]
Aggregate Attributes [1]: [max(calculationDateTime#1101482)#1101416]
Results [4]: [plant#1101525, product#1101526, storageLocId#1101489, max(calculationDateTime#1101482)#1101416 AS max_calc_datetime#1101410]
(153) Exchange
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
Arguments: hashpartitioning(coalesce(plant#1101525, ), isnull(plant#1101525), coalesce(product#1101526, ), isnull(product#1101526), coalesce(storageLocId#1101489, ), isnull(storageLocId#1101489), coalesce(max_calc_datetime#1101410, 1970-01-01 00:00:00), isnull(max_calc_datetime#1101410), 37), ENSURE_REQUIREMENTS, [plan_id=1743285]
(154) ShuffleQueryStage
Output [4]: [plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
Arguments: 288
(155) AQEShuffleRead
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
Arguments: local
(156) BroadcastHashJoin [codegen id : 160]
Left keys [8]: [coalesce(plant#1101408, ), isnull(plant#1101408), coalesce(product#1101409, ), isnull(product#1101409), coalesce(storageLocId#1101360, ), isnull(storageLocId#1101360), coalesce(calculationDateTime#1101339, 1970-01-01 00:00:00), isnull(calculationDateTime#1101339)]
Right keys [8]: [coalesce(plant#1101525, ), isnull(plant#1101525), coalesce(product#1101526, ), isnull(product#1101526), coalesce(storageLocId#1101489, ), isnull(storageLocId#1101489), coalesce(max_calc_datetime#1101410, 1970-01-01 00:00:00), isnull(max_calc_datetime#1101410)]
Join type: Inner
Join condition: None
(157) Project [codegen id : 160]
Output [4]: [plant#1101408, product#1101409, calculationDateTime#1101339, quantity#1101362]
Input [9]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362, plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
(158) HashAggregate [codegen id : 160]
Input [4]: [plant#1101408, product#1101409, calculationDateTime#1101339, quantity#1101362]
Keys [2]: [product#1101409, plant#1101408]
Functions [2]: [partial_min(calculationDateTime#1101339), partial_sum(quantity#1101362)]
Aggregate Attributes [2]: [min#1108255, sum#1108256]
Results [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
(159) Exchange
Input [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
Arguments: hashpartitioning(product#1101409, plant#1101408, 37), ENSURE_REQUIREMENTS, [plan_id=1746337]
(160) ShuffleQueryStage
Output [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
Arguments: 302
(161) AQEShuffleRead
Input [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
Arguments: coalesced
(162) HashAggregate [codegen id : 164]
Input [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
Keys [2]: [product#1101409, plant#1101408]
Functions [2]: [min(calculationDateTime#1101339), sum(quantity#1101362)]
Aggregate Attributes [2]: [min(calculationDateTime#1101339)#1101543, sum(quantity#1101362)#1101542]
Results [4]: [product#1101409, plant#1101408, min(calculationDateTime#1101339)#1101543 AS minCalculationDateTime#1101536, round(sum(quantity#1101362)#1101542, 0) AS roundedQuantitySum#1101544]
(163) BroadcastExchange
Input [4]: [product#1101409, plant#1101408, minCalculationDateTime#1101536, roundedQuantitySum#1101544]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1747060]
(164) BroadcastQueryStage
Output [4]: [product#1101409, plant#1101408, minCalculationDateTime#1101536, roundedQuantitySum#1101544]
Arguments: 309
(165) BroadcastHashJoin [codegen id : 169]
Left keys [2]: [plant#1101132, product#1101131]
Right keys [2]: [plant#1101408, product#1101409]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 169]
Output [5]: [product#1101131, plant#1101132, outboundUnit#1101219, CASE WHEN isnotnull(minCalculationDateTime#1101536) THEN minCalculationDateTime#1101536 ELSE orderDateTime#1101133 END AS stockDatetime#1101579, CASE WHEN isnotnull(roundedQuantitySum#1101544) THEN array(roundedQuantitySum#1101544) ELSE [0.0] END AS stockBatchQuantities#1101580]
Input [8]: [product#1101131, plant#1101132, orderDateTime#1101133, outboundUnit#1101219, product#1101409, plant#1101408, minCalculationDateTime#1101536, roundedQuantitySum#1101544]
(167) Exchange
Input [5]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580]
Arguments: hashpartitioning(coalesce(plant#1101132, ), isnull(plant#1101132), coalesce(product#1101131, ), isnull(product#1101131), 37), ENSURE_REQUIREMENTS, [plan_id=1747694]
(168) ShuffleQueryStage
Output [5]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580]
Arguments: 316
(169) AQEShuffleRead
Input [5]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580]
Arguments: coalesced
(170) Sort [codegen id : 184]
Input [5]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580]
Arguments: [coalesce(plant#1101132, ) ASC NULLS FIRST, isnull(plant#1101132) ASC NULLS FIRST, coalesce(product#1101131, ) ASC NULLS FIRST, isnull(product#1101131) ASC NULLS FIRST], false, 0
(171) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#1102699, plant#1102700, orderDateTime#1102701]
(172) ShuffleQueryStage
Output [3]: [product#1102699, plant#1102700, orderDateTime#1102701]
Arguments: 32
(173) Scan parquet
Output [9]: [internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711, systemId#1102703]
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>>
(174) ColumnarToRow [codegen id : 21]
Input [9]: [internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711, systemId#1102703]
(175) Project [codegen id : 21]
Output [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
Input [9]: [internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711, systemId#1102703]
(176) Exchange
Input [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1706004]
(177) ShuffleQueryStage
Output [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
Arguments: 33
(178) Project [codegen id : 102]
Output [1]: [struct(systemId, systemId#1102703, internalUUID, internalUUID#1102704, plant, plant#1102705, product, product#1102706, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102707, productionAspect, productionAspect#1102708, salesPlant, salesPlant#1102709, listing, listing#1102710, sourceOfSupplyCategory, sourceOfSupplyCategory#1102711) AS productPlant#1102712]
Input [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
(179) BroadcastExchange
Input [1]: [productPlant#1102712]
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=1720043]
(180) BroadcastQueryStage
Output [1]: [productPlant#1102712]
Arguments: 210
(181) BroadcastHashJoin [codegen id : 170]
Left keys [4]: [coalesce(product#1102699, ), isnull(product#1102699), coalesce(plant#1102700, ), isnull(plant#1102700)]
Right keys [4]: [coalesce(productPlant#1102712.product.internalRefUUID, ), isnull(productPlant#1102712.product.internalRefUUID), coalesce(productPlant#1102712.plant.internalRefUUID, ), isnull(productPlant#1102712.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(182) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
(183) BroadcastQueryStage
Output [3]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
Arguments: 192
(184) BroadcastHashJoin [codegen id : 170]
Left keys [1]: [product#1102699]
Right keys [1]: [internalUUID#1102714]
Join type: LeftOuter
Join condition: None
(185) Project
Output [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, filter(unitOfMeasureConversions#1102720, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102718.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102718.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102725]
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
(186) Project [codegen id : 171]
Output [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, filteredUnitOfMeasureConversions#1102725.quantityDenominator AS _extract_quantityDenominator#1107181, filteredUnitOfMeasureConversions#1102725.quantityNumerator AS _extract_quantityNumerator#1107182]
Input [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, filteredUnitOfMeasureConversions#1102725]
(187) Generate [codegen id : 171]
Input [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, _extract_quantityDenominator#1107181, _extract_quantityNumerator#1107182]
Arguments: explode(_extract_quantityNumerator#1107182), [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, _extract_quantityDenominator#1107181], true, [quantityNumerator#1102726]
(188) Generate [codegen id : 171]
Input [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, _extract_quantityDenominator#1107181, quantityNumerator#1102726]
Arguments: explode(_extract_quantityDenominator#1107181), [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, quantityNumerator#1102726], true, [quantityDenominator#1102727]
(189) Project [codegen id : 171]
Output [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, (cast(quantityNumerator#1102726 as double) / cast(quantityDenominator#1102727 as double)) AS outboundUnit#1102728]
Input [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, quantityNumerator#1102726, quantityDenominator#1102727]
(190) Project [codegen id : 171]
Output [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, CASE WHEN (isnull(outboundUnit#1102728) OR (outboundUnit#1102728 <= 0.0)) THEN 1.0 ELSE outboundUnit#1102728 END AS outboundUnit#1102729]
Input [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102728]
(191) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#1102839, plant#1102838, minCalculationDateTime#1102952, roundedQuantitySum#1102953]
(192) BroadcastQueryStage
Output [4]: [product#1102839, plant#1102838, minCalculationDateTime#1102952, roundedQuantitySum#1102953]
Arguments: 311
(193) BroadcastHashJoin [codegen id : 171]
Left keys [2]: [plant#1102700, product#1102699]
Right keys [2]: [plant#1102838, product#1102839]
Join type: LeftOuter
Join condition: None
(194) Project [codegen id : 171]
Output [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, CASE WHEN isnotnull(minCalculationDateTime#1102952) THEN minCalculationDateTime#1102952 ELSE orderDateTime#1102701 END AS stockDatetime#1102954, CASE WHEN isnotnull(roundedQuantitySum#1102953) THEN array(roundedQuantitySum#1102953) ELSE [0.0] END AS stockBatchQuantities#1102955]
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, product#1102839, plant#1102838, minCalculationDateTime#1102952, roundedQuantitySum#1102953]
(195) Exchange
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955]
Arguments: hashpartitioning(coalesce(plant#1102700, ), isnull(plant#1102700), coalesce(product#1102699, ), isnull(product#1102699), 37), ENSURE_REQUIREMENTS, [plan_id=1747745]
(196) ShuffleQueryStage
Output [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955]
Arguments: 317
(197) AQEShuffleRead
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955]
Arguments: coalesced
(198) Sort [codegen id : 176]
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955]
Arguments: [coalesce(plant#1102700, ) ASC NULLS FIRST, isnull(plant#1102700) ASC NULLS FIRST, coalesce(product#1102699, ) ASC NULLS FIRST, isnull(product#1102699) ASC NULLS FIRST], false, 0
(199) Scan parquet
Output [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000350/0_1_10000000350]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(200) ColumnarToRow [codegen id : 39]
Input [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
(201) Exchange
Input [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Arguments: hashpartitioning(coalesce(plant#1101583, ), isnull(plant#1101583), coalesce(product#1101582, ), isnull(product#1101582), 37), ENSURE_REQUIREMENTS, [plan_id=1706468]
(202) ShuffleQueryStage
Output [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Arguments: 68
(203) AQEShuffleRead
Input [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Arguments: coalesced
(204) Sort [codegen id : 177]
Input [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Arguments: [coalesce(plant#1101583, ) ASC NULLS FIRST, isnull(plant#1101583) ASC NULLS FIRST, coalesce(product#1101582, ) ASC NULLS FIRST, isnull(product#1101582) ASC NULLS FIRST], false, 0
(205) SortMergeJoin [codegen id : 178]
Left keys [4]: [coalesce(plant#1102700, ), isnull(plant#1102700), coalesce(product#1102699, ), isnull(product#1102699)]
Right keys [4]: [coalesce(plant#1101583, ), isnull(plant#1101583), coalesce(product#1101582, ), isnull(product#1101582)]
Join type: LeftOuter
Join condition: None
(206) Project [codegen id : 178]
Output [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, CASE WHEN isnotnull(product#1101582) THEN struct(demandChannel, demandChannel#1101584, demandStream, demandStream#1101585, considerVariance, considerVariance#1101586, demandTimeBuckets, demandTimeBuckets#1101587, demandPointInTimeStart, demandPointInTimeStart#1101588, demandPointInTimeEnd, demandPointInTimeEnd#1101589, demandPointInTime, demandPointInTime#1101590) END AS rawDemands#1101592]
Input [16]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
(207) ObjectHashAggregate
Input [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, rawDemands#1101592]
Keys [8]: [product#1102699, plant#1102700, orderDateTime#1102701, knownfloatingpointnormalized(if (isnull(productPlant#1102712)) null else named_struct(systemId, productPlant#1102712.systemId, internalUUID, productPlant#1102712.internalUUID, plant, productPlant#1102712.plant, product, productPlant#1102712.product, blockedForReplenishmentStartingFrom, productPlant#1102712.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1102712.productionAspect)) null else named_struct(productMovementPlants, productPlant#1102712.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1102712.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1102712.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1102712.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1102712.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#1102712.salesPlant, listing, productPlant#1102712.listing, sourceOfSupplyCategory, productPlant#1102712.sourceOfSupplyCategory)) AS productPlant#1102712, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1102729)) AS outboundUnit#1102729, stockDatetime#1102954, knownfloatingpointnormalized(transform(stockBatchQuantities#1102955, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1110257)), lambda arg#1110257, false))) AS stockBatchQuantities#1102955, [7226582400000000] AS [7226582400000000]#1110256]
Functions [1]: [partial_collect_list(rawDemands#1101592, 0, 0)]
Aggregate Attributes [1]: [buf#1108275]
Results [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256, buf#1108276]
(208) Exchange
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256, buf#1108276]
Arguments: hashpartitioning(product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256, 37), ENSURE_REQUIREMENTS, [plan_id=1748495]
(209) ShuffleQueryStage
Output [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256, buf#1108276]
Arguments: 322
(210) AQEShuffleRead
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256, buf#1108276]
Arguments: coalesced
(211) ObjectHashAggregate
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256, buf#1108276]
Keys [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1110256]
Functions [1]: [collect_list(rawDemands#1101592, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1101592, 0, 0)#1101612]
Results [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, collect_list(rawDemands#1101592, 0, 0)#1101612 AS rawDemands#1101593]
(212) Scan parquet
Output [3]: [internalUUID#1102650, address#1102656, systemId#1102649]
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>>>
(213) ColumnarToRow [codegen id : 40]
Input [3]: [internalUUID#1102650, address#1102656, systemId#1102649]
(214) Project [codegen id : 40]
Output [2]: [internalUUID#1102650, address#1102656.timeZone.code AS timezonecode#1102662]
Input [3]: [internalUUID#1102650, address#1102656, systemId#1102649]
(215) Exchange
Input [2]: [internalUUID#1102650, timezonecode#1102662]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1706488]
(216) ShuffleQueryStage
Output [2]: [internalUUID#1102650, timezonecode#1102662]
Arguments: 69
(217) BroadcastExchange
Input [2]: [internalUUID#1102650, timezonecode#1102662]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1716282]
(218) BroadcastQueryStage
Output [2]: [internalUUID#1102650, timezonecode#1102662]
Arguments: 215
(219) BroadcastHashJoin [codegen id : 182]
Left keys [2]: [coalesce(plant#1102700, ), isnull(plant#1102700)]
Right keys [2]: [coalesce(internalUUID#1102650, ), isnull(internalUUID#1102650)]
Join type: LeftOuter
Join condition: None
(220) Project [codegen id : 182]
Output [10]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1102956, rawDemands#1101593, CASE WHEN isnotnull(timezonecode#1102662) THEN timezonecode#1102662 ELSE UTC END AS timezonecode#1102664]
Input [10]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, rawDemands#1101593, internalUUID#1102650, timezonecode#1102662]
(221) DeserializeToObject [codegen id : 182]
Input [10]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956, rawDemands#1101593, timezonecode#1102664]
Arguments: createexternalrow(invoke(product#1102699.toString()), invoke(plant#1102700.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1102701)), if (isnull(productPlant#1102712)) null else createexternalrow(invoke(productPlant#1102712.systemId.toString()), invoke(productPlant#1102712.internalUUID.toString()), if (isnull(productPlant#1102712.plant)) null else createexternalrow(invoke(productPlant#1102712.plant.internalRefUUID.toString()), invoke(productPlant#1102712.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1102712.product)) null else createexternalrow(invoke(productPlant#1102712.product.internalRefUUID.toString()), invoke(productPlant#1102712.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1102712.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1102712.productionAspect)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1102712.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.salesPlant)) null else createexternalrow(if (isnull(productPlant#1102712.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1102712.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1102712.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1102712.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102729)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1102954)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1102955, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1102956, 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#1101593, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1102664.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#1102685: org.apache.spark.sql.Row
(222) MapElements [codegen id : 182]
Input [1]: [obj#1102685]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, obj#1102690: org.apache.spark.sql.Row
(223) SerializeFromObject [codegen id : 182]
Input [1]: [obj#1102690]
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#1102695, 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#1102696, 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#1102697, 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#1102698]
(224) Exchange
Input [4]: [product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Arguments: hashpartitioning(coalesce(plant#1102696, ), isnull(plant#1102696), coalesce(product#1102695, ), isnull(product#1102695), 37), ENSURE_REQUIREMENTS, [plan_id=1748798]
(225) ShuffleQueryStage
Output [4]: [product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Arguments: 325
(226) AQEShuffleRead
Input [4]: [product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Arguments: coalesced
(227) Sort [codegen id : 185]
Input [4]: [product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Arguments: [coalesce(plant#1102696, ) ASC NULLS FIRST, isnull(plant#1102696) ASC NULLS FIRST, coalesce(product#1102695, ) ASC NULLS FIRST, isnull(product#1102695) ASC NULLS FIRST], false, 0
(228) SortMergeJoin [codegen id : 186]
Left keys [4]: [coalesce(plant#1101132, ), isnull(plant#1101132), coalesce(product#1101131, ), isnull(product#1101131)]
Right keys [4]: [coalesce(plant#1102696, ), isnull(plant#1102696), coalesce(product#1102695, ), isnull(product#1102695)]
Join type: LeftOuter
Join condition: None
(229) Project [codegen id : 186]
Output [7]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Input [9]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
(230) Project [codegen id : 186]
Output [12]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, cast(null as string) AS product#1102991, cast(null as string) AS plant#1102990, cast(null as array<double>) AS _extract_openQtyInBaseUnit#1107156, cast(null as array<timestamp>) AS _extract_availabilityDatetime#1107157, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#1107158]
Input [7]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698]
(231) Project [codegen id : 186]
Output [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, coalesce(_extract_openQtyInBaseUnit#1107156, []) AS openGoodsMovementQuantities#1104344, coalesce(_extract_availabilityDatetime#1107157, []) AS openGoodsMovementAvailabilityDatetimes#1104345, coalesce(_extract_shelfLifeEndDatetime#1107158, []) AS openGoodsMovementShelfLifeEndDatetimes#1104346]
Input [12]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, product#1102991, plant#1102990, _extract_openQtyInBaseUnit#1107156, _extract_availabilityDatetime#1107157, _extract_shelfLifeEndDatetime#1107158]
(232) Exchange
Input [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346]
Arguments: hashpartitioning(product#1101131, plant#1101132, 37), ENSURE_REQUIREMENTS, [plan_id=1749019]
(233) ShuffleQueryStage
Output [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346]
Arguments: 328
(234) AQEShuffleRead
Input [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346]
Arguments: local
(235) ReusedExchange [Reuses operator id: 195]
Output [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090]
(236) ShuffleQueryStage
Output [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090]
Arguments: 319
(237) AQEShuffleRead
Input [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090]
Arguments: coalesced
(238) Sort [codegen id : 187]
Input [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090]
Arguments: [coalesce(plant#1104835, ) ASC NULLS FIRST, isnull(plant#1104835) ASC NULLS FIRST, coalesce(product#1104834, ) ASC NULLS FIRST, isnull(product#1104834) ASC NULLS FIRST], false, 0
(239) ReusedExchange [Reuses operator id: 224]
Output [4]: [product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
(240) ShuffleQueryStage
Output [4]: [product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Arguments: 327
(241) AQEShuffleRead
Input [4]: [product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Arguments: coalesced
(242) Sort [codegen id : 188]
Input [4]: [product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Arguments: [coalesce(plant#1105376, ) ASC NULLS FIRST, isnull(plant#1105376) ASC NULLS FIRST, coalesce(product#1105375, ) ASC NULLS FIRST, isnull(product#1105375) ASC NULLS FIRST], false, 0
(243) SortMergeJoin [codegen id : 189]
Left keys [4]: [coalesce(plant#1104835, ), isnull(plant#1104835), coalesce(product#1104834, ), isnull(product#1104834)]
Right keys [4]: [coalesce(plant#1105376, ), isnull(plant#1105376), coalesce(product#1105375, ), isnull(product#1105375)]
Join type: LeftOuter
Join condition: None
(244) Project [codegen id : 189]
Output [9]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Input [11]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
(245) Project [codegen id : 189]
Output [14]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, dayBucketDemands#1105377, pointInTimeDemands#1105378, cast(null as string) AS product#1105993, cast(null as string) AS plant#1105992, cast(null as array<double>) AS _extract_openQtyInBaseUnit#1107199, cast(null as array<timestamp>) AS _extract_availabilityDatetime#1107200, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#1107201]
Input [9]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, dayBucketDemands#1105377, pointInTimeDemands#1105378]
(246) Project
Output [15]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, coalesce(_extract_openQtyInBaseUnit#1107199, []) AS openGoodsMovementQuantities#1106571, coalesce(_extract_availabilityDatetime#1107200, []) AS openGoodsMovementAvailabilityDatetimes#1106572, coalesce(_extract_shelfLifeEndDatetime#1107201, []) AS openGoodsMovementShelfLifeEndDatetimes#1106573, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1106574, array_sort(filter(CASE WHEN isnotnull(productPlant#1104847.listing) THEN productPlant#1104847.listing ELSE [] END, lambdafunction(lambda listing#1104780.isListed, lambda listing#1104780, false)), lambdafunction(if ((isnull(lambda left#1104782) AND isnull(lambda right#1104783))) 0 else if (isnull(lambda left#1104782)) 1 else if (isnull(lambda right#1104783)) -1 else if ((lambda left#1104782 < lambda right#1104783)) -1 else if ((lambda left#1104782 > lambda right#1104783)) 1 else 0, lambda left#1104782, lambda right#1104783, false), false) AS listing#1104781]
Input [14]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, dayBucketDemands#1105377, pointInTimeDemands#1105378, product#1105993, plant#1105992, _extract_openQtyInBaseUnit#1107199, _extract_availabilityDatetime#1107200, _extract_shelfLifeEndDatetime#1107201]
(247) DeserializeToObject [codegen id : 190]
Input [15]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, configuration#1106574, listing#1104781]
Arguments: createexternalrow(invoke(product#1104834.toString()), invoke(plant#1104835.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1104836)), if (isnull(productPlant#1104847)) null else createexternalrow(invoke(productPlant#1104847.systemId.toString()), invoke(productPlant#1104847.internalUUID.toString()), if (isnull(productPlant#1104847.plant)) null else createexternalrow(invoke(productPlant#1104847.plant.internalRefUUID.toString()), invoke(productPlant#1104847.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1104847.product)) null else createexternalrow(invoke(productPlant#1104847.product.internalRefUUID.toString()), invoke(productPlant#1104847.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1104847.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1104847.productionAspect)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1104847.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.salesPlant)) null else createexternalrow(if (isnull(productPlant#1104847.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1104847.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1104847.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1104847.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104864)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1105089)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#1105090, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#1105091, 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#1105377, 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#1105378, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#1106571, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#1106572, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#1106573, 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#1106574, 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#1104781, 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#1104814: org.apache.spark.sql.Row
(248) MapElements [codegen id : 190]
Input [1]: [obj#1104814]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#1104821: org.apache.spark.sql.Row
(249) SerializeFromObject [codegen id : 190]
Input [1]: [obj#1104821]
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#1104828, 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#1104829, 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#1104830, 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#1104831, 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#1104832, 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#1104833]
(250) Filter [codegen id : 190]
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Condition : (isnotnull(product#1104828) AND isnotnull(plant#1104829))
(251) Exchange
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: hashpartitioning(product#1104828, plant#1104829, 37), ENSURE_REQUIREMENTS, [plan_id=1749097]
(252) ShuffleQueryStage
Output [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: 329
(253) AQEShuffleRead
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: local
(254) BroadcastExchange
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1749164]
(255) BroadcastQueryStage
Output [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: 330
(256) BroadcastHashJoin [codegen id : 191]
Left keys [2]: [product#1101131, plant#1101132]
Right keys [2]: [product#1104828, plant#1104829]
Join type: LeftOuter
Join condition: None
(257) Project [codegen id : 191]
Output [16]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1104637, CASE WHEN isnotnull(timeDependentSettingsName#1104830) THEN timeDependentSettingsName#1104830 ELSE [] END AS timeDependentSettingsName#1106699, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#1104831) THEN timeDependentSettingsStartDatetime#1104831 ELSE [] END AS timeDependentSettingsStartDatetime#1106700, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#1104832) THEN timeDependentSettingsEndDatetime#1104832 ELSE [] END AS timeDependentSettingsEndDatetime#1106701, CASE WHEN isnotnull(timeDependentSettingsValue#1104833) THEN timeDependentSettingsValue#1104833 ELSE [] END AS timeDependentSettingsValue#1106702]
Input [16]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
(258) ResultQueryStage
Output [16]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1106700, timeDependentSettingsEndDatetime#1106701, timeDependentSettingsValue#1106702]
Arguments: 332
(259) Exchange
Input [3]: [product#1101131, plant#1101132, orderDateTime#1101133]
Arguments: hashpartitioning(product#1101131, plant#1101132, 37), REPARTITION_BY_NUM, [plan_id=1703209]
(260) Project
Output [4]: [plant#1101160.internalRefUUID AS _extract_internalRefUUID#1107163, product#1101161.internalRefUUID AS _extract_internalRefUUID#1107164, productionAspect#1101163.productMovementPlants.unitOfIssue.code AS _extract_code#1107161, productionAspect#1101163.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107162]
Input [4]: [plant#1101160, product#1101161, productionAspect#1101163, systemId#1101158]
(261) Exchange
Input [4]: [_extract_internalRefUUID#1107163, _extract_internalRefUUID#1107164, _extract_code#1107161, _extract_internalRefUUID#1107162]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703212]
(262) Project
Output [4]: [_extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
Input [4]: [_extract_internalRefUUID#1107163, _extract_internalRefUUID#1107164, _extract_code#1107161, _extract_internalRefUUID#1107162]
(263) BroadcastExchange
Input [4]: [_extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
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=1704220]
(264) BroadcastHashJoin
Left keys [4]: [coalesce(product#1101131, ), isnull(product#1101131), coalesce(plant#1101132, ), isnull(plant#1101132)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107164, ), isnull(_extract_internalRefUUID#1107164), coalesce(_extract_internalRefUUID#1107163, ), isnull(_extract_internalRefUUID#1107163)]
Join type: LeftOuter
Join condition: None
(265) Project
Output [5]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_code#1107161, _extract_internalRefUUID#1107162]
Input [7]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_code#1107161, _extract_internalRefUUID#1107162, _extract_internalRefUUID#1107164, _extract_internalRefUUID#1107163]
(266) Filter
Input [4]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200, systemId#1101193]
Condition : isnotnull(internalUUID#1101194)
(267) Project
Output [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Input [4]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200, systemId#1101193]
(268) Exchange
Input [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703219]
(269) BroadcastExchange
Input [3]: [internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704224]
(270) BroadcastHashJoin
Left keys [1]: [product#1101131]
Right keys [1]: [internalUUID#1101194]
Join type: LeftOuter
Join condition: None
(271) Project
Output [4]: [product#1101131, plant#1101132, orderDateTime#1101133, filter(unitOfMeasureConversions#1101200, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107161) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107162)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101198.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101198.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101206]
Input [8]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_code#1107161, _extract_internalRefUUID#1107162, internalUUID#1101194, baseUnitOfMeasure#1101198, unitOfMeasureConversions#1101200]
(272) Project
Output [5]: [product#1101131, plant#1101132, orderDateTime#1101133, filteredUnitOfMeasureConversions#1101206.quantityDenominator AS _extract_quantityDenominator#1107159, filteredUnitOfMeasureConversions#1101206.quantityNumerator AS _extract_quantityNumerator#1107160]
Input [4]: [product#1101131, plant#1101132, orderDateTime#1101133, filteredUnitOfMeasureConversions#1101206]
(273) Generate
Input [5]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_quantityDenominator#1107159, _extract_quantityNumerator#1107160]
Arguments: explode(_extract_quantityNumerator#1107160), [product#1101131, plant#1101132, orderDateTime#1101133, _extract_quantityDenominator#1107159], true, [quantityNumerator#1101214]
(274) Generate
Input [5]: [product#1101131, plant#1101132, orderDateTime#1101133, _extract_quantityDenominator#1107159, quantityNumerator#1101214]
Arguments: explode(_extract_quantityDenominator#1107159), [product#1101131, plant#1101132, orderDateTime#1101133, quantityNumerator#1101214], true, [quantityDenominator#1101217]
(275) Project
Output [4]: [product#1101131, plant#1101132, orderDateTime#1101133, (cast(quantityNumerator#1101214 as double) / cast(quantityDenominator#1101217 as double)) AS outboundUnit#1101218]
Input [5]: [product#1101131, plant#1101132, orderDateTime#1101133, quantityNumerator#1101214, quantityDenominator#1101217]
(276) Project
Output [4]: [product#1101131, plant#1101132, orderDateTime#1101133, CASE WHEN (isnull(outboundUnit#1101218) OR (outboundUnit#1101218 <= 0.0)) THEN 1.0 ELSE outboundUnit#1101218 END AS outboundUnit#1101219]
Input [4]: [product#1101131, plant#1101132, orderDateTime#1101133, outboundUnit#1101218]
(277) Sort
Input [4]: [product#1101131, plant#1101132, orderDateTime#1101133, outboundUnit#1101219]
Arguments: [product#1101131 ASC NULLS FIRST, plant#1101132 ASC NULLS FIRST], false, 0
(278) Filter
Input [6]: [internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, systemId#1101328]
Condition : (isnotnull(plant#1101331.internalRefUUID) AND isnotnull(product#1101330.internalRefUUID))
(279) Project
Output [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
Input [6]: [internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, systemId#1101328]
(280) Exchange
Input [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703230]
(281) BroadcastExchange
Input [6]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333]
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=1704252]
(282) Filter
Input [2]: [marketUnit#1101271, distributionCenters#1101277]
Condition : (((marketUnit#1101271 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1101277, true) > 0)) AND isnotnull(distributionCenters#1101277))
(283) Project
Output [1]: [distributionCenters#1101277]
Input [2]: [marketUnit#1101271, distributionCenters#1101277]
(284) Exchange
Input [1]: [distributionCenters#1101277]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703234]
(285) Generate
Input [1]: [distributionCenters#1101277]
Arguments: explode(distributionCenters#1101277), false, [distributionCenters#1101294]
(286) Filter
Input [1]: [distributionCenters#1101294]
Condition : (((size(distributionCenters#1101294.storageLocations, true) > 0) AND isnotnull(distributionCenters#1101294.storageLocations)) AND isnotnull(distributionCenters#1101294.internalRefUUID))
(287) Project
Output [2]: [distributionCenters#1101294.internalRefUUID AS _extract_internalRefUUID#1106887, distributionCenters#1101294.storageLocations AS _extract_storageLocations#1106888]
Input [1]: [distributionCenters#1101294]
(288) Generate
Input [2]: [_extract_internalRefUUID#1106887, _extract_storageLocations#1106888]
Arguments: explode(_extract_storageLocations#1106888), [_extract_internalRefUUID#1106887], false, [storageLocations#1101301]
(289) Project
Output [3]: [_extract_internalRefUUID#1106887 AS plantUuid#1101296, storageLocations#1101301.id AS storageLocId#1101302, storageLocations#1101301.internalRefUUID AS storageLocUuid#1101303]
Input [2]: [_extract_internalRefUUID#1106887, storageLocations#1101301]
(290) BroadcastExchange
Input [3]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704248]
(291) Filter
Input [2]: [product#1101545, plant#1101546]
Condition : isnotnull(plant#1101546)
(292) Exchange
Input [2]: [product#1101545, plant#1101546]
Arguments: hashpartitioning(product#1101545, plant#1101546, 37), REPARTITION_BY_NUM, [plan_id=1703900]
(293) Scan parquet
Output [4]: [plant#1101551, product#1101552, productionAspect#1101554, systemId#1101549]
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>>>>
(294) Project
Output [4]: [plant#1101551.internalRefUUID AS _extract_internalRefUUID#1107165, product#1101552.internalRefUUID AS _extract_internalRefUUID#1107168, productionAspect#1101554.productMovementPlants.unitOfIssue.code AS _extract_code#1107166, productionAspect#1101554.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107167]
Input [4]: [plant#1101551, product#1101552, productionAspect#1101554, systemId#1101549]
(295) Exchange
Input [4]: [_extract_internalRefUUID#1107165, _extract_internalRefUUID#1107168, _extract_code#1107166, _extract_internalRefUUID#1107167]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703246]
(296) Project
Output [4]: [_extract_code#1107166, _extract_internalRefUUID#1107167, _extract_internalRefUUID#1107168, _extract_internalRefUUID#1107165]
Input [4]: [_extract_internalRefUUID#1107165, _extract_internalRefUUID#1107168, _extract_code#1107166, _extract_internalRefUUID#1107167]
(297) BroadcastExchange
Input [4]: [_extract_code#1107166, _extract_internalRefUUID#1107167, _extract_internalRefUUID#1107168, _extract_internalRefUUID#1107165]
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=1704232]
(298) BroadcastHashJoin
Left keys [4]: [coalesce(product#1101545, ), isnull(product#1101545), coalesce(plant#1101546, ), isnull(plant#1101546)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107168, ), isnull(_extract_internalRefUUID#1107168), coalesce(_extract_internalRefUUID#1107165, ), isnull(_extract_internalRefUUID#1107165)]
Join type: LeftOuter
Join condition: None
(299) Project
Output [4]: [product#1101545, plant#1101546, _extract_code#1107166, _extract_internalRefUUID#1107167]
Input [6]: [product#1101545, plant#1101546, _extract_code#1107166, _extract_internalRefUUID#1107167, _extract_internalRefUUID#1107168, _extract_internalRefUUID#1107165]
(300) Scan parquet
Output [4]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566, systemId#1101559]
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>>>
(301) Filter
Input [4]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566, systemId#1101559]
Condition : isnotnull(internalUUID#1101560)
(302) Project
Output [3]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
Input [4]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566, systemId#1101559]
(303) Exchange
Input [3]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703253]
(304) BroadcastExchange
Input [3]: [internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704236]
(305) BroadcastHashJoin
Left keys [1]: [product#1101545]
Right keys [1]: [internalUUID#1101560]
Join type: LeftOuter
Join condition: None
(306) Project
Output [2]: [plant#1101546, filter(unitOfMeasureConversions#1101566, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107166) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107167)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101564.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101564.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101571]
Input [7]: [product#1101545, plant#1101546, _extract_code#1107166, _extract_internalRefUUID#1107167, internalUUID#1101560, baseUnitOfMeasure#1101564, unitOfMeasureConversions#1101566]
(307) Generate
Input [2]: [plant#1101546, filteredUnitOfMeasureConversions#1101571]
Arguments: explode(filteredUnitOfMeasureConversions#1101571.quantityNumerator), [plant#1101546, filteredUnitOfMeasureConversions#1101571], true, [quantityNumerator#1101572]
(308) Project
Output [2]: [plant#1101546, filteredUnitOfMeasureConversions#1101571.quantityDenominator AS _extract_quantityDenominator#1106889]
Input [3]: [plant#1101546, filteredUnitOfMeasureConversions#1101571, quantityNumerator#1101572]
(309) Generate
Input [2]: [plant#1101546, _extract_quantityDenominator#1106889]
Arguments: explode(_extract_quantityDenominator#1106889), [plant#1101546], true, [quantityDenominator#1101573]
(310) Project
Output [1]: [plant#1101546]
Input [2]: [plant#1101546, quantityDenominator#1101573]
(311) HashAggregate
Input [1]: [plant#1101546]
Keys [1]: [plant#1101546]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101546]
(312) Exchange
Input [1]: [plant#1101546]
Arguments: hashpartitioning(plant#1101546, 37), ENSURE_REQUIREMENTS, [plan_id=1704245]
(313) HashAggregate
Input [1]: [plant#1101546]
Keys [1]: [plant#1101546]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101546]
(314) BroadcastHashJoin
Left keys [1]: [plantUuid#1101296]
Right keys [1]: [plant#1101546]
Join type: Inner
Join condition: None
(315) Project
Output [3]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Input [4]: [plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303, plant#1101546]
(316) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1101331.internalRefUUID, ), isnull(plant#1101331.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1101296, ), isnull(plantUuid#1101296)]
Join type: Inner
Join condition: None
(317) Generate
Input [9]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
Arguments: explode(filter(stockQuantities#1101333, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1101303) AND (lambda x#1101337.storageLocation.Id = storageLocId#1101302)), lambda x#1101337, false))), [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, plantUuid#1101296], false, [stockQuantity#1101338]
(318) ObjectHashAggregate
Input [7]: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, plantUuid#1101296, stockQuantity#1101338]
Keys [5]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328]
Functions [2]: [partial_first(calculationDateTime#1101332, false), partial_collect_list(stockQuantity#1101338, 0, 0)]
Aggregate Attributes [3]: [first#1108259, valueSet#1108260, buf#1108261]
Results [8]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328, first#1108262, valueSet#1108263, buf#1108264]
(319) ObjectHashAggregate
Input [8]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328, first#1108262, valueSet#1108263, buf#1108264]
Keys [5]: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328]
Functions [2]: [first(calculationDateTime#1101332, false), collect_list(stockQuantity#1101338, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1101332)()#1101352, collect_list(stockQuantity#1101338, 0, 0)#1101353]
Results [4]: [product#1101330, plant#1101331, first(calculationDateTime#1101332)()#1101352 AS calculationDateTime#1101339, collect_list(stockQuantity#1101338, 0, 0)#1101353 AS stockQuantities#1101340]
(320) Filter
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantities#1101340]
Condition : ((size(stockQuantities#1101340, true) > 0) AND isnotnull(calculationDateTime#1101339))
(321) Generate
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantities#1101340]
Arguments: explode(stockQuantities#1101340), [product#1101330, plant#1101331, calculationDateTime#1101339], false, [stockQuantity#1101355]
(322) Filter
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantity#1101355]
Condition : (((isnotnull(stockQuantity#1101355.specialStockIndicator.code) AND isnotnull(stockQuantity#1101355.stockType.code)) AND (stockQuantity#1101355.specialStockIndicator.code = )) AND (stockQuantity#1101355.stockType.code = 01))
(323) Project
Output [5]: [plant#1101331.internalRefUUID AS plantUuid#1101357, product#1101330.internalRefUUID AS productUuid#1101359, calculationDateTime#1101339, stockQuantity#1101355.storagelocation.id AS storageLocId#1101360, stockQuantity#1101355.quantity.measure AS quantity#1101362]
Input [4]: [product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantity#1101355]
(324) Exchange
Input [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: hashpartitioning(productUuid#1101359, plantUuid#1101357, 37), ENSURE_REQUIREMENTS, [plan_id=1704274]
(325) Sort
Input [5]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362]
Arguments: [productUuid#1101359 ASC NULLS FIRST, plantUuid#1101357 ASC NULLS FIRST], false, 0
(326) Filter
Input [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Condition : ((isnotnull(orderDateTime#1101376) AND isnotnull(plant#1101375)) AND isnotnull(product#1101374))
(327) Exchange
Input [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Arguments: hashpartitioning(product#1101374, plant#1101375, 37), REPARTITION_BY_NUM, [plan_id=1703921]
(328) Scan parquet
Output [4]: [plant#1101380, product#1101381, productionAspect#1101383, systemId#1101378]
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>>>>
(329) Project
Output [4]: [plant#1101380.internalRefUUID AS _extract_internalRefUUID#1107170, product#1101381.internalRefUUID AS _extract_internalRefUUID#1107169, productionAspect#1101383.productMovementPlants.unitOfIssue.code AS _extract_code#1107171, productionAspect#1101383.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107172]
Input [4]: [plant#1101380, product#1101381, productionAspect#1101383, systemId#1101378]
(330) Exchange
Input [4]: [_extract_internalRefUUID#1107170, _extract_internalRefUUID#1107169, _extract_code#1107171, _extract_internalRefUUID#1107172]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703278]
(331) Project
Output [4]: [_extract_code#1107171, _extract_internalRefUUID#1107172, _extract_internalRefUUID#1107169, _extract_internalRefUUID#1107170]
Input [4]: [_extract_internalRefUUID#1107170, _extract_internalRefUUID#1107169, _extract_code#1107171, _extract_internalRefUUID#1107172]
(332) BroadcastExchange
Input [4]: [_extract_code#1107171, _extract_internalRefUUID#1107172, _extract_internalRefUUID#1107169, _extract_internalRefUUID#1107170]
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=1704261]
(333) BroadcastHashJoin
Left keys [4]: [coalesce(product#1101374, ), isnull(product#1101374), coalesce(plant#1101375, ), isnull(plant#1101375)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107169, ), isnull(_extract_internalRefUUID#1107169), coalesce(_extract_internalRefUUID#1107170, ), isnull(_extract_internalRefUUID#1107170)]
Join type: LeftOuter
Join condition: None
(334) Project
Output [5]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_code#1107171, _extract_internalRefUUID#1107172]
Input [7]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_code#1107171, _extract_internalRefUUID#1107172, _extract_internalRefUUID#1107169, _extract_internalRefUUID#1107170]
(335) Scan parquet
Output [4]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395, systemId#1101388]
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>>>
(336) Filter
Input [4]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395, systemId#1101388]
Condition : isnotnull(internalUUID#1101389)
(337) Project
Output [3]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
Input [4]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395, systemId#1101388]
(338) Exchange
Input [3]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703285]
(339) BroadcastExchange
Input [3]: [internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704265]
(340) BroadcastHashJoin
Left keys [1]: [product#1101374]
Right keys [1]: [internalUUID#1101389]
Join type: LeftOuter
Join condition: None
(341) Project
Output [4]: [product#1101374, plant#1101375, orderDateTime#1101376, filter(unitOfMeasureConversions#1101395, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107171) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107172)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101393.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101393.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101400]
Input [8]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_code#1107171, _extract_internalRefUUID#1107172, internalUUID#1101389, baseUnitOfMeasure#1101393, unitOfMeasureConversions#1101395]
(342) Generate
Input [4]: [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400]
Arguments: explode(filteredUnitOfMeasureConversions#1101400.quantityNumerator), [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400], true, [quantityNumerator#1101401]
(343) Project
Output [4]: [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400.quantityDenominator AS _extract_quantityDenominator#1106896]
Input [5]: [product#1101374, plant#1101375, orderDateTime#1101376, filteredUnitOfMeasureConversions#1101400, quantityNumerator#1101401]
(344) Generate
Input [4]: [product#1101374, plant#1101375, orderDateTime#1101376, _extract_quantityDenominator#1106896]
Arguments: explode(_extract_quantityDenominator#1106896), [product#1101374, plant#1101375, orderDateTime#1101376], true, [quantityDenominator#1101402]
(345) Project
Output [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Input [4]: [product#1101374, plant#1101375, orderDateTime#1101376, quantityDenominator#1101402]
(346) Sort
Input [3]: [product#1101374, plant#1101375, orderDateTime#1101376]
Arguments: [product#1101374 ASC NULLS FIRST, plant#1101375 ASC NULLS FIRST], false, 0
(347) SortMergeJoin
Left keys [2]: [productUuid#1101359, plantUuid#1101357]
Right keys [2]: [product#1101374, plant#1101375]
Join type: Inner
Join condition: (calculationDateTime#1101339 <= orderDateTime#1101376)
(348) Project
Output [5]: [plantUuid#1101357 AS plant#1101408, productUuid#1101359 AS product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Input [8]: [plantUuid#1101357, productUuid#1101359, calculationDateTime#1101339, storageLocId#1101360, quantity#1101362, product#1101374, plant#1101375, orderDateTime#1101376]
(349) Exchange
Input [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Arguments: hashpartitioning(coalesce(plant#1101408, ), isnull(plant#1101408), coalesce(product#1101409, ), isnull(product#1101409), coalesce(storageLocId#1101360, ), isnull(storageLocId#1101360), coalesce(calculationDateTime#1101339, 1970-01-01 00:00:00), isnull(calculationDateTime#1101339), 37), ENSURE_REQUIREMENTS, [plan_id=1704330]
(350) Sort
Input [5]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
Arguments: [coalesce(plant#1101408, ) ASC NULLS FIRST, isnull(plant#1101408) ASC NULLS FIRST, coalesce(product#1101409, ) ASC NULLS FIRST, isnull(product#1101409) ASC NULLS FIRST, coalesce(storageLocId#1101360, ) ASC NULLS FIRST, isnull(storageLocId#1101360) ASC NULLS FIRST, coalesce(calculationDateTime#1101339, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1101339) ASC NULLS FIRST], false, 0
(351) Scan parquet
Output [6]: [internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422, systemId#1101417]
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>>>>>
(352) Filter
Input [6]: [internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422, systemId#1101417]
Condition : (isnotnull(plant#1101420.internalRefUUID) AND isnotnull(product#1101419.internalRefUUID))
(353) Project
Output [6]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422]
Input [6]: [internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422, systemId#1101417]
(354) Exchange
Input [6]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703297]
(355) BroadcastExchange
Input [6]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422]
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=1704299]
(356) Scan parquet
Output [2]: [marketUnit#1101423, distributionCenters#1101429]
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>>>>>
(357) Filter
Input [2]: [marketUnit#1101423, distributionCenters#1101429]
Condition : (((marketUnit#1101423 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1101429, true) > 0)) AND isnotnull(distributionCenters#1101429))
(358) Project
Output [1]: [distributionCenters#1101429]
Input [2]: [marketUnit#1101423, distributionCenters#1101429]
(359) Exchange
Input [1]: [distributionCenters#1101429]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703301]
(360) Generate
Input [1]: [distributionCenters#1101429]
Arguments: explode(distributionCenters#1101429), false, [distributionCenters#1101444]
(361) Filter
Input [1]: [distributionCenters#1101444]
Condition : (((size(distributionCenters#1101444.storageLocations, true) > 0) AND isnotnull(distributionCenters#1101444.storageLocations)) AND isnotnull(distributionCenters#1101444.internalRefUUID))
(362) Project
Output [2]: [distributionCenters#1101444.internalRefUUID AS _extract_internalRefUUID#1106903, distributionCenters#1101444.storageLocations AS _extract_storageLocations#1106904]
Input [1]: [distributionCenters#1101444]
(363) Generate
Input [2]: [_extract_internalRefUUID#1106903, _extract_storageLocations#1106904]
Arguments: explode(_extract_storageLocations#1106904), [_extract_internalRefUUID#1106903], false, [storageLocations#1101445]
(364) Project
Output [3]: [_extract_internalRefUUID#1106903 AS plantUuid#1101447, storageLocations#1101445.id AS storageLocId#1101448, storageLocations#1101445.internalRefUUID AS storageLocUuid#1101449]
Input [2]: [_extract_internalRefUUID#1106903, storageLocations#1101445]
(365) BroadcastExchange
Input [3]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704295]
(366) Scan parquet
Output [2]: [product#1101450, plant#1101451]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(367) Filter
Input [2]: [product#1101450, plant#1101451]
Condition : isnotnull(plant#1101451)
(368) Exchange
Input [2]: [product#1101450, plant#1101451]
Arguments: hashpartitioning(product#1101450, plant#1101451, 37), REPARTITION_BY_NUM, [plan_id=1703932]
(369) Scan parquet
Output [4]: [plant#1101456, product#1101457, productionAspect#1101459, systemId#1101454]
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>>>>
(370) Project
Output [4]: [plant#1101456.internalRefUUID AS _extract_internalRefUUID#1107175, product#1101457.internalRefUUID AS _extract_internalRefUUID#1107176, productionAspect#1101459.productMovementPlants.unitOfIssue.code AS _extract_code#1107173, productionAspect#1101459.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107174]
Input [4]: [plant#1101456, product#1101457, productionAspect#1101459, systemId#1101454]
(371) Exchange
Input [4]: [_extract_internalRefUUID#1107175, _extract_internalRefUUID#1107176, _extract_code#1107173, _extract_internalRefUUID#1107174]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703313]
(372) Project
Output [4]: [_extract_code#1107173, _extract_internalRefUUID#1107174, _extract_internalRefUUID#1107176, _extract_internalRefUUID#1107175]
Input [4]: [_extract_internalRefUUID#1107175, _extract_internalRefUUID#1107176, _extract_code#1107173, _extract_internalRefUUID#1107174]
(373) BroadcastExchange
Input [4]: [_extract_code#1107173, _extract_internalRefUUID#1107174, _extract_internalRefUUID#1107176, _extract_internalRefUUID#1107175]
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=1704279]
(374) BroadcastHashJoin
Left keys [4]: [coalesce(product#1101450, ), isnull(product#1101450), coalesce(plant#1101451, ), isnull(plant#1101451)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107176, ), isnull(_extract_internalRefUUID#1107176), coalesce(_extract_internalRefUUID#1107175, ), isnull(_extract_internalRefUUID#1107175)]
Join type: LeftOuter
Join condition: None
(375) Project
Output [4]: [product#1101450, plant#1101451, _extract_code#1107173, _extract_internalRefUUID#1107174]
Input [6]: [product#1101450, plant#1101451, _extract_code#1107173, _extract_internalRefUUID#1107174, _extract_internalRefUUID#1107176, _extract_internalRefUUID#1107175]
(376) Scan parquet
Output [4]: [internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471, systemId#1101464]
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>>>
(377) Filter
Input [4]: [internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471, systemId#1101464]
Condition : isnotnull(internalUUID#1101465)
(378) Project
Output [3]: [internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471]
Input [4]: [internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471, systemId#1101464]
(379) Exchange
Input [3]: [internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703320]
(380) BroadcastExchange
Input [3]: [internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704283]
(381) BroadcastHashJoin
Left keys [1]: [product#1101450]
Right keys [1]: [internalUUID#1101465]
Join type: LeftOuter
Join condition: None
(382) Project
Output [2]: [plant#1101451, filter(unitOfMeasureConversions#1101471, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107173) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107174)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101469.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101469.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101476]
Input [7]: [product#1101450, plant#1101451, _extract_code#1107173, _extract_internalRefUUID#1107174, internalUUID#1101465, baseUnitOfMeasure#1101469, unitOfMeasureConversions#1101471]
(383) Generate
Input [2]: [plant#1101451, filteredUnitOfMeasureConversions#1101476]
Arguments: explode(filteredUnitOfMeasureConversions#1101476.quantityNumerator), [plant#1101451, filteredUnitOfMeasureConversions#1101476], true, [quantityNumerator#1101477]
(384) Project
Output [2]: [plant#1101451, filteredUnitOfMeasureConversions#1101476.quantityDenominator AS _extract_quantityDenominator#1106905]
Input [3]: [plant#1101451, filteredUnitOfMeasureConversions#1101476, quantityNumerator#1101477]
(385) Generate
Input [2]: [plant#1101451, _extract_quantityDenominator#1106905]
Arguments: explode(_extract_quantityDenominator#1106905), [plant#1101451], true, [quantityDenominator#1101478]
(386) Project
Output [1]: [plant#1101451]
Input [2]: [plant#1101451, quantityDenominator#1101478]
(387) HashAggregate
Input [1]: [plant#1101451]
Keys [1]: [plant#1101451]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101451]
(388) Exchange
Input [1]: [plant#1101451]
Arguments: hashpartitioning(plant#1101451, 37), ENSURE_REQUIREMENTS, [plan_id=1704292]
(389) HashAggregate
Input [1]: [plant#1101451]
Keys [1]: [plant#1101451]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1101451]
(390) BroadcastHashJoin
Left keys [1]: [plantUuid#1101447]
Right keys [1]: [plant#1101451]
Join type: Inner
Join condition: None
(391) Project
Output [3]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
Input [4]: [plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449, plant#1101451]
(392) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1101420.internalRefUUID, ), isnull(plant#1101420.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1101447, ), isnull(plantUuid#1101447)]
Join type: Inner
Join condition: None
(393) Generate
Input [9]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422, plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
Arguments: explode(filter(stockQuantities#1101422, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1101449) AND (lambda x#1101337.storageLocation.Id = storageLocId#1101448)), lambda x#1101337, false))), [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, plantUuid#1101447], false, [stockQuantity#1101481]
(394) ObjectHashAggregate
Input [7]: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, plantUuid#1101447, stockQuantity#1101481]
Keys [5]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417]
Functions [2]: [partial_first(calculationDateTime#1101421, false), partial_collect_list(stockQuantity#1101481, 0, 0)]
Aggregate Attributes [3]: [first#1108267, valueSet#1108268, buf#1108269]
Results [8]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417, first#1108270, valueSet#1108271, buf#1108272]
(395) ObjectHashAggregate
Input [8]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417, first#1108270, valueSet#1108271, buf#1108272]
Keys [5]: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417]
Functions [2]: [first(calculationDateTime#1101421, false), collect_list(stockQuantity#1101481, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1101421)()#1101352, collect_list(stockQuantity#1101481, 0, 0)#1101353]
Results [4]: [product#1101419, plant#1101420, first(calculationDateTime#1101421)()#1101352 AS calculationDateTime#1101482, collect_list(stockQuantity#1101481, 0, 0)#1101353 AS stockQuantities#1101483]
(396) Filter
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantities#1101483]
Condition : ((size(stockQuantities#1101483, true) > 0) AND isnotnull(calculationDateTime#1101482))
(397) Generate
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantities#1101483]
Arguments: explode(stockQuantities#1101483), [product#1101419, plant#1101420, calculationDateTime#1101482], false, [stockQuantity#1101484]
(398) Filter
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantity#1101484]
Condition : (((isnotnull(stockQuantity#1101484.specialStockIndicator.code) AND isnotnull(stockQuantity#1101484.stockType.code)) AND (stockQuantity#1101484.specialStockIndicator.code = )) AND (stockQuantity#1101484.stockType.code = 01))
(399) Project
Output [4]: [plant#1101420.internalRefUUID AS plantUuid#1101486, product#1101419.internalRefUUID AS productUuid#1101488, calculationDateTime#1101482, stockQuantity#1101484.storagelocation.id AS storageLocId#1101489]
Input [4]: [product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantity#1101484]
(400) Exchange
Input [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: hashpartitioning(productUuid#1101488, plantUuid#1101486, 37), ENSURE_REQUIREMENTS, [plan_id=1704321]
(401) Sort
Input [4]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489]
Arguments: [productUuid#1101488 ASC NULLS FIRST, plantUuid#1101486 ASC NULLS FIRST], false, 0
(402) Scan parquet
Output [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(403) Filter
Input [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
Condition : ((isnotnull(orderDateTime#1101496) AND isnotnull(plant#1101495)) AND isnotnull(product#1101494))
(404) Exchange
Input [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
Arguments: hashpartitioning(product#1101494, plant#1101495, 37), REPARTITION_BY_NUM, [plan_id=1703953]
(405) Scan parquet
Output [4]: [plant#1101500, product#1101501, productionAspect#1101503, systemId#1101498]
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>>>>
(406) Project
Output [4]: [plant#1101500.internalRefUUID AS _extract_internalRefUUID#1107179, product#1101501.internalRefUUID AS _extract_internalRefUUID#1107180, productionAspect#1101503.productMovementPlants.unitOfIssue.code AS _extract_code#1107177, productionAspect#1101503.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107178]
Input [4]: [plant#1101500, product#1101501, productionAspect#1101503, systemId#1101498]
(407) Exchange
Input [4]: [_extract_internalRefUUID#1107179, _extract_internalRefUUID#1107180, _extract_code#1107177, _extract_internalRefUUID#1107178]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703345]
(408) Project
Output [4]: [_extract_code#1107177, _extract_internalRefUUID#1107178, _extract_internalRefUUID#1107180, _extract_internalRefUUID#1107179]
Input [4]: [_extract_internalRefUUID#1107179, _extract_internalRefUUID#1107180, _extract_code#1107177, _extract_internalRefUUID#1107178]
(409) BroadcastExchange
Input [4]: [_extract_code#1107177, _extract_internalRefUUID#1107178, _extract_internalRefUUID#1107180, _extract_internalRefUUID#1107179]
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=1704308]
(410) BroadcastHashJoin
Left keys [4]: [coalesce(product#1101494, ), isnull(product#1101494), coalesce(plant#1101495, ), isnull(plant#1101495)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107180, ), isnull(_extract_internalRefUUID#1107180), coalesce(_extract_internalRefUUID#1107179, ), isnull(_extract_internalRefUUID#1107179)]
Join type: LeftOuter
Join condition: None
(411) Project
Output [5]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_code#1107177, _extract_internalRefUUID#1107178]
Input [7]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_code#1107177, _extract_internalRefUUID#1107178, _extract_internalRefUUID#1107180, _extract_internalRefUUID#1107179]
(412) Scan parquet
Output [4]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515, systemId#1101508]
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>>>
(413) Filter
Input [4]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515, systemId#1101508]
Condition : isnotnull(internalUUID#1101509)
(414) Project
Output [3]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
Input [4]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515, systemId#1101508]
(415) Exchange
Input [3]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703352]
(416) BroadcastExchange
Input [3]: [internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704312]
(417) BroadcastHashJoin
Left keys [1]: [product#1101494]
Right keys [1]: [internalUUID#1101509]
Join type: LeftOuter
Join condition: None
(418) Project
Output [4]: [product#1101494, plant#1101495, orderDateTime#1101496, filter(unitOfMeasureConversions#1101515, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107177) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107178)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101513.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101513.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101520]
Input [8]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_code#1107177, _extract_internalRefUUID#1107178, internalUUID#1101509, baseUnitOfMeasure#1101513, unitOfMeasureConversions#1101515]
(419) Generate
Input [4]: [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520]
Arguments: explode(filteredUnitOfMeasureConversions#1101520.quantityNumerator), [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520], true, [quantityNumerator#1101521]
(420) Project
Output [4]: [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520.quantityDenominator AS _extract_quantityDenominator#1106912]
Input [5]: [product#1101494, plant#1101495, orderDateTime#1101496, filteredUnitOfMeasureConversions#1101520, quantityNumerator#1101521]
(421) Generate
Input [4]: [product#1101494, plant#1101495, orderDateTime#1101496, _extract_quantityDenominator#1106912]
Arguments: explode(_extract_quantityDenominator#1106912), [product#1101494, plant#1101495, orderDateTime#1101496], true, [quantityDenominator#1101522]
(422) Project
Output [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
Input [4]: [product#1101494, plant#1101495, orderDateTime#1101496, quantityDenominator#1101522]
(423) Sort
Input [3]: [product#1101494, plant#1101495, orderDateTime#1101496]
Arguments: [product#1101494 ASC NULLS FIRST, plant#1101495 ASC NULLS FIRST], false, 0
(424) SortMergeJoin
Left keys [2]: [productUuid#1101488, plantUuid#1101486]
Right keys [2]: [product#1101494, plant#1101495]
Join type: Inner
Join condition: (calculationDateTime#1101482 <= orderDateTime#1101496)
(425) Project
Output [4]: [plantUuid#1101486 AS plant#1101525, productUuid#1101488 AS product#1101526, storageLocId#1101489, calculationDateTime#1101482]
Input [7]: [plantUuid#1101486, productUuid#1101488, calculationDateTime#1101482, storageLocId#1101489, product#1101494, plant#1101495, orderDateTime#1101496]
(426) HashAggregate
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, calculationDateTime#1101482]
Keys [3]: [plant#1101525, product#1101526, storageLocId#1101489]
Functions [1]: [partial_max(calculationDateTime#1101482)]
Aggregate Attributes [1]: [max#1108265]
Results [4]: [plant#1101525, product#1101526, storageLocId#1101489, max#1108266]
(427) HashAggregate
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, max#1108266]
Keys [3]: [plant#1101525, product#1101526, storageLocId#1101489]
Functions [1]: [max(calculationDateTime#1101482)]
Aggregate Attributes [1]: [max(calculationDateTime#1101482)#1101416]
Results [4]: [plant#1101525, product#1101526, storageLocId#1101489, max(calculationDateTime#1101482)#1101416 AS max_calc_datetime#1101410]
(428) Exchange
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
Arguments: hashpartitioning(coalesce(plant#1101525, ), isnull(plant#1101525), coalesce(product#1101526, ), isnull(product#1101526), coalesce(storageLocId#1101489, ), isnull(storageLocId#1101489), coalesce(max_calc_datetime#1101410, 1970-01-01 00:00:00), isnull(max_calc_datetime#1101410), 37), ENSURE_REQUIREMENTS, [plan_id=1704331]
(429) Sort
Input [4]: [plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
Arguments: [coalesce(plant#1101525, ) ASC NULLS FIRST, isnull(plant#1101525) ASC NULLS FIRST, coalesce(product#1101526, ) ASC NULLS FIRST, isnull(product#1101526) ASC NULLS FIRST, coalesce(storageLocId#1101489, ) ASC NULLS FIRST, isnull(storageLocId#1101489) ASC NULLS FIRST, coalesce(max_calc_datetime#1101410, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1101410) ASC NULLS FIRST], false, 0
(430) SortMergeJoin
Left keys [8]: [coalesce(plant#1101408, ), isnull(plant#1101408), coalesce(product#1101409, ), isnull(product#1101409), coalesce(storageLocId#1101360, ), isnull(storageLocId#1101360), coalesce(calculationDateTime#1101339, 1970-01-01 00:00:00), isnull(calculationDateTime#1101339)]
Right keys [8]: [coalesce(plant#1101525, ), isnull(plant#1101525), coalesce(product#1101526, ), isnull(product#1101526), coalesce(storageLocId#1101489, ), isnull(storageLocId#1101489), coalesce(max_calc_datetime#1101410, 1970-01-01 00:00:00), isnull(max_calc_datetime#1101410)]
Join type: Inner
Join condition: None
(431) Project
Output [4]: [plant#1101408, product#1101409, calculationDateTime#1101339, quantity#1101362]
Input [9]: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362, plant#1101525, product#1101526, storageLocId#1101489, max_calc_datetime#1101410]
(432) HashAggregate
Input [4]: [plant#1101408, product#1101409, calculationDateTime#1101339, quantity#1101362]
Keys [2]: [product#1101409, plant#1101408]
Functions [2]: [partial_min(calculationDateTime#1101339), partial_sum(quantity#1101362)]
Aggregate Attributes [2]: [min#1108255, sum#1108256]
Results [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
(433) Exchange
Input [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
Arguments: hashpartitioning(product#1101409, plant#1101408, 37), ENSURE_REQUIREMENTS, [plan_id=1704338]
(434) HashAggregate
Input [4]: [product#1101409, plant#1101408, min#1108257, sum#1108258]
Keys [2]: [product#1101409, plant#1101408]
Functions [2]: [min(calculationDateTime#1101339), sum(quantity#1101362)]
Aggregate Attributes [2]: [min(calculationDateTime#1101339)#1101543, sum(quantity#1101362)#1101542]
Results [4]: [product#1101409, plant#1101408, min(calculationDateTime#1101339)#1101543 AS minCalculationDateTime#1101536, round(sum(quantity#1101362)#1101542, 0) AS roundedQuantitySum#1101544]
(435) Sort
Input [4]: [product#1101409, plant#1101408, minCalculationDateTime#1101536, roundedQuantitySum#1101544]
Arguments: [product#1101409 ASC NULLS FIRST, plant#1101408 ASC NULLS FIRST], false, 0
(436) SortMergeJoin
Left keys [2]: [product#1101131, plant#1101132]
Right keys [2]: [product#1101409, plant#1101408]
Join type: LeftOuter
Join condition: None
(437) Project
Output [5]: [product#1101131, plant#1101132, outboundUnit#1101219, CASE WHEN isnotnull(minCalculationDateTime#1101536) THEN minCalculationDateTime#1101536 ELSE orderDateTime#1101133 END AS stockDatetime#1101579, CASE WHEN isnotnull(roundedQuantitySum#1101544) THEN array(roundedQuantitySum#1101544) ELSE [0.0] END AS stockBatchQuantities#1101580]
Input [8]: [product#1101131, plant#1101132, orderDateTime#1101133, outboundUnit#1101219, product#1101409, plant#1101408, minCalculationDateTime#1101536, roundedQuantitySum#1101544]
(438) Exchange
Input [5]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580]
Arguments: hashpartitioning(coalesce(plant#1101132, ), isnull(plant#1101132), coalesce(product#1101131, ), isnull(product#1101131), 37), ENSURE_REQUIREMENTS, [plan_id=1704492]
(439) Sort
Input [5]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580]
Arguments: [coalesce(plant#1101132, ) ASC NULLS FIRST, isnull(plant#1101132) ASC NULLS FIRST, coalesce(product#1101131, ) ASC NULLS FIRST, isnull(product#1101131) ASC NULLS FIRST], false, 0
(440) Scan parquet
Output [3]: [product#1102699, plant#1102700, orderDateTime#1102701]
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/10000000350/shardId=0_1_10000000350]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(441) Exchange
Input [3]: [product#1102699, plant#1102700, orderDateTime#1102701]
Arguments: hashpartitioning(product#1102699, plant#1102700, 37), REPARTITION_BY_NUM, [plan_id=1703370]
(442) Project
Output [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
Input [9]: [internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711, systemId#1102703]
(443) Exchange
Input [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703373]
(444) Project
Output [1]: [struct(systemId, systemId#1102703, internalUUID, internalUUID#1102704, plant, plant#1102705, product, product#1102706, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102707, productionAspect, productionAspect#1102708, salesPlant, salesPlant#1102709, listing, listing#1102710, sourceOfSupplyCategory, sourceOfSupplyCategory#1102711) AS productPlant#1102712]
Input [9]: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711]
(445) BroadcastExchange
Input [1]: [productPlant#1102712]
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=1704346]
(446) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102699, ), isnull(product#1102699), coalesce(plant#1102700, ), isnull(plant#1102700)]
Right keys [4]: [coalesce(productPlant#1102712.product.internalRefUUID, ), isnull(productPlant#1102712.product.internalRefUUID), coalesce(productPlant#1102712.plant.internalRefUUID, ), isnull(productPlant#1102712.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(447) Scan parquet
Output [4]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720, systemId#1102713]
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>>>
(448) Filter
Input [4]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720, systemId#1102713]
Condition : isnotnull(internalUUID#1102714)
(449) Project
Output [3]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
Input [4]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720, systemId#1102713]
(450) Exchange
Input [3]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703379]
(451) BroadcastExchange
Input [3]: [internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704349]
(452) BroadcastHashJoin
Left keys [1]: [product#1102699]
Right keys [1]: [internalUUID#1102714]
Join type: LeftOuter
Join condition: None
(453) Project
Output [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, filter(unitOfMeasureConversions#1102720, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102718.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102718.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102725]
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, internalUUID#1102714, baseUnitOfMeasure#1102718, unitOfMeasureConversions#1102720]
(454) Project
Output [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, filteredUnitOfMeasureConversions#1102725.quantityDenominator AS _extract_quantityDenominator#1107181, filteredUnitOfMeasureConversions#1102725.quantityNumerator AS _extract_quantityNumerator#1107182]
Input [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, filteredUnitOfMeasureConversions#1102725]
(455) Generate
Input [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, _extract_quantityDenominator#1107181, _extract_quantityNumerator#1107182]
Arguments: explode(_extract_quantityNumerator#1107182), [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, _extract_quantityDenominator#1107181], true, [quantityNumerator#1102726]
(456) Generate
Input [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, _extract_quantityDenominator#1107181, quantityNumerator#1102726]
Arguments: explode(_extract_quantityDenominator#1107181), [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, quantityNumerator#1102726], true, [quantityDenominator#1102727]
(457) Project
Output [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, (cast(quantityNumerator#1102726 as double) / cast(quantityDenominator#1102727 as double)) AS outboundUnit#1102728]
Input [6]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, quantityNumerator#1102726, quantityDenominator#1102727]
(458) Project
Output [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, CASE WHEN (isnull(outboundUnit#1102728) OR (outboundUnit#1102728 <= 0.0)) THEN 1.0 ELSE outboundUnit#1102728 END AS outboundUnit#1102729]
Input [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102728]
(459) Sort
Input [5]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729]
Arguments: [product#1102699 ASC NULLS FIRST, plant#1102700 ASC NULLS FIRST], false, 0
(460) Scan parquet
Output [6]: [internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735, systemId#1102730]
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>>>>>
(461) Filter
Input [6]: [internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735, systemId#1102730]
Condition : (isnotnull(plant#1102733.internalRefUUID) AND isnotnull(product#1102732.internalRefUUID))
(462) Project
Output [6]: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735]
Input [6]: [internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735, systemId#1102730]
(463) Exchange
Input [6]: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703390]
(464) BroadcastExchange
Input [6]: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735]
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=1704377]
(465) Scan parquet
Output [2]: [marketUnit#1102736, distributionCenters#1102742]
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>>>>>
(466) Filter
Input [2]: [marketUnit#1102736, distributionCenters#1102742]
Condition : (((marketUnit#1102736 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1102742, true) > 0)) AND isnotnull(distributionCenters#1102742))
(467) Project
Output [1]: [distributionCenters#1102742]
Input [2]: [marketUnit#1102736, distributionCenters#1102742]
(468) Exchange
Input [1]: [distributionCenters#1102742]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703394]
(469) Generate
Input [1]: [distributionCenters#1102742]
Arguments: explode(distributionCenters#1102742), false, [distributionCenters#1102757]
(470) Filter
Input [1]: [distributionCenters#1102757]
Condition : (((size(distributionCenters#1102757.storageLocations, true) > 0) AND isnotnull(distributionCenters#1102757.storageLocations)) AND isnotnull(distributionCenters#1102757.internalRefUUID))
(471) Project
Output [2]: [distributionCenters#1102757.internalRefUUID AS _extract_internalRefUUID#1106920, distributionCenters#1102757.storageLocations AS _extract_storageLocations#1106921]
Input [1]: [distributionCenters#1102757]
(472) Generate
Input [2]: [_extract_internalRefUUID#1106920, _extract_storageLocations#1106921]
Arguments: explode(_extract_storageLocations#1106921), [_extract_internalRefUUID#1106920], false, [storageLocations#1102758]
(473) Project
Output [3]: [_extract_internalRefUUID#1106920 AS plantUuid#1102760, storageLocations#1102758.id AS storageLocId#1102761, storageLocations#1102758.internalRefUUID AS storageLocUuid#1102762]
Input [2]: [_extract_internalRefUUID#1106920, storageLocations#1102758]
(474) BroadcastExchange
Input [3]: [plantUuid#1102760, storageLocId#1102761, storageLocUuid#1102762]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704373]
(475) Scan parquet
Output [2]: [product#1102763, plant#1102764]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(476) Filter
Input [2]: [product#1102763, plant#1102764]
Condition : isnotnull(plant#1102764)
(477) Exchange
Input [2]: [product#1102763, plant#1102764]
Arguments: hashpartitioning(product#1102763, plant#1102764, 37), REPARTITION_BY_NUM, [plan_id=1703972]
(478) Scan parquet
Output [4]: [plant#1102769, product#1102770, productionAspect#1102772, systemId#1102767]
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>>>>
(479) Project
Output [4]: [plant#1102769.internalRefUUID AS _extract_internalRefUUID#1107183, product#1102770.internalRefUUID AS _extract_internalRefUUID#1107186, productionAspect#1102772.productMovementPlants.unitOfIssue.code AS _extract_code#1107184, productionAspect#1102772.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107185]
Input [4]: [plant#1102769, product#1102770, productionAspect#1102772, systemId#1102767]
(480) Exchange
Input [4]: [_extract_internalRefUUID#1107183, _extract_internalRefUUID#1107186, _extract_code#1107184, _extract_internalRefUUID#1107185]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703406]
(481) Project
Output [4]: [_extract_code#1107184, _extract_internalRefUUID#1107185, _extract_internalRefUUID#1107186, _extract_internalRefUUID#1107183]
Input [4]: [_extract_internalRefUUID#1107183, _extract_internalRefUUID#1107186, _extract_code#1107184, _extract_internalRefUUID#1107185]
(482) BroadcastExchange
Input [4]: [_extract_code#1107184, _extract_internalRefUUID#1107185, _extract_internalRefUUID#1107186, _extract_internalRefUUID#1107183]
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=1704357]
(483) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102763, ), isnull(product#1102763), coalesce(plant#1102764, ), isnull(plant#1102764)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107186, ), isnull(_extract_internalRefUUID#1107186), coalesce(_extract_internalRefUUID#1107183, ), isnull(_extract_internalRefUUID#1107183)]
Join type: LeftOuter
Join condition: None
(484) Project
Output [4]: [product#1102763, plant#1102764, _extract_code#1107184, _extract_internalRefUUID#1107185]
Input [6]: [product#1102763, plant#1102764, _extract_code#1107184, _extract_internalRefUUID#1107185, _extract_internalRefUUID#1107186, _extract_internalRefUUID#1107183]
(485) Scan parquet
Output [4]: [internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784, systemId#1102777]
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>>>
(486) Filter
Input [4]: [internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784, systemId#1102777]
Condition : isnotnull(internalUUID#1102778)
(487) Project
Output [3]: [internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784]
Input [4]: [internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784, systemId#1102777]
(488) Exchange
Input [3]: [internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703413]
(489) BroadcastExchange
Input [3]: [internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704361]
(490) BroadcastHashJoin
Left keys [1]: [product#1102763]
Right keys [1]: [internalUUID#1102778]
Join type: LeftOuter
Join condition: None
(491) Project
Output [2]: [plant#1102764, filter(unitOfMeasureConversions#1102784, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107184) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107185)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102782.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102782.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102789]
Input [7]: [product#1102763, plant#1102764, _extract_code#1107184, _extract_internalRefUUID#1107185, internalUUID#1102778, baseUnitOfMeasure#1102782, unitOfMeasureConversions#1102784]
(492) Generate
Input [2]: [plant#1102764, filteredUnitOfMeasureConversions#1102789]
Arguments: explode(filteredUnitOfMeasureConversions#1102789.quantityNumerator), [plant#1102764, filteredUnitOfMeasureConversions#1102789], true, [quantityNumerator#1102790]
(493) Project
Output [2]: [plant#1102764, filteredUnitOfMeasureConversions#1102789.quantityDenominator AS _extract_quantityDenominator#1106922]
Input [3]: [plant#1102764, filteredUnitOfMeasureConversions#1102789, quantityNumerator#1102790]
(494) Generate
Input [2]: [plant#1102764, _extract_quantityDenominator#1106922]
Arguments: explode(_extract_quantityDenominator#1106922), [plant#1102764], true, [quantityDenominator#1102791]
(495) Project
Output [1]: [plant#1102764]
Input [2]: [plant#1102764, quantityDenominator#1102791]
(496) HashAggregate
Input [1]: [plant#1102764]
Keys [1]: [plant#1102764]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1102764]
(497) Exchange
Input [1]: [plant#1102764]
Arguments: hashpartitioning(plant#1102764, 37), ENSURE_REQUIREMENTS, [plan_id=1704370]
(498) HashAggregate
Input [1]: [plant#1102764]
Keys [1]: [plant#1102764]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1102764]
(499) BroadcastHashJoin
Left keys [1]: [plantUuid#1102760]
Right keys [1]: [plant#1102764]
Join type: Inner
Join condition: None
(500) Project
Output [3]: [plantUuid#1102760, storageLocId#1102761, storageLocUuid#1102762]
Input [4]: [plantUuid#1102760, storageLocId#1102761, storageLocUuid#1102762, plant#1102764]
(501) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1102733.internalRefUUID, ), isnull(plant#1102733.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1102760, ), isnull(plantUuid#1102760)]
Join type: Inner
Join condition: None
(502) Generate
Input [9]: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735, plantUuid#1102760, storageLocId#1102761, storageLocUuid#1102762]
Arguments: explode(filter(stockQuantities#1102735, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1102762) AND (lambda x#1101337.storageLocation.Id = storageLocId#1102761)), lambda x#1101337, false))), [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, plantUuid#1102760], false, [stockQuantity#1102794]
(503) ObjectHashAggregate
Input [7]: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, plantUuid#1102760, stockQuantity#1102794]
Keys [5]: [plantUuid#1102760, internalUUID#1102731, plant#1102733, product#1102732, systemId#1102730]
Functions [2]: [partial_first(calculationDateTime#1102734, false), partial_collect_list(stockQuantity#1102794, 0, 0)]
Aggregate Attributes [3]: [first#1108281, valueSet#1108282, buf#1108283]
Results [8]: [plantUuid#1102760, internalUUID#1102731, plant#1102733, product#1102732, systemId#1102730, first#1108284, valueSet#1108285, buf#1108286]
(504) ObjectHashAggregate
Input [8]: [plantUuid#1102760, internalUUID#1102731, plant#1102733, product#1102732, systemId#1102730, first#1108284, valueSet#1108285, buf#1108286]
Keys [5]: [plantUuid#1102760, internalUUID#1102731, plant#1102733, product#1102732, systemId#1102730]
Functions [2]: [first(calculationDateTime#1102734, false), collect_list(stockQuantity#1102794, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1102734)()#1101352, collect_list(stockQuantity#1102794, 0, 0)#1101353]
Results [4]: [product#1102732, plant#1102733, first(calculationDateTime#1102734)()#1101352 AS calculationDateTime#1102795, collect_list(stockQuantity#1102794, 0, 0)#1101353 AS stockQuantities#1102796]
(505) Filter
Input [4]: [product#1102732, plant#1102733, calculationDateTime#1102795, stockQuantities#1102796]
Condition : ((size(stockQuantities#1102796, true) > 0) AND isnotnull(calculationDateTime#1102795))
(506) Generate
Input [4]: [product#1102732, plant#1102733, calculationDateTime#1102795, stockQuantities#1102796]
Arguments: explode(stockQuantities#1102796), [product#1102732, plant#1102733, calculationDateTime#1102795], false, [stockQuantity#1102797]
(507) Filter
Input [4]: [product#1102732, plant#1102733, calculationDateTime#1102795, stockQuantity#1102797]
Condition : (((isnotnull(stockQuantity#1102797.specialStockIndicator.code) AND isnotnull(stockQuantity#1102797.stockType.code)) AND (stockQuantity#1102797.specialStockIndicator.code = )) AND (stockQuantity#1102797.stockType.code = 01))
(508) Project
Output [5]: [plant#1102733.internalRefUUID AS plantUuid#1102799, product#1102732.internalRefUUID AS productUuid#1102801, calculationDateTime#1102795, stockQuantity#1102797.storagelocation.id AS storageLocId#1102802, stockQuantity#1102797.quantity.measure AS quantity#1102804]
Input [4]: [product#1102732, plant#1102733, calculationDateTime#1102795, stockQuantity#1102797]
(509) Exchange
Input [5]: [plantUuid#1102799, productUuid#1102801, calculationDateTime#1102795, storageLocId#1102802, quantity#1102804]
Arguments: hashpartitioning(productUuid#1102801, plantUuid#1102799, 37), ENSURE_REQUIREMENTS, [plan_id=1704399]
(510) Sort
Input [5]: [plantUuid#1102799, productUuid#1102801, calculationDateTime#1102795, storageLocId#1102802, quantity#1102804]
Arguments: [productUuid#1102801 ASC NULLS FIRST, plantUuid#1102799 ASC NULLS FIRST], false, 0
(511) Scan parquet
Output [3]: [product#1102807, plant#1102808, orderDateTime#1102809]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(512) Filter
Input [3]: [product#1102807, plant#1102808, orderDateTime#1102809]
Condition : ((isnotnull(orderDateTime#1102809) AND isnotnull(plant#1102808)) AND isnotnull(product#1102807))
(513) Exchange
Input [3]: [product#1102807, plant#1102808, orderDateTime#1102809]
Arguments: hashpartitioning(product#1102807, plant#1102808, 37), REPARTITION_BY_NUM, [plan_id=1703993]
(514) Scan parquet
Output [4]: [plant#1102813, product#1102814, productionAspect#1102816, systemId#1102811]
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>>>>
(515) Project
Output [4]: [plant#1102813.internalRefUUID AS _extract_internalRefUUID#1107187, product#1102814.internalRefUUID AS _extract_internalRefUUID#1107190, productionAspect#1102816.productMovementPlants.unitOfIssue.code AS _extract_code#1107188, productionAspect#1102816.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107189]
Input [4]: [plant#1102813, product#1102814, productionAspect#1102816, systemId#1102811]
(516) Exchange
Input [4]: [_extract_internalRefUUID#1107187, _extract_internalRefUUID#1107190, _extract_code#1107188, _extract_internalRefUUID#1107189]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703438]
(517) Project
Output [4]: [_extract_code#1107188, _extract_internalRefUUID#1107189, _extract_internalRefUUID#1107190, _extract_internalRefUUID#1107187]
Input [4]: [_extract_internalRefUUID#1107187, _extract_internalRefUUID#1107190, _extract_code#1107188, _extract_internalRefUUID#1107189]
(518) BroadcastExchange
Input [4]: [_extract_code#1107188, _extract_internalRefUUID#1107189, _extract_internalRefUUID#1107190, _extract_internalRefUUID#1107187]
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=1704386]
(519) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102807, ), isnull(product#1102807), coalesce(plant#1102808, ), isnull(plant#1102808)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107190, ), isnull(_extract_internalRefUUID#1107190), coalesce(_extract_internalRefUUID#1107187, ), isnull(_extract_internalRefUUID#1107187)]
Join type: LeftOuter
Join condition: None
(520) Project
Output [5]: [product#1102807, plant#1102808, orderDateTime#1102809, _extract_code#1107188, _extract_internalRefUUID#1107189]
Input [7]: [product#1102807, plant#1102808, orderDateTime#1102809, _extract_code#1107188, _extract_internalRefUUID#1107189, _extract_internalRefUUID#1107190, _extract_internalRefUUID#1107187]
(521) Scan parquet
Output [4]: [internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828, systemId#1102821]
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>>>
(522) Filter
Input [4]: [internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828, systemId#1102821]
Condition : isnotnull(internalUUID#1102822)
(523) Project
Output [3]: [internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828]
Input [4]: [internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828, systemId#1102821]
(524) Exchange
Input [3]: [internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703445]
(525) BroadcastExchange
Input [3]: [internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704390]
(526) BroadcastHashJoin
Left keys [1]: [product#1102807]
Right keys [1]: [internalUUID#1102822]
Join type: LeftOuter
Join condition: None
(527) Project
Output [4]: [product#1102807, plant#1102808, orderDateTime#1102809, filter(unitOfMeasureConversions#1102828, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107188) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107189)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102826.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102826.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102833]
Input [8]: [product#1102807, plant#1102808, orderDateTime#1102809, _extract_code#1107188, _extract_internalRefUUID#1107189, internalUUID#1102822, baseUnitOfMeasure#1102826, unitOfMeasureConversions#1102828]
(528) Generate
Input [4]: [product#1102807, plant#1102808, orderDateTime#1102809, filteredUnitOfMeasureConversions#1102833]
Arguments: explode(filteredUnitOfMeasureConversions#1102833.quantityNumerator), [product#1102807, plant#1102808, orderDateTime#1102809, filteredUnitOfMeasureConversions#1102833], true, [quantityNumerator#1102834]
(529) Project
Output [4]: [product#1102807, plant#1102808, orderDateTime#1102809, filteredUnitOfMeasureConversions#1102833.quantityDenominator AS _extract_quantityDenominator#1106929]
Input [5]: [product#1102807, plant#1102808, orderDateTime#1102809, filteredUnitOfMeasureConversions#1102833, quantityNumerator#1102834]
(530) Generate
Input [4]: [product#1102807, plant#1102808, orderDateTime#1102809, _extract_quantityDenominator#1106929]
Arguments: explode(_extract_quantityDenominator#1106929), [product#1102807, plant#1102808, orderDateTime#1102809], true, [quantityDenominator#1102835]
(531) Project
Output [3]: [product#1102807, plant#1102808, orderDateTime#1102809]
Input [4]: [product#1102807, plant#1102808, orderDateTime#1102809, quantityDenominator#1102835]
(532) Sort
Input [3]: [product#1102807, plant#1102808, orderDateTime#1102809]
Arguments: [product#1102807 ASC NULLS FIRST, plant#1102808 ASC NULLS FIRST], false, 0
(533) SortMergeJoin
Left keys [2]: [productUuid#1102801, plantUuid#1102799]
Right keys [2]: [product#1102807, plant#1102808]
Join type: Inner
Join condition: (calculationDateTime#1102795 <= orderDateTime#1102809)
(534) Project
Output [5]: [plantUuid#1102799 AS plant#1102838, productUuid#1102801 AS product#1102839, storageLocId#1102802, calculationDateTime#1102795, quantity#1102804]
Input [8]: [plantUuid#1102799, productUuid#1102801, calculationDateTime#1102795, storageLocId#1102802, quantity#1102804, product#1102807, plant#1102808, orderDateTime#1102809]
(535) Exchange
Input [5]: [plant#1102838, product#1102839, storageLocId#1102802, calculationDateTime#1102795, quantity#1102804]
Arguments: hashpartitioning(coalesce(plant#1102838, ), isnull(plant#1102838), coalesce(product#1102839, ), isnull(product#1102839), coalesce(storageLocId#1102802, ), isnull(storageLocId#1102802), coalesce(calculationDateTime#1102795, 1970-01-01 00:00:00), isnull(calculationDateTime#1102795), 37), ENSURE_REQUIREMENTS, [plan_id=1704455]
(536) Sort
Input [5]: [plant#1102838, product#1102839, storageLocId#1102802, calculationDateTime#1102795, quantity#1102804]
Arguments: [coalesce(plant#1102838, ) ASC NULLS FIRST, isnull(plant#1102838) ASC NULLS FIRST, coalesce(product#1102839, ) ASC NULLS FIRST, isnull(product#1102839) ASC NULLS FIRST, coalesce(storageLocId#1102802, ) ASC NULLS FIRST, isnull(storageLocId#1102802) ASC NULLS FIRST, coalesce(calculationDateTime#1102795, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1102795) ASC NULLS FIRST], false, 0
(537) Scan parquet
Output [6]: [internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845, systemId#1102840]
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>>>>>
(538) Filter
Input [6]: [internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845, systemId#1102840]
Condition : (isnotnull(plant#1102843.internalRefUUID) AND isnotnull(product#1102842.internalRefUUID))
(539) Project
Output [6]: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845]
Input [6]: [internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845, systemId#1102840]
(540) Exchange
Input [6]: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703457]
(541) BroadcastExchange
Input [6]: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845]
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=1704424]
(542) Scan parquet
Output [2]: [marketUnit#1102846, distributionCenters#1102852]
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>>>>>
(543) Filter
Input [2]: [marketUnit#1102846, distributionCenters#1102852]
Condition : (((marketUnit#1102846 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1102852, true) > 0)) AND isnotnull(distributionCenters#1102852))
(544) Project
Output [1]: [distributionCenters#1102852]
Input [2]: [marketUnit#1102846, distributionCenters#1102852]
(545) Exchange
Input [1]: [distributionCenters#1102852]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703461]
(546) Generate
Input [1]: [distributionCenters#1102852]
Arguments: explode(distributionCenters#1102852), false, [distributionCenters#1102867]
(547) Filter
Input [1]: [distributionCenters#1102867]
Condition : (((size(distributionCenters#1102867.storageLocations, true) > 0) AND isnotnull(distributionCenters#1102867.storageLocations)) AND isnotnull(distributionCenters#1102867.internalRefUUID))
(548) Project
Output [2]: [distributionCenters#1102867.internalRefUUID AS _extract_internalRefUUID#1106936, distributionCenters#1102867.storageLocations AS _extract_storageLocations#1106937]
Input [1]: [distributionCenters#1102867]
(549) Generate
Input [2]: [_extract_internalRefUUID#1106936, _extract_storageLocations#1106937]
Arguments: explode(_extract_storageLocations#1106937), [_extract_internalRefUUID#1106936], false, [storageLocations#1102868]
(550) Project
Output [3]: [_extract_internalRefUUID#1106936 AS plantUuid#1102870, storageLocations#1102868.id AS storageLocId#1102871, storageLocations#1102868.internalRefUUID AS storageLocUuid#1102872]
Input [2]: [_extract_internalRefUUID#1106936, storageLocations#1102868]
(551) BroadcastExchange
Input [3]: [plantUuid#1102870, storageLocId#1102871, storageLocUuid#1102872]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704420]
(552) Scan parquet
Output [2]: [product#1102873, plant#1102874]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(553) Filter
Input [2]: [product#1102873, plant#1102874]
Condition : isnotnull(plant#1102874)
(554) Exchange
Input [2]: [product#1102873, plant#1102874]
Arguments: hashpartitioning(product#1102873, plant#1102874, 37), REPARTITION_BY_NUM, [plan_id=1704004]
(555) Scan parquet
Output [4]: [plant#1102879, product#1102880, productionAspect#1102882, systemId#1102877]
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>>>>
(556) Project
Output [4]: [plant#1102879.internalRefUUID AS _extract_internalRefUUID#1107191, product#1102880.internalRefUUID AS _extract_internalRefUUID#1107192, productionAspect#1102882.productMovementPlants.unitOfIssue.code AS _extract_code#1107193, productionAspect#1102882.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107194]
Input [4]: [plant#1102879, product#1102880, productionAspect#1102882, systemId#1102877]
(557) Exchange
Input [4]: [_extract_internalRefUUID#1107191, _extract_internalRefUUID#1107192, _extract_code#1107193, _extract_internalRefUUID#1107194]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703473]
(558) Project
Output [4]: [_extract_code#1107193, _extract_internalRefUUID#1107194, _extract_internalRefUUID#1107192, _extract_internalRefUUID#1107191]
Input [4]: [_extract_internalRefUUID#1107191, _extract_internalRefUUID#1107192, _extract_code#1107193, _extract_internalRefUUID#1107194]
(559) BroadcastExchange
Input [4]: [_extract_code#1107193, _extract_internalRefUUID#1107194, _extract_internalRefUUID#1107192, _extract_internalRefUUID#1107191]
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=1704404]
(560) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102873, ), isnull(product#1102873), coalesce(plant#1102874, ), isnull(plant#1102874)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107192, ), isnull(_extract_internalRefUUID#1107192), coalesce(_extract_internalRefUUID#1107191, ), isnull(_extract_internalRefUUID#1107191)]
Join type: LeftOuter
Join condition: None
(561) Project
Output [4]: [product#1102873, plant#1102874, _extract_code#1107193, _extract_internalRefUUID#1107194]
Input [6]: [product#1102873, plant#1102874, _extract_code#1107193, _extract_internalRefUUID#1107194, _extract_internalRefUUID#1107192, _extract_internalRefUUID#1107191]
(562) Scan parquet
Output [4]: [internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894, systemId#1102887]
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>>>
(563) Filter
Input [4]: [internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894, systemId#1102887]
Condition : isnotnull(internalUUID#1102888)
(564) Project
Output [3]: [internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894]
Input [4]: [internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894, systemId#1102887]
(565) Exchange
Input [3]: [internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703480]
(566) BroadcastExchange
Input [3]: [internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704408]
(567) BroadcastHashJoin
Left keys [1]: [product#1102873]
Right keys [1]: [internalUUID#1102888]
Join type: LeftOuter
Join condition: None
(568) Project
Output [2]: [plant#1102874, filter(unitOfMeasureConversions#1102894, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107193) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107194)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102892.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102892.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102899]
Input [7]: [product#1102873, plant#1102874, _extract_code#1107193, _extract_internalRefUUID#1107194, internalUUID#1102888, baseUnitOfMeasure#1102892, unitOfMeasureConversions#1102894]
(569) Generate
Input [2]: [plant#1102874, filteredUnitOfMeasureConversions#1102899]
Arguments: explode(filteredUnitOfMeasureConversions#1102899.quantityNumerator), [plant#1102874, filteredUnitOfMeasureConversions#1102899], true, [quantityNumerator#1102900]
(570) Project
Output [2]: [plant#1102874, filteredUnitOfMeasureConversions#1102899.quantityDenominator AS _extract_quantityDenominator#1106938]
Input [3]: [plant#1102874, filteredUnitOfMeasureConversions#1102899, quantityNumerator#1102900]
(571) Generate
Input [2]: [plant#1102874, _extract_quantityDenominator#1106938]
Arguments: explode(_extract_quantityDenominator#1106938), [plant#1102874], true, [quantityDenominator#1102901]
(572) Project
Output [1]: [plant#1102874]
Input [2]: [plant#1102874, quantityDenominator#1102901]
(573) HashAggregate
Input [1]: [plant#1102874]
Keys [1]: [plant#1102874]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1102874]
(574) Exchange
Input [1]: [plant#1102874]
Arguments: hashpartitioning(plant#1102874, 37), ENSURE_REQUIREMENTS, [plan_id=1704417]
(575) HashAggregate
Input [1]: [plant#1102874]
Keys [1]: [plant#1102874]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1102874]
(576) BroadcastHashJoin
Left keys [1]: [plantUuid#1102870]
Right keys [1]: [plant#1102874]
Join type: Inner
Join condition: None
(577) Project
Output [3]: [plantUuid#1102870, storageLocId#1102871, storageLocUuid#1102872]
Input [4]: [plantUuid#1102870, storageLocId#1102871, storageLocUuid#1102872, plant#1102874]
(578) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1102843.internalRefUUID, ), isnull(plant#1102843.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1102870, ), isnull(plantUuid#1102870)]
Join type: Inner
Join condition: None
(579) Generate
Input [9]: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845, plantUuid#1102870, storageLocId#1102871, storageLocUuid#1102872]
Arguments: explode(filter(stockQuantities#1102845, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1102872) AND (lambda x#1101337.storageLocation.Id = storageLocId#1102871)), lambda x#1101337, false))), [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, plantUuid#1102870], false, [stockQuantity#1102904]
(580) ObjectHashAggregate
Input [7]: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, plantUuid#1102870, stockQuantity#1102904]
Keys [5]: [plantUuid#1102870, internalUUID#1102841, plant#1102843, product#1102842, systemId#1102840]
Functions [2]: [partial_first(calculationDateTime#1102844, false), partial_collect_list(stockQuantity#1102904, 0, 0)]
Aggregate Attributes [3]: [first#1108289, valueSet#1108290, buf#1108291]
Results [8]: [plantUuid#1102870, internalUUID#1102841, plant#1102843, product#1102842, systemId#1102840, first#1108292, valueSet#1108293, buf#1108294]
(581) ObjectHashAggregate
Input [8]: [plantUuid#1102870, internalUUID#1102841, plant#1102843, product#1102842, systemId#1102840, first#1108292, valueSet#1108293, buf#1108294]
Keys [5]: [plantUuid#1102870, internalUUID#1102841, plant#1102843, product#1102842, systemId#1102840]
Functions [2]: [first(calculationDateTime#1102844, false), collect_list(stockQuantity#1102904, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1102844)()#1101352, collect_list(stockQuantity#1102904, 0, 0)#1101353]
Results [4]: [product#1102842, plant#1102843, first(calculationDateTime#1102844)()#1101352 AS calculationDateTime#1102905, collect_list(stockQuantity#1102904, 0, 0)#1101353 AS stockQuantities#1102906]
(582) Filter
Input [4]: [product#1102842, plant#1102843, calculationDateTime#1102905, stockQuantities#1102906]
Condition : ((size(stockQuantities#1102906, true) > 0) AND isnotnull(calculationDateTime#1102905))
(583) Generate
Input [4]: [product#1102842, plant#1102843, calculationDateTime#1102905, stockQuantities#1102906]
Arguments: explode(stockQuantities#1102906), [product#1102842, plant#1102843, calculationDateTime#1102905], false, [stockQuantity#1102907]
(584) Filter
Input [4]: [product#1102842, plant#1102843, calculationDateTime#1102905, stockQuantity#1102907]
Condition : (((isnotnull(stockQuantity#1102907.specialStockIndicator.code) AND isnotnull(stockQuantity#1102907.stockType.code)) AND (stockQuantity#1102907.specialStockIndicator.code = )) AND (stockQuantity#1102907.stockType.code = 01))
(585) Project
Output [4]: [plant#1102843.internalRefUUID AS plantUuid#1102909, product#1102842.internalRefUUID AS productUuid#1102911, calculationDateTime#1102905, stockQuantity#1102907.storagelocation.id AS storageLocId#1102912]
Input [4]: [product#1102842, plant#1102843, calculationDateTime#1102905, stockQuantity#1102907]
(586) Exchange
Input [4]: [plantUuid#1102909, productUuid#1102911, calculationDateTime#1102905, storageLocId#1102912]
Arguments: hashpartitioning(productUuid#1102911, plantUuid#1102909, 37), ENSURE_REQUIREMENTS, [plan_id=1704446]
(587) Sort
Input [4]: [plantUuid#1102909, productUuid#1102911, calculationDateTime#1102905, storageLocId#1102912]
Arguments: [productUuid#1102911 ASC NULLS FIRST, plantUuid#1102909 ASC NULLS FIRST], false, 0
(588) Scan parquet
Output [3]: [product#1102917, plant#1102918, orderDateTime#1102919]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(589) Filter
Input [3]: [product#1102917, plant#1102918, orderDateTime#1102919]
Condition : ((isnotnull(orderDateTime#1102919) AND isnotnull(plant#1102918)) AND isnotnull(product#1102917))
(590) Exchange
Input [3]: [product#1102917, plant#1102918, orderDateTime#1102919]
Arguments: hashpartitioning(product#1102917, plant#1102918, 37), REPARTITION_BY_NUM, [plan_id=1704025]
(591) Scan parquet
Output [4]: [plant#1102923, product#1102924, productionAspect#1102926, systemId#1102921]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(592) Project
Output [4]: [plant#1102923.internalRefUUID AS _extract_internalRefUUID#1107198, product#1102924.internalRefUUID AS _extract_internalRefUUID#1107197, productionAspect#1102926.productMovementPlants.unitOfIssue.code AS _extract_code#1107195, productionAspect#1102926.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107196]
Input [4]: [plant#1102923, product#1102924, productionAspect#1102926, systemId#1102921]
(593) Exchange
Input [4]: [_extract_internalRefUUID#1107198, _extract_internalRefUUID#1107197, _extract_code#1107195, _extract_internalRefUUID#1107196]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703505]
(594) Project
Output [4]: [_extract_code#1107195, _extract_internalRefUUID#1107196, _extract_internalRefUUID#1107197, _extract_internalRefUUID#1107198]
Input [4]: [_extract_internalRefUUID#1107198, _extract_internalRefUUID#1107197, _extract_code#1107195, _extract_internalRefUUID#1107196]
(595) BroadcastExchange
Input [4]: [_extract_code#1107195, _extract_internalRefUUID#1107196, _extract_internalRefUUID#1107197, _extract_internalRefUUID#1107198]
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=1704433]
(596) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102917, ), isnull(product#1102917), coalesce(plant#1102918, ), isnull(plant#1102918)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107197, ), isnull(_extract_internalRefUUID#1107197), coalesce(_extract_internalRefUUID#1107198, ), isnull(_extract_internalRefUUID#1107198)]
Join type: LeftOuter
Join condition: None
(597) Project
Output [5]: [product#1102917, plant#1102918, orderDateTime#1102919, _extract_code#1107195, _extract_internalRefUUID#1107196]
Input [7]: [product#1102917, plant#1102918, orderDateTime#1102919, _extract_code#1107195, _extract_internalRefUUID#1107196, _extract_internalRefUUID#1107197, _extract_internalRefUUID#1107198]
(598) Scan parquet
Output [4]: [internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938, systemId#1102931]
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>>>
(599) Filter
Input [4]: [internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938, systemId#1102931]
Condition : isnotnull(internalUUID#1102932)
(600) Project
Output [3]: [internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938]
Input [4]: [internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938, systemId#1102931]
(601) Exchange
Input [3]: [internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703512]
(602) BroadcastExchange
Input [3]: [internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704437]
(603) BroadcastHashJoin
Left keys [1]: [product#1102917]
Right keys [1]: [internalUUID#1102932]
Join type: LeftOuter
Join condition: None
(604) Project
Output [4]: [product#1102917, plant#1102918, orderDateTime#1102919, filter(unitOfMeasureConversions#1102938, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107195) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107196)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102936.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102936.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102943]
Input [8]: [product#1102917, plant#1102918, orderDateTime#1102919, _extract_code#1107195, _extract_internalRefUUID#1107196, internalUUID#1102932, baseUnitOfMeasure#1102936, unitOfMeasureConversions#1102938]
(605) Generate
Input [4]: [product#1102917, plant#1102918, orderDateTime#1102919, filteredUnitOfMeasureConversions#1102943]
Arguments: explode(filteredUnitOfMeasureConversions#1102943.quantityNumerator), [product#1102917, plant#1102918, orderDateTime#1102919, filteredUnitOfMeasureConversions#1102943], true, [quantityNumerator#1102944]
(606) Project
Output [4]: [product#1102917, plant#1102918, orderDateTime#1102919, filteredUnitOfMeasureConversions#1102943.quantityDenominator AS _extract_quantityDenominator#1106945]
Input [5]: [product#1102917, plant#1102918, orderDateTime#1102919, filteredUnitOfMeasureConversions#1102943, quantityNumerator#1102944]
(607) Generate
Input [4]: [product#1102917, plant#1102918, orderDateTime#1102919, _extract_quantityDenominator#1106945]
Arguments: explode(_extract_quantityDenominator#1106945), [product#1102917, plant#1102918, orderDateTime#1102919], true, [quantityDenominator#1102945]
(608) Project
Output [3]: [product#1102917, plant#1102918, orderDateTime#1102919]
Input [4]: [product#1102917, plant#1102918, orderDateTime#1102919, quantityDenominator#1102945]
(609) Sort
Input [3]: [product#1102917, plant#1102918, orderDateTime#1102919]
Arguments: [product#1102917 ASC NULLS FIRST, plant#1102918 ASC NULLS FIRST], false, 0
(610) SortMergeJoin
Left keys [2]: [productUuid#1102911, plantUuid#1102909]
Right keys [2]: [product#1102917, plant#1102918]
Join type: Inner
Join condition: (calculationDateTime#1102905 <= orderDateTime#1102919)
(611) Project
Output [4]: [plantUuid#1102909 AS plant#1102948, productUuid#1102911 AS product#1102949, storageLocId#1102912, calculationDateTime#1102905]
Input [7]: [plantUuid#1102909, productUuid#1102911, calculationDateTime#1102905, storageLocId#1102912, product#1102917, plant#1102918, orderDateTime#1102919]
(612) HashAggregate
Input [4]: [plant#1102948, product#1102949, storageLocId#1102912, calculationDateTime#1102905]
Keys [3]: [plant#1102948, product#1102949, storageLocId#1102912]
Functions [1]: [partial_max(calculationDateTime#1102905)]
Aggregate Attributes [1]: [max#1108287]
Results [4]: [plant#1102948, product#1102949, storageLocId#1102912, max#1108288]
(613) HashAggregate
Input [4]: [plant#1102948, product#1102949, storageLocId#1102912, max#1108288]
Keys [3]: [plant#1102948, product#1102949, storageLocId#1102912]
Functions [1]: [max(calculationDateTime#1102905)]
Aggregate Attributes [1]: [max(calculationDateTime#1102905)#1101416]
Results [4]: [plant#1102948, product#1102949, storageLocId#1102912, max(calculationDateTime#1102905)#1101416 AS max_calc_datetime#1102950]
(614) Exchange
Input [4]: [plant#1102948, product#1102949, storageLocId#1102912, max_calc_datetime#1102950]
Arguments: hashpartitioning(coalesce(plant#1102948, ), isnull(plant#1102948), coalesce(product#1102949, ), isnull(product#1102949), coalesce(storageLocId#1102912, ), isnull(storageLocId#1102912), coalesce(max_calc_datetime#1102950, 1970-01-01 00:00:00), isnull(max_calc_datetime#1102950), 37), ENSURE_REQUIREMENTS, [plan_id=1704456]
(615) Sort
Input [4]: [plant#1102948, product#1102949, storageLocId#1102912, max_calc_datetime#1102950]
Arguments: [coalesce(plant#1102948, ) ASC NULLS FIRST, isnull(plant#1102948) ASC NULLS FIRST, coalesce(product#1102949, ) ASC NULLS FIRST, isnull(product#1102949) ASC NULLS FIRST, coalesce(storageLocId#1102912, ) ASC NULLS FIRST, isnull(storageLocId#1102912) ASC NULLS FIRST, coalesce(max_calc_datetime#1102950, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1102950) ASC NULLS FIRST], false, 0
(616) SortMergeJoin
Left keys [8]: [coalesce(plant#1102838, ), isnull(plant#1102838), coalesce(product#1102839, ), isnull(product#1102839), coalesce(storageLocId#1102802, ), isnull(storageLocId#1102802), coalesce(calculationDateTime#1102795, 1970-01-01 00:00:00), isnull(calculationDateTime#1102795)]
Right keys [8]: [coalesce(plant#1102948, ), isnull(plant#1102948), coalesce(product#1102949, ), isnull(product#1102949), coalesce(storageLocId#1102912, ), isnull(storageLocId#1102912), coalesce(max_calc_datetime#1102950, 1970-01-01 00:00:00), isnull(max_calc_datetime#1102950)]
Join type: Inner
Join condition: None
(617) Project
Output [4]: [plant#1102838, product#1102839, calculationDateTime#1102795, quantity#1102804]
Input [9]: [plant#1102838, product#1102839, storageLocId#1102802, calculationDateTime#1102795, quantity#1102804, plant#1102948, product#1102949, storageLocId#1102912, max_calc_datetime#1102950]
(618) HashAggregate
Input [4]: [plant#1102838, product#1102839, calculationDateTime#1102795, quantity#1102804]
Keys [2]: [product#1102839, plant#1102838]
Functions [2]: [partial_min(calculationDateTime#1102795), partial_sum(quantity#1102804)]
Aggregate Attributes [2]: [min#1108277, sum#1108278]
Results [4]: [product#1102839, plant#1102838, min#1108279, sum#1108280]
(619) Exchange
Input [4]: [product#1102839, plant#1102838, min#1108279, sum#1108280]
Arguments: hashpartitioning(product#1102839, plant#1102838, 37), ENSURE_REQUIREMENTS, [plan_id=1704463]
(620) HashAggregate
Input [4]: [product#1102839, plant#1102838, min#1108279, sum#1108280]
Keys [2]: [product#1102839, plant#1102838]
Functions [2]: [min(calculationDateTime#1102795), sum(quantity#1102804)]
Aggregate Attributes [2]: [min(calculationDateTime#1102795)#1101543, sum(quantity#1102804)#1101542]
Results [4]: [product#1102839, plant#1102838, min(calculationDateTime#1102795)#1101543 AS minCalculationDateTime#1102952, round(sum(quantity#1102804)#1101542, 0) AS roundedQuantitySum#1102953]
(621) Sort
Input [4]: [product#1102839, plant#1102838, minCalculationDateTime#1102952, roundedQuantitySum#1102953]
Arguments: [product#1102839 ASC NULLS FIRST, plant#1102838 ASC NULLS FIRST], false, 0
(622) SortMergeJoin
Left keys [2]: [product#1102699, plant#1102700]
Right keys [2]: [product#1102839, plant#1102838]
Join type: LeftOuter
Join condition: None
(623) Project
Output [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, CASE WHEN isnotnull(minCalculationDateTime#1102952) THEN minCalculationDateTime#1102952 ELSE orderDateTime#1102701 END AS stockDatetime#1102954, CASE WHEN isnotnull(roundedQuantitySum#1102953) THEN array(roundedQuantitySum#1102953) ELSE [0.0] END AS stockBatchQuantities#1102955]
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, product#1102839, plant#1102838, minCalculationDateTime#1102952, roundedQuantitySum#1102953]
(624) Exchange
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955]
Arguments: hashpartitioning(coalesce(plant#1102700, ), isnull(plant#1102700), coalesce(product#1102699, ), isnull(product#1102699), 37), ENSURE_REQUIREMENTS, [plan_id=1704473]
(625) Sort
Input [7]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955]
Arguments: [coalesce(plant#1102700, ) ASC NULLS FIRST, isnull(plant#1102700) ASC NULLS FIRST, coalesce(product#1102699, ) ASC NULLS FIRST, isnull(product#1102699) ASC NULLS FIRST], false, 0
(626) Exchange
Input [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Arguments: hashpartitioning(coalesce(plant#1101583, ), isnull(plant#1101583), coalesce(product#1101582, ), isnull(product#1101582), 37), ENSURE_REQUIREMENTS, [plan_id=1704474]
(627) Sort
Input [9]: [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
Arguments: [coalesce(plant#1101583, ) ASC NULLS FIRST, isnull(plant#1101583) ASC NULLS FIRST, coalesce(product#1101582, ) ASC NULLS FIRST, isnull(product#1101582) ASC NULLS FIRST], false, 0
(628) SortMergeJoin
Left keys [4]: [coalesce(plant#1102700, ), isnull(plant#1102700), coalesce(product#1102699, ), isnull(product#1102699)]
Right keys [4]: [coalesce(plant#1101583, ), isnull(plant#1101583), coalesce(product#1101582, ), isnull(product#1101582)]
Join type: LeftOuter
Join condition: None
(629) Project
Output [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, CASE WHEN isnotnull(product#1101582) THEN struct(demandChannel, demandChannel#1101584, demandStream, demandStream#1101585, considerVariance, considerVariance#1101586, demandTimeBuckets, demandTimeBuckets#1101587, demandPointInTimeStart, demandPointInTimeStart#1101588, demandPointInTimeEnd, demandPointInTimeEnd#1101589, demandPointInTime, demandPointInTime#1101590) END AS rawDemands#1101592]
Input [16]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590]
(630) ObjectHashAggregate
Input [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, rawDemands#1101592]
Keys [8]: [product#1102699, plant#1102700, orderDateTime#1102701, knownfloatingpointnormalized(if (isnull(productPlant#1102712)) null else named_struct(systemId, productPlant#1102712.systemId, internalUUID, productPlant#1102712.internalUUID, plant, productPlant#1102712.plant, product, productPlant#1102712.product, blockedForReplenishmentStartingFrom, productPlant#1102712.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1102712.productionAspect)) null else named_struct(productMovementPlants, productPlant#1102712.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1102712.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1102712.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1102712.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1102712.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#1102712.salesPlant, listing, productPlant#1102712.listing, sourceOfSupplyCategory, productPlant#1102712.sourceOfSupplyCategory)) AS productPlant#1102712, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1102729)) AS outboundUnit#1102729, stockDatetime#1102954, knownfloatingpointnormalized(transform(stockBatchQuantities#1102955, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1108274)), lambda arg#1108274, false))) AS stockBatchQuantities#1102955, [7226582400000000] AS [7226582400000000]#1108273]
Functions [1]: [partial_collect_list(rawDemands#1101592, 0, 0)]
Aggregate Attributes [1]: [buf#1108275]
Results [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1108273, buf#1108276]
(631) Exchange
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1108273, buf#1108276]
Arguments: hashpartitioning(product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1108273, 37), ENSURE_REQUIREMENTS, [plan_id=1704481]
(632) ObjectHashAggregate
Input [9]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1108273, buf#1108276]
Keys [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000]#1108273]
Functions [1]: [collect_list(rawDemands#1101592, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1101592, 0, 0)#1101612]
Results [8]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, collect_list(rawDemands#1101592, 0, 0)#1101612 AS rawDemands#1101593]
(633) Project
Output [2]: [internalUUID#1102650, address#1102656.timeZone.code AS timezonecode#1102662]
Input [3]: [internalUUID#1102650, address#1102656, systemId#1102649]
(634) Exchange
Input [2]: [internalUUID#1102650, timezonecode#1102662]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703536]
(635) BroadcastExchange
Input [2]: [internalUUID#1102650, timezonecode#1102662]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1704484]
(636) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1102700, ), isnull(plant#1102700)]
Right keys [2]: [coalesce(internalUUID#1102650, ), isnull(internalUUID#1102650)]
Join type: LeftOuter
Join condition: None
(637) Project
Output [10]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1102956, rawDemands#1101593, CASE WHEN isnotnull(timezonecode#1102662) THEN timezonecode#1102662 ELSE UTC END AS timezonecode#1102664]
Input [10]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, rawDemands#1101593, internalUUID#1102650, timezonecode#1102662]
(638) DeserializeToObject
Input [10]: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956, rawDemands#1101593, timezonecode#1102664]
Arguments: createexternalrow(invoke(product#1102699.toString()), invoke(plant#1102700.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1102701)), if (isnull(productPlant#1102712)) null else createexternalrow(invoke(productPlant#1102712.systemId.toString()), invoke(productPlant#1102712.internalUUID.toString()), if (isnull(productPlant#1102712.plant)) null else createexternalrow(invoke(productPlant#1102712.plant.internalRefUUID.toString()), invoke(productPlant#1102712.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1102712.product)) null else createexternalrow(invoke(productPlant#1102712.product.internalRefUUID.toString()), invoke(productPlant#1102712.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1102712.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1102712.productionAspect)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1102712.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.salesPlant)) null else createexternalrow(if (isnull(productPlant#1102712.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1102712.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1102712.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1102712.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102729)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1102954)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1102955, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1102956, 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#1101593, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1102664.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#1102685: org.apache.spark.sql.Row
(639) MapElements
Input [1]: [obj#1102685]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, obj#1102690: org.apache.spark.sql.Row
(640) SerializeFromObject
Input [1]: [obj#1102690]
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#1102695, 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#1102696, 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#1102697, 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#1102698]
(641) Exchange
Input [4]: [product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Arguments: hashpartitioning(coalesce(plant#1102696, ), isnull(plant#1102696), coalesce(product#1102695, ), isnull(product#1102695), 37), ENSURE_REQUIREMENTS, [plan_id=1704493]
(642) Sort
Input [4]: [product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Arguments: [coalesce(plant#1102696, ) ASC NULLS FIRST, isnull(plant#1102696) ASC NULLS FIRST, coalesce(product#1102695, ) ASC NULLS FIRST, isnull(product#1102695) ASC NULLS FIRST], false, 0
(643) SortMergeJoin
Left keys [4]: [coalesce(plant#1101132, ), isnull(plant#1101132), coalesce(product#1101131, ), isnull(product#1101131)]
Right keys [4]: [coalesce(plant#1102696, ), isnull(plant#1102696), coalesce(product#1102695, ), isnull(product#1102695)]
Join type: LeftOuter
Join condition: None
(644) Project
Output [7]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698]
Input [9]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, product#1102695, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
(645) InMemoryTableScan
Output [3]: [product#1102991, plant#1102990, openGoodsMovements#1103091]
Arguments: [product#1102991, plant#1102990, openGoodsMovements#1103091], [isnotnull(product#1102991), isnotnull(plant#1102990)]
(646) InMemoryRelation
Arguments: [product#1102991, plant#1102990, openGoodsMovements#1103091], StorageLevel(disk, memory, 2 replicas)
(647) LocalTableScan
Output [3]: [product#1102991, plant#1102990, openGoodsMovements#1103091]
Arguments: <empty>, [product#1102991, plant#1102990, openGoodsMovements#1103091]
(648) Filter
Input [3]: [product#1102991, plant#1102990, openGoodsMovements#1103091]
Condition : (isnotnull(product#1102991) AND isnotnull(plant#1102990))
(649) ObjectHashAggregate
Input [3]: [product#1102991, plant#1102990, openGoodsMovements#1103091]
Keys [2]: [product#1102991, plant#1102990]
Functions [1]: [partial_collect_list(openGoodsMovements#1103091, 0, 0)]
Aggregate Attributes [1]: [buf#1108295]
Results [3]: [product#1102991, plant#1102990, buf#1108296]
(650) Exchange
Input [3]: [product#1102991, plant#1102990, buf#1108296]
Arguments: hashpartitioning(product#1102991, plant#1102990, 37), ENSURE_REQUIREMENTS, [plan_id=1704498]
(651) ObjectHashAggregate
Input [3]: [product#1102991, plant#1102990, buf#1108296]
Keys [2]: [product#1102991, plant#1102990]
Functions [1]: [collect_list(openGoodsMovements#1103091, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1103091, 0, 0)#1103758]
Results [3]: [product#1102991, plant#1102990, flatten(collect_list(openGoodsMovements#1103091, 0, 0)#1103758) AS openGoodsMovements#1103754]
(652) Project
Output [5]: [product#1102991, plant#1102990, openGoodsMovements#1103754.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#1107156, openGoodsMovements#1103754.availabilityDatetime AS _extract_availabilityDatetime#1107157, openGoodsMovements#1103754.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#1107158]
Input [3]: [product#1102991, plant#1102990, openGoodsMovements#1103754]
(653) BroadcastExchange
Input [5]: [product#1102991, plant#1102990, _extract_openQtyInBaseUnit#1107156, _extract_availabilityDatetime#1107157, _extract_shelfLifeEndDatetime#1107158]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1704502]
(654) BroadcastHashJoin
Left keys [2]: [product#1101131, plant#1101132]
Right keys [2]: [product#1102991, plant#1102990]
Join type: LeftOuter
Join condition: None
(655) Project
Output [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, coalesce(_extract_openQtyInBaseUnit#1107156, []) AS openGoodsMovementQuantities#1104344, coalesce(_extract_availabilityDatetime#1107157, []) AS openGoodsMovementAvailabilityDatetimes#1104345, coalesce(_extract_shelfLifeEndDatetime#1107158, []) AS openGoodsMovementShelfLifeEndDatetimes#1104346]
Input [12]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, product#1102991, plant#1102990, _extract_openQtyInBaseUnit#1107156, _extract_availabilityDatetime#1107157, _extract_shelfLifeEndDatetime#1107158]
(656) Exchange
Input [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346]
Arguments: hashpartitioning(product#1101131, plant#1101132, 37), ENSURE_REQUIREMENTS, [plan_id=1704795]
(657) Sort
Input [10]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346]
Arguments: [product#1101131 ASC NULLS FIRST, plant#1101132 ASC NULLS FIRST], false, 0
(658) Scan parquet
Output [3]: [product#1104834, plant#1104835, orderDateTime#1104836]
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/10000000350/shardId=0_1_10000000350]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(659) Exchange
Input [3]: [product#1104834, plant#1104835, orderDateTime#1104836]
Arguments: hashpartitioning(product#1104834, plant#1104835, 37), REPARTITION_BY_NUM, [plan_id=1703552]
(660) Scan parquet
Output [9]: [internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846, systemId#1104838]
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>>
(661) Project
Output [9]: [systemId#1104838, internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846]
Input [9]: [internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846, systemId#1104838]
(662) Exchange
Input [9]: [systemId#1104838, internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703555]
(663) Project
Output [1]: [struct(systemId, systemId#1104838, internalUUID, internalUUID#1104839, plant, plant#1104840, product, product#1104841, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104842, productionAspect, productionAspect#1104843, salesPlant, salesPlant#1104844, listing, listing#1104845, sourceOfSupplyCategory, sourceOfSupplyCategory#1104846) AS productPlant#1104847]
Input [9]: [systemId#1104838, internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846]
(664) BroadcastExchange
Input [1]: [productPlant#1104847]
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=1704505]
(665) BroadcastHashJoin
Left keys [4]: [coalesce(product#1104834, ), isnull(product#1104834), coalesce(plant#1104835, ), isnull(plant#1104835)]
Right keys [4]: [coalesce(productPlant#1104847.product.internalRefUUID, ), isnull(productPlant#1104847.product.internalRefUUID), coalesce(productPlant#1104847.plant.internalRefUUID, ), isnull(productPlant#1104847.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(666) Scan parquet
Output [4]: [internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855, systemId#1104848]
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>>>
(667) Filter
Input [4]: [internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855, systemId#1104848]
Condition : isnotnull(internalUUID#1104849)
(668) Project
Output [3]: [internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855]
Input [4]: [internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855, systemId#1104848]
(669) Exchange
Input [3]: [internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703561]
(670) BroadcastExchange
Input [3]: [internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704508]
(671) BroadcastHashJoin
Left keys [1]: [product#1104834]
Right keys [1]: [internalUUID#1104849]
Join type: LeftOuter
Join condition: None
(672) Project
Output [5]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, filter(unitOfMeasureConversions#1104855, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104853.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104853.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104860]
Input [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, internalUUID#1104849, baseUnitOfMeasure#1104853, unitOfMeasureConversions#1104855]
(673) Project
Output [6]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, filteredUnitOfMeasureConversions#1104860.quantityDenominator AS _extract_quantityDenominator#1107202, filteredUnitOfMeasureConversions#1104860.quantityNumerator AS _extract_quantityNumerator#1107203]
Input [5]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, filteredUnitOfMeasureConversions#1104860]
(674) Generate
Input [6]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, _extract_quantityDenominator#1107202, _extract_quantityNumerator#1107203]
Arguments: explode(_extract_quantityNumerator#1107203), [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, _extract_quantityDenominator#1107202], true, [quantityNumerator#1104861]
(675) Generate
Input [6]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, _extract_quantityDenominator#1107202, quantityNumerator#1104861]
Arguments: explode(_extract_quantityDenominator#1107202), [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, quantityNumerator#1104861], true, [quantityDenominator#1104862]
(676) Project
Output [5]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, (cast(quantityNumerator#1104861 as double) / cast(quantityDenominator#1104862 as double)) AS outboundUnit#1104863]
Input [6]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, quantityNumerator#1104861, quantityDenominator#1104862]
(677) Project
Output [5]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, CASE WHEN (isnull(outboundUnit#1104863) OR (outboundUnit#1104863 <= 0.0)) THEN 1.0 ELSE outboundUnit#1104863 END AS outboundUnit#1104864]
Input [5]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104863]
(678) Sort
Input [5]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864]
Arguments: [product#1104834 ASC NULLS FIRST, plant#1104835 ASC NULLS FIRST], false, 0
(679) Scan parquet
Output [6]: [internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870, systemId#1104865]
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>>>>>
(680) Filter
Input [6]: [internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870, systemId#1104865]
Condition : (isnotnull(plant#1104868.internalRefUUID) AND isnotnull(product#1104867.internalRefUUID))
(681) Project
Output [6]: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870]
Input [6]: [internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870, systemId#1104865]
(682) Exchange
Input [6]: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703572]
(683) BroadcastExchange
Input [6]: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870]
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=1704536]
(684) Scan parquet
Output [2]: [marketUnit#1104871, distributionCenters#1104877]
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>>>>>
(685) Filter
Input [2]: [marketUnit#1104871, distributionCenters#1104877]
Condition : (((marketUnit#1104871 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1104877, true) > 0)) AND isnotnull(distributionCenters#1104877))
(686) Project
Output [1]: [distributionCenters#1104877]
Input [2]: [marketUnit#1104871, distributionCenters#1104877]
(687) Exchange
Input [1]: [distributionCenters#1104877]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703576]
(688) Generate
Input [1]: [distributionCenters#1104877]
Arguments: explode(distributionCenters#1104877), false, [distributionCenters#1104892]
(689) Filter
Input [1]: [distributionCenters#1104892]
Condition : (((size(distributionCenters#1104892.storageLocations, true) > 0) AND isnotnull(distributionCenters#1104892.storageLocations)) AND isnotnull(distributionCenters#1104892.internalRefUUID))
(690) Project
Output [2]: [distributionCenters#1104892.internalRefUUID AS _extract_internalRefUUID#1106954, distributionCenters#1104892.storageLocations AS _extract_storageLocations#1106955]
Input [1]: [distributionCenters#1104892]
(691) Generate
Input [2]: [_extract_internalRefUUID#1106954, _extract_storageLocations#1106955]
Arguments: explode(_extract_storageLocations#1106955), [_extract_internalRefUUID#1106954], false, [storageLocations#1104893]
(692) Project
Output [3]: [_extract_internalRefUUID#1106954 AS plantUuid#1104895, storageLocations#1104893.id AS storageLocId#1104896, storageLocations#1104893.internalRefUUID AS storageLocUuid#1104897]
Input [2]: [_extract_internalRefUUID#1106954, storageLocations#1104893]
(693) BroadcastExchange
Input [3]: [plantUuid#1104895, storageLocId#1104896, storageLocUuid#1104897]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704532]
(694) Scan parquet
Output [2]: [product#1104898, plant#1104899]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(695) Filter
Input [2]: [product#1104898, plant#1104899]
Condition : isnotnull(plant#1104899)
(696) Exchange
Input [2]: [product#1104898, plant#1104899]
Arguments: hashpartitioning(product#1104898, plant#1104899, 37), REPARTITION_BY_NUM, [plan_id=1704057]
(697) Scan parquet
Output [4]: [plant#1104904, product#1104905, productionAspect#1104907, systemId#1104902]
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>>>>
(698) Project
Output [4]: [plant#1104904.internalRefUUID AS _extract_internalRefUUID#1107204, product#1104905.internalRefUUID AS _extract_internalRefUUID#1107205, productionAspect#1104907.productMovementPlants.unitOfIssue.code AS _extract_code#1107206, productionAspect#1104907.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107207]
Input [4]: [plant#1104904, product#1104905, productionAspect#1104907, systemId#1104902]
(699) Exchange
Input [4]: [_extract_internalRefUUID#1107204, _extract_internalRefUUID#1107205, _extract_code#1107206, _extract_internalRefUUID#1107207]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703588]
(700) Project
Output [4]: [_extract_code#1107206, _extract_internalRefUUID#1107207, _extract_internalRefUUID#1107205, _extract_internalRefUUID#1107204]
Input [4]: [_extract_internalRefUUID#1107204, _extract_internalRefUUID#1107205, _extract_code#1107206, _extract_internalRefUUID#1107207]
(701) BroadcastExchange
Input [4]: [_extract_code#1107206, _extract_internalRefUUID#1107207, _extract_internalRefUUID#1107205, _extract_internalRefUUID#1107204]
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=1704516]
(702) BroadcastHashJoin
Left keys [4]: [coalesce(product#1104898, ), isnull(product#1104898), coalesce(plant#1104899, ), isnull(plant#1104899)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107205, ), isnull(_extract_internalRefUUID#1107205), coalesce(_extract_internalRefUUID#1107204, ), isnull(_extract_internalRefUUID#1107204)]
Join type: LeftOuter
Join condition: None
(703) Project
Output [4]: [product#1104898, plant#1104899, _extract_code#1107206, _extract_internalRefUUID#1107207]
Input [6]: [product#1104898, plant#1104899, _extract_code#1107206, _extract_internalRefUUID#1107207, _extract_internalRefUUID#1107205, _extract_internalRefUUID#1107204]
(704) Scan parquet
Output [4]: [internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919, systemId#1104912]
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>>>
(705) Filter
Input [4]: [internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919, systemId#1104912]
Condition : isnotnull(internalUUID#1104913)
(706) Project
Output [3]: [internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919]
Input [4]: [internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919, systemId#1104912]
(707) Exchange
Input [3]: [internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703595]
(708) BroadcastExchange
Input [3]: [internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704520]
(709) BroadcastHashJoin
Left keys [1]: [product#1104898]
Right keys [1]: [internalUUID#1104913]
Join type: LeftOuter
Join condition: None
(710) Project
Output [2]: [plant#1104899, filter(unitOfMeasureConversions#1104919, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107206) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107207)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104917.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104917.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104924]
Input [7]: [product#1104898, plant#1104899, _extract_code#1107206, _extract_internalRefUUID#1107207, internalUUID#1104913, baseUnitOfMeasure#1104917, unitOfMeasureConversions#1104919]
(711) Generate
Input [2]: [plant#1104899, filteredUnitOfMeasureConversions#1104924]
Arguments: explode(filteredUnitOfMeasureConversions#1104924.quantityNumerator), [plant#1104899, filteredUnitOfMeasureConversions#1104924], true, [quantityNumerator#1104925]
(712) Project
Output [2]: [plant#1104899, filteredUnitOfMeasureConversions#1104924.quantityDenominator AS _extract_quantityDenominator#1106956]
Input [3]: [plant#1104899, filteredUnitOfMeasureConversions#1104924, quantityNumerator#1104925]
(713) Generate
Input [2]: [plant#1104899, _extract_quantityDenominator#1106956]
Arguments: explode(_extract_quantityDenominator#1106956), [plant#1104899], true, [quantityDenominator#1104926]
(714) Project
Output [1]: [plant#1104899]
Input [2]: [plant#1104899, quantityDenominator#1104926]
(715) HashAggregate
Input [1]: [plant#1104899]
Keys [1]: [plant#1104899]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1104899]
(716) Exchange
Input [1]: [plant#1104899]
Arguments: hashpartitioning(plant#1104899, 37), ENSURE_REQUIREMENTS, [plan_id=1704529]
(717) HashAggregate
Input [1]: [plant#1104899]
Keys [1]: [plant#1104899]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1104899]
(718) BroadcastHashJoin
Left keys [1]: [plantUuid#1104895]
Right keys [1]: [plant#1104899]
Join type: Inner
Join condition: None
(719) Project
Output [3]: [plantUuid#1104895, storageLocId#1104896, storageLocUuid#1104897]
Input [4]: [plantUuid#1104895, storageLocId#1104896, storageLocUuid#1104897, plant#1104899]
(720) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1104868.internalRefUUID, ), isnull(plant#1104868.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1104895, ), isnull(plantUuid#1104895)]
Join type: Inner
Join condition: None
(721) Generate
Input [9]: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870, plantUuid#1104895, storageLocId#1104896, storageLocUuid#1104897]
Arguments: explode(filter(stockQuantities#1104870, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1104897) AND (lambda x#1101337.storageLocation.Id = storageLocId#1104896)), lambda x#1101337, false))), [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, plantUuid#1104895], false, [stockQuantity#1104929]
(722) ObjectHashAggregate
Input [7]: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, plantUuid#1104895, stockQuantity#1104929]
Keys [5]: [plantUuid#1104895, internalUUID#1104866, plant#1104868, product#1104867, systemId#1104865]
Functions [2]: [partial_first(calculationDateTime#1104869, false), partial_collect_list(stockQuantity#1104929, 0, 0)]
Aggregate Attributes [3]: [first#1108301, valueSet#1108302, buf#1108303]
Results [8]: [plantUuid#1104895, internalUUID#1104866, plant#1104868, product#1104867, systemId#1104865, first#1108304, valueSet#1108305, buf#1108306]
(723) ObjectHashAggregate
Input [8]: [plantUuid#1104895, internalUUID#1104866, plant#1104868, product#1104867, systemId#1104865, first#1108304, valueSet#1108305, buf#1108306]
Keys [5]: [plantUuid#1104895, internalUUID#1104866, plant#1104868, product#1104867, systemId#1104865]
Functions [2]: [first(calculationDateTime#1104869, false), collect_list(stockQuantity#1104929, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1104869)()#1101352, collect_list(stockQuantity#1104929, 0, 0)#1101353]
Results [4]: [product#1104867, plant#1104868, first(calculationDateTime#1104869)()#1101352 AS calculationDateTime#1104930, collect_list(stockQuantity#1104929, 0, 0)#1101353 AS stockQuantities#1104931]
(724) Filter
Input [4]: [product#1104867, plant#1104868, calculationDateTime#1104930, stockQuantities#1104931]
Condition : ((size(stockQuantities#1104931, true) > 0) AND isnotnull(calculationDateTime#1104930))
(725) Generate
Input [4]: [product#1104867, plant#1104868, calculationDateTime#1104930, stockQuantities#1104931]
Arguments: explode(stockQuantities#1104931), [product#1104867, plant#1104868, calculationDateTime#1104930], false, [stockQuantity#1104932]
(726) Filter
Input [4]: [product#1104867, plant#1104868, calculationDateTime#1104930, stockQuantity#1104932]
Condition : (((isnotnull(stockQuantity#1104932.specialStockIndicator.code) AND isnotnull(stockQuantity#1104932.stockType.code)) AND (stockQuantity#1104932.specialStockIndicator.code = )) AND (stockQuantity#1104932.stockType.code = 01))
(727) Project
Output [5]: [plant#1104868.internalRefUUID AS plantUuid#1104934, product#1104867.internalRefUUID AS productUuid#1104936, calculationDateTime#1104930, stockQuantity#1104932.storagelocation.id AS storageLocId#1104937, stockQuantity#1104932.quantity.measure AS quantity#1104939]
Input [4]: [product#1104867, plant#1104868, calculationDateTime#1104930, stockQuantity#1104932]
(728) Exchange
Input [5]: [plantUuid#1104934, productUuid#1104936, calculationDateTime#1104930, storageLocId#1104937, quantity#1104939]
Arguments: hashpartitioning(productUuid#1104936, plantUuid#1104934, 37), ENSURE_REQUIREMENTS, [plan_id=1704558]
(729) Sort
Input [5]: [plantUuid#1104934, productUuid#1104936, calculationDateTime#1104930, storageLocId#1104937, quantity#1104939]
Arguments: [productUuid#1104936 ASC NULLS FIRST, plantUuid#1104934 ASC NULLS FIRST], false, 0
(730) Scan parquet
Output [3]: [product#1104942, plant#1104943, orderDateTime#1104944]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(731) Filter
Input [3]: [product#1104942, plant#1104943, orderDateTime#1104944]
Condition : ((isnotnull(orderDateTime#1104944) AND isnotnull(plant#1104943)) AND isnotnull(product#1104942))
(732) Exchange
Input [3]: [product#1104942, plant#1104943, orderDateTime#1104944]
Arguments: hashpartitioning(product#1104942, plant#1104943, 37), REPARTITION_BY_NUM, [plan_id=1704078]
(733) Scan parquet
Output [4]: [plant#1104948, product#1104949, productionAspect#1104951, systemId#1104946]
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>>>>
(734) Project
Output [4]: [plant#1104948.internalRefUUID AS _extract_internalRefUUID#1107211, product#1104949.internalRefUUID AS _extract_internalRefUUID#1107208, productionAspect#1104951.productMovementPlants.unitOfIssue.code AS _extract_code#1107209, productionAspect#1104951.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107210]
Input [4]: [plant#1104948, product#1104949, productionAspect#1104951, systemId#1104946]
(735) Exchange
Input [4]: [_extract_internalRefUUID#1107211, _extract_internalRefUUID#1107208, _extract_code#1107209, _extract_internalRefUUID#1107210]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703620]
(736) Project
Output [4]: [_extract_code#1107209, _extract_internalRefUUID#1107210, _extract_internalRefUUID#1107208, _extract_internalRefUUID#1107211]
Input [4]: [_extract_internalRefUUID#1107211, _extract_internalRefUUID#1107208, _extract_code#1107209, _extract_internalRefUUID#1107210]
(737) BroadcastExchange
Input [4]: [_extract_code#1107209, _extract_internalRefUUID#1107210, _extract_internalRefUUID#1107208, _extract_internalRefUUID#1107211]
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=1704545]
(738) BroadcastHashJoin
Left keys [4]: [coalesce(product#1104942, ), isnull(product#1104942), coalesce(plant#1104943, ), isnull(plant#1104943)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107208, ), isnull(_extract_internalRefUUID#1107208), coalesce(_extract_internalRefUUID#1107211, ), isnull(_extract_internalRefUUID#1107211)]
Join type: LeftOuter
Join condition: None
(739) Project
Output [5]: [product#1104942, plant#1104943, orderDateTime#1104944, _extract_code#1107209, _extract_internalRefUUID#1107210]
Input [7]: [product#1104942, plant#1104943, orderDateTime#1104944, _extract_code#1107209, _extract_internalRefUUID#1107210, _extract_internalRefUUID#1107208, _extract_internalRefUUID#1107211]
(740) Scan parquet
Output [4]: [internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963, systemId#1104956]
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>>>
(741) Filter
Input [4]: [internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963, systemId#1104956]
Condition : isnotnull(internalUUID#1104957)
(742) Project
Output [3]: [internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963]
Input [4]: [internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963, systemId#1104956]
(743) Exchange
Input [3]: [internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703627]
(744) BroadcastExchange
Input [3]: [internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704549]
(745) BroadcastHashJoin
Left keys [1]: [product#1104942]
Right keys [1]: [internalUUID#1104957]
Join type: LeftOuter
Join condition: None
(746) Project
Output [4]: [product#1104942, plant#1104943, orderDateTime#1104944, filter(unitOfMeasureConversions#1104963, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107209) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107210)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104961.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104961.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104968]
Input [8]: [product#1104942, plant#1104943, orderDateTime#1104944, _extract_code#1107209, _extract_internalRefUUID#1107210, internalUUID#1104957, baseUnitOfMeasure#1104961, unitOfMeasureConversions#1104963]
(747) Generate
Input [4]: [product#1104942, plant#1104943, orderDateTime#1104944, filteredUnitOfMeasureConversions#1104968]
Arguments: explode(filteredUnitOfMeasureConversions#1104968.quantityNumerator), [product#1104942, plant#1104943, orderDateTime#1104944, filteredUnitOfMeasureConversions#1104968], true, [quantityNumerator#1104969]
(748) Project
Output [4]: [product#1104942, plant#1104943, orderDateTime#1104944, filteredUnitOfMeasureConversions#1104968.quantityDenominator AS _extract_quantityDenominator#1106963]
Input [5]: [product#1104942, plant#1104943, orderDateTime#1104944, filteredUnitOfMeasureConversions#1104968, quantityNumerator#1104969]
(749) Generate
Input [4]: [product#1104942, plant#1104943, orderDateTime#1104944, _extract_quantityDenominator#1106963]
Arguments: explode(_extract_quantityDenominator#1106963), [product#1104942, plant#1104943, orderDateTime#1104944], true, [quantityDenominator#1104970]
(750) Project
Output [3]: [product#1104942, plant#1104943, orderDateTime#1104944]
Input [4]: [product#1104942, plant#1104943, orderDateTime#1104944, quantityDenominator#1104970]
(751) Sort
Input [3]: [product#1104942, plant#1104943, orderDateTime#1104944]
Arguments: [product#1104942 ASC NULLS FIRST, plant#1104943 ASC NULLS FIRST], false, 0
(752) SortMergeJoin
Left keys [2]: [productUuid#1104936, plantUuid#1104934]
Right keys [2]: [product#1104942, plant#1104943]
Join type: Inner
Join condition: (calculationDateTime#1104930 <= orderDateTime#1104944)
(753) Project
Output [5]: [plantUuid#1104934 AS plant#1104973, productUuid#1104936 AS product#1104974, storageLocId#1104937, calculationDateTime#1104930, quantity#1104939]
Input [8]: [plantUuid#1104934, productUuid#1104936, calculationDateTime#1104930, storageLocId#1104937, quantity#1104939, product#1104942, plant#1104943, orderDateTime#1104944]
(754) Exchange
Input [5]: [plant#1104973, product#1104974, storageLocId#1104937, calculationDateTime#1104930, quantity#1104939]
Arguments: hashpartitioning(coalesce(plant#1104973, ), isnull(plant#1104973), coalesce(product#1104974, ), isnull(product#1104974), coalesce(storageLocId#1104937, ), isnull(storageLocId#1104937), coalesce(calculationDateTime#1104930, 1970-01-01 00:00:00), isnull(calculationDateTime#1104930), 37), ENSURE_REQUIREMENTS, [plan_id=1704614]
(755) Sort
Input [5]: [plant#1104973, product#1104974, storageLocId#1104937, calculationDateTime#1104930, quantity#1104939]
Arguments: [coalesce(plant#1104973, ) ASC NULLS FIRST, isnull(plant#1104973) ASC NULLS FIRST, coalesce(product#1104974, ) ASC NULLS FIRST, isnull(product#1104974) ASC NULLS FIRST, coalesce(storageLocId#1104937, ) ASC NULLS FIRST, isnull(storageLocId#1104937) ASC NULLS FIRST, coalesce(calculationDateTime#1104930, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1104930) ASC NULLS FIRST], false, 0
(756) Scan parquet
Output [6]: [internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980, systemId#1104975]
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>>>>>
(757) Filter
Input [6]: [internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980, systemId#1104975]
Condition : (isnotnull(plant#1104978.internalRefUUID) AND isnotnull(product#1104977.internalRefUUID))
(758) Project
Output [6]: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980]
Input [6]: [internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980, systemId#1104975]
(759) Exchange
Input [6]: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703639]
(760) BroadcastExchange
Input [6]: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980]
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=1704583]
(761) Scan parquet
Output [2]: [marketUnit#1104981, distributionCenters#1104987]
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>>>>>
(762) Filter
Input [2]: [marketUnit#1104981, distributionCenters#1104987]
Condition : (((marketUnit#1104981 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1104987, true) > 0)) AND isnotnull(distributionCenters#1104987))
(763) Project
Output [1]: [distributionCenters#1104987]
Input [2]: [marketUnit#1104981, distributionCenters#1104987]
(764) Exchange
Input [1]: [distributionCenters#1104987]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703643]
(765) Generate
Input [1]: [distributionCenters#1104987]
Arguments: explode(distributionCenters#1104987), false, [distributionCenters#1105002]
(766) Filter
Input [1]: [distributionCenters#1105002]
Condition : (((size(distributionCenters#1105002.storageLocations, true) > 0) AND isnotnull(distributionCenters#1105002.storageLocations)) AND isnotnull(distributionCenters#1105002.internalRefUUID))
(767) Project
Output [2]: [distributionCenters#1105002.internalRefUUID AS _extract_internalRefUUID#1106970, distributionCenters#1105002.storageLocations AS _extract_storageLocations#1106971]
Input [1]: [distributionCenters#1105002]
(768) Generate
Input [2]: [_extract_internalRefUUID#1106970, _extract_storageLocations#1106971]
Arguments: explode(_extract_storageLocations#1106971), [_extract_internalRefUUID#1106970], false, [storageLocations#1105003]
(769) Project
Output [3]: [_extract_internalRefUUID#1106970 AS plantUuid#1105005, storageLocations#1105003.id AS storageLocId#1105006, storageLocations#1105003.internalRefUUID AS storageLocUuid#1105007]
Input [2]: [_extract_internalRefUUID#1106970, storageLocations#1105003]
(770) BroadcastExchange
Input [3]: [plantUuid#1105005, storageLocId#1105006, storageLocUuid#1105007]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704579]
(771) Scan parquet
Output [2]: [product#1105008, plant#1105009]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(772) Filter
Input [2]: [product#1105008, plant#1105009]
Condition : isnotnull(plant#1105009)
(773) Exchange
Input [2]: [product#1105008, plant#1105009]
Arguments: hashpartitioning(product#1105008, plant#1105009, 37), REPARTITION_BY_NUM, [plan_id=1704089]
(774) Scan parquet
Output [4]: [plant#1105014, product#1105015, productionAspect#1105017, systemId#1105012]
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>>>>
(775) Project
Output [4]: [plant#1105014.internalRefUUID AS _extract_internalRefUUID#1107214, product#1105015.internalRefUUID AS _extract_internalRefUUID#1107215, productionAspect#1105017.productMovementPlants.unitOfIssue.code AS _extract_code#1107212, productionAspect#1105017.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107213]
Input [4]: [plant#1105014, product#1105015, productionAspect#1105017, systemId#1105012]
(776) Exchange
Input [4]: [_extract_internalRefUUID#1107214, _extract_internalRefUUID#1107215, _extract_code#1107212, _extract_internalRefUUID#1107213]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703655]
(777) Project
Output [4]: [_extract_code#1107212, _extract_internalRefUUID#1107213, _extract_internalRefUUID#1107215, _extract_internalRefUUID#1107214]
Input [4]: [_extract_internalRefUUID#1107214, _extract_internalRefUUID#1107215, _extract_code#1107212, _extract_internalRefUUID#1107213]
(778) BroadcastExchange
Input [4]: [_extract_code#1107212, _extract_internalRefUUID#1107213, _extract_internalRefUUID#1107215, _extract_internalRefUUID#1107214]
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=1704563]
(779) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105008, ), isnull(product#1105008), coalesce(plant#1105009, ), isnull(plant#1105009)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107215, ), isnull(_extract_internalRefUUID#1107215), coalesce(_extract_internalRefUUID#1107214, ), isnull(_extract_internalRefUUID#1107214)]
Join type: LeftOuter
Join condition: None
(780) Project
Output [4]: [product#1105008, plant#1105009, _extract_code#1107212, _extract_internalRefUUID#1107213]
Input [6]: [product#1105008, plant#1105009, _extract_code#1107212, _extract_internalRefUUID#1107213, _extract_internalRefUUID#1107215, _extract_internalRefUUID#1107214]
(781) Scan parquet
Output [4]: [internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029, systemId#1105022]
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>>>
(782) Filter
Input [4]: [internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029, systemId#1105022]
Condition : isnotnull(internalUUID#1105023)
(783) Project
Output [3]: [internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029]
Input [4]: [internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029, systemId#1105022]
(784) Exchange
Input [3]: [internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703662]
(785) BroadcastExchange
Input [3]: [internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704567]
(786) BroadcastHashJoin
Left keys [1]: [product#1105008]
Right keys [1]: [internalUUID#1105023]
Join type: LeftOuter
Join condition: None
(787) Project
Output [2]: [plant#1105009, filter(unitOfMeasureConversions#1105029, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107212) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107213)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105027.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105027.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105034]
Input [7]: [product#1105008, plant#1105009, _extract_code#1107212, _extract_internalRefUUID#1107213, internalUUID#1105023, baseUnitOfMeasure#1105027, unitOfMeasureConversions#1105029]
(788) Generate
Input [2]: [plant#1105009, filteredUnitOfMeasureConversions#1105034]
Arguments: explode(filteredUnitOfMeasureConversions#1105034.quantityNumerator), [plant#1105009, filteredUnitOfMeasureConversions#1105034], true, [quantityNumerator#1105035]
(789) Project
Output [2]: [plant#1105009, filteredUnitOfMeasureConversions#1105034.quantityDenominator AS _extract_quantityDenominator#1106972]
Input [3]: [plant#1105009, filteredUnitOfMeasureConversions#1105034, quantityNumerator#1105035]
(790) Generate
Input [2]: [plant#1105009, _extract_quantityDenominator#1106972]
Arguments: explode(_extract_quantityDenominator#1106972), [plant#1105009], true, [quantityDenominator#1105036]
(791) Project
Output [1]: [plant#1105009]
Input [2]: [plant#1105009, quantityDenominator#1105036]
(792) HashAggregate
Input [1]: [plant#1105009]
Keys [1]: [plant#1105009]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1105009]
(793) Exchange
Input [1]: [plant#1105009]
Arguments: hashpartitioning(plant#1105009, 37), ENSURE_REQUIREMENTS, [plan_id=1704576]
(794) HashAggregate
Input [1]: [plant#1105009]
Keys [1]: [plant#1105009]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1105009]
(795) BroadcastHashJoin
Left keys [1]: [plantUuid#1105005]
Right keys [1]: [plant#1105009]
Join type: Inner
Join condition: None
(796) Project
Output [3]: [plantUuid#1105005, storageLocId#1105006, storageLocUuid#1105007]
Input [4]: [plantUuid#1105005, storageLocId#1105006, storageLocUuid#1105007, plant#1105009]
(797) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1104978.internalRefUUID, ), isnull(plant#1104978.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1105005, ), isnull(plantUuid#1105005)]
Join type: Inner
Join condition: None
(798) Generate
Input [9]: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980, plantUuid#1105005, storageLocId#1105006, storageLocUuid#1105007]
Arguments: explode(filter(stockQuantities#1104980, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105007) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105006)), lambda x#1101337, false))), [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, plantUuid#1105005], false, [stockQuantity#1105039]
(799) ObjectHashAggregate
Input [7]: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, plantUuid#1105005, stockQuantity#1105039]
Keys [5]: [plantUuid#1105005, internalUUID#1104976, plant#1104978, product#1104977, systemId#1104975]
Functions [2]: [partial_first(calculationDateTime#1104979, false), partial_collect_list(stockQuantity#1105039, 0, 0)]
Aggregate Attributes [3]: [first#1108309, valueSet#1108310, buf#1108311]
Results [8]: [plantUuid#1105005, internalUUID#1104976, plant#1104978, product#1104977, systemId#1104975, first#1108312, valueSet#1108313, buf#1108314]
(800) ObjectHashAggregate
Input [8]: [plantUuid#1105005, internalUUID#1104976, plant#1104978, product#1104977, systemId#1104975, first#1108312, valueSet#1108313, buf#1108314]
Keys [5]: [plantUuid#1105005, internalUUID#1104976, plant#1104978, product#1104977, systemId#1104975]
Functions [2]: [first(calculationDateTime#1104979, false), collect_list(stockQuantity#1105039, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1104979)()#1101352, collect_list(stockQuantity#1105039, 0, 0)#1101353]
Results [4]: [product#1104977, plant#1104978, first(calculationDateTime#1104979)()#1101352 AS calculationDateTime#1105040, collect_list(stockQuantity#1105039, 0, 0)#1101353 AS stockQuantities#1105041]
(801) Filter
Input [4]: [product#1104977, plant#1104978, calculationDateTime#1105040, stockQuantities#1105041]
Condition : ((size(stockQuantities#1105041, true) > 0) AND isnotnull(calculationDateTime#1105040))
(802) Generate
Input [4]: [product#1104977, plant#1104978, calculationDateTime#1105040, stockQuantities#1105041]
Arguments: explode(stockQuantities#1105041), [product#1104977, plant#1104978, calculationDateTime#1105040], false, [stockQuantity#1105042]
(803) Filter
Input [4]: [product#1104977, plant#1104978, calculationDateTime#1105040, stockQuantity#1105042]
Condition : (((isnotnull(stockQuantity#1105042.specialStockIndicator.code) AND isnotnull(stockQuantity#1105042.stockType.code)) AND (stockQuantity#1105042.specialStockIndicator.code = )) AND (stockQuantity#1105042.stockType.code = 01))
(804) Project
Output [4]: [plant#1104978.internalRefUUID AS plantUuid#1105044, product#1104977.internalRefUUID AS productUuid#1105046, calculationDateTime#1105040, stockQuantity#1105042.storagelocation.id AS storageLocId#1105047]
Input [4]: [product#1104977, plant#1104978, calculationDateTime#1105040, stockQuantity#1105042]
(805) Exchange
Input [4]: [plantUuid#1105044, productUuid#1105046, calculationDateTime#1105040, storageLocId#1105047]
Arguments: hashpartitioning(productUuid#1105046, plantUuid#1105044, 37), ENSURE_REQUIREMENTS, [plan_id=1704605]
(806) Sort
Input [4]: [plantUuid#1105044, productUuid#1105046, calculationDateTime#1105040, storageLocId#1105047]
Arguments: [productUuid#1105046 ASC NULLS FIRST, plantUuid#1105044 ASC NULLS FIRST], false, 0
(807) Scan parquet
Output [3]: [product#1105052, plant#1105053, orderDateTime#1105054]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(808) Filter
Input [3]: [product#1105052, plant#1105053, orderDateTime#1105054]
Condition : ((isnotnull(orderDateTime#1105054) AND isnotnull(plant#1105053)) AND isnotnull(product#1105052))
(809) Exchange
Input [3]: [product#1105052, plant#1105053, orderDateTime#1105054]
Arguments: hashpartitioning(product#1105052, plant#1105053, 37), REPARTITION_BY_NUM, [plan_id=1704110]
(810) Scan parquet
Output [4]: [plant#1105058, product#1105059, productionAspect#1105061, systemId#1105056]
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>>>>
(811) Project
Output [4]: [plant#1105058.internalRefUUID AS _extract_internalRefUUID#1107216, product#1105059.internalRefUUID AS _extract_internalRefUUID#1107217, productionAspect#1105061.productMovementPlants.unitOfIssue.code AS _extract_code#1107218, productionAspect#1105061.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107219]
Input [4]: [plant#1105058, product#1105059, productionAspect#1105061, systemId#1105056]
(812) Exchange
Input [4]: [_extract_internalRefUUID#1107216, _extract_internalRefUUID#1107217, _extract_code#1107218, _extract_internalRefUUID#1107219]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703687]
(813) Project
Output [4]: [_extract_code#1107218, _extract_internalRefUUID#1107219, _extract_internalRefUUID#1107217, _extract_internalRefUUID#1107216]
Input [4]: [_extract_internalRefUUID#1107216, _extract_internalRefUUID#1107217, _extract_code#1107218, _extract_internalRefUUID#1107219]
(814) BroadcastExchange
Input [4]: [_extract_code#1107218, _extract_internalRefUUID#1107219, _extract_internalRefUUID#1107217, _extract_internalRefUUID#1107216]
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=1704592]
(815) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105052, ), isnull(product#1105052), coalesce(plant#1105053, ), isnull(plant#1105053)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107217, ), isnull(_extract_internalRefUUID#1107217), coalesce(_extract_internalRefUUID#1107216, ), isnull(_extract_internalRefUUID#1107216)]
Join type: LeftOuter
Join condition: None
(816) Project
Output [5]: [product#1105052, plant#1105053, orderDateTime#1105054, _extract_code#1107218, _extract_internalRefUUID#1107219]
Input [7]: [product#1105052, plant#1105053, orderDateTime#1105054, _extract_code#1107218, _extract_internalRefUUID#1107219, _extract_internalRefUUID#1107217, _extract_internalRefUUID#1107216]
(817) Scan parquet
Output [4]: [internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073, systemId#1105066]
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>>>
(818) Filter
Input [4]: [internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073, systemId#1105066]
Condition : isnotnull(internalUUID#1105067)
(819) Project
Output [3]: [internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073]
Input [4]: [internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073, systemId#1105066]
(820) Exchange
Input [3]: [internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703694]
(821) BroadcastExchange
Input [3]: [internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704596]
(822) BroadcastHashJoin
Left keys [1]: [product#1105052]
Right keys [1]: [internalUUID#1105067]
Join type: LeftOuter
Join condition: None
(823) Project
Output [4]: [product#1105052, plant#1105053, orderDateTime#1105054, filter(unitOfMeasureConversions#1105073, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107218) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107219)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105071.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105071.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105078]
Input [8]: [product#1105052, plant#1105053, orderDateTime#1105054, _extract_code#1107218, _extract_internalRefUUID#1107219, internalUUID#1105067, baseUnitOfMeasure#1105071, unitOfMeasureConversions#1105073]
(824) Generate
Input [4]: [product#1105052, plant#1105053, orderDateTime#1105054, filteredUnitOfMeasureConversions#1105078]
Arguments: explode(filteredUnitOfMeasureConversions#1105078.quantityNumerator), [product#1105052, plant#1105053, orderDateTime#1105054, filteredUnitOfMeasureConversions#1105078], true, [quantityNumerator#1105079]
(825) Project
Output [4]: [product#1105052, plant#1105053, orderDateTime#1105054, filteredUnitOfMeasureConversions#1105078.quantityDenominator AS _extract_quantityDenominator#1106979]
Input [5]: [product#1105052, plant#1105053, orderDateTime#1105054, filteredUnitOfMeasureConversions#1105078, quantityNumerator#1105079]
(826) Generate
Input [4]: [product#1105052, plant#1105053, orderDateTime#1105054, _extract_quantityDenominator#1106979]
Arguments: explode(_extract_quantityDenominator#1106979), [product#1105052, plant#1105053, orderDateTime#1105054], true, [quantityDenominator#1105080]
(827) Project
Output [3]: [product#1105052, plant#1105053, orderDateTime#1105054]
Input [4]: [product#1105052, plant#1105053, orderDateTime#1105054, quantityDenominator#1105080]
(828) Sort
Input [3]: [product#1105052, plant#1105053, orderDateTime#1105054]
Arguments: [product#1105052 ASC NULLS FIRST, plant#1105053 ASC NULLS FIRST], false, 0
(829) SortMergeJoin
Left keys [2]: [productUuid#1105046, plantUuid#1105044]
Right keys [2]: [product#1105052, plant#1105053]
Join type: Inner
Join condition: (calculationDateTime#1105040 <= orderDateTime#1105054)
(830) Project
Output [4]: [plantUuid#1105044 AS plant#1105083, productUuid#1105046 AS product#1105084, storageLocId#1105047, calculationDateTime#1105040]
Input [7]: [plantUuid#1105044, productUuid#1105046, calculationDateTime#1105040, storageLocId#1105047, product#1105052, plant#1105053, orderDateTime#1105054]
(831) HashAggregate
Input [4]: [plant#1105083, product#1105084, storageLocId#1105047, calculationDateTime#1105040]
Keys [3]: [plant#1105083, product#1105084, storageLocId#1105047]
Functions [1]: [partial_max(calculationDateTime#1105040)]
Aggregate Attributes [1]: [max#1108307]
Results [4]: [plant#1105083, product#1105084, storageLocId#1105047, max#1108308]
(832) HashAggregate
Input [4]: [plant#1105083, product#1105084, storageLocId#1105047, max#1108308]
Keys [3]: [plant#1105083, product#1105084, storageLocId#1105047]
Functions [1]: [max(calculationDateTime#1105040)]
Aggregate Attributes [1]: [max(calculationDateTime#1105040)#1101416]
Results [4]: [plant#1105083, product#1105084, storageLocId#1105047, max(calculationDateTime#1105040)#1101416 AS max_calc_datetime#1105085]
(833) Exchange
Input [4]: [plant#1105083, product#1105084, storageLocId#1105047, max_calc_datetime#1105085]
Arguments: hashpartitioning(coalesce(plant#1105083, ), isnull(plant#1105083), coalesce(product#1105084, ), isnull(product#1105084), coalesce(storageLocId#1105047, ), isnull(storageLocId#1105047), coalesce(max_calc_datetime#1105085, 1970-01-01 00:00:00), isnull(max_calc_datetime#1105085), 37), ENSURE_REQUIREMENTS, [plan_id=1704615]
(834) Sort
Input [4]: [plant#1105083, product#1105084, storageLocId#1105047, max_calc_datetime#1105085]
Arguments: [coalesce(plant#1105083, ) ASC NULLS FIRST, isnull(plant#1105083) ASC NULLS FIRST, coalesce(product#1105084, ) ASC NULLS FIRST, isnull(product#1105084) ASC NULLS FIRST, coalesce(storageLocId#1105047, ) ASC NULLS FIRST, isnull(storageLocId#1105047) ASC NULLS FIRST, coalesce(max_calc_datetime#1105085, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1105085) ASC NULLS FIRST], false, 0
(835) SortMergeJoin
Left keys [8]: [coalesce(plant#1104973, ), isnull(plant#1104973), coalesce(product#1104974, ), isnull(product#1104974), coalesce(storageLocId#1104937, ), isnull(storageLocId#1104937), coalesce(calculationDateTime#1104930, 1970-01-01 00:00:00), isnull(calculationDateTime#1104930)]
Right keys [8]: [coalesce(plant#1105083, ), isnull(plant#1105083), coalesce(product#1105084, ), isnull(product#1105084), coalesce(storageLocId#1105047, ), isnull(storageLocId#1105047), coalesce(max_calc_datetime#1105085, 1970-01-01 00:00:00), isnull(max_calc_datetime#1105085)]
Join type: Inner
Join condition: None
(836) Project
Output [4]: [plant#1104973, product#1104974, calculationDateTime#1104930, quantity#1104939]
Input [9]: [plant#1104973, product#1104974, storageLocId#1104937, calculationDateTime#1104930, quantity#1104939, plant#1105083, product#1105084, storageLocId#1105047, max_calc_datetime#1105085]
(837) HashAggregate
Input [4]: [plant#1104973, product#1104974, calculationDateTime#1104930, quantity#1104939]
Keys [2]: [product#1104974, plant#1104973]
Functions [2]: [partial_min(calculationDateTime#1104930), partial_sum(quantity#1104939)]
Aggregate Attributes [2]: [min#1108297, sum#1108298]
Results [4]: [product#1104974, plant#1104973, min#1108299, sum#1108300]
(838) Exchange
Input [4]: [product#1104974, plant#1104973, min#1108299, sum#1108300]
Arguments: hashpartitioning(product#1104974, plant#1104973, 37), ENSURE_REQUIREMENTS, [plan_id=1704622]
(839) HashAggregate
Input [4]: [product#1104974, plant#1104973, min#1108299, sum#1108300]
Keys [2]: [product#1104974, plant#1104973]
Functions [2]: [min(calculationDateTime#1104930), sum(quantity#1104939)]
Aggregate Attributes [2]: [min(calculationDateTime#1104930)#1101543, sum(quantity#1104939)#1101542]
Results [4]: [product#1104974, plant#1104973, min(calculationDateTime#1104930)#1101543 AS minCalculationDateTime#1105087, round(sum(quantity#1104939)#1101542, 0) AS roundedQuantitySum#1105088]
(840) Sort
Input [4]: [product#1104974, plant#1104973, minCalculationDateTime#1105087, roundedQuantitySum#1105088]
Arguments: [product#1104974 ASC NULLS FIRST, plant#1104973 ASC NULLS FIRST], false, 0
(841) SortMergeJoin
Left keys [2]: [product#1104834, plant#1104835]
Right keys [2]: [product#1104974, plant#1104973]
Join type: LeftOuter
Join condition: None
(842) Project
Output [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, CASE WHEN isnotnull(minCalculationDateTime#1105087) THEN minCalculationDateTime#1105087 ELSE orderDateTime#1104836 END AS stockDatetime#1105089, CASE WHEN isnotnull(roundedQuantitySum#1105088) THEN array(roundedQuantitySum#1105088) ELSE [0.0] END AS stockBatchQuantities#1105090]
Input [9]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, product#1104974, plant#1104973, minCalculationDateTime#1105087, roundedQuantitySum#1105088]
(843) Exchange
Input [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090]
Arguments: hashpartitioning(coalesce(plant#1104835, ), isnull(plant#1104835), coalesce(product#1104834, ), isnull(product#1104834), 37), ENSURE_REQUIREMENTS, [plan_id=1704776]
(844) Sort
Input [7]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090]
Arguments: [coalesce(plant#1104835, ) ASC NULLS FIRST, isnull(plant#1104835) ASC NULLS FIRST, coalesce(product#1104834, ) ASC NULLS FIRST, isnull(product#1104834) ASC NULLS FIRST], false, 0
(845) Scan parquet
Output [3]: [product#1105092, plant#1105093, orderDateTime#1105094]
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/10000000350/shardId=0_1_10000000350]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(846) Exchange
Input [3]: [product#1105092, plant#1105093, orderDateTime#1105094]
Arguments: hashpartitioning(product#1105092, plant#1105093, 37), REPARTITION_BY_NUM, [plan_id=1703712]
(847) Scan parquet
Output [9]: [internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104, systemId#1105096]
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>>
(848) Project
Output [9]: [systemId#1105096, internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104]
Input [9]: [internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104, systemId#1105096]
(849) Exchange
Input [9]: [systemId#1105096, internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703715]
(850) Project
Output [1]: [struct(systemId, systemId#1105096, internalUUID, internalUUID#1105097, plant, plant#1105098, product, product#1105099, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105100, productionAspect, productionAspect#1105101, salesPlant, salesPlant#1105102, listing, listing#1105103, sourceOfSupplyCategory, sourceOfSupplyCategory#1105104) AS productPlant#1105105]
Input [9]: [systemId#1105096, internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104]
(851) BroadcastExchange
Input [1]: [productPlant#1105105]
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=1704630]
(852) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105092, ), isnull(product#1105092), coalesce(plant#1105093, ), isnull(plant#1105093)]
Right keys [4]: [coalesce(productPlant#1105105.product.internalRefUUID, ), isnull(productPlant#1105105.product.internalRefUUID), coalesce(productPlant#1105105.plant.internalRefUUID, ), isnull(productPlant#1105105.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(853) Scan parquet
Output [4]: [internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113, systemId#1105106]
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>>>
(854) Filter
Input [4]: [internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113, systemId#1105106]
Condition : isnotnull(internalUUID#1105107)
(855) Project
Output [3]: [internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113]
Input [4]: [internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113, systemId#1105106]
(856) Exchange
Input [3]: [internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703721]
(857) BroadcastExchange
Input [3]: [internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704633]
(858) BroadcastHashJoin
Left keys [1]: [product#1105092]
Right keys [1]: [internalUUID#1105107]
Join type: LeftOuter
Join condition: None
(859) Project
Output [5]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, filter(unitOfMeasureConversions#1105113, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105111.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105111.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105118]
Input [7]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, internalUUID#1105107, baseUnitOfMeasure#1105111, unitOfMeasureConversions#1105113]
(860) Project
Output [6]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, filteredUnitOfMeasureConversions#1105118.quantityDenominator AS _extract_quantityDenominator#1107220, filteredUnitOfMeasureConversions#1105118.quantityNumerator AS _extract_quantityNumerator#1107221]
Input [5]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, filteredUnitOfMeasureConversions#1105118]
(861) Generate
Input [6]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, _extract_quantityDenominator#1107220, _extract_quantityNumerator#1107221]
Arguments: explode(_extract_quantityNumerator#1107221), [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, _extract_quantityDenominator#1107220], true, [quantityNumerator#1105119]
(862) Generate
Input [6]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, _extract_quantityDenominator#1107220, quantityNumerator#1105119]
Arguments: explode(_extract_quantityDenominator#1107220), [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, quantityNumerator#1105119], true, [quantityDenominator#1105120]
(863) Project
Output [5]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, (cast(quantityNumerator#1105119 as double) / cast(quantityDenominator#1105120 as double)) AS outboundUnit#1105121]
Input [6]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, quantityNumerator#1105119, quantityDenominator#1105120]
(864) Project
Output [5]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, CASE WHEN (isnull(outboundUnit#1105121) OR (outboundUnit#1105121 <= 0.0)) THEN 1.0 ELSE outboundUnit#1105121 END AS outboundUnit#1105122]
Input [5]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105121]
(865) Sort
Input [5]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122]
Arguments: [product#1105092 ASC NULLS FIRST, plant#1105093 ASC NULLS FIRST], false, 0
(866) Scan parquet
Output [6]: [internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128, systemId#1105123]
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>>>>>
(867) Filter
Input [6]: [internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128, systemId#1105123]
Condition : (isnotnull(plant#1105126.internalRefUUID) AND isnotnull(product#1105125.internalRefUUID))
(868) Project
Output [6]: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128]
Input [6]: [internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128, systemId#1105123]
(869) Exchange
Input [6]: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703732]
(870) BroadcastExchange
Input [6]: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128]
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=1704661]
(871) Scan parquet
Output [2]: [marketUnit#1105129, distributionCenters#1105135]
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>>>>>
(872) Filter
Input [2]: [marketUnit#1105129, distributionCenters#1105135]
Condition : (((marketUnit#1105129 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1105135, true) > 0)) AND isnotnull(distributionCenters#1105135))
(873) Project
Output [1]: [distributionCenters#1105135]
Input [2]: [marketUnit#1105129, distributionCenters#1105135]
(874) Exchange
Input [1]: [distributionCenters#1105135]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703736]
(875) Generate
Input [1]: [distributionCenters#1105135]
Arguments: explode(distributionCenters#1105135), false, [distributionCenters#1105150]
(876) Filter
Input [1]: [distributionCenters#1105150]
Condition : (((size(distributionCenters#1105150.storageLocations, true) > 0) AND isnotnull(distributionCenters#1105150.storageLocations)) AND isnotnull(distributionCenters#1105150.internalRefUUID))
(877) Project
Output [2]: [distributionCenters#1105150.internalRefUUID AS _extract_internalRefUUID#1106987, distributionCenters#1105150.storageLocations AS _extract_storageLocations#1106988]
Input [1]: [distributionCenters#1105150]
(878) Generate
Input [2]: [_extract_internalRefUUID#1106987, _extract_storageLocations#1106988]
Arguments: explode(_extract_storageLocations#1106988), [_extract_internalRefUUID#1106987], false, [storageLocations#1105151]
(879) Project
Output [3]: [_extract_internalRefUUID#1106987 AS plantUuid#1105153, storageLocations#1105151.id AS storageLocId#1105154, storageLocations#1105151.internalRefUUID AS storageLocUuid#1105155]
Input [2]: [_extract_internalRefUUID#1106987, storageLocations#1105151]
(880) BroadcastExchange
Input [3]: [plantUuid#1105153, storageLocId#1105154, storageLocUuid#1105155]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704657]
(881) Scan parquet
Output [2]: [product#1105156, plant#1105157]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(882) Filter
Input [2]: [product#1105156, plant#1105157]
Condition : isnotnull(plant#1105157)
(883) Exchange
Input [2]: [product#1105156, plant#1105157]
Arguments: hashpartitioning(product#1105156, plant#1105157, 37), REPARTITION_BY_NUM, [plan_id=1704129]
(884) Scan parquet
Output [4]: [plant#1105162, product#1105163, productionAspect#1105165, systemId#1105160]
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>>>>
(885) Project
Output [4]: [plant#1105162.internalRefUUID AS _extract_internalRefUUID#1107222, product#1105163.internalRefUUID AS _extract_internalRefUUID#1107223, productionAspect#1105165.productMovementPlants.unitOfIssue.code AS _extract_code#1107224, productionAspect#1105165.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107225]
Input [4]: [plant#1105162, product#1105163, productionAspect#1105165, systemId#1105160]
(886) Exchange
Input [4]: [_extract_internalRefUUID#1107222, _extract_internalRefUUID#1107223, _extract_code#1107224, _extract_internalRefUUID#1107225]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703748]
(887) Project
Output [4]: [_extract_code#1107224, _extract_internalRefUUID#1107225, _extract_internalRefUUID#1107223, _extract_internalRefUUID#1107222]
Input [4]: [_extract_internalRefUUID#1107222, _extract_internalRefUUID#1107223, _extract_code#1107224, _extract_internalRefUUID#1107225]
(888) BroadcastExchange
Input [4]: [_extract_code#1107224, _extract_internalRefUUID#1107225, _extract_internalRefUUID#1107223, _extract_internalRefUUID#1107222]
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=1704641]
(889) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105156, ), isnull(product#1105156), coalesce(plant#1105157, ), isnull(plant#1105157)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107223, ), isnull(_extract_internalRefUUID#1107223), coalesce(_extract_internalRefUUID#1107222, ), isnull(_extract_internalRefUUID#1107222)]
Join type: LeftOuter
Join condition: None
(890) Project
Output [4]: [product#1105156, plant#1105157, _extract_code#1107224, _extract_internalRefUUID#1107225]
Input [6]: [product#1105156, plant#1105157, _extract_code#1107224, _extract_internalRefUUID#1107225, _extract_internalRefUUID#1107223, _extract_internalRefUUID#1107222]
(891) Scan parquet
Output [4]: [internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177, systemId#1105170]
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>>>
(892) Filter
Input [4]: [internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177, systemId#1105170]
Condition : isnotnull(internalUUID#1105171)
(893) Project
Output [3]: [internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177]
Input [4]: [internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177, systemId#1105170]
(894) Exchange
Input [3]: [internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703755]
(895) BroadcastExchange
Input [3]: [internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704645]
(896) BroadcastHashJoin
Left keys [1]: [product#1105156]
Right keys [1]: [internalUUID#1105171]
Join type: LeftOuter
Join condition: None
(897) Project
Output [2]: [plant#1105157, filter(unitOfMeasureConversions#1105177, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107224) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107225)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105175.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105175.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105182]
Input [7]: [product#1105156, plant#1105157, _extract_code#1107224, _extract_internalRefUUID#1107225, internalUUID#1105171, baseUnitOfMeasure#1105175, unitOfMeasureConversions#1105177]
(898) Generate
Input [2]: [plant#1105157, filteredUnitOfMeasureConversions#1105182]
Arguments: explode(filteredUnitOfMeasureConversions#1105182.quantityNumerator), [plant#1105157, filteredUnitOfMeasureConversions#1105182], true, [quantityNumerator#1105183]
(899) Project
Output [2]: [plant#1105157, filteredUnitOfMeasureConversions#1105182.quantityDenominator AS _extract_quantityDenominator#1106989]
Input [3]: [plant#1105157, filteredUnitOfMeasureConversions#1105182, quantityNumerator#1105183]
(900) Generate
Input [2]: [plant#1105157, _extract_quantityDenominator#1106989]
Arguments: explode(_extract_quantityDenominator#1106989), [plant#1105157], true, [quantityDenominator#1105184]
(901) Project
Output [1]: [plant#1105157]
Input [2]: [plant#1105157, quantityDenominator#1105184]
(902) HashAggregate
Input [1]: [plant#1105157]
Keys [1]: [plant#1105157]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1105157]
(903) Exchange
Input [1]: [plant#1105157]
Arguments: hashpartitioning(plant#1105157, 37), ENSURE_REQUIREMENTS, [plan_id=1704654]
(904) HashAggregate
Input [1]: [plant#1105157]
Keys [1]: [plant#1105157]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1105157]
(905) BroadcastHashJoin
Left keys [1]: [plantUuid#1105153]
Right keys [1]: [plant#1105157]
Join type: Inner
Join condition: None
(906) Project
Output [3]: [plantUuid#1105153, storageLocId#1105154, storageLocUuid#1105155]
Input [4]: [plantUuid#1105153, storageLocId#1105154, storageLocUuid#1105155, plant#1105157]
(907) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1105126.internalRefUUID, ), isnull(plant#1105126.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1105153, ), isnull(plantUuid#1105153)]
Join type: Inner
Join condition: None
(908) Generate
Input [9]: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128, plantUuid#1105153, storageLocId#1105154, storageLocUuid#1105155]
Arguments: explode(filter(stockQuantities#1105128, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105155) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105154)), lambda x#1101337, false))), [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, plantUuid#1105153], false, [stockQuantity#1105187]
(909) ObjectHashAggregate
Input [7]: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, plantUuid#1105153, stockQuantity#1105187]
Keys [5]: [plantUuid#1105153, internalUUID#1105124, plant#1105126, product#1105125, systemId#1105123]
Functions [2]: [partial_first(calculationDateTime#1105127, false), partial_collect_list(stockQuantity#1105187, 0, 0)]
Aggregate Attributes [3]: [first#1108323, valueSet#1108324, buf#1108325]
Results [8]: [plantUuid#1105153, internalUUID#1105124, plant#1105126, product#1105125, systemId#1105123, first#1108326, valueSet#1108327, buf#1108328]
(910) ObjectHashAggregate
Input [8]: [plantUuid#1105153, internalUUID#1105124, plant#1105126, product#1105125, systemId#1105123, first#1108326, valueSet#1108327, buf#1108328]
Keys [5]: [plantUuid#1105153, internalUUID#1105124, plant#1105126, product#1105125, systemId#1105123]
Functions [2]: [first(calculationDateTime#1105127, false), collect_list(stockQuantity#1105187, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1105127)()#1101352, collect_list(stockQuantity#1105187, 0, 0)#1101353]
Results [4]: [product#1105125, plant#1105126, first(calculationDateTime#1105127)()#1101352 AS calculationDateTime#1105188, collect_list(stockQuantity#1105187, 0, 0)#1101353 AS stockQuantities#1105189]
(911) Filter
Input [4]: [product#1105125, plant#1105126, calculationDateTime#1105188, stockQuantities#1105189]
Condition : ((size(stockQuantities#1105189, true) > 0) AND isnotnull(calculationDateTime#1105188))
(912) Generate
Input [4]: [product#1105125, plant#1105126, calculationDateTime#1105188, stockQuantities#1105189]
Arguments: explode(stockQuantities#1105189), [product#1105125, plant#1105126, calculationDateTime#1105188], false, [stockQuantity#1105190]
(913) Filter
Input [4]: [product#1105125, plant#1105126, calculationDateTime#1105188, stockQuantity#1105190]
Condition : (((isnotnull(stockQuantity#1105190.specialStockIndicator.code) AND isnotnull(stockQuantity#1105190.stockType.code)) AND (stockQuantity#1105190.specialStockIndicator.code = )) AND (stockQuantity#1105190.stockType.code = 01))
(914) Project
Output [5]: [plant#1105126.internalRefUUID AS plantUuid#1105192, product#1105125.internalRefUUID AS productUuid#1105194, calculationDateTime#1105188, stockQuantity#1105190.storagelocation.id AS storageLocId#1105195, stockQuantity#1105190.quantity.measure AS quantity#1105197]
Input [4]: [product#1105125, plant#1105126, calculationDateTime#1105188, stockQuantity#1105190]
(915) Exchange
Input [5]: [plantUuid#1105192, productUuid#1105194, calculationDateTime#1105188, storageLocId#1105195, quantity#1105197]
Arguments: hashpartitioning(productUuid#1105194, plantUuid#1105192, 37), ENSURE_REQUIREMENTS, [plan_id=1704683]
(916) Sort
Input [5]: [plantUuid#1105192, productUuid#1105194, calculationDateTime#1105188, storageLocId#1105195, quantity#1105197]
Arguments: [productUuid#1105194 ASC NULLS FIRST, plantUuid#1105192 ASC NULLS FIRST], false, 0
(917) Scan parquet
Output [3]: [product#1105200, plant#1105201, orderDateTime#1105202]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(918) Filter
Input [3]: [product#1105200, plant#1105201, orderDateTime#1105202]
Condition : ((isnotnull(orderDateTime#1105202) AND isnotnull(plant#1105201)) AND isnotnull(product#1105200))
(919) Exchange
Input [3]: [product#1105200, plant#1105201, orderDateTime#1105202]
Arguments: hashpartitioning(product#1105200, plant#1105201, 37), REPARTITION_BY_NUM, [plan_id=1704150]
(920) Scan parquet
Output [4]: [plant#1105206, product#1105207, productionAspect#1105209, systemId#1105204]
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>>>>
(921) Project
Output [4]: [plant#1105206.internalRefUUID AS _extract_internalRefUUID#1107226, product#1105207.internalRefUUID AS _extract_internalRefUUID#1107227, productionAspect#1105209.productMovementPlants.unitOfIssue.code AS _extract_code#1107228, productionAspect#1105209.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107229]
Input [4]: [plant#1105206, product#1105207, productionAspect#1105209, systemId#1105204]
(922) Exchange
Input [4]: [_extract_internalRefUUID#1107226, _extract_internalRefUUID#1107227, _extract_code#1107228, _extract_internalRefUUID#1107229]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703780]
(923) Project
Output [4]: [_extract_code#1107228, _extract_internalRefUUID#1107229, _extract_internalRefUUID#1107227, _extract_internalRefUUID#1107226]
Input [4]: [_extract_internalRefUUID#1107226, _extract_internalRefUUID#1107227, _extract_code#1107228, _extract_internalRefUUID#1107229]
(924) BroadcastExchange
Input [4]: [_extract_code#1107228, _extract_internalRefUUID#1107229, _extract_internalRefUUID#1107227, _extract_internalRefUUID#1107226]
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=1704670]
(925) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105200, ), isnull(product#1105200), coalesce(plant#1105201, ), isnull(plant#1105201)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107227, ), isnull(_extract_internalRefUUID#1107227), coalesce(_extract_internalRefUUID#1107226, ), isnull(_extract_internalRefUUID#1107226)]
Join type: LeftOuter
Join condition: None
(926) Project
Output [5]: [product#1105200, plant#1105201, orderDateTime#1105202, _extract_code#1107228, _extract_internalRefUUID#1107229]
Input [7]: [product#1105200, plant#1105201, orderDateTime#1105202, _extract_code#1107228, _extract_internalRefUUID#1107229, _extract_internalRefUUID#1107227, _extract_internalRefUUID#1107226]
(927) Scan parquet
Output [4]: [internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221, systemId#1105214]
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>>>
(928) Filter
Input [4]: [internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221, systemId#1105214]
Condition : isnotnull(internalUUID#1105215)
(929) Project
Output [3]: [internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221]
Input [4]: [internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221, systemId#1105214]
(930) Exchange
Input [3]: [internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703787]
(931) BroadcastExchange
Input [3]: [internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704674]
(932) BroadcastHashJoin
Left keys [1]: [product#1105200]
Right keys [1]: [internalUUID#1105215]
Join type: LeftOuter
Join condition: None
(933) Project
Output [4]: [product#1105200, plant#1105201, orderDateTime#1105202, filter(unitOfMeasureConversions#1105221, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107228) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107229)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105219.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105219.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105226]
Input [8]: [product#1105200, plant#1105201, orderDateTime#1105202, _extract_code#1107228, _extract_internalRefUUID#1107229, internalUUID#1105215, baseUnitOfMeasure#1105219, unitOfMeasureConversions#1105221]
(934) Generate
Input [4]: [product#1105200, plant#1105201, orderDateTime#1105202, filteredUnitOfMeasureConversions#1105226]
Arguments: explode(filteredUnitOfMeasureConversions#1105226.quantityNumerator), [product#1105200, plant#1105201, orderDateTime#1105202, filteredUnitOfMeasureConversions#1105226], true, [quantityNumerator#1105227]
(935) Project
Output [4]: [product#1105200, plant#1105201, orderDateTime#1105202, filteredUnitOfMeasureConversions#1105226.quantityDenominator AS _extract_quantityDenominator#1106996]
Input [5]: [product#1105200, plant#1105201, orderDateTime#1105202, filteredUnitOfMeasureConversions#1105226, quantityNumerator#1105227]
(936) Generate
Input [4]: [product#1105200, plant#1105201, orderDateTime#1105202, _extract_quantityDenominator#1106996]
Arguments: explode(_extract_quantityDenominator#1106996), [product#1105200, plant#1105201, orderDateTime#1105202], true, [quantityDenominator#1105228]
(937) Project
Output [3]: [product#1105200, plant#1105201, orderDateTime#1105202]
Input [4]: [product#1105200, plant#1105201, orderDateTime#1105202, quantityDenominator#1105228]
(938) Sort
Input [3]: [product#1105200, plant#1105201, orderDateTime#1105202]
Arguments: [product#1105200 ASC NULLS FIRST, plant#1105201 ASC NULLS FIRST], false, 0
(939) SortMergeJoin
Left keys [2]: [productUuid#1105194, plantUuid#1105192]
Right keys [2]: [product#1105200, plant#1105201]
Join type: Inner
Join condition: (calculationDateTime#1105188 <= orderDateTime#1105202)
(940) Project
Output [5]: [plantUuid#1105192 AS plant#1105231, productUuid#1105194 AS product#1105232, storageLocId#1105195, calculationDateTime#1105188, quantity#1105197]
Input [8]: [plantUuid#1105192, productUuid#1105194, calculationDateTime#1105188, storageLocId#1105195, quantity#1105197, product#1105200, plant#1105201, orderDateTime#1105202]
(941) Exchange
Input [5]: [plant#1105231, product#1105232, storageLocId#1105195, calculationDateTime#1105188, quantity#1105197]
Arguments: hashpartitioning(coalesce(plant#1105231, ), isnull(plant#1105231), coalesce(product#1105232, ), isnull(product#1105232), coalesce(storageLocId#1105195, ), isnull(storageLocId#1105195), coalesce(calculationDateTime#1105188, 1970-01-01 00:00:00), isnull(calculationDateTime#1105188), 37), ENSURE_REQUIREMENTS, [plan_id=1704739]
(942) Sort
Input [5]: [plant#1105231, product#1105232, storageLocId#1105195, calculationDateTime#1105188, quantity#1105197]
Arguments: [coalesce(plant#1105231, ) ASC NULLS FIRST, isnull(plant#1105231) ASC NULLS FIRST, coalesce(product#1105232, ) ASC NULLS FIRST, isnull(product#1105232) ASC NULLS FIRST, coalesce(storageLocId#1105195, ) ASC NULLS FIRST, isnull(storageLocId#1105195) ASC NULLS FIRST, coalesce(calculationDateTime#1105188, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1105188) ASC NULLS FIRST], false, 0
(943) Scan parquet
Output [6]: [internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238, systemId#1105233]
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>>>>>
(944) Filter
Input [6]: [internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238, systemId#1105233]
Condition : (isnotnull(plant#1105236.internalRefUUID) AND isnotnull(product#1105235.internalRefUUID))
(945) Project
Output [6]: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238]
Input [6]: [internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238, systemId#1105233]
(946) Exchange
Input [6]: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703799]
(947) BroadcastExchange
Input [6]: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238]
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=1704708]
(948) Scan parquet
Output [2]: [marketUnit#1105239, distributionCenters#1105245]
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>>>>>
(949) Filter
Input [2]: [marketUnit#1105239, distributionCenters#1105245]
Condition : (((marketUnit#1105239 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#1105245, true) > 0)) AND isnotnull(distributionCenters#1105245))
(950) Project
Output [1]: [distributionCenters#1105245]
Input [2]: [marketUnit#1105239, distributionCenters#1105245]
(951) Exchange
Input [1]: [distributionCenters#1105245]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703803]
(952) Generate
Input [1]: [distributionCenters#1105245]
Arguments: explode(distributionCenters#1105245), false, [distributionCenters#1105260]
(953) Filter
Input [1]: [distributionCenters#1105260]
Condition : (((size(distributionCenters#1105260.storageLocations, true) > 0) AND isnotnull(distributionCenters#1105260.storageLocations)) AND isnotnull(distributionCenters#1105260.internalRefUUID))
(954) Project
Output [2]: [distributionCenters#1105260.internalRefUUID AS _extract_internalRefUUID#1107003, distributionCenters#1105260.storageLocations AS _extract_storageLocations#1107004]
Input [1]: [distributionCenters#1105260]
(955) Generate
Input [2]: [_extract_internalRefUUID#1107003, _extract_storageLocations#1107004]
Arguments: explode(_extract_storageLocations#1107004), [_extract_internalRefUUID#1107003], false, [storageLocations#1105261]
(956) Project
Output [3]: [_extract_internalRefUUID#1107003 AS plantUuid#1105263, storageLocations#1105261.id AS storageLocId#1105264, storageLocations#1105261.internalRefUUID AS storageLocUuid#1105265]
Input [2]: [_extract_internalRefUUID#1107003, storageLocations#1105261]
(957) BroadcastExchange
Input [3]: [plantUuid#1105263, storageLocId#1105264, storageLocUuid#1105265]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704704]
(958) Scan parquet
Output [2]: [product#1105266, plant#1105267]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(959) Filter
Input [2]: [product#1105266, plant#1105267]
Condition : isnotnull(plant#1105267)
(960) Exchange
Input [2]: [product#1105266, plant#1105267]
Arguments: hashpartitioning(product#1105266, plant#1105267, 37), REPARTITION_BY_NUM, [plan_id=1704161]
(961) Scan parquet
Output [4]: [plant#1105272, product#1105273, productionAspect#1105275, systemId#1105270]
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>>>>
(962) Project
Output [4]: [plant#1105272.internalRefUUID AS _extract_internalRefUUID#1107232, product#1105273.internalRefUUID AS _extract_internalRefUUID#1107233, productionAspect#1105275.productMovementPlants.unitOfIssue.code AS _extract_code#1107230, productionAspect#1105275.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107231]
Input [4]: [plant#1105272, product#1105273, productionAspect#1105275, systemId#1105270]
(963) Exchange
Input [4]: [_extract_internalRefUUID#1107232, _extract_internalRefUUID#1107233, _extract_code#1107230, _extract_internalRefUUID#1107231]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703815]
(964) Project
Output [4]: [_extract_code#1107230, _extract_internalRefUUID#1107231, _extract_internalRefUUID#1107233, _extract_internalRefUUID#1107232]
Input [4]: [_extract_internalRefUUID#1107232, _extract_internalRefUUID#1107233, _extract_code#1107230, _extract_internalRefUUID#1107231]
(965) BroadcastExchange
Input [4]: [_extract_code#1107230, _extract_internalRefUUID#1107231, _extract_internalRefUUID#1107233, _extract_internalRefUUID#1107232]
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=1704688]
(966) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105266, ), isnull(product#1105266), coalesce(plant#1105267, ), isnull(plant#1105267)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107233, ), isnull(_extract_internalRefUUID#1107233), coalesce(_extract_internalRefUUID#1107232, ), isnull(_extract_internalRefUUID#1107232)]
Join type: LeftOuter
Join condition: None
(967) Project
Output [4]: [product#1105266, plant#1105267, _extract_code#1107230, _extract_internalRefUUID#1107231]
Input [6]: [product#1105266, plant#1105267, _extract_code#1107230, _extract_internalRefUUID#1107231, _extract_internalRefUUID#1107233, _extract_internalRefUUID#1107232]
(968) Scan parquet
Output [4]: [internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287, systemId#1105280]
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>>>
(969) Filter
Input [4]: [internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287, systemId#1105280]
Condition : isnotnull(internalUUID#1105281)
(970) Project
Output [3]: [internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287]
Input [4]: [internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287, systemId#1105280]
(971) Exchange
Input [3]: [internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703822]
(972) BroadcastExchange
Input [3]: [internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704692]
(973) BroadcastHashJoin
Left keys [1]: [product#1105266]
Right keys [1]: [internalUUID#1105281]
Join type: LeftOuter
Join condition: None
(974) Project
Output [2]: [plant#1105267, filter(unitOfMeasureConversions#1105287, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107230) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107231)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105285.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105285.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105292]
Input [7]: [product#1105266, plant#1105267, _extract_code#1107230, _extract_internalRefUUID#1107231, internalUUID#1105281, baseUnitOfMeasure#1105285, unitOfMeasureConversions#1105287]
(975) Generate
Input [2]: [plant#1105267, filteredUnitOfMeasureConversions#1105292]
Arguments: explode(filteredUnitOfMeasureConversions#1105292.quantityNumerator), [plant#1105267, filteredUnitOfMeasureConversions#1105292], true, [quantityNumerator#1105293]
(976) Project
Output [2]: [plant#1105267, filteredUnitOfMeasureConversions#1105292.quantityDenominator AS _extract_quantityDenominator#1107005]
Input [3]: [plant#1105267, filteredUnitOfMeasureConversions#1105292, quantityNumerator#1105293]
(977) Generate
Input [2]: [plant#1105267, _extract_quantityDenominator#1107005]
Arguments: explode(_extract_quantityDenominator#1107005), [plant#1105267], true, [quantityDenominator#1105294]
(978) Project
Output [1]: [plant#1105267]
Input [2]: [plant#1105267, quantityDenominator#1105294]
(979) HashAggregate
Input [1]: [plant#1105267]
Keys [1]: [plant#1105267]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1105267]
(980) Exchange
Input [1]: [plant#1105267]
Arguments: hashpartitioning(plant#1105267, 37), ENSURE_REQUIREMENTS, [plan_id=1704701]
(981) HashAggregate
Input [1]: [plant#1105267]
Keys [1]: [plant#1105267]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1105267]
(982) BroadcastHashJoin
Left keys [1]: [plantUuid#1105263]
Right keys [1]: [plant#1105267]
Join type: Inner
Join condition: None
(983) Project
Output [3]: [plantUuid#1105263, storageLocId#1105264, storageLocUuid#1105265]
Input [4]: [plantUuid#1105263, storageLocId#1105264, storageLocUuid#1105265, plant#1105267]
(984) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1105236.internalRefUUID, ), isnull(plant#1105236.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1105263, ), isnull(plantUuid#1105263)]
Join type: Inner
Join condition: None
(985) Generate
Input [9]: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238, plantUuid#1105263, storageLocId#1105264, storageLocUuid#1105265]
Arguments: explode(filter(stockQuantities#1105238, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105265) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105264)), lambda x#1101337, false))), [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, plantUuid#1105263], false, [stockQuantity#1105297]
(986) ObjectHashAggregate
Input [7]: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, plantUuid#1105263, stockQuantity#1105297]
Keys [5]: [plantUuid#1105263, internalUUID#1105234, plant#1105236, product#1105235, systemId#1105233]
Functions [2]: [partial_first(calculationDateTime#1105237, false), partial_collect_list(stockQuantity#1105297, 0, 0)]
Aggregate Attributes [3]: [first#1108331, valueSet#1108332, buf#1108333]
Results [8]: [plantUuid#1105263, internalUUID#1105234, plant#1105236, product#1105235, systemId#1105233, first#1108334, valueSet#1108335, buf#1108336]
(987) ObjectHashAggregate
Input [8]: [plantUuid#1105263, internalUUID#1105234, plant#1105236, product#1105235, systemId#1105233, first#1108334, valueSet#1108335, buf#1108336]
Keys [5]: [plantUuid#1105263, internalUUID#1105234, plant#1105236, product#1105235, systemId#1105233]
Functions [2]: [first(calculationDateTime#1105237, false), collect_list(stockQuantity#1105297, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1105237)()#1101352, collect_list(stockQuantity#1105297, 0, 0)#1101353]
Results [4]: [product#1105235, plant#1105236, first(calculationDateTime#1105237)()#1101352 AS calculationDateTime#1105298, collect_list(stockQuantity#1105297, 0, 0)#1101353 AS stockQuantities#1105299]
(988) Filter
Input [4]: [product#1105235, plant#1105236, calculationDateTime#1105298, stockQuantities#1105299]
Condition : ((size(stockQuantities#1105299, true) > 0) AND isnotnull(calculationDateTime#1105298))
(989) Generate
Input [4]: [product#1105235, plant#1105236, calculationDateTime#1105298, stockQuantities#1105299]
Arguments: explode(stockQuantities#1105299), [product#1105235, plant#1105236, calculationDateTime#1105298], false, [stockQuantity#1105300]
(990) Filter
Input [4]: [product#1105235, plant#1105236, calculationDateTime#1105298, stockQuantity#1105300]
Condition : (((isnotnull(stockQuantity#1105300.specialStockIndicator.code) AND isnotnull(stockQuantity#1105300.stockType.code)) AND (stockQuantity#1105300.specialStockIndicator.code = )) AND (stockQuantity#1105300.stockType.code = 01))
(991) Project
Output [4]: [plant#1105236.internalRefUUID AS plantUuid#1105302, product#1105235.internalRefUUID AS productUuid#1105304, calculationDateTime#1105298, stockQuantity#1105300.storagelocation.id AS storageLocId#1105305]
Input [4]: [product#1105235, plant#1105236, calculationDateTime#1105298, stockQuantity#1105300]
(992) Exchange
Input [4]: [plantUuid#1105302, productUuid#1105304, calculationDateTime#1105298, storageLocId#1105305]
Arguments: hashpartitioning(productUuid#1105304, plantUuid#1105302, 37), ENSURE_REQUIREMENTS, [plan_id=1704730]
(993) Sort
Input [4]: [plantUuid#1105302, productUuid#1105304, calculationDateTime#1105298, storageLocId#1105305]
Arguments: [productUuid#1105304 ASC NULLS FIRST, plantUuid#1105302 ASC NULLS FIRST], false, 0
(994) Scan parquet
Output [3]: [product#1105310, plant#1105311, orderDateTime#1105312]
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/10000000350/shardId=0_1_10000000350]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(995) Filter
Input [3]: [product#1105310, plant#1105311, orderDateTime#1105312]
Condition : ((isnotnull(orderDateTime#1105312) AND isnotnull(plant#1105311)) AND isnotnull(product#1105310))
(996) Exchange
Input [3]: [product#1105310, plant#1105311, orderDateTime#1105312]
Arguments: hashpartitioning(product#1105310, plant#1105311, 37), REPARTITION_BY_NUM, [plan_id=1704182]
(997) Scan parquet
Output [4]: [plant#1105316, product#1105317, productionAspect#1105319, systemId#1105314]
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>>>>
(998) Project
Output [4]: [plant#1105316.internalRefUUID AS _extract_internalRefUUID#1107236, product#1105317.internalRefUUID AS _extract_internalRefUUID#1107237, productionAspect#1105319.productMovementPlants.unitOfIssue.code AS _extract_code#1107234, productionAspect#1105319.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#1107235]
Input [4]: [plant#1105316, product#1105317, productionAspect#1105319, systemId#1105314]
(999) Exchange
Input [4]: [_extract_internalRefUUID#1107236, _extract_internalRefUUID#1107237, _extract_code#1107234, _extract_internalRefUUID#1107235]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703847]
(1000) Project
Output [4]: [_extract_code#1107234, _extract_internalRefUUID#1107235, _extract_internalRefUUID#1107237, _extract_internalRefUUID#1107236]
Input [4]: [_extract_internalRefUUID#1107236, _extract_internalRefUUID#1107237, _extract_code#1107234, _extract_internalRefUUID#1107235]
(1001) BroadcastExchange
Input [4]: [_extract_code#1107234, _extract_internalRefUUID#1107235, _extract_internalRefUUID#1107237, _extract_internalRefUUID#1107236]
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=1704717]
(1002) BroadcastHashJoin
Left keys [4]: [coalesce(product#1105310, ), isnull(product#1105310), coalesce(plant#1105311, ), isnull(plant#1105311)]
Right keys [4]: [coalesce(_extract_internalRefUUID#1107237, ), isnull(_extract_internalRefUUID#1107237), coalesce(_extract_internalRefUUID#1107236, ), isnull(_extract_internalRefUUID#1107236)]
Join type: LeftOuter
Join condition: None
(1003) Project
Output [5]: [product#1105310, plant#1105311, orderDateTime#1105312, _extract_code#1107234, _extract_internalRefUUID#1107235]
Input [7]: [product#1105310, plant#1105311, orderDateTime#1105312, _extract_code#1107234, _extract_internalRefUUID#1107235, _extract_internalRefUUID#1107237, _extract_internalRefUUID#1107236]
(1004) Scan parquet
Output [4]: [internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331, systemId#1105324]
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>>>
(1005) Filter
Input [4]: [internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331, systemId#1105324]
Condition : isnotnull(internalUUID#1105325)
(1006) Project
Output [3]: [internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331]
Input [4]: [internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331, systemId#1105324]
(1007) Exchange
Input [3]: [internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703854]
(1008) BroadcastExchange
Input [3]: [internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1704721]
(1009) BroadcastHashJoin
Left keys [1]: [product#1105310]
Right keys [1]: [internalUUID#1105325]
Join type: LeftOuter
Join condition: None
(1010) Project
Output [4]: [product#1105310, plant#1105311, orderDateTime#1105312, filter(unitOfMeasureConversions#1105331, lambdafunction((((lambda u#1101207.measurementUnit1.code = _extract_code#1107234) AND (lambda u#1101207.measurementUnit1.internalRefUUID = _extract_internalRefUUID#1107235)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105329.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105329.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105336]
Input [8]: [product#1105310, plant#1105311, orderDateTime#1105312, _extract_code#1107234, _extract_internalRefUUID#1107235, internalUUID#1105325, baseUnitOfMeasure#1105329, unitOfMeasureConversions#1105331]
(1011) Generate
Input [4]: [product#1105310, plant#1105311, orderDateTime#1105312, filteredUnitOfMeasureConversions#1105336]
Arguments: explode(filteredUnitOfMeasureConversions#1105336.quantityNumerator), [product#1105310, plant#1105311, orderDateTime#1105312, filteredUnitOfMeasureConversions#1105336], true, [quantityNumerator#1105337]
(1012) Project
Output [4]: [product#1105310, plant#1105311, orderDateTime#1105312, filteredUnitOfMeasureConversions#1105336.quantityDenominator AS _extract_quantityDenominator#1107012]
Input [5]: [product#1105310, plant#1105311, orderDateTime#1105312, filteredUnitOfMeasureConversions#1105336, quantityNumerator#1105337]
(1013) Generate
Input [4]: [product#1105310, plant#1105311, orderDateTime#1105312, _extract_quantityDenominator#1107012]
Arguments: explode(_extract_quantityDenominator#1107012), [product#1105310, plant#1105311, orderDateTime#1105312], true, [quantityDenominator#1105338]
(1014) Project
Output [3]: [product#1105310, plant#1105311, orderDateTime#1105312]
Input [4]: [product#1105310, plant#1105311, orderDateTime#1105312, quantityDenominator#1105338]
(1015) Sort
Input [3]: [product#1105310, plant#1105311, orderDateTime#1105312]
Arguments: [product#1105310 ASC NULLS FIRST, plant#1105311 ASC NULLS FIRST], false, 0
(1016) SortMergeJoin
Left keys [2]: [productUuid#1105304, plantUuid#1105302]
Right keys [2]: [product#1105310, plant#1105311]
Join type: Inner
Join condition: (calculationDateTime#1105298 <= orderDateTime#1105312)
(1017) Project
Output [4]: [plantUuid#1105302 AS plant#1105341, productUuid#1105304 AS product#1105342, storageLocId#1105305, calculationDateTime#1105298]
Input [7]: [plantUuid#1105302, productUuid#1105304, calculationDateTime#1105298, storageLocId#1105305, product#1105310, plant#1105311, orderDateTime#1105312]
(1018) HashAggregate
Input [4]: [plant#1105341, product#1105342, storageLocId#1105305, calculationDateTime#1105298]
Keys [3]: [plant#1105341, product#1105342, storageLocId#1105305]
Functions [1]: [partial_max(calculationDateTime#1105298)]
Aggregate Attributes [1]: [max#1108329]
Results [4]: [plant#1105341, product#1105342, storageLocId#1105305, max#1108330]
(1019) HashAggregate
Input [4]: [plant#1105341, product#1105342, storageLocId#1105305, max#1108330]
Keys [3]: [plant#1105341, product#1105342, storageLocId#1105305]
Functions [1]: [max(calculationDateTime#1105298)]
Aggregate Attributes [1]: [max(calculationDateTime#1105298)#1101416]
Results [4]: [plant#1105341, product#1105342, storageLocId#1105305, max(calculationDateTime#1105298)#1101416 AS max_calc_datetime#1105343]
(1020) Exchange
Input [4]: [plant#1105341, product#1105342, storageLocId#1105305, max_calc_datetime#1105343]
Arguments: hashpartitioning(coalesce(plant#1105341, ), isnull(plant#1105341), coalesce(product#1105342, ), isnull(product#1105342), coalesce(storageLocId#1105305, ), isnull(storageLocId#1105305), coalesce(max_calc_datetime#1105343, 1970-01-01 00:00:00), isnull(max_calc_datetime#1105343), 37), ENSURE_REQUIREMENTS, [plan_id=1704740]
(1021) Sort
Input [4]: [plant#1105341, product#1105342, storageLocId#1105305, max_calc_datetime#1105343]
Arguments: [coalesce(plant#1105341, ) ASC NULLS FIRST, isnull(plant#1105341) ASC NULLS FIRST, coalesce(product#1105342, ) ASC NULLS FIRST, isnull(product#1105342) ASC NULLS FIRST, coalesce(storageLocId#1105305, ) ASC NULLS FIRST, isnull(storageLocId#1105305) ASC NULLS FIRST, coalesce(max_calc_datetime#1105343, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1105343) ASC NULLS FIRST], false, 0
(1022) SortMergeJoin
Left keys [8]: [coalesce(plant#1105231, ), isnull(plant#1105231), coalesce(product#1105232, ), isnull(product#1105232), coalesce(storageLocId#1105195, ), isnull(storageLocId#1105195), coalesce(calculationDateTime#1105188, 1970-01-01 00:00:00), isnull(calculationDateTime#1105188)]
Right keys [8]: [coalesce(plant#1105341, ), isnull(plant#1105341), coalesce(product#1105342, ), isnull(product#1105342), coalesce(storageLocId#1105305, ), isnull(storageLocId#1105305), coalesce(max_calc_datetime#1105343, 1970-01-01 00:00:00), isnull(max_calc_datetime#1105343)]
Join type: Inner
Join condition: None
(1023) Project
Output [4]: [plant#1105231, product#1105232, calculationDateTime#1105188, quantity#1105197]
Input [9]: [plant#1105231, product#1105232, storageLocId#1105195, calculationDateTime#1105188, quantity#1105197, plant#1105341, product#1105342, storageLocId#1105305, max_calc_datetime#1105343]
(1024) HashAggregate
Input [4]: [plant#1105231, product#1105232, calculationDateTime#1105188, quantity#1105197]
Keys [2]: [product#1105232, plant#1105231]
Functions [2]: [partial_min(calculationDateTime#1105188), partial_sum(quantity#1105197)]
Aggregate Attributes [2]: [min#1108319, sum#1108320]
Results [4]: [product#1105232, plant#1105231, min#1108321, sum#1108322]
(1025) Exchange
Input [4]: [product#1105232, plant#1105231, min#1108321, sum#1108322]
Arguments: hashpartitioning(product#1105232, plant#1105231, 37), ENSURE_REQUIREMENTS, [plan_id=1704747]
(1026) HashAggregate
Input [4]: [product#1105232, plant#1105231, min#1108321, sum#1108322]
Keys [2]: [product#1105232, plant#1105231]
Functions [2]: [min(calculationDateTime#1105188), sum(quantity#1105197)]
Aggregate Attributes [2]: [min(calculationDateTime#1105188)#1101543, sum(quantity#1105197)#1101542]
Results [4]: [product#1105232, plant#1105231, min(calculationDateTime#1105188)#1101543 AS minCalculationDateTime#1105345, round(sum(quantity#1105197)#1101542, 0) AS roundedQuantitySum#1105346]
(1027) Sort
Input [4]: [product#1105232, plant#1105231, minCalculationDateTime#1105345, roundedQuantitySum#1105346]
Arguments: [product#1105232 ASC NULLS FIRST, plant#1105231 ASC NULLS FIRST], false, 0
(1028) SortMergeJoin
Left keys [2]: [product#1105092, plant#1105093]
Right keys [2]: [product#1105232, plant#1105231]
Join type: LeftOuter
Join condition: None
(1029) Project
Output [7]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, CASE WHEN isnotnull(minCalculationDateTime#1105345) THEN minCalculationDateTime#1105345 ELSE orderDateTime#1105094 END AS stockDatetime#1105347, CASE WHEN isnotnull(roundedQuantitySum#1105346) THEN array(roundedQuantitySum#1105346) ELSE [0.0] END AS stockBatchQuantities#1105348]
Input [9]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, product#1105232, plant#1105231, minCalculationDateTime#1105345, roundedQuantitySum#1105346]
(1030) Exchange
Input [7]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348]
Arguments: hashpartitioning(coalesce(plant#1105093, ), isnull(plant#1105093), coalesce(product#1105092, ), isnull(product#1105092), 37), ENSURE_REQUIREMENTS, [plan_id=1704757]
(1031) Sort
Input [7]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348]
Arguments: [coalesce(plant#1105093, ) ASC NULLS FIRST, isnull(plant#1105093) ASC NULLS FIRST, coalesce(product#1105092, ) ASC NULLS FIRST, isnull(product#1105092) ASC NULLS FIRST], false, 0
(1032) Scan parquet
Output [9]: [product#1105350, plant#1105351, demandChannel#1105352, demandStream#1105353, considerVariance#1105354, demandTimeBuckets#1105355, demandPointInTimeStart#1105356, demandPointInTimeEnd#1105357, demandPointInTime#1105358]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000350/0_1_10000000350]
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) Exchange
Input [9]: [product#1105350, plant#1105351, demandChannel#1105352, demandStream#1105353, considerVariance#1105354, demandTimeBuckets#1105355, demandPointInTimeStart#1105356, demandPointInTimeEnd#1105357, demandPointInTime#1105358]
Arguments: hashpartitioning(coalesce(plant#1105351, ), isnull(plant#1105351), coalesce(product#1105350, ), isnull(product#1105350), 37), ENSURE_REQUIREMENTS, [plan_id=1704758]
(1034) Sort
Input [9]: [product#1105350, plant#1105351, demandChannel#1105352, demandStream#1105353, considerVariance#1105354, demandTimeBuckets#1105355, demandPointInTimeStart#1105356, demandPointInTimeEnd#1105357, demandPointInTime#1105358]
Arguments: [coalesce(plant#1105351, ) ASC NULLS FIRST, isnull(plant#1105351) ASC NULLS FIRST, coalesce(product#1105350, ) ASC NULLS FIRST, isnull(product#1105350) ASC NULLS FIRST], false, 0
(1035) SortMergeJoin
Left keys [4]: [coalesce(plant#1105093, ), isnull(plant#1105093), coalesce(product#1105092, ), isnull(product#1105092)]
Right keys [4]: [coalesce(plant#1105351, ), isnull(plant#1105351), coalesce(product#1105350, ), isnull(product#1105350)]
Join type: LeftOuter
Join condition: None
(1036) Project
Output [8]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, CASE WHEN isnotnull(product#1105350) THEN struct(demandChannel, demandChannel#1105352, demandStream, demandStream#1105353, considerVariance, considerVariance#1105354, demandTimeBuckets, demandTimeBuckets#1105355, demandPointInTimeStart, demandPointInTimeStart#1105356, demandPointInTimeEnd, demandPointInTimeEnd#1105357, demandPointInTime, demandPointInTime#1105358) END AS rawDemands#1105359]
Input [16]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, product#1105350, plant#1105351, demandChannel#1105352, demandStream#1105353, considerVariance#1105354, demandTimeBuckets#1105355, demandPointInTimeStart#1105356, demandPointInTimeEnd#1105357, demandPointInTime#1105358]
(1037) ObjectHashAggregate
Input [8]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, rawDemands#1105359]
Keys [8]: [product#1105092, plant#1105093, orderDateTime#1105094, knownfloatingpointnormalized(if (isnull(productPlant#1105105)) null else named_struct(systemId, productPlant#1105105.systemId, internalUUID, productPlant#1105105.internalUUID, plant, productPlant#1105105.plant, product, productPlant#1105105.product, blockedForReplenishmentStartingFrom, productPlant#1105105.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1105105.productionAspect)) null else named_struct(productMovementPlants, productPlant#1105105.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1105105.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1105105.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1105105.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1105105.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1105105.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#1105105.salesPlant, listing, productPlant#1105105.listing, sourceOfSupplyCategory, productPlant#1105105.sourceOfSupplyCategory)) AS productPlant#1105105, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1105122)) AS outboundUnit#1105122, stockDatetime#1105347, knownfloatingpointnormalized(transform(stockBatchQuantities#1105348, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#1108316)), lambda arg#1108316, false))) AS stockBatchQuantities#1105348, [7226582400000000] AS [7226582400000000]#1108315]
Functions [1]: [partial_collect_list(rawDemands#1105359, 0, 0)]
Aggregate Attributes [1]: [buf#1108317]
Results [9]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, [7226582400000000]#1108315, buf#1108318]
(1038) Exchange
Input [9]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, [7226582400000000]#1108315, buf#1108318]
Arguments: hashpartitioning(product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, [7226582400000000]#1108315, 37), ENSURE_REQUIREMENTS, [plan_id=1704765]
(1039) ObjectHashAggregate
Input [9]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, [7226582400000000]#1108315, buf#1108318]
Keys [8]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, [7226582400000000]#1108315]
Functions [1]: [collect_list(rawDemands#1105359, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1105359, 0, 0)#1101612]
Results [8]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, collect_list(rawDemands#1105359, 0, 0)#1101612 AS rawDemands#1105360]
(1040) Scan parquet
Output [3]: [internalUUID#1105362, address#1105368, systemId#1105361]
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>>>
(1041) Project
Output [2]: [internalUUID#1105362, address#1105368.timeZone.code AS timezonecode#1105373]
Input [3]: [internalUUID#1105362, address#1105368, systemId#1105361]
(1042) Exchange
Input [2]: [internalUUID#1105362, timezonecode#1105373]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1703878]
(1043) BroadcastExchange
Input [2]: [internalUUID#1105362, timezonecode#1105373]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1704768]
(1044) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1105093, ), isnull(plant#1105093)]
Right keys [2]: [coalesce(internalUUID#1105362, ), isnull(internalUUID#1105362)]
Join type: LeftOuter
Join condition: None
(1045) Project
Output [10]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1105349, rawDemands#1105360, CASE WHEN isnotnull(timezonecode#1105373) THEN timezonecode#1105373 ELSE UTC END AS timezonecode#1105374]
Input [10]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, rawDemands#1105360, internalUUID#1105362, timezonecode#1105373]
(1046) DeserializeToObject
Input [10]: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349, rawDemands#1105360, timezonecode#1105374]
Arguments: createexternalrow(invoke(product#1105092.toString()), invoke(plant#1105093.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1105094)), if (isnull(productPlant#1105105)) null else createexternalrow(invoke(productPlant#1105105.systemId.toString()), invoke(productPlant#1105105.internalUUID.toString()), if (isnull(productPlant#1105105.plant)) null else createexternalrow(invoke(productPlant#1105105.plant.internalRefUUID.toString()), invoke(productPlant#1105105.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1105105.product)) null else createexternalrow(invoke(productPlant#1105105.product.internalRefUUID.toString()), invoke(productPlant#1105105.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1105105.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1105105.productionAspect)) null else createexternalrow(if (isnull(productPlant#1105105.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105105.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1105105.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105105.salesPlant)) null else createexternalrow(if (isnull(productPlant#1105105.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1105105.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105105.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1105105.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1105105.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105122)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1105347)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#1105348, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#1105349, 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#1105360, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1105374.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#1102685: org.apache.spark.sql.Row
(1047) MapElements
Input [1]: [obj#1102685]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, obj#1102690: org.apache.spark.sql.Row
(1048) SerializeFromObject
Input [1]: [obj#1102690]
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#1105375, 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#1105376, 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#1105377, 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#1105378]
(1049) Exchange
Input [4]: [product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Arguments: hashpartitioning(coalesce(plant#1105376, ), isnull(plant#1105376), coalesce(product#1105375, ), isnull(product#1105375), 37), ENSURE_REQUIREMENTS, [plan_id=1704777]
(1050) Sort
Input [4]: [product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Arguments: [coalesce(plant#1105376, ) ASC NULLS FIRST, isnull(plant#1105376) ASC NULLS FIRST, coalesce(product#1105375, ) ASC NULLS FIRST, isnull(product#1105375) ASC NULLS FIRST], false, 0
(1051) SortMergeJoin
Left keys [4]: [coalesce(plant#1104835, ), isnull(plant#1104835), coalesce(product#1104834, ), isnull(product#1104834)]
Right keys [4]: [coalesce(plant#1105376, ), isnull(plant#1105376), coalesce(product#1105375, ), isnull(product#1105375)]
Join type: LeftOuter
Join condition: None
(1052) Project
Output [9]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, dayBucketDemands#1105377, pointInTimeDemands#1105378]
Input [11]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, product#1105375, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
(1053) InMemoryTableScan
Output [3]: [product#1105993, plant#1105992, openGoodsMovements#1106004]
Arguments: [product#1105993, plant#1105992, openGoodsMovements#1106004], [isnotnull(product#1105993), isnotnull(plant#1105992)]
(1054) InMemoryRelation
Arguments: [product#1105993, plant#1105992, openGoodsMovements#1106004], StorageLevel(disk, memory, 2 replicas)
(1055) Filter
Input [3]: [product#1105993, plant#1105992, openGoodsMovements#1106004]
Condition : (isnotnull(product#1105993) AND isnotnull(plant#1105992))
(1056) ObjectHashAggregate
Input [3]: [product#1105993, plant#1105992, openGoodsMovements#1106004]
Keys [2]: [product#1105993, plant#1105992]
Functions [1]: [partial_collect_list(openGoodsMovements#1106004, 0, 0)]
Aggregate Attributes [1]: [buf#1108337]
Results [3]: [product#1105993, plant#1105992, buf#1108338]
(1057) Exchange
Input [3]: [product#1105993, plant#1105992, buf#1108338]
Arguments: hashpartitioning(product#1105993, plant#1105992, 37), ENSURE_REQUIREMENTS, [plan_id=1704782]
(1058) ObjectHashAggregate
Input [3]: [product#1105993, plant#1105992, buf#1108338]
Keys [2]: [product#1105993, plant#1105992]
Functions [1]: [collect_list(openGoodsMovements#1106004, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#1106004, 0, 0)#1103758]
Results [3]: [product#1105993, plant#1105992, flatten(collect_list(openGoodsMovements#1106004, 0, 0)#1103758) AS openGoodsMovements#1106570]
(1059) Project
Output [5]: [product#1105993, plant#1105992, openGoodsMovements#1106570.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#1107199, openGoodsMovements#1106570.availabilityDatetime AS _extract_availabilityDatetime#1107200, openGoodsMovements#1106570.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#1107201]
Input [3]: [product#1105993, plant#1105992, openGoodsMovements#1106570]
(1060) BroadcastExchange
Input [5]: [product#1105993, plant#1105992, _extract_openQtyInBaseUnit#1107199, _extract_availabilityDatetime#1107200, _extract_shelfLifeEndDatetime#1107201]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1704786]
(1061) BroadcastHashJoin
Left keys [2]: [product#1104834, plant#1104835]
Right keys [2]: [product#1105993, plant#1105992]
Join type: LeftOuter
Join condition: None
(1062) Project
Output [15]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, coalesce(_extract_openQtyInBaseUnit#1107199, []) AS openGoodsMovementQuantities#1106571, coalesce(_extract_availabilityDatetime#1107200, []) AS openGoodsMovementAvailabilityDatetimes#1106572, coalesce(_extract_shelfLifeEndDatetime#1107201, []) AS openGoodsMovementShelfLifeEndDatetimes#1106573, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1106574, array_sort(filter(CASE WHEN isnotnull(productPlant#1104847.listing) THEN productPlant#1104847.listing ELSE [] END, lambdafunction(lambda listing#1104780.isListed, lambda listing#1104780, false)), lambdafunction(if ((isnull(lambda left#1104782) AND isnull(lambda right#1104783))) 0 else if (isnull(lambda left#1104782)) 1 else if (isnull(lambda right#1104783)) -1 else if ((lambda left#1104782 < lambda right#1104783)) -1 else if ((lambda left#1104782 > lambda right#1104783)) 1 else 0, lambda left#1104782, lambda right#1104783, false), false) AS listing#1104781]
Input [14]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, dayBucketDemands#1105377, pointInTimeDemands#1105378, product#1105993, plant#1105992, _extract_openQtyInBaseUnit#1107199, _extract_availabilityDatetime#1107200, _extract_shelfLifeEndDatetime#1107201]
(1063) DeserializeToObject
Input [15]: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, configuration#1106574, listing#1104781]
Arguments: createexternalrow(invoke(product#1104834.toString()), invoke(plant#1104835.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1104836)), if (isnull(productPlant#1104847)) null else createexternalrow(invoke(productPlant#1104847.systemId.toString()), invoke(productPlant#1104847.internalUUID.toString()), if (isnull(productPlant#1104847.plant)) null else createexternalrow(invoke(productPlant#1104847.plant.internalRefUUID.toString()), invoke(productPlant#1104847.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1104847.product)) null else createexternalrow(invoke(productPlant#1104847.product.internalRefUUID.toString()), invoke(productPlant#1104847.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1104847.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1104847.productionAspect)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1104847.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.salesPlant)) null else createexternalrow(if (isnull(productPlant#1104847.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1104847.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1104847.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1104847.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104864)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1105089)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#1105090, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#1105091, 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#1105377, 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#1105378, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#1106571, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#1106572, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#1106573, 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#1106574, 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#1104781, 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#1104814: org.apache.spark.sql.Row
(1064) MapElements
Input [1]: [obj#1104814]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#1104821: org.apache.spark.sql.Row
(1065) SerializeFromObject
Input [1]: [obj#1104821]
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#1104828, 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#1104829, 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#1104830, 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#1104831, 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#1104832, 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#1104833]
(1066) Filter
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Condition : (isnotnull(product#1104828) AND isnotnull(plant#1104829))
(1067) Exchange
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: hashpartitioning(product#1104828, plant#1104829, 37), ENSURE_REQUIREMENTS, [plan_id=1704796]
(1068) Sort
Input [6]: [product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
Arguments: [product#1104828 ASC NULLS FIRST, plant#1104829 ASC NULLS FIRST], false, 0
(1069) SortMergeJoin
Left keys [2]: [product#1101131, plant#1101132]
Right keys [2]: [product#1104828, plant#1104829]
Join type: LeftOuter
Join condition: None
(1070) Project
Output [16]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#1104637, CASE WHEN isnotnull(timeDependentSettingsName#1104830) THEN timeDependentSettingsName#1104830 ELSE [] END AS timeDependentSettingsName#1106699, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#1104831) THEN timeDependentSettingsStartDatetime#1104831 ELSE [] END AS timeDependentSettingsStartDatetime#1106700, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#1104832) THEN timeDependentSettingsEndDatetime#1104832 ELSE [] END AS timeDependentSettingsEndDatetime#1106701, CASE WHEN isnotnull(timeDependentSettingsValue#1104833) THEN timeDependentSettingsValue#1104833 ELSE [] END AS timeDependentSettingsValue#1106702]
Input [16]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, product#1104828, plant#1104829, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
(1071) AdaptiveSparkPlan
Output [16]: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1106700, timeDependentSettingsEndDatetime#1106701, timeDependentSettingsValue#1106702]
Arguments: isFinalPlan=false