== 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#905388, plant#905389, orderDateTime#905390]
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/10000000348/shardId=0_1_10000000348]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#905388, plant#905389, orderDateTime#905390]
(3) Exchange
Input [3]: [product#905388, plant#905389, orderDateTime#905390]
Arguments: hashpartitioning(product#905388, plant#905389, 37), REPARTITION_BY_NUM, [plan_id=1400799]
(4) ShuffleQueryStage
Output [3]: [product#905388, plant#905389, orderDateTime#905390]
Arguments: 0
(5) Scan parquet
Output [4]: [plant#905417, product#905418, productionAspect#905420, systemId#905415]
Batched: 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#905417, product#905418, productionAspect#905420, systemId#905415]
(7) Project [codegen id : 2]
Output [4]: [plant#905417.internalRefUUID AS _extract_internalRefUUID#911418, product#905418.internalRefUUID AS _extract_internalRefUUID#911419, productionAspect#905420.productMovementPlants.unitOfIssue.code AS _extract_code#911420, productionAspect#905420.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911421]
Input [4]: [plant#905417, product#905418, productionAspect#905420, systemId#905415]
(8) Exchange
Input [4]: [_extract_internalRefUUID#911418, _extract_internalRefUUID#911419, _extract_code#911420, _extract_internalRefUUID#911421]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1400813]
(9) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#911418, _extract_internalRefUUID#911419, _extract_code#911420, _extract_internalRefUUID#911421]
Arguments: 1
(10) Project [codegen id : 83]
Output [4]: [_extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
Input [4]: [_extract_internalRefUUID#911418, _extract_internalRefUUID#911419, _extract_code#911420, _extract_internalRefUUID#911421]
(11) BroadcastExchange
Input [4]: [_extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
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=1414777]
(12) BroadcastQueryStage
Output [4]: [_extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
Arguments: 154
(13) BroadcastHashJoin [codegen id : 167]
Left keys [4]: [coalesce(product#905388, ), isnull(product#905388), coalesce(plant#905389, ), isnull(plant#905389)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911419, ), isnull(_extract_internalRefUUID#911419), coalesce(_extract_internalRefUUID#911418, ), isnull(_extract_internalRefUUID#911418)]
Join type: LeftOuter
Join condition: None
(14) Project [codegen id : 167]
Output [5]: [product#905388, plant#905389, orderDateTime#905390, _extract_code#911420, _extract_internalRefUUID#911421]
Input [7]: [product#905388, plant#905389, orderDateTime#905390, _extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
(15) Scan parquet
Output [4]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457, systemId#905450]
Batched: 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#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457, systemId#905450]
(17) Filter [codegen id : 3]
Input [4]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457, systemId#905450]
Condition : isnotnull(internalUUID#905451)
(18) Project [codegen id : 3]
Output [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Input [4]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457, systemId#905450]
(19) Exchange
Input [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1400834]
(20) ShuffleQueryStage
Output [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Arguments: 2
(21) BroadcastExchange
Input [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1413710]
(22) BroadcastQueryStage
Output [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Arguments: 187
(23) BroadcastHashJoin [codegen id : 167]
Left keys [1]: [product#905388]
Right keys [1]: [internalUUID#905451]
Join type: LeftOuter
Join condition: None
(24) Project
Output [4]: [product#905388, plant#905389, orderDateTime#905390, filter(unitOfMeasureConversions#905457, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911420) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911421)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905455.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905455.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905463]
Input [8]: [product#905388, plant#905389, orderDateTime#905390, _extract_code#911420, _extract_internalRefUUID#911421, internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
(25) Project [codegen id : 168]
Output [5]: [product#905388, plant#905389, orderDateTime#905390, filteredUnitOfMeasureConversions#905463.quantityDenominator AS _extract_quantityDenominator#911416, filteredUnitOfMeasureConversions#905463.quantityNumerator AS _extract_quantityNumerator#911417]
Input [4]: [product#905388, plant#905389, orderDateTime#905390, filteredUnitOfMeasureConversions#905463]
(26) Generate [codegen id : 168]
Input [5]: [product#905388, plant#905389, orderDateTime#905390, _extract_quantityDenominator#911416, _extract_quantityNumerator#911417]
Arguments: explode(_extract_quantityNumerator#911417), [product#905388, plant#905389, orderDateTime#905390, _extract_quantityDenominator#911416], true, [quantityNumerator#905471]
(27) Generate [codegen id : 168]
Input [5]: [product#905388, plant#905389, orderDateTime#905390, _extract_quantityDenominator#911416, quantityNumerator#905471]
Arguments: explode(_extract_quantityDenominator#911416), [product#905388, plant#905389, orderDateTime#905390, quantityNumerator#905471], true, [quantityDenominator#905474]
(28) Project [codegen id : 168]
Output [4]: [product#905388, plant#905389, orderDateTime#905390, (cast(quantityNumerator#905471 as double) / cast(quantityDenominator#905474 as double)) AS outboundUnit#905475]
Input [5]: [product#905388, plant#905389, orderDateTime#905390, quantityNumerator#905471, quantityDenominator#905474]
(29) Project [codegen id : 168]
Output [4]: [product#905388, plant#905389, orderDateTime#905390, CASE WHEN (isnull(outboundUnit#905475) OR (outboundUnit#905475 <= 0.0)) THEN 1.0 ELSE outboundUnit#905475 END AS outboundUnit#905476]
Input [4]: [product#905388, plant#905389, orderDateTime#905390, outboundUnit#905475]
(30) Scan parquet
Output [6]: [internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, systemId#905585]
Batched: 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#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, systemId#905585]
(32) Filter [codegen id : 4]
Input [6]: [internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, systemId#905585]
Condition : (isnotnull(plant#905588.internalRefUUID) AND isnotnull(product#905587.internalRefUUID))
(33) Project [codegen id : 4]
Output [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
Input [6]: [internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, systemId#905585]
(34) Exchange
Input [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1400862]
(35) ShuffleQueryStage
Output [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
Arguments: 3
(36) BroadcastExchange
Input [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
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=1413738]
(37) BroadcastQueryStage
Output [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
Arguments: 188
(38) Scan parquet
Output [2]: [marketUnit#905528, distributionCenters#905534]
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#905528, distributionCenters#905534]
(40) Filter [codegen id : 5]
Input [2]: [marketUnit#905528, distributionCenters#905534]
Condition : (((marketUnit#905528 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#905534, true) > 0)) AND isnotnull(distributionCenters#905534))
(41) Project [codegen id : 5]
Output [1]: [distributionCenters#905534]
Input [2]: [marketUnit#905528, distributionCenters#905534]
(42) Exchange
Input [1]: [distributionCenters#905534]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1400882]
(43) ShuffleQueryStage
Output [1]: [distributionCenters#905534]
Arguments: 4
(44) Generate [codegen id : 100]
Input [1]: [distributionCenters#905534]
Arguments: explode(distributionCenters#905534), false, [distributionCenters#905551]
(45) Filter [codegen id : 100]
Input [1]: [distributionCenters#905551]
Condition : (((size(distributionCenters#905551.storageLocations, true) > 0) AND isnotnull(distributionCenters#905551.storageLocations)) AND isnotnull(distributionCenters#905551.internalRefUUID))
(46) Project [codegen id : 100]
Output [2]: [distributionCenters#905551.internalRefUUID AS _extract_internalRefUUID#911144, distributionCenters#905551.storageLocations AS _extract_storageLocations#911145]
Input [1]: [distributionCenters#905551]
(47) Generate [codegen id : 100]
Input [2]: [_extract_internalRefUUID#911144, _extract_storageLocations#911145]
Arguments: explode(_extract_storageLocations#911145), [_extract_internalRefUUID#911144], false, [storageLocations#905558]
(48) Project [codegen id : 100]
Output [3]: [_extract_internalRefUUID#911144 AS plantUuid#905553, storageLocations#905558.id AS storageLocId#905559, storageLocations#905558.internalRefUUID AS storageLocUuid#905560]
Input [2]: [_extract_internalRefUUID#911144, storageLocations#905558]
(49) BroadcastExchange
Input [3]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1418065]
(50) BroadcastQueryStage
Output [3]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Arguments: 189
(51) Scan parquet
Output [2]: [product#905802, plant#905803]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(52) ColumnarToRow [codegen id : 6]
Input [2]: [product#905802, plant#905803]
(53) Filter [codegen id : 6]
Input [2]: [product#905802, plant#905803]
Condition : isnotnull(plant#905803)
(54) Exchange
Input [2]: [product#905802, plant#905803]
Arguments: hashpartitioning(product#905802, plant#905803, 37), REPARTITION_BY_NUM, [plan_id=1400905]
(55) ShuffleQueryStage
Output [2]: [product#905802, plant#905803]
Arguments: 5
(56) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#911423, _extract_internalRefUUID#911424, _extract_internalRefUUID#911425, _extract_internalRefUUID#911422]
(57) BroadcastQueryStage
Output [4]: [_extract_code#911423, _extract_internalRefUUID#911424, _extract_internalRefUUID#911425, _extract_internalRefUUID#911422]
Arguments: 156
(58) BroadcastHashJoin [codegen id : 111]
Left keys [4]: [coalesce(product#905802, ), isnull(product#905802), coalesce(plant#905803, ), isnull(plant#905803)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911425, ), isnull(_extract_internalRefUUID#911425), coalesce(_extract_internalRefUUID#911422, ), isnull(_extract_internalRefUUID#911422)]
Join type: LeftOuter
Join condition: None
(59) Project [codegen id : 111]
Output [4]: [product#905802, plant#905803, _extract_code#911423, _extract_internalRefUUID#911424]
Input [6]: [product#905802, plant#905803, _extract_code#911423, _extract_internalRefUUID#911424, _extract_internalRefUUID#911425, _extract_internalRefUUID#911422]
(60) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
(61) BroadcastQueryStage
Output [3]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
Arguments: 190
(62) BroadcastHashJoin [codegen id : 111]
Left keys [1]: [product#905802]
Right keys [1]: [internalUUID#905817]
Join type: LeftOuter
Join condition: None
(63) Project
Output [2]: [plant#905803, filter(unitOfMeasureConversions#905823, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911423) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911424)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905821.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905821.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905828]
Input [7]: [product#905802, plant#905803, _extract_code#911423, _extract_internalRefUUID#911424, internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
(64) Generate [codegen id : 112]
Input [2]: [plant#905803, filteredUnitOfMeasureConversions#905828]
Arguments: explode(filteredUnitOfMeasureConversions#905828.quantityNumerator), [plant#905803, filteredUnitOfMeasureConversions#905828], true, [quantityNumerator#905829]
(65) Project [codegen id : 112]
Output [2]: [plant#905803, filteredUnitOfMeasureConversions#905828.quantityDenominator AS _extract_quantityDenominator#911146]
Input [3]: [plant#905803, filteredUnitOfMeasureConversions#905828, quantityNumerator#905829]
(66) Generate [codegen id : 112]
Input [2]: [plant#905803, _extract_quantityDenominator#911146]
Arguments: explode(_extract_quantityDenominator#911146), [plant#905803], true, [quantityDenominator#905830]
(67) Project [codegen id : 112]
Output [1]: [plant#905803]
Input [2]: [plant#905803, quantityDenominator#905830]
(68) HashAggregate [codegen id : 112]
Input [1]: [plant#905803]
Keys [1]: [plant#905803]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905803]
(69) Exchange
Input [1]: [plant#905803]
Arguments: hashpartitioning(plant#905803, 37), ENSURE_REQUIREMENTS, [plan_id=1423219]
(70) ShuffleQueryStage
Output [1]: [plant#905803]
Arguments: 237
(71) AQEShuffleRead
Input [1]: [plant#905803]
Arguments: coalesced
(72) HashAggregate
Input [1]: [plant#905803]
Keys [1]: [plant#905803]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905803]
(73) BroadcastHashJoin
Left keys [1]: [plantUuid#905553]
Right keys [1]: [plant#905803]
Join type: Inner
Join condition: None
(74) Project
Output [3]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Input [4]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560, plant#905803]
(75) BroadcastHashJoin [codegen id : 127]
Left keys [2]: [coalesce(plant#905588.internalRefUUID, ), isnull(plant#905588.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#905553, ), isnull(plantUuid#905553)]
Join type: Inner
Join condition: None
(76) Generate
Input [9]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Arguments: explode(filter(stockQuantities#905590, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#905560) AND (lambda x#905594.storageLocation.Id = storageLocId#905559)), lambda x#905594, false))), [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, plantUuid#905553], false, [stockQuantity#905595]
(77) ObjectHashAggregate
Input [7]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, plantUuid#905553, stockQuantity#905595]
Keys [5]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585]
Functions [2]: [partial_first(calculationDateTime#905589, false), partial_collect_list(stockQuantity#905595, 0, 0)]
Aggregate Attributes [3]: [first#912516, valueSet#912517, buf#912518]
Results [8]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585, first#912519, valueSet#912520, buf#912521]
(78) ObjectHashAggregate
Input [8]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585, first#912519, valueSet#912520, buf#912521]
Keys [5]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585]
Functions [2]: [first(calculationDateTime#905589, false), collect_list(stockQuantity#905595, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#905589)()#905609, collect_list(stockQuantity#905595, 0, 0)#905610]
Results [4]: [product#905587, plant#905588, first(calculationDateTime#905589)()#905609 AS calculationDateTime#905596, collect_list(stockQuantity#905595, 0, 0)#905610 AS stockQuantities#905597]
(79) Filter [codegen id : 128]
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantities#905597]
Condition : ((size(stockQuantities#905597, true) > 0) AND isnotnull(calculationDateTime#905596))
(80) Generate [codegen id : 128]
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantities#905597]
Arguments: explode(stockQuantities#905597), [product#905587, plant#905588, calculationDateTime#905596], false, [stockQuantity#905612]
(81) Filter [codegen id : 128]
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantity#905612]
Condition : (((isnotnull(stockQuantity#905612.specialStockIndicator.code) AND isnotnull(stockQuantity#905612.stockType.code)) AND (stockQuantity#905612.specialStockIndicator.code = )) AND (stockQuantity#905612.stockType.code = 01))
(82) Project [codegen id : 128]
Output [5]: [plant#905588.internalRefUUID AS plantUuid#905614, product#905587.internalRefUUID AS productUuid#905616, calculationDateTime#905596, stockQuantity#905612.storagelocation.id AS storageLocId#905617, stockQuantity#905612.quantity.measure AS quantity#905619]
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantity#905612]
(83) Exchange
Input [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: hashpartitioning(productUuid#905616, plantUuid#905614, 37), ENSURE_REQUIREMENTS, [plan_id=1434254]
(84) ShuffleQueryStage
Output [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: 252
(85) AQEShuffleRead
Input [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: local
(86) BroadcastExchange
Input [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1436220]
(87) BroadcastQueryStage
Output [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: 266
(88) Scan parquet
Output [3]: [product#905631, plant#905632, orderDateTime#905633]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(89) ColumnarToRow [codegen id : 9]
Input [3]: [product#905631, plant#905632, orderDateTime#905633]
(90) Filter [codegen id : 9]
Input [3]: [product#905631, plant#905632, orderDateTime#905633]
Condition : ((isnotnull(orderDateTime#905633) AND isnotnull(plant#905632)) AND isnotnull(product#905631))
(91) Exchange
Input [3]: [product#905631, plant#905632, orderDateTime#905633]
Arguments: hashpartitioning(product#905631, plant#905632, 37), REPARTITION_BY_NUM, [plan_id=1400985]
(92) ShuffleQueryStage
Output [3]: [product#905631, plant#905632, orderDateTime#905633]
Arguments: 10
(93) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#911428, _extract_internalRefUUID#911429, _extract_internalRefUUID#911426, _extract_internalRefUUID#911427]
(94) BroadcastQueryStage
Output [4]: [_extract_code#911428, _extract_internalRefUUID#911429, _extract_internalRefUUID#911426, _extract_internalRefUUID#911427]
Arguments: 158
(95) BroadcastHashJoin [codegen id : 143]
Left keys [4]: [coalesce(product#905631, ), isnull(product#905631), coalesce(plant#905632, ), isnull(plant#905632)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911426, ), isnull(_extract_internalRefUUID#911426), coalesce(_extract_internalRefUUID#911427, ), isnull(_extract_internalRefUUID#911427)]
Join type: LeftOuter
Join condition: None
(96) Project [codegen id : 143]
Output [5]: [product#905631, plant#905632, orderDateTime#905633, _extract_code#911428, _extract_internalRefUUID#911429]
Input [7]: [product#905631, plant#905632, orderDateTime#905633, _extract_code#911428, _extract_internalRefUUID#911429, _extract_internalRefUUID#911426, _extract_internalRefUUID#911427]
(97) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
(98) BroadcastQueryStage
Output [3]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
Arguments: 191
(99) BroadcastHashJoin [codegen id : 143]
Left keys [1]: [product#905631]
Right keys [1]: [internalUUID#905646]
Join type: LeftOuter
Join condition: None
(100) Project
Output [4]: [product#905631, plant#905632, orderDateTime#905633, filter(unitOfMeasureConversions#905652, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911428) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911429)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905650.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905650.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905657]
Input [8]: [product#905631, plant#905632, orderDateTime#905633, _extract_code#911428, _extract_internalRefUUID#911429, internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
(101) Generate
Input [4]: [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657]
Arguments: explode(filteredUnitOfMeasureConversions#905657.quantityNumerator), [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657], true, [quantityNumerator#905658]
(102) Project
Output [4]: [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657.quantityDenominator AS _extract_quantityDenominator#911153]
Input [5]: [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657, quantityNumerator#905658]
(103) Generate
Input [4]: [product#905631, plant#905632, orderDateTime#905633, _extract_quantityDenominator#911153]
Arguments: explode(_extract_quantityDenominator#911153), [product#905631, plant#905632, orderDateTime#905633], true, [quantityDenominator#905659]
(104) Project
Output [3]: [product#905631, plant#905632, orderDateTime#905633]
Input [4]: [product#905631, plant#905632, orderDateTime#905633, quantityDenominator#905659]
(105) BroadcastHashJoin [codegen id : 144]
Left keys [2]: [plantUuid#905614, productUuid#905616]
Right keys [2]: [plant#905632, product#905631]
Join type: Inner
Join condition: (calculationDateTime#905596 <= orderDateTime#905633)
(106) Project [codegen id : 144]
Output [5]: [plantUuid#905614 AS plant#905665, productUuid#905616 AS product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Input [8]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619, product#905631, plant#905632, orderDateTime#905633]
(107) Exchange
Input [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Arguments: hashpartitioning(coalesce(plant#905665, ), isnull(plant#905665), coalesce(product#905666, ), isnull(product#905666), coalesce(storageLocId#905617, ), isnull(storageLocId#905617), coalesce(calculationDateTime#905596, 1970-01-01 00:00:00), isnull(calculationDateTime#905596), 37), ENSURE_REQUIREMENTS, [plan_id=1438917]
(108) ShuffleQueryStage
Output [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Arguments: 280
(109) AQEShuffleRead
Input [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Arguments: local
(110) BroadcastExchange
Input [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
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=1441212]
(111) BroadcastQueryStage
Output [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Arguments: 294
(112) ReusedExchange [Reuses operator id: 36]
Output [6]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679]
(113) BroadcastQueryStage
Output [6]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679]
Arguments: 192
(114) ReusedExchange [Reuses operator id: 49]
Output [3]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
(115) BroadcastQueryStage
Output [3]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
Arguments: 194
(116) ReusedExchange [Reuses operator id: 69]
Output [1]: [plant#905708]
(117) ShuffleQueryStage
Output [1]: [plant#905708]
Arguments: 239
(118) AQEShuffleRead
Input [1]: [plant#905708]
Arguments: coalesced
(119) HashAggregate
Input [1]: [plant#905708]
Keys [1]: [plant#905708]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905708]
(120) BroadcastHashJoin
Left keys [1]: [plantUuid#905704]
Right keys [1]: [plant#905708]
Join type: Inner
Join condition: None
(121) Project
Output [3]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
Input [4]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706, plant#905708]
(122) BroadcastHashJoin [codegen id : 129]
Left keys [2]: [coalesce(plant#905677.internalRefUUID, ), isnull(plant#905677.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#905704, ), isnull(plantUuid#905704)]
Join type: Inner
Join condition: None
(123) Generate
Input [9]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679, plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
Arguments: explode(filter(stockQuantities#905679, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#905706) AND (lambda x#905594.storageLocation.Id = storageLocId#905705)), lambda x#905594, false))), [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, plantUuid#905704], false, [stockQuantity#905738]
(124) ObjectHashAggregate
Input [7]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, plantUuid#905704, stockQuantity#905738]
Keys [5]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674]
Functions [2]: [partial_first(calculationDateTime#905678, false), partial_collect_list(stockQuantity#905738, 0, 0)]
Aggregate Attributes [3]: [first#912524, valueSet#912525, buf#912526]
Results [8]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674, first#912527, valueSet#912528, buf#912529]
(125) ObjectHashAggregate
Input [8]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674, first#912527, valueSet#912528, buf#912529]
Keys [5]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674]
Functions [2]: [first(calculationDateTime#905678, false), collect_list(stockQuantity#905738, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#905678)()#905609, collect_list(stockQuantity#905738, 0, 0)#905610]
Results [4]: [product#905676, plant#905677, first(calculationDateTime#905678)()#905609 AS calculationDateTime#905739, collect_list(stockQuantity#905738, 0, 0)#905610 AS stockQuantities#905740]
(126) Filter [codegen id : 130]
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantities#905740]
Condition : ((size(stockQuantities#905740, true) > 0) AND isnotnull(calculationDateTime#905739))
(127) Generate [codegen id : 130]
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantities#905740]
Arguments: explode(stockQuantities#905740), [product#905676, plant#905677, calculationDateTime#905739], false, [stockQuantity#905741]
(128) Filter [codegen id : 130]
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantity#905741]
Condition : (((isnotnull(stockQuantity#905741.specialStockIndicator.code) AND isnotnull(stockQuantity#905741.stockType.code)) AND (stockQuantity#905741.specialStockIndicator.code = )) AND (stockQuantity#905741.stockType.code = 01))
(129) Project [codegen id : 130]
Output [4]: [plant#905677.internalRefUUID AS plantUuid#905743, product#905676.internalRefUUID AS productUuid#905745, calculationDateTime#905739, stockQuantity#905741.storagelocation.id AS storageLocId#905746]
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantity#905741]
(130) Exchange
Input [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: hashpartitioning(productUuid#905745, plantUuid#905743, 37), ENSURE_REQUIREMENTS, [plan_id=1434322]
(131) ShuffleQueryStage
Output [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: 253
(132) AQEShuffleRead
Input [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: local
(133) BroadcastExchange
Input [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1437574]
(134) BroadcastQueryStage
Output [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: 273
(135) ReusedExchange [Reuses operator id: 91]
Output [3]: [product#905751, plant#905752, orderDateTime#905753]
(136) ShuffleQueryStage
Output [3]: [product#905751, plant#905752, orderDateTime#905753]
Arguments: 26
(137) ReusedExchange [Reuses operator id: 11]
Output [4]: [_extract_code#911434, _extract_internalRefUUID#911435, _extract_internalRefUUID#911437, _extract_internalRefUUID#911436]
(138) BroadcastQueryStage
Output [4]: [_extract_code#911434, _extract_internalRefUUID#911435, _extract_internalRefUUID#911437, _extract_internalRefUUID#911436]
Arguments: 162
(139) BroadcastHashJoin [codegen id : 151]
Left keys [4]: [coalesce(product#905751, ), isnull(product#905751), coalesce(plant#905752, ), isnull(plant#905752)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911437, ), isnull(_extract_internalRefUUID#911437), coalesce(_extract_internalRefUUID#911436, ), isnull(_extract_internalRefUUID#911436)]
Join type: LeftOuter
Join condition: None
(140) Project [codegen id : 151]
Output [5]: [product#905751, plant#905752, orderDateTime#905753, _extract_code#911434, _extract_internalRefUUID#911435]
Input [7]: [product#905751, plant#905752, orderDateTime#905753, _extract_code#911434, _extract_internalRefUUID#911435, _extract_internalRefUUID#911437, _extract_internalRefUUID#911436]
(141) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
(142) BroadcastQueryStage
Output [3]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
Arguments: 196
(143) BroadcastHashJoin [codegen id : 151]
Left keys [1]: [product#905751]
Right keys [1]: [internalUUID#905766]
Join type: LeftOuter
Join condition: None
(144) Project
Output [4]: [product#905751, plant#905752, orderDateTime#905753, filter(unitOfMeasureConversions#905772, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911434) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911435)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905770.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905770.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905777]
Input [8]: [product#905751, plant#905752, orderDateTime#905753, _extract_code#911434, _extract_internalRefUUID#911435, internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
(145) Generate
Input [4]: [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777]
Arguments: explode(filteredUnitOfMeasureConversions#905777.quantityNumerator), [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777], true, [quantityNumerator#905778]
(146) Project
Output [4]: [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777.quantityDenominator AS _extract_quantityDenominator#911169]
Input [5]: [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777, quantityNumerator#905778]
(147) Generate
Input [4]: [product#905751, plant#905752, orderDateTime#905753, _extract_quantityDenominator#911169]
Arguments: explode(_extract_quantityDenominator#911169), [product#905751, plant#905752, orderDateTime#905753], true, [quantityDenominator#905779]
(148) Project
Output [3]: [product#905751, plant#905752, orderDateTime#905753]
Input [4]: [product#905751, plant#905752, orderDateTime#905753, quantityDenominator#905779]
(149) BroadcastHashJoin [codegen id : 152]
Left keys [2]: [plantUuid#905743, productUuid#905745]
Right keys [2]: [plant#905752, product#905751]
Join type: Inner
Join condition: (calculationDateTime#905739 <= orderDateTime#905753)
(150) Project [codegen id : 152]
Output [4]: [plantUuid#905743 AS plant#905782, productUuid#905745 AS product#905783, storageLocId#905746, calculationDateTime#905739]
Input [7]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746, product#905751, plant#905752, orderDateTime#905753]
(151) HashAggregate [codegen id : 152]
Input [4]: [plant#905782, product#905783, storageLocId#905746, calculationDateTime#905739]
Keys [3]: [plant#905782, product#905783, storageLocId#905746]
Functions [1]: [partial_max(calculationDateTime#905739)]
Aggregate Attributes [1]: [max#912522]
Results [4]: [plant#905782, product#905783, storageLocId#905746, max#912523]
(152) HashAggregate [codegen id : 152]
Input [4]: [plant#905782, product#905783, storageLocId#905746, max#912523]
Keys [3]: [plant#905782, product#905783, storageLocId#905746]
Functions [1]: [max(calculationDateTime#905739)]
Aggregate Attributes [1]: [max(calculationDateTime#905739)#905673]
Results [4]: [plant#905782, product#905783, storageLocId#905746, max(calculationDateTime#905739)#905673 AS max_calc_datetime#905667]
(153) Exchange
Input [4]: [plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
Arguments: hashpartitioning(coalesce(plant#905782, ), isnull(plant#905782), coalesce(product#905783, ), isnull(product#905783), coalesce(storageLocId#905746, ), isnull(storageLocId#905746), coalesce(max_calc_datetime#905667, 1970-01-01 00:00:00), isnull(max_calc_datetime#905667), 37), ENSURE_REQUIREMENTS, [plan_id=1440201]
(154) ShuffleQueryStage
Output [4]: [plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
Arguments: 287
(155) AQEShuffleRead
Input [4]: [plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
Arguments: local
(156) BroadcastHashJoin [codegen id : 159]
Left keys [8]: [coalesce(plant#905665, ), isnull(plant#905665), coalesce(product#905666, ), isnull(product#905666), coalesce(storageLocId#905617, ), isnull(storageLocId#905617), coalesce(calculationDateTime#905596, 1970-01-01 00:00:00), isnull(calculationDateTime#905596)]
Right keys [8]: [coalesce(plant#905782, ), isnull(plant#905782), coalesce(product#905783, ), isnull(product#905783), coalesce(storageLocId#905746, ), isnull(storageLocId#905746), coalesce(max_calc_datetime#905667, 1970-01-01 00:00:00), isnull(max_calc_datetime#905667)]
Join type: Inner
Join condition: None
(157) Project [codegen id : 159]
Output [4]: [plant#905665, product#905666, calculationDateTime#905596, quantity#905619]
Input [9]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619, plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
(158) HashAggregate [codegen id : 159]
Input [4]: [plant#905665, product#905666, calculationDateTime#905596, quantity#905619]
Keys [2]: [product#905666, plant#905665]
Functions [2]: [partial_min(calculationDateTime#905596), partial_sum(quantity#905619)]
Aggregate Attributes [2]: [min#912512, sum#912513]
Results [4]: [product#905666, plant#905665, min#912514, sum#912515]
(159) Exchange
Input [4]: [product#905666, plant#905665, min#912514, sum#912515]
Arguments: hashpartitioning(product#905666, plant#905665, 37), ENSURE_REQUIREMENTS, [plan_id=1443253]
(160) ShuffleQueryStage
Output [4]: [product#905666, plant#905665, min#912514, sum#912515]
Arguments: 301
(161) AQEShuffleRead
Input [4]: [product#905666, plant#905665, min#912514, sum#912515]
Arguments: coalesced
(162) HashAggregate [codegen id : 163]
Input [4]: [product#905666, plant#905665, min#912514, sum#912515]
Keys [2]: [product#905666, plant#905665]
Functions [2]: [min(calculationDateTime#905596), sum(quantity#905619)]
Aggregate Attributes [2]: [min(calculationDateTime#905596)#905800, sum(quantity#905619)#905799]
Results [4]: [product#905666, plant#905665, min(calculationDateTime#905596)#905800 AS minCalculationDateTime#905793, round(sum(quantity#905619)#905799, 0) AS roundedQuantitySum#905801]
(163) BroadcastExchange
Input [4]: [product#905666, plant#905665, minCalculationDateTime#905793, roundedQuantitySum#905801]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1443976]
(164) BroadcastQueryStage
Output [4]: [product#905666, plant#905665, minCalculationDateTime#905793, roundedQuantitySum#905801]
Arguments: 308
(165) BroadcastHashJoin [codegen id : 168]
Left keys [2]: [plant#905389, product#905388]
Right keys [2]: [plant#905665, product#905666]
Join type: LeftOuter
Join condition: None
(166) Project [codegen id : 168]
Output [5]: [product#905388, plant#905389, outboundUnit#905476, CASE WHEN isnotnull(minCalculationDateTime#905793) THEN minCalculationDateTime#905793 ELSE orderDateTime#905390 END AS stockDatetime#905836, CASE WHEN isnotnull(roundedQuantitySum#905801) THEN array(roundedQuantitySum#905801) ELSE [0.0] END AS stockBatchQuantities#905837]
Input [8]: [product#905388, plant#905389, orderDateTime#905390, outboundUnit#905476, product#905666, plant#905665, minCalculationDateTime#905793, roundedQuantitySum#905801]
(167) Exchange
Input [5]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837]
Arguments: hashpartitioning(coalesce(plant#905389, ), isnull(plant#905389), coalesce(product#905388, ), isnull(product#905388), 37), ENSURE_REQUIREMENTS, [plan_id=1444610]
(168) ShuffleQueryStage
Output [5]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837]
Arguments: 315
(169) AQEShuffleRead
Input [5]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837]
Arguments: coalesced
(170) Sort [codegen id : 183]
Input [5]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837]
Arguments: [coalesce(plant#905389, ) ASC NULLS FIRST, isnull(plant#905389) ASC NULLS FIRST, coalesce(product#905388, ) ASC NULLS FIRST, isnull(product#905388) ASC NULLS FIRST], false, 0
(171) ReusedExchange [Reuses operator id: 3]
Output [3]: [product#906956, plant#906957, orderDateTime#906958]
(172) ShuffleQueryStage
Output [3]: [product#906956, plant#906957, orderDateTime#906958]
Arguments: 32
(173) Scan parquet
Output [9]: [internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968, systemId#906960]
Batched: 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#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968, systemId#906960]
(175) Project [codegen id : 21]
Output [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
Input [9]: [internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968, systemId#906960]
(176) Exchange
Input [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1401284]
(177) ShuffleQueryStage
Output [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
Arguments: 33
(178) Project [codegen id : 102]
Output [1]: [struct(systemId, systemId#906960, internalUUID, internalUUID#906961, plant, plant#906962, product, product#906963, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#906964, productionAspect, productionAspect#906965, salesPlant, salesPlant#906966, listing, listing#906967, sourceOfSupplyCategory, sourceOfSupplyCategory#906968) AS productPlant#906969]
Input [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
(179) BroadcastExchange
Input [1]: [productPlant#906969]
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=1418193]
(180) BroadcastQueryStage
Output [1]: [productPlant#906969]
Arguments: 197
(181) BroadcastHashJoin [codegen id : 169]
Left keys [4]: [coalesce(product#906956, ), isnull(product#906956), coalesce(plant#906957, ), isnull(plant#906957)]
Right keys [4]: [coalesce(productPlant#906969.product.internalRefUUID, ), isnull(productPlant#906969.product.internalRefUUID), coalesce(productPlant#906969.plant.internalRefUUID, ), isnull(productPlant#906969.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(182) ReusedExchange [Reuses operator id: 21]
Output [3]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
(183) BroadcastQueryStage
Output [3]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
Arguments: 198
(184) BroadcastHashJoin [codegen id : 169]
Left keys [1]: [product#906956]
Right keys [1]: [internalUUID#906971]
Join type: LeftOuter
Join condition: None
(185) Project
Output [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, filter(unitOfMeasureConversions#906977, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#906975.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#906975.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#906982]
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
(186) Project [codegen id : 170]
Output [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, filteredUnitOfMeasureConversions#906982.quantityDenominator AS _extract_quantityDenominator#911438, filteredUnitOfMeasureConversions#906982.quantityNumerator AS _extract_quantityNumerator#911439]
Input [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, filteredUnitOfMeasureConversions#906982]
(187) Generate [codegen id : 170]
Input [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, _extract_quantityDenominator#911438, _extract_quantityNumerator#911439]
Arguments: explode(_extract_quantityNumerator#911439), [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, _extract_quantityDenominator#911438], true, [quantityNumerator#906983]
(188) Generate [codegen id : 170]
Input [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, _extract_quantityDenominator#911438, quantityNumerator#906983]
Arguments: explode(_extract_quantityDenominator#911438), [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, quantityNumerator#906983], true, [quantityDenominator#906984]
(189) Project [codegen id : 170]
Output [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, (cast(quantityNumerator#906983 as double) / cast(quantityDenominator#906984 as double)) AS outboundUnit#906985]
Input [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, quantityNumerator#906983, quantityDenominator#906984]
(190) Project [codegen id : 170]
Output [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, CASE WHEN (isnull(outboundUnit#906985) OR (outboundUnit#906985 <= 0.0)) THEN 1.0 ELSE outboundUnit#906985 END AS outboundUnit#906986]
Input [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906985]
(191) ReusedExchange [Reuses operator id: 163]
Output [4]: [product#907096, plant#907095, minCalculationDateTime#907209, roundedQuantitySum#907210]
(192) BroadcastQueryStage
Output [4]: [product#907096, plant#907095, minCalculationDateTime#907209, roundedQuantitySum#907210]
Arguments: 310
(193) BroadcastHashJoin [codegen id : 170]
Left keys [2]: [plant#906957, product#906956]
Right keys [2]: [plant#907095, product#907096]
Join type: LeftOuter
Join condition: None
(194) Project [codegen id : 170]
Output [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, CASE WHEN isnotnull(minCalculationDateTime#907209) THEN minCalculationDateTime#907209 ELSE orderDateTime#906958 END AS stockDatetime#907211, CASE WHEN isnotnull(roundedQuantitySum#907210) THEN array(roundedQuantitySum#907210) ELSE [0.0] END AS stockBatchQuantities#907212]
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, product#907096, plant#907095, minCalculationDateTime#907209, roundedQuantitySum#907210]
(195) Exchange
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212]
Arguments: hashpartitioning(coalesce(plant#906957, ), isnull(plant#906957), coalesce(product#906956, ), isnull(product#906956), 37), ENSURE_REQUIREMENTS, [plan_id=1444661]
(196) ShuffleQueryStage
Output [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212]
Arguments: 316
(197) AQEShuffleRead
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212]
Arguments: coalesced
(198) Sort [codegen id : 175]
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212]
Arguments: [coalesce(plant#906957, ) ASC NULLS FIRST, isnull(plant#906957) ASC NULLS FIRST, coalesce(product#906956, ) ASC NULLS FIRST, isnull(product#906956) ASC NULLS FIRST], false, 0
(199) Scan parquet
Output [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000348/0_1_10000000348]
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#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
(201) Exchange
Input [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Arguments: hashpartitioning(coalesce(plant#905840, ), isnull(plant#905840), coalesce(product#905839, ), isnull(product#905839), 37), ENSURE_REQUIREMENTS, [plan_id=1401748]
(202) ShuffleQueryStage
Output [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Arguments: 68
(203) AQEShuffleRead
Input [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Arguments: coalesced
(204) Sort [codegen id : 176]
Input [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Arguments: [coalesce(plant#905840, ) ASC NULLS FIRST, isnull(plant#905840) ASC NULLS FIRST, coalesce(product#905839, ) ASC NULLS FIRST, isnull(product#905839) ASC NULLS FIRST], false, 0
(205) SortMergeJoin [codegen id : 177]
Left keys [4]: [coalesce(plant#906957, ), isnull(plant#906957), coalesce(product#906956, ), isnull(product#906956)]
Right keys [4]: [coalesce(plant#905840, ), isnull(plant#905840), coalesce(product#905839, ), isnull(product#905839)]
Join type: LeftOuter
Join condition: None
(206) Project [codegen id : 177]
Output [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, CASE WHEN isnotnull(product#905839) THEN struct(demandChannel, demandChannel#905841, demandStream, demandStream#905842, considerVariance, considerVariance#905843, demandTimeBuckets, demandTimeBuckets#905844, demandPointInTimeStart, demandPointInTimeStart#905845, demandPointInTimeEnd, demandPointInTimeEnd#905846, demandPointInTime, demandPointInTime#905847) END AS rawDemands#905849]
Input [16]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
(207) ObjectHashAggregate
Input [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, rawDemands#905849]
Keys [8]: [product#906956, plant#906957, orderDateTime#906958, knownfloatingpointnormalized(if (isnull(productPlant#906969)) null else named_struct(systemId, productPlant#906969.systemId, internalUUID, productPlant#906969.internalUUID, plant, productPlant#906969.plant, product, productPlant#906969.product, blockedForReplenishmentStartingFrom, productPlant#906969.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#906969.productionAspect)) null else named_struct(productMovementPlants, productPlant#906969.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#906969.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#906969.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#906969.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#906969.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#906969.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#906969.salesPlant, listing, productPlant#906969.listing, sourceOfSupplyCategory, productPlant#906969.sourceOfSupplyCategory)) AS productPlant#906969, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#906986)) AS outboundUnit#906986, stockDatetime#907211, knownfloatingpointnormalized(transform(stockBatchQuantities#907212, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#914632)), lambda arg#914632, false))) AS stockBatchQuantities#907212, [7226582400000000] AS [7226582400000000]#914631]
Functions [1]: [partial_collect_list(rawDemands#905849, 0, 0)]
Aggregate Attributes [1]: [buf#912532]
Results [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631, buf#912533]
(208) Exchange
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631, buf#912533]
Arguments: hashpartitioning(product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631, 37), ENSURE_REQUIREMENTS, [plan_id=1445411]
(209) ShuffleQueryStage
Output [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631, buf#912533]
Arguments: 321
(210) AQEShuffleRead
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631, buf#912533]
Arguments: coalesced
(211) ObjectHashAggregate
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631, buf#912533]
Keys [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#914631]
Functions [1]: [collect_list(rawDemands#905849, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#905849, 0, 0)#905869]
Results [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, collect_list(rawDemands#905849, 0, 0)#905869 AS rawDemands#905850]
(212) Scan parquet
Output [3]: [internalUUID#906907, address#906913, systemId#906906]
Batched: 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#906907, address#906913, systemId#906906]
(214) Project [codegen id : 40]
Output [2]: [internalUUID#906907, address#906913.timeZone.code AS timezonecode#906919]
Input [3]: [internalUUID#906907, address#906913, systemId#906906]
(215) Exchange
Input [2]: [internalUUID#906907, timezonecode#906919]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1401768]
(216) ShuffleQueryStage
Output [2]: [internalUUID#906907, timezonecode#906919]
Arguments: 69
(217) BroadcastExchange
Input [2]: [internalUUID#906907, timezonecode#906919]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1413969]
(218) BroadcastQueryStage
Output [2]: [internalUUID#906907, timezonecode#906919]
Arguments: 209
(219) BroadcastHashJoin [codegen id : 181]
Left keys [2]: [coalesce(plant#906957, ), isnull(plant#906957)]
Right keys [2]: [coalesce(internalUUID#906907, ), isnull(internalUUID#906907)]
Join type: LeftOuter
Join condition: None
(220) Project [codegen id : 181]
Output [10]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#907213, rawDemands#905850, CASE WHEN isnotnull(timezonecode#906919) THEN timezonecode#906919 ELSE UTC END AS timezonecode#906921]
Input [10]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, rawDemands#905850, internalUUID#906907, timezonecode#906919]
(221) DeserializeToObject [codegen id : 181]
Input [10]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213, rawDemands#905850, timezonecode#906921]
Arguments: createexternalrow(invoke(product#906956.toString()), invoke(plant#906957.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#906958)), if (isnull(productPlant#906969)) null else createexternalrow(invoke(productPlant#906969.systemId.toString()), invoke(productPlant#906969.internalUUID.toString()), if (isnull(productPlant#906969.plant)) null else createexternalrow(invoke(productPlant#906969.plant.internalRefUUID.toString()), invoke(productPlant#906969.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#906969.product)) null else createexternalrow(invoke(productPlant#906969.product.internalRefUUID.toString()), invoke(productPlant#906969.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#906969.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#906969.productionAspect)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#906969.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.salesPlant)) null else createexternalrow(if (isnull(productPlant#906969.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#906969.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#906969.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#906969.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#906969.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#906986)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#907211)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#907212, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#907213, 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#905850, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#906921.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#906942: org.apache.spark.sql.Row
(222) MapElements [codegen id : 181]
Input [1]: [obj#906942]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, obj#906947: org.apache.spark.sql.Row
(223) SerializeFromObject [codegen id : 181]
Input [1]: [obj#906947]
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#906952, 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#906953, 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#906954, 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#906955]
(224) Exchange
Input [4]: [product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
Arguments: hashpartitioning(coalesce(plant#906953, ), isnull(plant#906953), coalesce(product#906952, ), isnull(product#906952), 37), ENSURE_REQUIREMENTS, [plan_id=1445859]
(225) ShuffleQueryStage
Output [4]: [product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
Arguments: 324
(226) AQEShuffleRead
Input [4]: [product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
Arguments: coalesced
(227) Sort [codegen id : 184]
Input [4]: [product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
Arguments: [coalesce(plant#906953, ) ASC NULLS FIRST, isnull(plant#906953) ASC NULLS FIRST, coalesce(product#906952, ) ASC NULLS FIRST, isnull(product#906952) ASC NULLS FIRST], false, 0
(228) SortMergeJoin [codegen id : 185]
Left keys [4]: [coalesce(plant#905389, ), isnull(plant#905389), coalesce(product#905388, ), isnull(product#905388)]
Right keys [4]: [coalesce(plant#906953, ), isnull(plant#906953), coalesce(product#906952, ), isnull(product#906952)]
Join type: LeftOuter
Join condition: None
(229) Project [codegen id : 185]
Output [7]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955]
Input [9]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
(230) Project [codegen id : 185]
Output [12]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, cast(null as string) AS product#907248, cast(null as string) AS plant#907247, cast(null as array<double>) AS _extract_openQtyInBaseUnit#911413, cast(null as array<timestamp>) AS _extract_availabilityDatetime#911414, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#911415]
Input [7]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955]
(231) Project [codegen id : 185]
Output [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, coalesce(_extract_openQtyInBaseUnit#911413, []) AS openGoodsMovementQuantities#908601, coalesce(_extract_availabilityDatetime#911414, []) AS openGoodsMovementAvailabilityDatetimes#908602, coalesce(_extract_shelfLifeEndDatetime#911415, []) AS openGoodsMovementShelfLifeEndDatetimes#908603]
Input [12]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, product#907248, plant#907247, _extract_openQtyInBaseUnit#911413, _extract_availabilityDatetime#911414, _extract_shelfLifeEndDatetime#911415]
(232) Exchange
Input [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603]
Arguments: hashpartitioning(product#905388, plant#905389, 37), ENSURE_REQUIREMENTS, [plan_id=1446141]
(233) ShuffleQueryStage
Output [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603]
Arguments: 327
(234) AQEShuffleRead
Input [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603]
Arguments: local
(235) ReusedExchange [Reuses operator id: 195]
Output [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347]
(236) ShuffleQueryStage
Output [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347]
Arguments: 318
(237) AQEShuffleRead
Input [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347]
Arguments: coalesced
(238) Sort [codegen id : 186]
Input [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347]
Arguments: [coalesce(plant#909092, ) ASC NULLS FIRST, isnull(plant#909092) ASC NULLS FIRST, coalesce(product#909091, ) ASC NULLS FIRST, isnull(product#909091) ASC NULLS FIRST], false, 0
(239) ReusedExchange [Reuses operator id: 224]
Output [4]: [product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
(240) ShuffleQueryStage
Output [4]: [product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
Arguments: 326
(241) AQEShuffleRead
Input [4]: [product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
Arguments: coalesced
(242) Sort [codegen id : 187]
Input [4]: [product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
Arguments: [coalesce(plant#909633, ) ASC NULLS FIRST, isnull(plant#909633) ASC NULLS FIRST, coalesce(product#909632, ) ASC NULLS FIRST, isnull(product#909632) ASC NULLS FIRST], false, 0
(243) SortMergeJoin [codegen id : 188]
Left keys [4]: [coalesce(plant#909092, ), isnull(plant#909092), coalesce(product#909091, ), isnull(product#909091)]
Right keys [4]: [coalesce(plant#909633, ), isnull(plant#909633), coalesce(product#909632, ), isnull(product#909632)]
Join type: LeftOuter
Join condition: None
(244) Project [codegen id : 188]
Output [9]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, dayBucketDemands#909634, pointInTimeDemands#909635]
Input [11]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
(245) Project [codegen id : 188]
Output [14]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, dayBucketDemands#909634, pointInTimeDemands#909635, cast(null as string) AS product#910250, cast(null as string) AS plant#910249, cast(null as array<double>) AS _extract_openQtyInBaseUnit#911456, cast(null as array<timestamp>) AS _extract_availabilityDatetime#911457, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#911458]
Input [9]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, dayBucketDemands#909634, pointInTimeDemands#909635]
(246) Project
Output [15]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, coalesce(_extract_openQtyInBaseUnit#911456, []) AS openGoodsMovementQuantities#910828, coalesce(_extract_availabilityDatetime#911457, []) AS openGoodsMovementAvailabilityDatetimes#910829, coalesce(_extract_shelfLifeEndDatetime#911458, []) AS openGoodsMovementShelfLifeEndDatetimes#910830, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#910831, array_sort(filter(CASE WHEN isnotnull(productPlant#909104.listing) THEN productPlant#909104.listing ELSE [] END, lambdafunction(lambda listing#909037.isListed, lambda listing#909037, false)), lambdafunction(if ((isnull(lambda left#909039) AND isnull(lambda right#909040))) 0 else if (isnull(lambda left#909039)) 1 else if (isnull(lambda right#909040)) -1 else if ((lambda left#909039 < lambda right#909040)) -1 else if ((lambda left#909039 > lambda right#909040)) 1 else 0, lambda left#909039, lambda right#909040, false), false) AS listing#909038]
Input [14]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, dayBucketDemands#909634, pointInTimeDemands#909635, product#910250, plant#910249, _extract_openQtyInBaseUnit#911456, _extract_availabilityDatetime#911457, _extract_shelfLifeEndDatetime#911458]
(247) DeserializeToObject [codegen id : 189]
Input [15]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, configuration#910831, listing#909038]
Arguments: createexternalrow(invoke(product#909091.toString()), invoke(plant#909092.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#909093)), if (isnull(productPlant#909104)) null else createexternalrow(invoke(productPlant#909104.systemId.toString()), invoke(productPlant#909104.internalUUID.toString()), if (isnull(productPlant#909104.plant)) null else createexternalrow(invoke(productPlant#909104.plant.internalRefUUID.toString()), invoke(productPlant#909104.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#909104.product)) null else createexternalrow(invoke(productPlant#909104.product.internalRefUUID.toString()), invoke(productPlant#909104.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#909104.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#909104.productionAspect)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#909104.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.salesPlant)) null else createexternalrow(if (isnull(productPlant#909104.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#909104.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#909104.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#909104.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#909104.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#909121)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#909346)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#909347, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#909348, 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#909634, 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#909635, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#910828, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#910829, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#910830, 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#910831, 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#909038, 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#909071: org.apache.spark.sql.Row
(248) MapElements [codegen id : 189]
Input [1]: [obj#909071]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#909078: org.apache.spark.sql.Row
(249) SerializeFromObject [codegen id : 189]
Input [1]: [obj#909078]
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#909085, 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#909086, 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#909087, 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#909088, 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#909089, 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#909090]
(250) Filter [codegen id : 189]
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Condition : (isnotnull(product#909085) AND isnotnull(plant#909086))
(251) Exchange
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: hashpartitioning(product#909085, plant#909086, 37), ENSURE_REQUIREMENTS, [plan_id=1446199]
(252) ShuffleQueryStage
Output [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: 328
(253) AQEShuffleRead
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: local
(254) BroadcastExchange
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=1446266]
(255) BroadcastQueryStage
Output [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: 329
(256) BroadcastHashJoin [codegen id : 190]
Left keys [2]: [product#905388, plant#905389]
Right keys [2]: [product#909085, plant#909086]
Join type: LeftOuter
Join condition: None
(257) Project [codegen id : 190]
Output [16]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#908894, CASE WHEN isnotnull(timeDependentSettingsName#909087) THEN timeDependentSettingsName#909087 ELSE [] END AS timeDependentSettingsName#910956, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#909088) THEN timeDependentSettingsStartDatetime#909088 ELSE [] END AS timeDependentSettingsStartDatetime#910957, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#909089) THEN timeDependentSettingsEndDatetime#909089 ELSE [] END AS timeDependentSettingsEndDatetime#910958, CASE WHEN isnotnull(timeDependentSettingsValue#909090) THEN timeDependentSettingsValue#909090 ELSE [] END AS timeDependentSettingsValue#910959]
Input [16]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
(258) ResultQueryStage
Output [16]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#910957, timeDependentSettingsEndDatetime#910958, timeDependentSettingsValue#910959]
Arguments: 331
(259) Exchange
Input [3]: [product#905388, plant#905389, orderDateTime#905390]
Arguments: hashpartitioning(product#905388, plant#905389, 37), REPARTITION_BY_NUM, [plan_id=1398489]
(260) Project
Output [4]: [plant#905417.internalRefUUID AS _extract_internalRefUUID#911418, product#905418.internalRefUUID AS _extract_internalRefUUID#911419, productionAspect#905420.productMovementPlants.unitOfIssue.code AS _extract_code#911420, productionAspect#905420.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911421]
Input [4]: [plant#905417, product#905418, productionAspect#905420, systemId#905415]
(261) Exchange
Input [4]: [_extract_internalRefUUID#911418, _extract_internalRefUUID#911419, _extract_code#911420, _extract_internalRefUUID#911421]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398492]
(262) Project
Output [4]: [_extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
Input [4]: [_extract_internalRefUUID#911418, _extract_internalRefUUID#911419, _extract_code#911420, _extract_internalRefUUID#911421]
(263) BroadcastExchange
Input [4]: [_extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
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=1399500]
(264) BroadcastHashJoin
Left keys [4]: [coalesce(product#905388, ), isnull(product#905388), coalesce(plant#905389, ), isnull(plant#905389)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911419, ), isnull(_extract_internalRefUUID#911419), coalesce(_extract_internalRefUUID#911418, ), isnull(_extract_internalRefUUID#911418)]
Join type: LeftOuter
Join condition: None
(265) Project
Output [5]: [product#905388, plant#905389, orderDateTime#905390, _extract_code#911420, _extract_internalRefUUID#911421]
Input [7]: [product#905388, plant#905389, orderDateTime#905390, _extract_code#911420, _extract_internalRefUUID#911421, _extract_internalRefUUID#911419, _extract_internalRefUUID#911418]
(266) Filter
Input [4]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457, systemId#905450]
Condition : isnotnull(internalUUID#905451)
(267) Project
Output [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Input [4]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457, systemId#905450]
(268) Exchange
Input [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398499]
(269) BroadcastExchange
Input [3]: [internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399504]
(270) BroadcastHashJoin
Left keys [1]: [product#905388]
Right keys [1]: [internalUUID#905451]
Join type: LeftOuter
Join condition: None
(271) Project
Output [4]: [product#905388, plant#905389, orderDateTime#905390, filter(unitOfMeasureConversions#905457, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911420) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911421)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905455.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905455.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905463]
Input [8]: [product#905388, plant#905389, orderDateTime#905390, _extract_code#911420, _extract_internalRefUUID#911421, internalUUID#905451, baseUnitOfMeasure#905455, unitOfMeasureConversions#905457]
(272) Project
Output [5]: [product#905388, plant#905389, orderDateTime#905390, filteredUnitOfMeasureConversions#905463.quantityDenominator AS _extract_quantityDenominator#911416, filteredUnitOfMeasureConversions#905463.quantityNumerator AS _extract_quantityNumerator#911417]
Input [4]: [product#905388, plant#905389, orderDateTime#905390, filteredUnitOfMeasureConversions#905463]
(273) Generate
Input [5]: [product#905388, plant#905389, orderDateTime#905390, _extract_quantityDenominator#911416, _extract_quantityNumerator#911417]
Arguments: explode(_extract_quantityNumerator#911417), [product#905388, plant#905389, orderDateTime#905390, _extract_quantityDenominator#911416], true, [quantityNumerator#905471]
(274) Generate
Input [5]: [product#905388, plant#905389, orderDateTime#905390, _extract_quantityDenominator#911416, quantityNumerator#905471]
Arguments: explode(_extract_quantityDenominator#911416), [product#905388, plant#905389, orderDateTime#905390, quantityNumerator#905471], true, [quantityDenominator#905474]
(275) Project
Output [4]: [product#905388, plant#905389, orderDateTime#905390, (cast(quantityNumerator#905471 as double) / cast(quantityDenominator#905474 as double)) AS outboundUnit#905475]
Input [5]: [product#905388, plant#905389, orderDateTime#905390, quantityNumerator#905471, quantityDenominator#905474]
(276) Project
Output [4]: [product#905388, plant#905389, orderDateTime#905390, CASE WHEN (isnull(outboundUnit#905475) OR (outboundUnit#905475 <= 0.0)) THEN 1.0 ELSE outboundUnit#905475 END AS outboundUnit#905476]
Input [4]: [product#905388, plant#905389, orderDateTime#905390, outboundUnit#905475]
(277) Sort
Input [4]: [product#905388, plant#905389, orderDateTime#905390, outboundUnit#905476]
Arguments: [product#905388 ASC NULLS FIRST, plant#905389 ASC NULLS FIRST], false, 0
(278) Filter
Input [6]: [internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, systemId#905585]
Condition : (isnotnull(plant#905588.internalRefUUID) AND isnotnull(product#905587.internalRefUUID))
(279) Project
Output [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
Input [6]: [internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, systemId#905585]
(280) Exchange
Input [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398510]
(281) BroadcastExchange
Input [6]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590]
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=1399532]
(282) Filter
Input [2]: [marketUnit#905528, distributionCenters#905534]
Condition : (((marketUnit#905528 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#905534, true) > 0)) AND isnotnull(distributionCenters#905534))
(283) Project
Output [1]: [distributionCenters#905534]
Input [2]: [marketUnit#905528, distributionCenters#905534]
(284) Exchange
Input [1]: [distributionCenters#905534]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398514]
(285) Generate
Input [1]: [distributionCenters#905534]
Arguments: explode(distributionCenters#905534), false, [distributionCenters#905551]
(286) Filter
Input [1]: [distributionCenters#905551]
Condition : (((size(distributionCenters#905551.storageLocations, true) > 0) AND isnotnull(distributionCenters#905551.storageLocations)) AND isnotnull(distributionCenters#905551.internalRefUUID))
(287) Project
Output [2]: [distributionCenters#905551.internalRefUUID AS _extract_internalRefUUID#911144, distributionCenters#905551.storageLocations AS _extract_storageLocations#911145]
Input [1]: [distributionCenters#905551]
(288) Generate
Input [2]: [_extract_internalRefUUID#911144, _extract_storageLocations#911145]
Arguments: explode(_extract_storageLocations#911145), [_extract_internalRefUUID#911144], false, [storageLocations#905558]
(289) Project
Output [3]: [_extract_internalRefUUID#911144 AS plantUuid#905553, storageLocations#905558.id AS storageLocId#905559, storageLocations#905558.internalRefUUID AS storageLocUuid#905560]
Input [2]: [_extract_internalRefUUID#911144, storageLocations#905558]
(290) BroadcastExchange
Input [3]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399528]
(291) Filter
Input [2]: [product#905802, plant#905803]
Condition : isnotnull(plant#905803)
(292) Exchange
Input [2]: [product#905802, plant#905803]
Arguments: hashpartitioning(product#905802, plant#905803, 37), REPARTITION_BY_NUM, [plan_id=1399180]
(293) Scan parquet
Output [4]: [plant#905808, product#905809, productionAspect#905811, systemId#905806]
Batched: 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#905808.internalRefUUID AS _extract_internalRefUUID#911422, product#905809.internalRefUUID AS _extract_internalRefUUID#911425, productionAspect#905811.productMovementPlants.unitOfIssue.code AS _extract_code#911423, productionAspect#905811.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911424]
Input [4]: [plant#905808, product#905809, productionAspect#905811, systemId#905806]
(295) Exchange
Input [4]: [_extract_internalRefUUID#911422, _extract_internalRefUUID#911425, _extract_code#911423, _extract_internalRefUUID#911424]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398526]
(296) Project
Output [4]: [_extract_code#911423, _extract_internalRefUUID#911424, _extract_internalRefUUID#911425, _extract_internalRefUUID#911422]
Input [4]: [_extract_internalRefUUID#911422, _extract_internalRefUUID#911425, _extract_code#911423, _extract_internalRefUUID#911424]
(297) BroadcastExchange
Input [4]: [_extract_code#911423, _extract_internalRefUUID#911424, _extract_internalRefUUID#911425, _extract_internalRefUUID#911422]
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=1399512]
(298) BroadcastHashJoin
Left keys [4]: [coalesce(product#905802, ), isnull(product#905802), coalesce(plant#905803, ), isnull(plant#905803)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911425, ), isnull(_extract_internalRefUUID#911425), coalesce(_extract_internalRefUUID#911422, ), isnull(_extract_internalRefUUID#911422)]
Join type: LeftOuter
Join condition: None
(299) Project
Output [4]: [product#905802, plant#905803, _extract_code#911423, _extract_internalRefUUID#911424]
Input [6]: [product#905802, plant#905803, _extract_code#911423, _extract_internalRefUUID#911424, _extract_internalRefUUID#911425, _extract_internalRefUUID#911422]
(300) Scan parquet
Output [4]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823, systemId#905816]
Batched: 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#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823, systemId#905816]
Condition : isnotnull(internalUUID#905817)
(302) Project
Output [3]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
Input [4]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823, systemId#905816]
(303) Exchange
Input [3]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398533]
(304) BroadcastExchange
Input [3]: [internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399516]
(305) BroadcastHashJoin
Left keys [1]: [product#905802]
Right keys [1]: [internalUUID#905817]
Join type: LeftOuter
Join condition: None
(306) Project
Output [2]: [plant#905803, filter(unitOfMeasureConversions#905823, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911423) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911424)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905821.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905821.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905828]
Input [7]: [product#905802, plant#905803, _extract_code#911423, _extract_internalRefUUID#911424, internalUUID#905817, baseUnitOfMeasure#905821, unitOfMeasureConversions#905823]
(307) Generate
Input [2]: [plant#905803, filteredUnitOfMeasureConversions#905828]
Arguments: explode(filteredUnitOfMeasureConversions#905828.quantityNumerator), [plant#905803, filteredUnitOfMeasureConversions#905828], true, [quantityNumerator#905829]
(308) Project
Output [2]: [plant#905803, filteredUnitOfMeasureConversions#905828.quantityDenominator AS _extract_quantityDenominator#911146]
Input [3]: [plant#905803, filteredUnitOfMeasureConversions#905828, quantityNumerator#905829]
(309) Generate
Input [2]: [plant#905803, _extract_quantityDenominator#911146]
Arguments: explode(_extract_quantityDenominator#911146), [plant#905803], true, [quantityDenominator#905830]
(310) Project
Output [1]: [plant#905803]
Input [2]: [plant#905803, quantityDenominator#905830]
(311) HashAggregate
Input [1]: [plant#905803]
Keys [1]: [plant#905803]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905803]
(312) Exchange
Input [1]: [plant#905803]
Arguments: hashpartitioning(plant#905803, 37), ENSURE_REQUIREMENTS, [plan_id=1399525]
(313) HashAggregate
Input [1]: [plant#905803]
Keys [1]: [plant#905803]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905803]
(314) BroadcastHashJoin
Left keys [1]: [plantUuid#905553]
Right keys [1]: [plant#905803]
Join type: Inner
Join condition: None
(315) Project
Output [3]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Input [4]: [plantUuid#905553, storageLocId#905559, storageLocUuid#905560, plant#905803]
(316) BroadcastHashJoin
Left keys [2]: [coalesce(plant#905588.internalRefUUID, ), isnull(plant#905588.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#905553, ), isnull(plantUuid#905553)]
Join type: Inner
Join condition: None
(317) Generate
Input [9]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
Arguments: explode(filter(stockQuantities#905590, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#905560) AND (lambda x#905594.storageLocation.Id = storageLocId#905559)), lambda x#905594, false))), [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, plantUuid#905553], false, [stockQuantity#905595]
(318) ObjectHashAggregate
Input [7]: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, plantUuid#905553, stockQuantity#905595]
Keys [5]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585]
Functions [2]: [partial_first(calculationDateTime#905589, false), partial_collect_list(stockQuantity#905595, 0, 0)]
Aggregate Attributes [3]: [first#912516, valueSet#912517, buf#912518]
Results [8]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585, first#912519, valueSet#912520, buf#912521]
(319) ObjectHashAggregate
Input [8]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585, first#912519, valueSet#912520, buf#912521]
Keys [5]: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585]
Functions [2]: [first(calculationDateTime#905589, false), collect_list(stockQuantity#905595, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#905589)()#905609, collect_list(stockQuantity#905595, 0, 0)#905610]
Results [4]: [product#905587, plant#905588, first(calculationDateTime#905589)()#905609 AS calculationDateTime#905596, collect_list(stockQuantity#905595, 0, 0)#905610 AS stockQuantities#905597]
(320) Filter
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantities#905597]
Condition : ((size(stockQuantities#905597, true) > 0) AND isnotnull(calculationDateTime#905596))
(321) Generate
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantities#905597]
Arguments: explode(stockQuantities#905597), [product#905587, plant#905588, calculationDateTime#905596], false, [stockQuantity#905612]
(322) Filter
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantity#905612]
Condition : (((isnotnull(stockQuantity#905612.specialStockIndicator.code) AND isnotnull(stockQuantity#905612.stockType.code)) AND (stockQuantity#905612.specialStockIndicator.code = )) AND (stockQuantity#905612.stockType.code = 01))
(323) Project
Output [5]: [plant#905588.internalRefUUID AS plantUuid#905614, product#905587.internalRefUUID AS productUuid#905616, calculationDateTime#905596, stockQuantity#905612.storagelocation.id AS storageLocId#905617, stockQuantity#905612.quantity.measure AS quantity#905619]
Input [4]: [product#905587, plant#905588, calculationDateTime#905596, stockQuantity#905612]
(324) Exchange
Input [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: hashpartitioning(productUuid#905616, plantUuid#905614, 37), ENSURE_REQUIREMENTS, [plan_id=1399554]
(325) Sort
Input [5]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619]
Arguments: [productUuid#905616 ASC NULLS FIRST, plantUuid#905614 ASC NULLS FIRST], false, 0
(326) Filter
Input [3]: [product#905631, plant#905632, orderDateTime#905633]
Condition : ((isnotnull(orderDateTime#905633) AND isnotnull(plant#905632)) AND isnotnull(product#905631))
(327) Exchange
Input [3]: [product#905631, plant#905632, orderDateTime#905633]
Arguments: hashpartitioning(product#905631, plant#905632, 37), REPARTITION_BY_NUM, [plan_id=1399201]
(328) Scan parquet
Output [4]: [plant#905637, product#905638, productionAspect#905640, systemId#905635]
Batched: 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#905637.internalRefUUID AS _extract_internalRefUUID#911427, product#905638.internalRefUUID AS _extract_internalRefUUID#911426, productionAspect#905640.productMovementPlants.unitOfIssue.code AS _extract_code#911428, productionAspect#905640.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911429]
Input [4]: [plant#905637, product#905638, productionAspect#905640, systemId#905635]
(330) Exchange
Input [4]: [_extract_internalRefUUID#911427, _extract_internalRefUUID#911426, _extract_code#911428, _extract_internalRefUUID#911429]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398558]
(331) Project
Output [4]: [_extract_code#911428, _extract_internalRefUUID#911429, _extract_internalRefUUID#911426, _extract_internalRefUUID#911427]
Input [4]: [_extract_internalRefUUID#911427, _extract_internalRefUUID#911426, _extract_code#911428, _extract_internalRefUUID#911429]
(332) BroadcastExchange
Input [4]: [_extract_code#911428, _extract_internalRefUUID#911429, _extract_internalRefUUID#911426, _extract_internalRefUUID#911427]
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=1399541]
(333) BroadcastHashJoin
Left keys [4]: [coalesce(product#905631, ), isnull(product#905631), coalesce(plant#905632, ), isnull(plant#905632)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911426, ), isnull(_extract_internalRefUUID#911426), coalesce(_extract_internalRefUUID#911427, ), isnull(_extract_internalRefUUID#911427)]
Join type: LeftOuter
Join condition: None
(334) Project
Output [5]: [product#905631, plant#905632, orderDateTime#905633, _extract_code#911428, _extract_internalRefUUID#911429]
Input [7]: [product#905631, plant#905632, orderDateTime#905633, _extract_code#911428, _extract_internalRefUUID#911429, _extract_internalRefUUID#911426, _extract_internalRefUUID#911427]
(335) Scan parquet
Output [4]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652, systemId#905645]
Batched: 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#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652, systemId#905645]
Condition : isnotnull(internalUUID#905646)
(337) Project
Output [3]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
Input [4]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652, systemId#905645]
(338) Exchange
Input [3]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398565]
(339) BroadcastExchange
Input [3]: [internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399545]
(340) BroadcastHashJoin
Left keys [1]: [product#905631]
Right keys [1]: [internalUUID#905646]
Join type: LeftOuter
Join condition: None
(341) Project
Output [4]: [product#905631, plant#905632, orderDateTime#905633, filter(unitOfMeasureConversions#905652, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911428) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911429)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905650.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905650.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905657]
Input [8]: [product#905631, plant#905632, orderDateTime#905633, _extract_code#911428, _extract_internalRefUUID#911429, internalUUID#905646, baseUnitOfMeasure#905650, unitOfMeasureConversions#905652]
(342) Generate
Input [4]: [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657]
Arguments: explode(filteredUnitOfMeasureConversions#905657.quantityNumerator), [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657], true, [quantityNumerator#905658]
(343) Project
Output [4]: [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657.quantityDenominator AS _extract_quantityDenominator#911153]
Input [5]: [product#905631, plant#905632, orderDateTime#905633, filteredUnitOfMeasureConversions#905657, quantityNumerator#905658]
(344) Generate
Input [4]: [product#905631, plant#905632, orderDateTime#905633, _extract_quantityDenominator#911153]
Arguments: explode(_extract_quantityDenominator#911153), [product#905631, plant#905632, orderDateTime#905633], true, [quantityDenominator#905659]
(345) Project
Output [3]: [product#905631, plant#905632, orderDateTime#905633]
Input [4]: [product#905631, plant#905632, orderDateTime#905633, quantityDenominator#905659]
(346) Sort
Input [3]: [product#905631, plant#905632, orderDateTime#905633]
Arguments: [product#905631 ASC NULLS FIRST, plant#905632 ASC NULLS FIRST], false, 0
(347) SortMergeJoin
Left keys [2]: [productUuid#905616, plantUuid#905614]
Right keys [2]: [product#905631, plant#905632]
Join type: Inner
Join condition: (calculationDateTime#905596 <= orderDateTime#905633)
(348) Project
Output [5]: [plantUuid#905614 AS plant#905665, productUuid#905616 AS product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Input [8]: [plantUuid#905614, productUuid#905616, calculationDateTime#905596, storageLocId#905617, quantity#905619, product#905631, plant#905632, orderDateTime#905633]
(349) Exchange
Input [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Arguments: hashpartitioning(coalesce(plant#905665, ), isnull(plant#905665), coalesce(product#905666, ), isnull(product#905666), coalesce(storageLocId#905617, ), isnull(storageLocId#905617), coalesce(calculationDateTime#905596, 1970-01-01 00:00:00), isnull(calculationDateTime#905596), 37), ENSURE_REQUIREMENTS, [plan_id=1399610]
(350) Sort
Input [5]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
Arguments: [coalesce(plant#905665, ) ASC NULLS FIRST, isnull(plant#905665) ASC NULLS FIRST, coalesce(product#905666, ) ASC NULLS FIRST, isnull(product#905666) ASC NULLS FIRST, coalesce(storageLocId#905617, ) ASC NULLS FIRST, isnull(storageLocId#905617) ASC NULLS FIRST, coalesce(calculationDateTime#905596, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#905596) ASC NULLS FIRST], false, 0
(351) Scan parquet
Output [6]: [internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679, systemId#905674]
Batched: 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#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679, systemId#905674]
Condition : (isnotnull(plant#905677.internalRefUUID) AND isnotnull(product#905676.internalRefUUID))
(353) Project
Output [6]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679]
Input [6]: [internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679, systemId#905674]
(354) Exchange
Input [6]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398577]
(355) BroadcastExchange
Input [6]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679]
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=1399579]
(356) Scan parquet
Output [2]: [marketUnit#905680, distributionCenters#905686]
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#905680, distributionCenters#905686]
Condition : (((marketUnit#905680 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#905686, true) > 0)) AND isnotnull(distributionCenters#905686))
(358) Project
Output [1]: [distributionCenters#905686]
Input [2]: [marketUnit#905680, distributionCenters#905686]
(359) Exchange
Input [1]: [distributionCenters#905686]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398581]
(360) Generate
Input [1]: [distributionCenters#905686]
Arguments: explode(distributionCenters#905686), false, [distributionCenters#905701]
(361) Filter
Input [1]: [distributionCenters#905701]
Condition : (((size(distributionCenters#905701.storageLocations, true) > 0) AND isnotnull(distributionCenters#905701.storageLocations)) AND isnotnull(distributionCenters#905701.internalRefUUID))
(362) Project
Output [2]: [distributionCenters#905701.internalRefUUID AS _extract_internalRefUUID#911160, distributionCenters#905701.storageLocations AS _extract_storageLocations#911161]
Input [1]: [distributionCenters#905701]
(363) Generate
Input [2]: [_extract_internalRefUUID#911160, _extract_storageLocations#911161]
Arguments: explode(_extract_storageLocations#911161), [_extract_internalRefUUID#911160], false, [storageLocations#905702]
(364) Project
Output [3]: [_extract_internalRefUUID#911160 AS plantUuid#905704, storageLocations#905702.id AS storageLocId#905705, storageLocations#905702.internalRefUUID AS storageLocUuid#905706]
Input [2]: [_extract_internalRefUUID#911160, storageLocations#905702]
(365) BroadcastExchange
Input [3]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399575]
(366) Scan parquet
Output [2]: [product#905707, plant#905708]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(367) Filter
Input [2]: [product#905707, plant#905708]
Condition : isnotnull(plant#905708)
(368) Exchange
Input [2]: [product#905707, plant#905708]
Arguments: hashpartitioning(product#905707, plant#905708, 37), REPARTITION_BY_NUM, [plan_id=1399212]
(369) Scan parquet
Output [4]: [plant#905713, product#905714, productionAspect#905716, systemId#905711]
Batched: 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#905713.internalRefUUID AS _extract_internalRefUUID#911431, product#905714.internalRefUUID AS _extract_internalRefUUID#911430, productionAspect#905716.productMovementPlants.unitOfIssue.code AS _extract_code#911432, productionAspect#905716.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911433]
Input [4]: [plant#905713, product#905714, productionAspect#905716, systemId#905711]
(371) Exchange
Input [4]: [_extract_internalRefUUID#911431, _extract_internalRefUUID#911430, _extract_code#911432, _extract_internalRefUUID#911433]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398593]
(372) Project
Output [4]: [_extract_code#911432, _extract_internalRefUUID#911433, _extract_internalRefUUID#911430, _extract_internalRefUUID#911431]
Input [4]: [_extract_internalRefUUID#911431, _extract_internalRefUUID#911430, _extract_code#911432, _extract_internalRefUUID#911433]
(373) BroadcastExchange
Input [4]: [_extract_code#911432, _extract_internalRefUUID#911433, _extract_internalRefUUID#911430, _extract_internalRefUUID#911431]
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=1399559]
(374) BroadcastHashJoin
Left keys [4]: [coalesce(product#905707, ), isnull(product#905707), coalesce(plant#905708, ), isnull(plant#905708)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911430, ), isnull(_extract_internalRefUUID#911430), coalesce(_extract_internalRefUUID#911431, ), isnull(_extract_internalRefUUID#911431)]
Join type: LeftOuter
Join condition: None
(375) Project
Output [4]: [product#905707, plant#905708, _extract_code#911432, _extract_internalRefUUID#911433]
Input [6]: [product#905707, plant#905708, _extract_code#911432, _extract_internalRefUUID#911433, _extract_internalRefUUID#911430, _extract_internalRefUUID#911431]
(376) Scan parquet
Output [4]: [internalUUID#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728, systemId#905721]
Batched: 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#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728, systemId#905721]
Condition : isnotnull(internalUUID#905722)
(378) Project
Output [3]: [internalUUID#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728]
Input [4]: [internalUUID#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728, systemId#905721]
(379) Exchange
Input [3]: [internalUUID#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398600]
(380) BroadcastExchange
Input [3]: [internalUUID#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399563]
(381) BroadcastHashJoin
Left keys [1]: [product#905707]
Right keys [1]: [internalUUID#905722]
Join type: LeftOuter
Join condition: None
(382) Project
Output [2]: [plant#905708, filter(unitOfMeasureConversions#905728, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911432) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911433)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905726.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905726.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905733]
Input [7]: [product#905707, plant#905708, _extract_code#911432, _extract_internalRefUUID#911433, internalUUID#905722, baseUnitOfMeasure#905726, unitOfMeasureConversions#905728]
(383) Generate
Input [2]: [plant#905708, filteredUnitOfMeasureConversions#905733]
Arguments: explode(filteredUnitOfMeasureConversions#905733.quantityNumerator), [plant#905708, filteredUnitOfMeasureConversions#905733], true, [quantityNumerator#905734]
(384) Project
Output [2]: [plant#905708, filteredUnitOfMeasureConversions#905733.quantityDenominator AS _extract_quantityDenominator#911162]
Input [3]: [plant#905708, filteredUnitOfMeasureConversions#905733, quantityNumerator#905734]
(385) Generate
Input [2]: [plant#905708, _extract_quantityDenominator#911162]
Arguments: explode(_extract_quantityDenominator#911162), [plant#905708], true, [quantityDenominator#905735]
(386) Project
Output [1]: [plant#905708]
Input [2]: [plant#905708, quantityDenominator#905735]
(387) HashAggregate
Input [1]: [plant#905708]
Keys [1]: [plant#905708]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905708]
(388) Exchange
Input [1]: [plant#905708]
Arguments: hashpartitioning(plant#905708, 37), ENSURE_REQUIREMENTS, [plan_id=1399572]
(389) HashAggregate
Input [1]: [plant#905708]
Keys [1]: [plant#905708]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#905708]
(390) BroadcastHashJoin
Left keys [1]: [plantUuid#905704]
Right keys [1]: [plant#905708]
Join type: Inner
Join condition: None
(391) Project
Output [3]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
Input [4]: [plantUuid#905704, storageLocId#905705, storageLocUuid#905706, plant#905708]
(392) BroadcastHashJoin
Left keys [2]: [coalesce(plant#905677.internalRefUUID, ), isnull(plant#905677.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#905704, ), isnull(plantUuid#905704)]
Join type: Inner
Join condition: None
(393) Generate
Input [9]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679, plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
Arguments: explode(filter(stockQuantities#905679, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#905706) AND (lambda x#905594.storageLocation.Id = storageLocId#905705)), lambda x#905594, false))), [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, plantUuid#905704], false, [stockQuantity#905738]
(394) ObjectHashAggregate
Input [7]: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, plantUuid#905704, stockQuantity#905738]
Keys [5]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674]
Functions [2]: [partial_first(calculationDateTime#905678, false), partial_collect_list(stockQuantity#905738, 0, 0)]
Aggregate Attributes [3]: [first#912524, valueSet#912525, buf#912526]
Results [8]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674, first#912527, valueSet#912528, buf#912529]
(395) ObjectHashAggregate
Input [8]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674, first#912527, valueSet#912528, buf#912529]
Keys [5]: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674]
Functions [2]: [first(calculationDateTime#905678, false), collect_list(stockQuantity#905738, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#905678)()#905609, collect_list(stockQuantity#905738, 0, 0)#905610]
Results [4]: [product#905676, plant#905677, first(calculationDateTime#905678)()#905609 AS calculationDateTime#905739, collect_list(stockQuantity#905738, 0, 0)#905610 AS stockQuantities#905740]
(396) Filter
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantities#905740]
Condition : ((size(stockQuantities#905740, true) > 0) AND isnotnull(calculationDateTime#905739))
(397) Generate
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantities#905740]
Arguments: explode(stockQuantities#905740), [product#905676, plant#905677, calculationDateTime#905739], false, [stockQuantity#905741]
(398) Filter
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantity#905741]
Condition : (((isnotnull(stockQuantity#905741.specialStockIndicator.code) AND isnotnull(stockQuantity#905741.stockType.code)) AND (stockQuantity#905741.specialStockIndicator.code = )) AND (stockQuantity#905741.stockType.code = 01))
(399) Project
Output [4]: [plant#905677.internalRefUUID AS plantUuid#905743, product#905676.internalRefUUID AS productUuid#905745, calculationDateTime#905739, stockQuantity#905741.storagelocation.id AS storageLocId#905746]
Input [4]: [product#905676, plant#905677, calculationDateTime#905739, stockQuantity#905741]
(400) Exchange
Input [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: hashpartitioning(productUuid#905745, plantUuid#905743, 37), ENSURE_REQUIREMENTS, [plan_id=1399601]
(401) Sort
Input [4]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746]
Arguments: [productUuid#905745 ASC NULLS FIRST, plantUuid#905743 ASC NULLS FIRST], false, 0
(402) Scan parquet
Output [3]: [product#905751, plant#905752, orderDateTime#905753]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(403) Filter
Input [3]: [product#905751, plant#905752, orderDateTime#905753]
Condition : ((isnotnull(orderDateTime#905753) AND isnotnull(plant#905752)) AND isnotnull(product#905751))
(404) Exchange
Input [3]: [product#905751, plant#905752, orderDateTime#905753]
Arguments: hashpartitioning(product#905751, plant#905752, 37), REPARTITION_BY_NUM, [plan_id=1399233]
(405) Scan parquet
Output [4]: [plant#905757, product#905758, productionAspect#905760, systemId#905755]
Batched: 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#905757.internalRefUUID AS _extract_internalRefUUID#911436, product#905758.internalRefUUID AS _extract_internalRefUUID#911437, productionAspect#905760.productMovementPlants.unitOfIssue.code AS _extract_code#911434, productionAspect#905760.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911435]
Input [4]: [plant#905757, product#905758, productionAspect#905760, systemId#905755]
(407) Exchange
Input [4]: [_extract_internalRefUUID#911436, _extract_internalRefUUID#911437, _extract_code#911434, _extract_internalRefUUID#911435]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398625]
(408) Project
Output [4]: [_extract_code#911434, _extract_internalRefUUID#911435, _extract_internalRefUUID#911437, _extract_internalRefUUID#911436]
Input [4]: [_extract_internalRefUUID#911436, _extract_internalRefUUID#911437, _extract_code#911434, _extract_internalRefUUID#911435]
(409) BroadcastExchange
Input [4]: [_extract_code#911434, _extract_internalRefUUID#911435, _extract_internalRefUUID#911437, _extract_internalRefUUID#911436]
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=1399588]
(410) BroadcastHashJoin
Left keys [4]: [coalesce(product#905751, ), isnull(product#905751), coalesce(plant#905752, ), isnull(plant#905752)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911437, ), isnull(_extract_internalRefUUID#911437), coalesce(_extract_internalRefUUID#911436, ), isnull(_extract_internalRefUUID#911436)]
Join type: LeftOuter
Join condition: None
(411) Project
Output [5]: [product#905751, plant#905752, orderDateTime#905753, _extract_code#911434, _extract_internalRefUUID#911435]
Input [7]: [product#905751, plant#905752, orderDateTime#905753, _extract_code#911434, _extract_internalRefUUID#911435, _extract_internalRefUUID#911437, _extract_internalRefUUID#911436]
(412) Scan parquet
Output [4]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772, systemId#905765]
Batched: 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#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772, systemId#905765]
Condition : isnotnull(internalUUID#905766)
(414) Project
Output [3]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
Input [4]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772, systemId#905765]
(415) Exchange
Input [3]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398632]
(416) BroadcastExchange
Input [3]: [internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399592]
(417) BroadcastHashJoin
Left keys [1]: [product#905751]
Right keys [1]: [internalUUID#905766]
Join type: LeftOuter
Join condition: None
(418) Project
Output [4]: [product#905751, plant#905752, orderDateTime#905753, filter(unitOfMeasureConversions#905772, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911434) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911435)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905770.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905770.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905777]
Input [8]: [product#905751, plant#905752, orderDateTime#905753, _extract_code#911434, _extract_internalRefUUID#911435, internalUUID#905766, baseUnitOfMeasure#905770, unitOfMeasureConversions#905772]
(419) Generate
Input [4]: [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777]
Arguments: explode(filteredUnitOfMeasureConversions#905777.quantityNumerator), [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777], true, [quantityNumerator#905778]
(420) Project
Output [4]: [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777.quantityDenominator AS _extract_quantityDenominator#911169]
Input [5]: [product#905751, plant#905752, orderDateTime#905753, filteredUnitOfMeasureConversions#905777, quantityNumerator#905778]
(421) Generate
Input [4]: [product#905751, plant#905752, orderDateTime#905753, _extract_quantityDenominator#911169]
Arguments: explode(_extract_quantityDenominator#911169), [product#905751, plant#905752, orderDateTime#905753], true, [quantityDenominator#905779]
(422) Project
Output [3]: [product#905751, plant#905752, orderDateTime#905753]
Input [4]: [product#905751, plant#905752, orderDateTime#905753, quantityDenominator#905779]
(423) Sort
Input [3]: [product#905751, plant#905752, orderDateTime#905753]
Arguments: [product#905751 ASC NULLS FIRST, plant#905752 ASC NULLS FIRST], false, 0
(424) SortMergeJoin
Left keys [2]: [productUuid#905745, plantUuid#905743]
Right keys [2]: [product#905751, plant#905752]
Join type: Inner
Join condition: (calculationDateTime#905739 <= orderDateTime#905753)
(425) Project
Output [4]: [plantUuid#905743 AS plant#905782, productUuid#905745 AS product#905783, storageLocId#905746, calculationDateTime#905739]
Input [7]: [plantUuid#905743, productUuid#905745, calculationDateTime#905739, storageLocId#905746, product#905751, plant#905752, orderDateTime#905753]
(426) HashAggregate
Input [4]: [plant#905782, product#905783, storageLocId#905746, calculationDateTime#905739]
Keys [3]: [plant#905782, product#905783, storageLocId#905746]
Functions [1]: [partial_max(calculationDateTime#905739)]
Aggregate Attributes [1]: [max#912522]
Results [4]: [plant#905782, product#905783, storageLocId#905746, max#912523]
(427) HashAggregate
Input [4]: [plant#905782, product#905783, storageLocId#905746, max#912523]
Keys [3]: [plant#905782, product#905783, storageLocId#905746]
Functions [1]: [max(calculationDateTime#905739)]
Aggregate Attributes [1]: [max(calculationDateTime#905739)#905673]
Results [4]: [plant#905782, product#905783, storageLocId#905746, max(calculationDateTime#905739)#905673 AS max_calc_datetime#905667]
(428) Exchange
Input [4]: [plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
Arguments: hashpartitioning(coalesce(plant#905782, ), isnull(plant#905782), coalesce(product#905783, ), isnull(product#905783), coalesce(storageLocId#905746, ), isnull(storageLocId#905746), coalesce(max_calc_datetime#905667, 1970-01-01 00:00:00), isnull(max_calc_datetime#905667), 37), ENSURE_REQUIREMENTS, [plan_id=1399611]
(429) Sort
Input [4]: [plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
Arguments: [coalesce(plant#905782, ) ASC NULLS FIRST, isnull(plant#905782) ASC NULLS FIRST, coalesce(product#905783, ) ASC NULLS FIRST, isnull(product#905783) ASC NULLS FIRST, coalesce(storageLocId#905746, ) ASC NULLS FIRST, isnull(storageLocId#905746) ASC NULLS FIRST, coalesce(max_calc_datetime#905667, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#905667) ASC NULLS FIRST], false, 0
(430) SortMergeJoin
Left keys [8]: [coalesce(plant#905665, ), isnull(plant#905665), coalesce(product#905666, ), isnull(product#905666), coalesce(storageLocId#905617, ), isnull(storageLocId#905617), coalesce(calculationDateTime#905596, 1970-01-01 00:00:00), isnull(calculationDateTime#905596)]
Right keys [8]: [coalesce(plant#905782, ), isnull(plant#905782), coalesce(product#905783, ), isnull(product#905783), coalesce(storageLocId#905746, ), isnull(storageLocId#905746), coalesce(max_calc_datetime#905667, 1970-01-01 00:00:00), isnull(max_calc_datetime#905667)]
Join type: Inner
Join condition: None
(431) Project
Output [4]: [plant#905665, product#905666, calculationDateTime#905596, quantity#905619]
Input [9]: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619, plant#905782, product#905783, storageLocId#905746, max_calc_datetime#905667]
(432) HashAggregate
Input [4]: [plant#905665, product#905666, calculationDateTime#905596, quantity#905619]
Keys [2]: [product#905666, plant#905665]
Functions [2]: [partial_min(calculationDateTime#905596), partial_sum(quantity#905619)]
Aggregate Attributes [2]: [min#912512, sum#912513]
Results [4]: [product#905666, plant#905665, min#912514, sum#912515]
(433) Exchange
Input [4]: [product#905666, plant#905665, min#912514, sum#912515]
Arguments: hashpartitioning(product#905666, plant#905665, 37), ENSURE_REQUIREMENTS, [plan_id=1399618]
(434) HashAggregate
Input [4]: [product#905666, plant#905665, min#912514, sum#912515]
Keys [2]: [product#905666, plant#905665]
Functions [2]: [min(calculationDateTime#905596), sum(quantity#905619)]
Aggregate Attributes [2]: [min(calculationDateTime#905596)#905800, sum(quantity#905619)#905799]
Results [4]: [product#905666, plant#905665, min(calculationDateTime#905596)#905800 AS minCalculationDateTime#905793, round(sum(quantity#905619)#905799, 0) AS roundedQuantitySum#905801]
(435) Sort
Input [4]: [product#905666, plant#905665, minCalculationDateTime#905793, roundedQuantitySum#905801]
Arguments: [product#905666 ASC NULLS FIRST, plant#905665 ASC NULLS FIRST], false, 0
(436) SortMergeJoin
Left keys [2]: [product#905388, plant#905389]
Right keys [2]: [product#905666, plant#905665]
Join type: LeftOuter
Join condition: None
(437) Project
Output [5]: [product#905388, plant#905389, outboundUnit#905476, CASE WHEN isnotnull(minCalculationDateTime#905793) THEN minCalculationDateTime#905793 ELSE orderDateTime#905390 END AS stockDatetime#905836, CASE WHEN isnotnull(roundedQuantitySum#905801) THEN array(roundedQuantitySum#905801) ELSE [0.0] END AS stockBatchQuantities#905837]
Input [8]: [product#905388, plant#905389, orderDateTime#905390, outboundUnit#905476, product#905666, plant#905665, minCalculationDateTime#905793, roundedQuantitySum#905801]
(438) Exchange
Input [5]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837]
Arguments: hashpartitioning(coalesce(plant#905389, ), isnull(plant#905389), coalesce(product#905388, ), isnull(product#905388), 37), ENSURE_REQUIREMENTS, [plan_id=1399772]
(439) Sort
Input [5]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837]
Arguments: [coalesce(plant#905389, ) ASC NULLS FIRST, isnull(plant#905389) ASC NULLS FIRST, coalesce(product#905388, ) ASC NULLS FIRST, isnull(product#905388) ASC NULLS FIRST], false, 0
(440) Scan parquet
Output [3]: [product#906956, plant#906957, orderDateTime#906958]
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/10000000348/shardId=0_1_10000000348]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(441) Exchange
Input [3]: [product#906956, plant#906957, orderDateTime#906958]
Arguments: hashpartitioning(product#906956, plant#906957, 37), REPARTITION_BY_NUM, [plan_id=1398650]
(442) Project
Output [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
Input [9]: [internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968, systemId#906960]
(443) Exchange
Input [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398653]
(444) Project
Output [1]: [struct(systemId, systemId#906960, internalUUID, internalUUID#906961, plant, plant#906962, product, product#906963, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#906964, productionAspect, productionAspect#906965, salesPlant, salesPlant#906966, listing, listing#906967, sourceOfSupplyCategory, sourceOfSupplyCategory#906968) AS productPlant#906969]
Input [9]: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968]
(445) BroadcastExchange
Input [1]: [productPlant#906969]
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=1399626]
(446) BroadcastHashJoin
Left keys [4]: [coalesce(product#906956, ), isnull(product#906956), coalesce(plant#906957, ), isnull(plant#906957)]
Right keys [4]: [coalesce(productPlant#906969.product.internalRefUUID, ), isnull(productPlant#906969.product.internalRefUUID), coalesce(productPlant#906969.plant.internalRefUUID, ), isnull(productPlant#906969.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(447) Scan parquet
Output [4]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977, systemId#906970]
Batched: 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#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977, systemId#906970]
Condition : isnotnull(internalUUID#906971)
(449) Project
Output [3]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
Input [4]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977, systemId#906970]
(450) Exchange
Input [3]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398659]
(451) BroadcastExchange
Input [3]: [internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399629]
(452) BroadcastHashJoin
Left keys [1]: [product#906956]
Right keys [1]: [internalUUID#906971]
Join type: LeftOuter
Join condition: None
(453) Project
Output [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, filter(unitOfMeasureConversions#906977, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#906975.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#906975.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#906982]
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, internalUUID#906971, baseUnitOfMeasure#906975, unitOfMeasureConversions#906977]
(454) Project
Output [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, filteredUnitOfMeasureConversions#906982.quantityDenominator AS _extract_quantityDenominator#911438, filteredUnitOfMeasureConversions#906982.quantityNumerator AS _extract_quantityNumerator#911439]
Input [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, filteredUnitOfMeasureConversions#906982]
(455) Generate
Input [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, _extract_quantityDenominator#911438, _extract_quantityNumerator#911439]
Arguments: explode(_extract_quantityNumerator#911439), [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, _extract_quantityDenominator#911438], true, [quantityNumerator#906983]
(456) Generate
Input [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, _extract_quantityDenominator#911438, quantityNumerator#906983]
Arguments: explode(_extract_quantityDenominator#911438), [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, quantityNumerator#906983], true, [quantityDenominator#906984]
(457) Project
Output [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, (cast(quantityNumerator#906983 as double) / cast(quantityDenominator#906984 as double)) AS outboundUnit#906985]
Input [6]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, quantityNumerator#906983, quantityDenominator#906984]
(458) Project
Output [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, CASE WHEN (isnull(outboundUnit#906985) OR (outboundUnit#906985 <= 0.0)) THEN 1.0 ELSE outboundUnit#906985 END AS outboundUnit#906986]
Input [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906985]
(459) Sort
Input [5]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986]
Arguments: [product#906956 ASC NULLS FIRST, plant#906957 ASC NULLS FIRST], false, 0
(460) Scan parquet
Output [6]: [internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992, systemId#906987]
Batched: 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#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992, systemId#906987]
Condition : (isnotnull(plant#906990.internalRefUUID) AND isnotnull(product#906989.internalRefUUID))
(462) Project
Output [6]: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992]
Input [6]: [internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992, systemId#906987]
(463) Exchange
Input [6]: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398670]
(464) BroadcastExchange
Input [6]: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992]
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=1399657]
(465) Scan parquet
Output [2]: [marketUnit#906993, distributionCenters#906999]
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#906993, distributionCenters#906999]
Condition : (((marketUnit#906993 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#906999, true) > 0)) AND isnotnull(distributionCenters#906999))
(467) Project
Output [1]: [distributionCenters#906999]
Input [2]: [marketUnit#906993, distributionCenters#906999]
(468) Exchange
Input [1]: [distributionCenters#906999]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398674]
(469) Generate
Input [1]: [distributionCenters#906999]
Arguments: explode(distributionCenters#906999), false, [distributionCenters#907014]
(470) Filter
Input [1]: [distributionCenters#907014]
Condition : (((size(distributionCenters#907014.storageLocations, true) > 0) AND isnotnull(distributionCenters#907014.storageLocations)) AND isnotnull(distributionCenters#907014.internalRefUUID))
(471) Project
Output [2]: [distributionCenters#907014.internalRefUUID AS _extract_internalRefUUID#911177, distributionCenters#907014.storageLocations AS _extract_storageLocations#911178]
Input [1]: [distributionCenters#907014]
(472) Generate
Input [2]: [_extract_internalRefUUID#911177, _extract_storageLocations#911178]
Arguments: explode(_extract_storageLocations#911178), [_extract_internalRefUUID#911177], false, [storageLocations#907015]
(473) Project
Output [3]: [_extract_internalRefUUID#911177 AS plantUuid#907017, storageLocations#907015.id AS storageLocId#907018, storageLocations#907015.internalRefUUID AS storageLocUuid#907019]
Input [2]: [_extract_internalRefUUID#911177, storageLocations#907015]
(474) BroadcastExchange
Input [3]: [plantUuid#907017, storageLocId#907018, storageLocUuid#907019]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399653]
(475) Scan parquet
Output [2]: [product#907020, plant#907021]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(476) Filter
Input [2]: [product#907020, plant#907021]
Condition : isnotnull(plant#907021)
(477) Exchange
Input [2]: [product#907020, plant#907021]
Arguments: hashpartitioning(product#907020, plant#907021, 37), REPARTITION_BY_NUM, [plan_id=1399252]
(478) Scan parquet
Output [4]: [plant#907026, product#907027, productionAspect#907029, systemId#907024]
Batched: 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#907026.internalRefUUID AS _extract_internalRefUUID#911440, product#907027.internalRefUUID AS _extract_internalRefUUID#911443, productionAspect#907029.productMovementPlants.unitOfIssue.code AS _extract_code#911441, productionAspect#907029.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911442]
Input [4]: [plant#907026, product#907027, productionAspect#907029, systemId#907024]
(480) Exchange
Input [4]: [_extract_internalRefUUID#911440, _extract_internalRefUUID#911443, _extract_code#911441, _extract_internalRefUUID#911442]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398686]
(481) Project
Output [4]: [_extract_code#911441, _extract_internalRefUUID#911442, _extract_internalRefUUID#911443, _extract_internalRefUUID#911440]
Input [4]: [_extract_internalRefUUID#911440, _extract_internalRefUUID#911443, _extract_code#911441, _extract_internalRefUUID#911442]
(482) BroadcastExchange
Input [4]: [_extract_code#911441, _extract_internalRefUUID#911442, _extract_internalRefUUID#911443, _extract_internalRefUUID#911440]
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=1399637]
(483) BroadcastHashJoin
Left keys [4]: [coalesce(product#907020, ), isnull(product#907020), coalesce(plant#907021, ), isnull(plant#907021)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911443, ), isnull(_extract_internalRefUUID#911443), coalesce(_extract_internalRefUUID#911440, ), isnull(_extract_internalRefUUID#911440)]
Join type: LeftOuter
Join condition: None
(484) Project
Output [4]: [product#907020, plant#907021, _extract_code#911441, _extract_internalRefUUID#911442]
Input [6]: [product#907020, plant#907021, _extract_code#911441, _extract_internalRefUUID#911442, _extract_internalRefUUID#911443, _extract_internalRefUUID#911440]
(485) Scan parquet
Output [4]: [internalUUID#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041, systemId#907034]
Batched: 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#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041, systemId#907034]
Condition : isnotnull(internalUUID#907035)
(487) Project
Output [3]: [internalUUID#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041]
Input [4]: [internalUUID#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041, systemId#907034]
(488) Exchange
Input [3]: [internalUUID#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398693]
(489) BroadcastExchange
Input [3]: [internalUUID#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399641]
(490) BroadcastHashJoin
Left keys [1]: [product#907020]
Right keys [1]: [internalUUID#907035]
Join type: LeftOuter
Join condition: None
(491) Project
Output [2]: [plant#907021, filter(unitOfMeasureConversions#907041, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911441) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911442)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907039.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907039.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907046]
Input [7]: [product#907020, plant#907021, _extract_code#911441, _extract_internalRefUUID#911442, internalUUID#907035, baseUnitOfMeasure#907039, unitOfMeasureConversions#907041]
(492) Generate
Input [2]: [plant#907021, filteredUnitOfMeasureConversions#907046]
Arguments: explode(filteredUnitOfMeasureConversions#907046.quantityNumerator), [plant#907021, filteredUnitOfMeasureConversions#907046], true, [quantityNumerator#907047]
(493) Project
Output [2]: [plant#907021, filteredUnitOfMeasureConversions#907046.quantityDenominator AS _extract_quantityDenominator#911179]
Input [3]: [plant#907021, filteredUnitOfMeasureConversions#907046, quantityNumerator#907047]
(494) Generate
Input [2]: [plant#907021, _extract_quantityDenominator#911179]
Arguments: explode(_extract_quantityDenominator#911179), [plant#907021], true, [quantityDenominator#907048]
(495) Project
Output [1]: [plant#907021]
Input [2]: [plant#907021, quantityDenominator#907048]
(496) HashAggregate
Input [1]: [plant#907021]
Keys [1]: [plant#907021]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#907021]
(497) Exchange
Input [1]: [plant#907021]
Arguments: hashpartitioning(plant#907021, 37), ENSURE_REQUIREMENTS, [plan_id=1399650]
(498) HashAggregate
Input [1]: [plant#907021]
Keys [1]: [plant#907021]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#907021]
(499) BroadcastHashJoin
Left keys [1]: [plantUuid#907017]
Right keys [1]: [plant#907021]
Join type: Inner
Join condition: None
(500) Project
Output [3]: [plantUuid#907017, storageLocId#907018, storageLocUuid#907019]
Input [4]: [plantUuid#907017, storageLocId#907018, storageLocUuid#907019, plant#907021]
(501) BroadcastHashJoin
Left keys [2]: [coalesce(plant#906990.internalRefUUID, ), isnull(plant#906990.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#907017, ), isnull(plantUuid#907017)]
Join type: Inner
Join condition: None
(502) Generate
Input [9]: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992, plantUuid#907017, storageLocId#907018, storageLocUuid#907019]
Arguments: explode(filter(stockQuantities#906992, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907019) AND (lambda x#905594.storageLocation.Id = storageLocId#907018)), lambda x#905594, false))), [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, plantUuid#907017], false, [stockQuantity#907051]
(503) ObjectHashAggregate
Input [7]: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, plantUuid#907017, stockQuantity#907051]
Keys [5]: [plantUuid#907017, internalUUID#906988, plant#906990, product#906989, systemId#906987]
Functions [2]: [partial_first(calculationDateTime#906991, false), partial_collect_list(stockQuantity#907051, 0, 0)]
Aggregate Attributes [3]: [first#912538, valueSet#912539, buf#912540]
Results [8]: [plantUuid#907017, internalUUID#906988, plant#906990, product#906989, systemId#906987, first#912541, valueSet#912542, buf#912543]
(504) ObjectHashAggregate
Input [8]: [plantUuid#907017, internalUUID#906988, plant#906990, product#906989, systemId#906987, first#912541, valueSet#912542, buf#912543]
Keys [5]: [plantUuid#907017, internalUUID#906988, plant#906990, product#906989, systemId#906987]
Functions [2]: [first(calculationDateTime#906991, false), collect_list(stockQuantity#907051, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#906991)()#905609, collect_list(stockQuantity#907051, 0, 0)#905610]
Results [4]: [product#906989, plant#906990, first(calculationDateTime#906991)()#905609 AS calculationDateTime#907052, collect_list(stockQuantity#907051, 0, 0)#905610 AS stockQuantities#907053]
(505) Filter
Input [4]: [product#906989, plant#906990, calculationDateTime#907052, stockQuantities#907053]
Condition : ((size(stockQuantities#907053, true) > 0) AND isnotnull(calculationDateTime#907052))
(506) Generate
Input [4]: [product#906989, plant#906990, calculationDateTime#907052, stockQuantities#907053]
Arguments: explode(stockQuantities#907053), [product#906989, plant#906990, calculationDateTime#907052], false, [stockQuantity#907054]
(507) Filter
Input [4]: [product#906989, plant#906990, calculationDateTime#907052, stockQuantity#907054]
Condition : (((isnotnull(stockQuantity#907054.specialStockIndicator.code) AND isnotnull(stockQuantity#907054.stockType.code)) AND (stockQuantity#907054.specialStockIndicator.code = )) AND (stockQuantity#907054.stockType.code = 01))
(508) Project
Output [5]: [plant#906990.internalRefUUID AS plantUuid#907056, product#906989.internalRefUUID AS productUuid#907058, calculationDateTime#907052, stockQuantity#907054.storagelocation.id AS storageLocId#907059, stockQuantity#907054.quantity.measure AS quantity#907061]
Input [4]: [product#906989, plant#906990, calculationDateTime#907052, stockQuantity#907054]
(509) Exchange
Input [5]: [plantUuid#907056, productUuid#907058, calculationDateTime#907052, storageLocId#907059, quantity#907061]
Arguments: hashpartitioning(productUuid#907058, plantUuid#907056, 37), ENSURE_REQUIREMENTS, [plan_id=1399679]
(510) Sort
Input [5]: [plantUuid#907056, productUuid#907058, calculationDateTime#907052, storageLocId#907059, quantity#907061]
Arguments: [productUuid#907058 ASC NULLS FIRST, plantUuid#907056 ASC NULLS FIRST], false, 0
(511) Scan parquet
Output [3]: [product#907064, plant#907065, orderDateTime#907066]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(512) Filter
Input [3]: [product#907064, plant#907065, orderDateTime#907066]
Condition : ((isnotnull(orderDateTime#907066) AND isnotnull(plant#907065)) AND isnotnull(product#907064))
(513) Exchange
Input [3]: [product#907064, plant#907065, orderDateTime#907066]
Arguments: hashpartitioning(product#907064, plant#907065, 37), REPARTITION_BY_NUM, [plan_id=1399273]
(514) Scan parquet
Output [4]: [plant#907070, product#907071, productionAspect#907073, systemId#907068]
Batched: 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#907070.internalRefUUID AS _extract_internalRefUUID#911445, product#907071.internalRefUUID AS _extract_internalRefUUID#911444, productionAspect#907073.productMovementPlants.unitOfIssue.code AS _extract_code#911446, productionAspect#907073.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911447]
Input [4]: [plant#907070, product#907071, productionAspect#907073, systemId#907068]
(516) Exchange
Input [4]: [_extract_internalRefUUID#911445, _extract_internalRefUUID#911444, _extract_code#911446, _extract_internalRefUUID#911447]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398718]
(517) Project
Output [4]: [_extract_code#911446, _extract_internalRefUUID#911447, _extract_internalRefUUID#911444, _extract_internalRefUUID#911445]
Input [4]: [_extract_internalRefUUID#911445, _extract_internalRefUUID#911444, _extract_code#911446, _extract_internalRefUUID#911447]
(518) BroadcastExchange
Input [4]: [_extract_code#911446, _extract_internalRefUUID#911447, _extract_internalRefUUID#911444, _extract_internalRefUUID#911445]
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=1399666]
(519) BroadcastHashJoin
Left keys [4]: [coalesce(product#907064, ), isnull(product#907064), coalesce(plant#907065, ), isnull(plant#907065)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911444, ), isnull(_extract_internalRefUUID#911444), coalesce(_extract_internalRefUUID#911445, ), isnull(_extract_internalRefUUID#911445)]
Join type: LeftOuter
Join condition: None
(520) Project
Output [5]: [product#907064, plant#907065, orderDateTime#907066, _extract_code#911446, _extract_internalRefUUID#911447]
Input [7]: [product#907064, plant#907065, orderDateTime#907066, _extract_code#911446, _extract_internalRefUUID#911447, _extract_internalRefUUID#911444, _extract_internalRefUUID#911445]
(521) Scan parquet
Output [4]: [internalUUID#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085, systemId#907078]
Batched: 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#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085, systemId#907078]
Condition : isnotnull(internalUUID#907079)
(523) Project
Output [3]: [internalUUID#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085]
Input [4]: [internalUUID#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085, systemId#907078]
(524) Exchange
Input [3]: [internalUUID#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398725]
(525) BroadcastExchange
Input [3]: [internalUUID#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399670]
(526) BroadcastHashJoin
Left keys [1]: [product#907064]
Right keys [1]: [internalUUID#907079]
Join type: LeftOuter
Join condition: None
(527) Project
Output [4]: [product#907064, plant#907065, orderDateTime#907066, filter(unitOfMeasureConversions#907085, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911446) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911447)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907083.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907083.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907090]
Input [8]: [product#907064, plant#907065, orderDateTime#907066, _extract_code#911446, _extract_internalRefUUID#911447, internalUUID#907079, baseUnitOfMeasure#907083, unitOfMeasureConversions#907085]
(528) Generate
Input [4]: [product#907064, plant#907065, orderDateTime#907066, filteredUnitOfMeasureConversions#907090]
Arguments: explode(filteredUnitOfMeasureConversions#907090.quantityNumerator), [product#907064, plant#907065, orderDateTime#907066, filteredUnitOfMeasureConversions#907090], true, [quantityNumerator#907091]
(529) Project
Output [4]: [product#907064, plant#907065, orderDateTime#907066, filteredUnitOfMeasureConversions#907090.quantityDenominator AS _extract_quantityDenominator#911186]
Input [5]: [product#907064, plant#907065, orderDateTime#907066, filteredUnitOfMeasureConversions#907090, quantityNumerator#907091]
(530) Generate
Input [4]: [product#907064, plant#907065, orderDateTime#907066, _extract_quantityDenominator#911186]
Arguments: explode(_extract_quantityDenominator#911186), [product#907064, plant#907065, orderDateTime#907066], true, [quantityDenominator#907092]
(531) Project
Output [3]: [product#907064, plant#907065, orderDateTime#907066]
Input [4]: [product#907064, plant#907065, orderDateTime#907066, quantityDenominator#907092]
(532) Sort
Input [3]: [product#907064, plant#907065, orderDateTime#907066]
Arguments: [product#907064 ASC NULLS FIRST, plant#907065 ASC NULLS FIRST], false, 0
(533) SortMergeJoin
Left keys [2]: [productUuid#907058, plantUuid#907056]
Right keys [2]: [product#907064, plant#907065]
Join type: Inner
Join condition: (calculationDateTime#907052 <= orderDateTime#907066)
(534) Project
Output [5]: [plantUuid#907056 AS plant#907095, productUuid#907058 AS product#907096, storageLocId#907059, calculationDateTime#907052, quantity#907061]
Input [8]: [plantUuid#907056, productUuid#907058, calculationDateTime#907052, storageLocId#907059, quantity#907061, product#907064, plant#907065, orderDateTime#907066]
(535) Exchange
Input [5]: [plant#907095, product#907096, storageLocId#907059, calculationDateTime#907052, quantity#907061]
Arguments: hashpartitioning(coalesce(plant#907095, ), isnull(plant#907095), coalesce(product#907096, ), isnull(product#907096), coalesce(storageLocId#907059, ), isnull(storageLocId#907059), coalesce(calculationDateTime#907052, 1970-01-01 00:00:00), isnull(calculationDateTime#907052), 37), ENSURE_REQUIREMENTS, [plan_id=1399735]
(536) Sort
Input [5]: [plant#907095, product#907096, storageLocId#907059, calculationDateTime#907052, quantity#907061]
Arguments: [coalesce(plant#907095, ) ASC NULLS FIRST, isnull(plant#907095) ASC NULLS FIRST, coalesce(product#907096, ) ASC NULLS FIRST, isnull(product#907096) ASC NULLS FIRST, coalesce(storageLocId#907059, ) ASC NULLS FIRST, isnull(storageLocId#907059) ASC NULLS FIRST, coalesce(calculationDateTime#907052, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#907052) ASC NULLS FIRST], false, 0
(537) Scan parquet
Output [6]: [internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102, systemId#907097]
Batched: 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#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102, systemId#907097]
Condition : (isnotnull(plant#907100.internalRefUUID) AND isnotnull(product#907099.internalRefUUID))
(539) Project
Output [6]: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102]
Input [6]: [internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102, systemId#907097]
(540) Exchange
Input [6]: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398737]
(541) BroadcastExchange
Input [6]: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102]
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=1399704]
(542) Scan parquet
Output [2]: [marketUnit#907103, distributionCenters#907109]
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#907103, distributionCenters#907109]
Condition : (((marketUnit#907103 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#907109, true) > 0)) AND isnotnull(distributionCenters#907109))
(544) Project
Output [1]: [distributionCenters#907109]
Input [2]: [marketUnit#907103, distributionCenters#907109]
(545) Exchange
Input [1]: [distributionCenters#907109]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398741]
(546) Generate
Input [1]: [distributionCenters#907109]
Arguments: explode(distributionCenters#907109), false, [distributionCenters#907124]
(547) Filter
Input [1]: [distributionCenters#907124]
Condition : (((size(distributionCenters#907124.storageLocations, true) > 0) AND isnotnull(distributionCenters#907124.storageLocations)) AND isnotnull(distributionCenters#907124.internalRefUUID))
(548) Project
Output [2]: [distributionCenters#907124.internalRefUUID AS _extract_internalRefUUID#911193, distributionCenters#907124.storageLocations AS _extract_storageLocations#911194]
Input [1]: [distributionCenters#907124]
(549) Generate
Input [2]: [_extract_internalRefUUID#911193, _extract_storageLocations#911194]
Arguments: explode(_extract_storageLocations#911194), [_extract_internalRefUUID#911193], false, [storageLocations#907125]
(550) Project
Output [3]: [_extract_internalRefUUID#911193 AS plantUuid#907127, storageLocations#907125.id AS storageLocId#907128, storageLocations#907125.internalRefUUID AS storageLocUuid#907129]
Input [2]: [_extract_internalRefUUID#911193, storageLocations#907125]
(551) BroadcastExchange
Input [3]: [plantUuid#907127, storageLocId#907128, storageLocUuid#907129]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399700]
(552) Scan parquet
Output [2]: [product#907130, plant#907131]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(553) Filter
Input [2]: [product#907130, plant#907131]
Condition : isnotnull(plant#907131)
(554) Exchange
Input [2]: [product#907130, plant#907131]
Arguments: hashpartitioning(product#907130, plant#907131, 37), REPARTITION_BY_NUM, [plan_id=1399284]
(555) Scan parquet
Output [4]: [plant#907136, product#907137, productionAspect#907139, systemId#907134]
Batched: 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#907136.internalRefUUID AS _extract_internalRefUUID#911449, product#907137.internalRefUUID AS _extract_internalRefUUID#911448, productionAspect#907139.productMovementPlants.unitOfIssue.code AS _extract_code#911450, productionAspect#907139.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911451]
Input [4]: [plant#907136, product#907137, productionAspect#907139, systemId#907134]
(557) Exchange
Input [4]: [_extract_internalRefUUID#911449, _extract_internalRefUUID#911448, _extract_code#911450, _extract_internalRefUUID#911451]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398753]
(558) Project
Output [4]: [_extract_code#911450, _extract_internalRefUUID#911451, _extract_internalRefUUID#911448, _extract_internalRefUUID#911449]
Input [4]: [_extract_internalRefUUID#911449, _extract_internalRefUUID#911448, _extract_code#911450, _extract_internalRefUUID#911451]
(559) BroadcastExchange
Input [4]: [_extract_code#911450, _extract_internalRefUUID#911451, _extract_internalRefUUID#911448, _extract_internalRefUUID#911449]
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=1399684]
(560) BroadcastHashJoin
Left keys [4]: [coalesce(product#907130, ), isnull(product#907130), coalesce(plant#907131, ), isnull(plant#907131)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911448, ), isnull(_extract_internalRefUUID#911448), coalesce(_extract_internalRefUUID#911449, ), isnull(_extract_internalRefUUID#911449)]
Join type: LeftOuter
Join condition: None
(561) Project
Output [4]: [product#907130, plant#907131, _extract_code#911450, _extract_internalRefUUID#911451]
Input [6]: [product#907130, plant#907131, _extract_code#911450, _extract_internalRefUUID#911451, _extract_internalRefUUID#911448, _extract_internalRefUUID#911449]
(562) Scan parquet
Output [4]: [internalUUID#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151, systemId#907144]
Batched: 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#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151, systemId#907144]
Condition : isnotnull(internalUUID#907145)
(564) Project
Output [3]: [internalUUID#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151]
Input [4]: [internalUUID#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151, systemId#907144]
(565) Exchange
Input [3]: [internalUUID#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398760]
(566) BroadcastExchange
Input [3]: [internalUUID#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399688]
(567) BroadcastHashJoin
Left keys [1]: [product#907130]
Right keys [1]: [internalUUID#907145]
Join type: LeftOuter
Join condition: None
(568) Project
Output [2]: [plant#907131, filter(unitOfMeasureConversions#907151, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911450) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911451)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907149.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907149.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907156]
Input [7]: [product#907130, plant#907131, _extract_code#911450, _extract_internalRefUUID#911451, internalUUID#907145, baseUnitOfMeasure#907149, unitOfMeasureConversions#907151]
(569) Generate
Input [2]: [plant#907131, filteredUnitOfMeasureConversions#907156]
Arguments: explode(filteredUnitOfMeasureConversions#907156.quantityNumerator), [plant#907131, filteredUnitOfMeasureConversions#907156], true, [quantityNumerator#907157]
(570) Project
Output [2]: [plant#907131, filteredUnitOfMeasureConversions#907156.quantityDenominator AS _extract_quantityDenominator#911195]
Input [3]: [plant#907131, filteredUnitOfMeasureConversions#907156, quantityNumerator#907157]
(571) Generate
Input [2]: [plant#907131, _extract_quantityDenominator#911195]
Arguments: explode(_extract_quantityDenominator#911195), [plant#907131], true, [quantityDenominator#907158]
(572) Project
Output [1]: [plant#907131]
Input [2]: [plant#907131, quantityDenominator#907158]
(573) HashAggregate
Input [1]: [plant#907131]
Keys [1]: [plant#907131]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#907131]
(574) Exchange
Input [1]: [plant#907131]
Arguments: hashpartitioning(plant#907131, 37), ENSURE_REQUIREMENTS, [plan_id=1399697]
(575) HashAggregate
Input [1]: [plant#907131]
Keys [1]: [plant#907131]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#907131]
(576) BroadcastHashJoin
Left keys [1]: [plantUuid#907127]
Right keys [1]: [plant#907131]
Join type: Inner
Join condition: None
(577) Project
Output [3]: [plantUuid#907127, storageLocId#907128, storageLocUuid#907129]
Input [4]: [plantUuid#907127, storageLocId#907128, storageLocUuid#907129, plant#907131]
(578) BroadcastHashJoin
Left keys [2]: [coalesce(plant#907100.internalRefUUID, ), isnull(plant#907100.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#907127, ), isnull(plantUuid#907127)]
Join type: Inner
Join condition: None
(579) Generate
Input [9]: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102, plantUuid#907127, storageLocId#907128, storageLocUuid#907129]
Arguments: explode(filter(stockQuantities#907102, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907129) AND (lambda x#905594.storageLocation.Id = storageLocId#907128)), lambda x#905594, false))), [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, plantUuid#907127], false, [stockQuantity#907161]
(580) ObjectHashAggregate
Input [7]: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, plantUuid#907127, stockQuantity#907161]
Keys [5]: [plantUuid#907127, internalUUID#907098, plant#907100, product#907099, systemId#907097]
Functions [2]: [partial_first(calculationDateTime#907101, false), partial_collect_list(stockQuantity#907161, 0, 0)]
Aggregate Attributes [3]: [first#912546, valueSet#912547, buf#912548]
Results [8]: [plantUuid#907127, internalUUID#907098, plant#907100, product#907099, systemId#907097, first#912549, valueSet#912550, buf#912551]
(581) ObjectHashAggregate
Input [8]: [plantUuid#907127, internalUUID#907098, plant#907100, product#907099, systemId#907097, first#912549, valueSet#912550, buf#912551]
Keys [5]: [plantUuid#907127, internalUUID#907098, plant#907100, product#907099, systemId#907097]
Functions [2]: [first(calculationDateTime#907101, false), collect_list(stockQuantity#907161, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#907101)()#905609, collect_list(stockQuantity#907161, 0, 0)#905610]
Results [4]: [product#907099, plant#907100, first(calculationDateTime#907101)()#905609 AS calculationDateTime#907162, collect_list(stockQuantity#907161, 0, 0)#905610 AS stockQuantities#907163]
(582) Filter
Input [4]: [product#907099, plant#907100, calculationDateTime#907162, stockQuantities#907163]
Condition : ((size(stockQuantities#907163, true) > 0) AND isnotnull(calculationDateTime#907162))
(583) Generate
Input [4]: [product#907099, plant#907100, calculationDateTime#907162, stockQuantities#907163]
Arguments: explode(stockQuantities#907163), [product#907099, plant#907100, calculationDateTime#907162], false, [stockQuantity#907164]
(584) Filter
Input [4]: [product#907099, plant#907100, calculationDateTime#907162, stockQuantity#907164]
Condition : (((isnotnull(stockQuantity#907164.specialStockIndicator.code) AND isnotnull(stockQuantity#907164.stockType.code)) AND (stockQuantity#907164.specialStockIndicator.code = )) AND (stockQuantity#907164.stockType.code = 01))
(585) Project
Output [4]: [plant#907100.internalRefUUID AS plantUuid#907166, product#907099.internalRefUUID AS productUuid#907168, calculationDateTime#907162, stockQuantity#907164.storagelocation.id AS storageLocId#907169]
Input [4]: [product#907099, plant#907100, calculationDateTime#907162, stockQuantity#907164]
(586) Exchange
Input [4]: [plantUuid#907166, productUuid#907168, calculationDateTime#907162, storageLocId#907169]
Arguments: hashpartitioning(productUuid#907168, plantUuid#907166, 37), ENSURE_REQUIREMENTS, [plan_id=1399726]
(587) Sort
Input [4]: [plantUuid#907166, productUuid#907168, calculationDateTime#907162, storageLocId#907169]
Arguments: [productUuid#907168 ASC NULLS FIRST, plantUuid#907166 ASC NULLS FIRST], false, 0
(588) Scan parquet
Output [3]: [product#907174, plant#907175, orderDateTime#907176]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(589) Filter
Input [3]: [product#907174, plant#907175, orderDateTime#907176]
Condition : ((isnotnull(orderDateTime#907176) AND isnotnull(plant#907175)) AND isnotnull(product#907174))
(590) Exchange
Input [3]: [product#907174, plant#907175, orderDateTime#907176]
Arguments: hashpartitioning(product#907174, plant#907175, 37), REPARTITION_BY_NUM, [plan_id=1399305]
(591) Scan parquet
Output [4]: [plant#907180, product#907181, productionAspect#907183, systemId#907178]
Batched: 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#907180.internalRefUUID AS _extract_internalRefUUID#911452, product#907181.internalRefUUID AS _extract_internalRefUUID#911453, productionAspect#907183.productMovementPlants.unitOfIssue.code AS _extract_code#911454, productionAspect#907183.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911455]
Input [4]: [plant#907180, product#907181, productionAspect#907183, systemId#907178]
(593) Exchange
Input [4]: [_extract_internalRefUUID#911452, _extract_internalRefUUID#911453, _extract_code#911454, _extract_internalRefUUID#911455]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398785]
(594) Project
Output [4]: [_extract_code#911454, _extract_internalRefUUID#911455, _extract_internalRefUUID#911453, _extract_internalRefUUID#911452]
Input [4]: [_extract_internalRefUUID#911452, _extract_internalRefUUID#911453, _extract_code#911454, _extract_internalRefUUID#911455]
(595) BroadcastExchange
Input [4]: [_extract_code#911454, _extract_internalRefUUID#911455, _extract_internalRefUUID#911453, _extract_internalRefUUID#911452]
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=1399713]
(596) BroadcastHashJoin
Left keys [4]: [coalesce(product#907174, ), isnull(product#907174), coalesce(plant#907175, ), isnull(plant#907175)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911453, ), isnull(_extract_internalRefUUID#911453), coalesce(_extract_internalRefUUID#911452, ), isnull(_extract_internalRefUUID#911452)]
Join type: LeftOuter
Join condition: None
(597) Project
Output [5]: [product#907174, plant#907175, orderDateTime#907176, _extract_code#911454, _extract_internalRefUUID#911455]
Input [7]: [product#907174, plant#907175, orderDateTime#907176, _extract_code#911454, _extract_internalRefUUID#911455, _extract_internalRefUUID#911453, _extract_internalRefUUID#911452]
(598) Scan parquet
Output [4]: [internalUUID#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195, systemId#907188]
Batched: 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#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195, systemId#907188]
Condition : isnotnull(internalUUID#907189)
(600) Project
Output [3]: [internalUUID#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195]
Input [4]: [internalUUID#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195, systemId#907188]
(601) Exchange
Input [3]: [internalUUID#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398792]
(602) BroadcastExchange
Input [3]: [internalUUID#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399717]
(603) BroadcastHashJoin
Left keys [1]: [product#907174]
Right keys [1]: [internalUUID#907189]
Join type: LeftOuter
Join condition: None
(604) Project
Output [4]: [product#907174, plant#907175, orderDateTime#907176, filter(unitOfMeasureConversions#907195, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911454) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911455)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907193.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907193.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907200]
Input [8]: [product#907174, plant#907175, orderDateTime#907176, _extract_code#911454, _extract_internalRefUUID#911455, internalUUID#907189, baseUnitOfMeasure#907193, unitOfMeasureConversions#907195]
(605) Generate
Input [4]: [product#907174, plant#907175, orderDateTime#907176, filteredUnitOfMeasureConversions#907200]
Arguments: explode(filteredUnitOfMeasureConversions#907200.quantityNumerator), [product#907174, plant#907175, orderDateTime#907176, filteredUnitOfMeasureConversions#907200], true, [quantityNumerator#907201]
(606) Project
Output [4]: [product#907174, plant#907175, orderDateTime#907176, filteredUnitOfMeasureConversions#907200.quantityDenominator AS _extract_quantityDenominator#911202]
Input [5]: [product#907174, plant#907175, orderDateTime#907176, filteredUnitOfMeasureConversions#907200, quantityNumerator#907201]
(607) Generate
Input [4]: [product#907174, plant#907175, orderDateTime#907176, _extract_quantityDenominator#911202]
Arguments: explode(_extract_quantityDenominator#911202), [product#907174, plant#907175, orderDateTime#907176], true, [quantityDenominator#907202]
(608) Project
Output [3]: [product#907174, plant#907175, orderDateTime#907176]
Input [4]: [product#907174, plant#907175, orderDateTime#907176, quantityDenominator#907202]
(609) Sort
Input [3]: [product#907174, plant#907175, orderDateTime#907176]
Arguments: [product#907174 ASC NULLS FIRST, plant#907175 ASC NULLS FIRST], false, 0
(610) SortMergeJoin
Left keys [2]: [productUuid#907168, plantUuid#907166]
Right keys [2]: [product#907174, plant#907175]
Join type: Inner
Join condition: (calculationDateTime#907162 <= orderDateTime#907176)
(611) Project
Output [4]: [plantUuid#907166 AS plant#907205, productUuid#907168 AS product#907206, storageLocId#907169, calculationDateTime#907162]
Input [7]: [plantUuid#907166, productUuid#907168, calculationDateTime#907162, storageLocId#907169, product#907174, plant#907175, orderDateTime#907176]
(612) HashAggregate
Input [4]: [plant#907205, product#907206, storageLocId#907169, calculationDateTime#907162]
Keys [3]: [plant#907205, product#907206, storageLocId#907169]
Functions [1]: [partial_max(calculationDateTime#907162)]
Aggregate Attributes [1]: [max#912544]
Results [4]: [plant#907205, product#907206, storageLocId#907169, max#912545]
(613) HashAggregate
Input [4]: [plant#907205, product#907206, storageLocId#907169, max#912545]
Keys [3]: [plant#907205, product#907206, storageLocId#907169]
Functions [1]: [max(calculationDateTime#907162)]
Aggregate Attributes [1]: [max(calculationDateTime#907162)#905673]
Results [4]: [plant#907205, product#907206, storageLocId#907169, max(calculationDateTime#907162)#905673 AS max_calc_datetime#907207]
(614) Exchange
Input [4]: [plant#907205, product#907206, storageLocId#907169, max_calc_datetime#907207]
Arguments: hashpartitioning(coalesce(plant#907205, ), isnull(plant#907205), coalesce(product#907206, ), isnull(product#907206), coalesce(storageLocId#907169, ), isnull(storageLocId#907169), coalesce(max_calc_datetime#907207, 1970-01-01 00:00:00), isnull(max_calc_datetime#907207), 37), ENSURE_REQUIREMENTS, [plan_id=1399736]
(615) Sort
Input [4]: [plant#907205, product#907206, storageLocId#907169, max_calc_datetime#907207]
Arguments: [coalesce(plant#907205, ) ASC NULLS FIRST, isnull(plant#907205) ASC NULLS FIRST, coalesce(product#907206, ) ASC NULLS FIRST, isnull(product#907206) ASC NULLS FIRST, coalesce(storageLocId#907169, ) ASC NULLS FIRST, isnull(storageLocId#907169) ASC NULLS FIRST, coalesce(max_calc_datetime#907207, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#907207) ASC NULLS FIRST], false, 0
(616) SortMergeJoin
Left keys [8]: [coalesce(plant#907095, ), isnull(plant#907095), coalesce(product#907096, ), isnull(product#907096), coalesce(storageLocId#907059, ), isnull(storageLocId#907059), coalesce(calculationDateTime#907052, 1970-01-01 00:00:00), isnull(calculationDateTime#907052)]
Right keys [8]: [coalesce(plant#907205, ), isnull(plant#907205), coalesce(product#907206, ), isnull(product#907206), coalesce(storageLocId#907169, ), isnull(storageLocId#907169), coalesce(max_calc_datetime#907207, 1970-01-01 00:00:00), isnull(max_calc_datetime#907207)]
Join type: Inner
Join condition: None
(617) Project
Output [4]: [plant#907095, product#907096, calculationDateTime#907052, quantity#907061]
Input [9]: [plant#907095, product#907096, storageLocId#907059, calculationDateTime#907052, quantity#907061, plant#907205, product#907206, storageLocId#907169, max_calc_datetime#907207]
(618) HashAggregate
Input [4]: [plant#907095, product#907096, calculationDateTime#907052, quantity#907061]
Keys [2]: [product#907096, plant#907095]
Functions [2]: [partial_min(calculationDateTime#907052), partial_sum(quantity#907061)]
Aggregate Attributes [2]: [min#912534, sum#912535]
Results [4]: [product#907096, plant#907095, min#912536, sum#912537]
(619) Exchange
Input [4]: [product#907096, plant#907095, min#912536, sum#912537]
Arguments: hashpartitioning(product#907096, plant#907095, 37), ENSURE_REQUIREMENTS, [plan_id=1399743]
(620) HashAggregate
Input [4]: [product#907096, plant#907095, min#912536, sum#912537]
Keys [2]: [product#907096, plant#907095]
Functions [2]: [min(calculationDateTime#907052), sum(quantity#907061)]
Aggregate Attributes [2]: [min(calculationDateTime#907052)#905800, sum(quantity#907061)#905799]
Results [4]: [product#907096, plant#907095, min(calculationDateTime#907052)#905800 AS minCalculationDateTime#907209, round(sum(quantity#907061)#905799, 0) AS roundedQuantitySum#907210]
(621) Sort
Input [4]: [product#907096, plant#907095, minCalculationDateTime#907209, roundedQuantitySum#907210]
Arguments: [product#907096 ASC NULLS FIRST, plant#907095 ASC NULLS FIRST], false, 0
(622) SortMergeJoin
Left keys [2]: [product#906956, plant#906957]
Right keys [2]: [product#907096, plant#907095]
Join type: LeftOuter
Join condition: None
(623) Project
Output [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, CASE WHEN isnotnull(minCalculationDateTime#907209) THEN minCalculationDateTime#907209 ELSE orderDateTime#906958 END AS stockDatetime#907211, CASE WHEN isnotnull(roundedQuantitySum#907210) THEN array(roundedQuantitySum#907210) ELSE [0.0] END AS stockBatchQuantities#907212]
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, product#907096, plant#907095, minCalculationDateTime#907209, roundedQuantitySum#907210]
(624) Exchange
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212]
Arguments: hashpartitioning(coalesce(plant#906957, ), isnull(plant#906957), coalesce(product#906956, ), isnull(product#906956), 37), ENSURE_REQUIREMENTS, [plan_id=1399753]
(625) Sort
Input [7]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212]
Arguments: [coalesce(plant#906957, ) ASC NULLS FIRST, isnull(plant#906957) ASC NULLS FIRST, coalesce(product#906956, ) ASC NULLS FIRST, isnull(product#906956) ASC NULLS FIRST], false, 0
(626) Exchange
Input [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Arguments: hashpartitioning(coalesce(plant#905840, ), isnull(plant#905840), coalesce(product#905839, ), isnull(product#905839), 37), ENSURE_REQUIREMENTS, [plan_id=1399754]
(627) Sort
Input [9]: [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
Arguments: [coalesce(plant#905840, ) ASC NULLS FIRST, isnull(plant#905840) ASC NULLS FIRST, coalesce(product#905839, ) ASC NULLS FIRST, isnull(product#905839) ASC NULLS FIRST], false, 0
(628) SortMergeJoin
Left keys [4]: [coalesce(plant#906957, ), isnull(plant#906957), coalesce(product#906956, ), isnull(product#906956)]
Right keys [4]: [coalesce(plant#905840, ), isnull(plant#905840), coalesce(product#905839, ), isnull(product#905839)]
Join type: LeftOuter
Join condition: None
(629) Project
Output [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, CASE WHEN isnotnull(product#905839) THEN struct(demandChannel, demandChannel#905841, demandStream, demandStream#905842, considerVariance, considerVariance#905843, demandTimeBuckets, demandTimeBuckets#905844, demandPointInTimeStart, demandPointInTimeStart#905845, demandPointInTimeEnd, demandPointInTimeEnd#905846, demandPointInTime, demandPointInTime#905847) END AS rawDemands#905849]
Input [16]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847]
(630) ObjectHashAggregate
Input [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, rawDemands#905849]
Keys [8]: [product#906956, plant#906957, orderDateTime#906958, knownfloatingpointnormalized(if (isnull(productPlant#906969)) null else named_struct(systemId, productPlant#906969.systemId, internalUUID, productPlant#906969.internalUUID, plant, productPlant#906969.plant, product, productPlant#906969.product, blockedForReplenishmentStartingFrom, productPlant#906969.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#906969.productionAspect)) null else named_struct(productMovementPlants, productPlant#906969.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#906969.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#906969.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#906969.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#906969.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#906969.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#906969.salesPlant, listing, productPlant#906969.listing, sourceOfSupplyCategory, productPlant#906969.sourceOfSupplyCategory)) AS productPlant#906969, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#906986)) AS outboundUnit#906986, stockDatetime#907211, knownfloatingpointnormalized(transform(stockBatchQuantities#907212, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#912531)), lambda arg#912531, false))) AS stockBatchQuantities#907212, [7226582400000000] AS [7226582400000000]#912530]
Functions [1]: [partial_collect_list(rawDemands#905849, 0, 0)]
Aggregate Attributes [1]: [buf#912532]
Results [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#912530, buf#912533]
(631) Exchange
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#912530, buf#912533]
Arguments: hashpartitioning(product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#912530, 37), ENSURE_REQUIREMENTS, [plan_id=1399761]
(632) ObjectHashAggregate
Input [9]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#912530, buf#912533]
Keys [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000]#912530]
Functions [1]: [collect_list(rawDemands#905849, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#905849, 0, 0)#905869]
Results [8]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, collect_list(rawDemands#905849, 0, 0)#905869 AS rawDemands#905850]
(633) Project
Output [2]: [internalUUID#906907, address#906913.timeZone.code AS timezonecode#906919]
Input [3]: [internalUUID#906907, address#906913, systemId#906906]
(634) Exchange
Input [2]: [internalUUID#906907, timezonecode#906919]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398816]
(635) BroadcastExchange
Input [2]: [internalUUID#906907, timezonecode#906919]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1399764]
(636) BroadcastHashJoin
Left keys [2]: [coalesce(plant#906957, ), isnull(plant#906957)]
Right keys [2]: [coalesce(internalUUID#906907, ), isnull(internalUUID#906907)]
Join type: LeftOuter
Join condition: None
(637) Project
Output [10]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#907213, rawDemands#905850, CASE WHEN isnotnull(timezonecode#906919) THEN timezonecode#906919 ELSE UTC END AS timezonecode#906921]
Input [10]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, rawDemands#905850, internalUUID#906907, timezonecode#906919]
(638) DeserializeToObject
Input [10]: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213, rawDemands#905850, timezonecode#906921]
Arguments: createexternalrow(invoke(product#906956.toString()), invoke(plant#906957.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#906958)), if (isnull(productPlant#906969)) null else createexternalrow(invoke(productPlant#906969.systemId.toString()), invoke(productPlant#906969.internalUUID.toString()), if (isnull(productPlant#906969.plant)) null else createexternalrow(invoke(productPlant#906969.plant.internalRefUUID.toString()), invoke(productPlant#906969.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#906969.product)) null else createexternalrow(invoke(productPlant#906969.product.internalRefUUID.toString()), invoke(productPlant#906969.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#906969.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#906969.productionAspect)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#906969.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.salesPlant)) null else createexternalrow(if (isnull(productPlant#906969.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#906969.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#906969.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#906969.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#906969.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#906986)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#907211)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#907212, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#907213, 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#905850, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#906921.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#906942: org.apache.spark.sql.Row
(639) MapElements
Input [1]: [obj#906942]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, obj#906947: org.apache.spark.sql.Row
(640) SerializeFromObject
Input [1]: [obj#906947]
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#906952, 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#906953, 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#906954, 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#906955]
(641) Exchange
Input [4]: [product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
Arguments: hashpartitioning(coalesce(plant#906953, ), isnull(plant#906953), coalesce(product#906952, ), isnull(product#906952), 37), ENSURE_REQUIREMENTS, [plan_id=1399773]
(642) Sort
Input [4]: [product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
Arguments: [coalesce(plant#906953, ) ASC NULLS FIRST, isnull(plant#906953) ASC NULLS FIRST, coalesce(product#906952, ) ASC NULLS FIRST, isnull(product#906952) ASC NULLS FIRST], false, 0
(643) SortMergeJoin
Left keys [4]: [coalesce(plant#905389, ), isnull(plant#905389), coalesce(product#905388, ), isnull(product#905388)]
Right keys [4]: [coalesce(plant#906953, ), isnull(plant#906953), coalesce(product#906952, ), isnull(product#906952)]
Join type: LeftOuter
Join condition: None
(644) Project
Output [7]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955]
Input [9]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, product#906952, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
(645) InMemoryTableScan
Output [3]: [product#907248, plant#907247, openGoodsMovements#907348]
Arguments: [product#907248, plant#907247, openGoodsMovements#907348], [isnotnull(product#907248), isnotnull(plant#907247)]
(646) InMemoryRelation
Arguments: [product#907248, plant#907247, openGoodsMovements#907348], StorageLevel(disk, memory, 2 replicas)
(647) LocalTableScan
Output [3]: [product#907248, plant#907247, openGoodsMovements#907348]
Arguments: <empty>, [product#907248, plant#907247, openGoodsMovements#907348]
(648) Filter
Input [3]: [product#907248, plant#907247, openGoodsMovements#907348]
Condition : (isnotnull(product#907248) AND isnotnull(plant#907247))
(649) ObjectHashAggregate
Input [3]: [product#907248, plant#907247, openGoodsMovements#907348]
Keys [2]: [product#907248, plant#907247]
Functions [1]: [partial_collect_list(openGoodsMovements#907348, 0, 0)]
Aggregate Attributes [1]: [buf#912552]
Results [3]: [product#907248, plant#907247, buf#912553]
(650) Exchange
Input [3]: [product#907248, plant#907247, buf#912553]
Arguments: hashpartitioning(product#907248, plant#907247, 37), ENSURE_REQUIREMENTS, [plan_id=1399778]
(651) ObjectHashAggregate
Input [3]: [product#907248, plant#907247, buf#912553]
Keys [2]: [product#907248, plant#907247]
Functions [1]: [collect_list(openGoodsMovements#907348, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#907348, 0, 0)#908015]
Results [3]: [product#907248, plant#907247, flatten(collect_list(openGoodsMovements#907348, 0, 0)#908015) AS openGoodsMovements#908011]
(652) Project
Output [5]: [product#907248, plant#907247, openGoodsMovements#908011.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#911413, openGoodsMovements#908011.availabilityDatetime AS _extract_availabilityDatetime#911414, openGoodsMovements#908011.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#911415]
Input [3]: [product#907248, plant#907247, openGoodsMovements#908011]
(653) BroadcastExchange
Input [5]: [product#907248, plant#907247, _extract_openQtyInBaseUnit#911413, _extract_availabilityDatetime#911414, _extract_shelfLifeEndDatetime#911415]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1399782]
(654) BroadcastHashJoin
Left keys [2]: [product#905388, plant#905389]
Right keys [2]: [product#907248, plant#907247]
Join type: LeftOuter
Join condition: None
(655) Project
Output [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, coalesce(_extract_openQtyInBaseUnit#911413, []) AS openGoodsMovementQuantities#908601, coalesce(_extract_availabilityDatetime#911414, []) AS openGoodsMovementAvailabilityDatetimes#908602, coalesce(_extract_shelfLifeEndDatetime#911415, []) AS openGoodsMovementShelfLifeEndDatetimes#908603]
Input [12]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, product#907248, plant#907247, _extract_openQtyInBaseUnit#911413, _extract_availabilityDatetime#911414, _extract_shelfLifeEndDatetime#911415]
(656) Exchange
Input [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603]
Arguments: hashpartitioning(product#905388, plant#905389, 37), ENSURE_REQUIREMENTS, [plan_id=1400075]
(657) Sort
Input [10]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603]
Arguments: [product#905388 ASC NULLS FIRST, plant#905389 ASC NULLS FIRST], false, 0
(658) Scan parquet
Output [3]: [product#909091, plant#909092, orderDateTime#909093]
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/10000000348/shardId=0_1_10000000348]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(659) Exchange
Input [3]: [product#909091, plant#909092, orderDateTime#909093]
Arguments: hashpartitioning(product#909091, plant#909092, 37), REPARTITION_BY_NUM, [plan_id=1398832]
(660) Scan parquet
Output [9]: [internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103, systemId#909095]
Batched: 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#909095, internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103]
Input [9]: [internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103, systemId#909095]
(662) Exchange
Input [9]: [systemId#909095, internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398835]
(663) Project
Output [1]: [struct(systemId, systemId#909095, internalUUID, internalUUID#909096, plant, plant#909097, product, product#909098, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909099, productionAspect, productionAspect#909100, salesPlant, salesPlant#909101, listing, listing#909102, sourceOfSupplyCategory, sourceOfSupplyCategory#909103) AS productPlant#909104]
Input [9]: [systemId#909095, internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103]
(664) BroadcastExchange
Input [1]: [productPlant#909104]
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=1399785]
(665) BroadcastHashJoin
Left keys [4]: [coalesce(product#909091, ), isnull(product#909091), coalesce(plant#909092, ), isnull(plant#909092)]
Right keys [4]: [coalesce(productPlant#909104.product.internalRefUUID, ), isnull(productPlant#909104.product.internalRefUUID), coalesce(productPlant#909104.plant.internalRefUUID, ), isnull(productPlant#909104.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(666) Scan parquet
Output [4]: [internalUUID#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112, systemId#909105]
Batched: 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#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112, systemId#909105]
Condition : isnotnull(internalUUID#909106)
(668) Project
Output [3]: [internalUUID#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112]
Input [4]: [internalUUID#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112, systemId#909105]
(669) Exchange
Input [3]: [internalUUID#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398841]
(670) BroadcastExchange
Input [3]: [internalUUID#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399788]
(671) BroadcastHashJoin
Left keys [1]: [product#909091]
Right keys [1]: [internalUUID#909106]
Join type: LeftOuter
Join condition: None
(672) Project
Output [5]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, filter(unitOfMeasureConversions#909112, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909110.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909110.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909117]
Input [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, internalUUID#909106, baseUnitOfMeasure#909110, unitOfMeasureConversions#909112]
(673) Project
Output [6]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, filteredUnitOfMeasureConversions#909117.quantityDenominator AS _extract_quantityDenominator#911459, filteredUnitOfMeasureConversions#909117.quantityNumerator AS _extract_quantityNumerator#911460]
Input [5]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, filteredUnitOfMeasureConversions#909117]
(674) Generate
Input [6]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, _extract_quantityDenominator#911459, _extract_quantityNumerator#911460]
Arguments: explode(_extract_quantityNumerator#911460), [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, _extract_quantityDenominator#911459], true, [quantityNumerator#909118]
(675) Generate
Input [6]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, _extract_quantityDenominator#911459, quantityNumerator#909118]
Arguments: explode(_extract_quantityDenominator#911459), [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, quantityNumerator#909118], true, [quantityDenominator#909119]
(676) Project
Output [5]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, (cast(quantityNumerator#909118 as double) / cast(quantityDenominator#909119 as double)) AS outboundUnit#909120]
Input [6]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, quantityNumerator#909118, quantityDenominator#909119]
(677) Project
Output [5]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, CASE WHEN (isnull(outboundUnit#909120) OR (outboundUnit#909120 <= 0.0)) THEN 1.0 ELSE outboundUnit#909120 END AS outboundUnit#909121]
Input [5]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909120]
(678) Sort
Input [5]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121]
Arguments: [product#909091 ASC NULLS FIRST, plant#909092 ASC NULLS FIRST], false, 0
(679) Scan parquet
Output [6]: [internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127, systemId#909122]
Batched: 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#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127, systemId#909122]
Condition : (isnotnull(plant#909125.internalRefUUID) AND isnotnull(product#909124.internalRefUUID))
(681) Project
Output [6]: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127]
Input [6]: [internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127, systemId#909122]
(682) Exchange
Input [6]: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398852]
(683) BroadcastExchange
Input [6]: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127]
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=1399816]
(684) Scan parquet
Output [2]: [marketUnit#909128, distributionCenters#909134]
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#909128, distributionCenters#909134]
Condition : (((marketUnit#909128 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#909134, true) > 0)) AND isnotnull(distributionCenters#909134))
(686) Project
Output [1]: [distributionCenters#909134]
Input [2]: [marketUnit#909128, distributionCenters#909134]
(687) Exchange
Input [1]: [distributionCenters#909134]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398856]
(688) Generate
Input [1]: [distributionCenters#909134]
Arguments: explode(distributionCenters#909134), false, [distributionCenters#909149]
(689) Filter
Input [1]: [distributionCenters#909149]
Condition : (((size(distributionCenters#909149.storageLocations, true) > 0) AND isnotnull(distributionCenters#909149.storageLocations)) AND isnotnull(distributionCenters#909149.internalRefUUID))
(690) Project
Output [2]: [distributionCenters#909149.internalRefUUID AS _extract_internalRefUUID#911211, distributionCenters#909149.storageLocations AS _extract_storageLocations#911212]
Input [1]: [distributionCenters#909149]
(691) Generate
Input [2]: [_extract_internalRefUUID#911211, _extract_storageLocations#911212]
Arguments: explode(_extract_storageLocations#911212), [_extract_internalRefUUID#911211], false, [storageLocations#909150]
(692) Project
Output [3]: [_extract_internalRefUUID#911211 AS plantUuid#909152, storageLocations#909150.id AS storageLocId#909153, storageLocations#909150.internalRefUUID AS storageLocUuid#909154]
Input [2]: [_extract_internalRefUUID#911211, storageLocations#909150]
(693) BroadcastExchange
Input [3]: [plantUuid#909152, storageLocId#909153, storageLocUuid#909154]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399812]
(694) Scan parquet
Output [2]: [product#909155, plant#909156]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(695) Filter
Input [2]: [product#909155, plant#909156]
Condition : isnotnull(plant#909156)
(696) Exchange
Input [2]: [product#909155, plant#909156]
Arguments: hashpartitioning(product#909155, plant#909156, 37), REPARTITION_BY_NUM, [plan_id=1399337]
(697) Scan parquet
Output [4]: [plant#909161, product#909162, productionAspect#909164, systemId#909159]
Batched: 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#909161.internalRefUUID AS _extract_internalRefUUID#911464, product#909162.internalRefUUID AS _extract_internalRefUUID#911463, productionAspect#909164.productMovementPlants.unitOfIssue.code AS _extract_code#911461, productionAspect#909164.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911462]
Input [4]: [plant#909161, product#909162, productionAspect#909164, systemId#909159]
(699) Exchange
Input [4]: [_extract_internalRefUUID#911464, _extract_internalRefUUID#911463, _extract_code#911461, _extract_internalRefUUID#911462]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398868]
(700) Project
Output [4]: [_extract_code#911461, _extract_internalRefUUID#911462, _extract_internalRefUUID#911463, _extract_internalRefUUID#911464]
Input [4]: [_extract_internalRefUUID#911464, _extract_internalRefUUID#911463, _extract_code#911461, _extract_internalRefUUID#911462]
(701) BroadcastExchange
Input [4]: [_extract_code#911461, _extract_internalRefUUID#911462, _extract_internalRefUUID#911463, _extract_internalRefUUID#911464]
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=1399796]
(702) BroadcastHashJoin
Left keys [4]: [coalesce(product#909155, ), isnull(product#909155), coalesce(plant#909156, ), isnull(plant#909156)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911463, ), isnull(_extract_internalRefUUID#911463), coalesce(_extract_internalRefUUID#911464, ), isnull(_extract_internalRefUUID#911464)]
Join type: LeftOuter
Join condition: None
(703) Project
Output [4]: [product#909155, plant#909156, _extract_code#911461, _extract_internalRefUUID#911462]
Input [6]: [product#909155, plant#909156, _extract_code#911461, _extract_internalRefUUID#911462, _extract_internalRefUUID#911463, _extract_internalRefUUID#911464]
(704) Scan parquet
Output [4]: [internalUUID#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176, systemId#909169]
Batched: 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#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176, systemId#909169]
Condition : isnotnull(internalUUID#909170)
(706) Project
Output [3]: [internalUUID#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176]
Input [4]: [internalUUID#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176, systemId#909169]
(707) Exchange
Input [3]: [internalUUID#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398875]
(708) BroadcastExchange
Input [3]: [internalUUID#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399800]
(709) BroadcastHashJoin
Left keys [1]: [product#909155]
Right keys [1]: [internalUUID#909170]
Join type: LeftOuter
Join condition: None
(710) Project
Output [2]: [plant#909156, filter(unitOfMeasureConversions#909176, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911461) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911462)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909174.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909174.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909181]
Input [7]: [product#909155, plant#909156, _extract_code#911461, _extract_internalRefUUID#911462, internalUUID#909170, baseUnitOfMeasure#909174, unitOfMeasureConversions#909176]
(711) Generate
Input [2]: [plant#909156, filteredUnitOfMeasureConversions#909181]
Arguments: explode(filteredUnitOfMeasureConversions#909181.quantityNumerator), [plant#909156, filteredUnitOfMeasureConversions#909181], true, [quantityNumerator#909182]
(712) Project
Output [2]: [plant#909156, filteredUnitOfMeasureConversions#909181.quantityDenominator AS _extract_quantityDenominator#911213]
Input [3]: [plant#909156, filteredUnitOfMeasureConversions#909181, quantityNumerator#909182]
(713) Generate
Input [2]: [plant#909156, _extract_quantityDenominator#911213]
Arguments: explode(_extract_quantityDenominator#911213), [plant#909156], true, [quantityDenominator#909183]
(714) Project
Output [1]: [plant#909156]
Input [2]: [plant#909156, quantityDenominator#909183]
(715) HashAggregate
Input [1]: [plant#909156]
Keys [1]: [plant#909156]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909156]
(716) Exchange
Input [1]: [plant#909156]
Arguments: hashpartitioning(plant#909156, 37), ENSURE_REQUIREMENTS, [plan_id=1399809]
(717) HashAggregate
Input [1]: [plant#909156]
Keys [1]: [plant#909156]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909156]
(718) BroadcastHashJoin
Left keys [1]: [plantUuid#909152]
Right keys [1]: [plant#909156]
Join type: Inner
Join condition: None
(719) Project
Output [3]: [plantUuid#909152, storageLocId#909153, storageLocUuid#909154]
Input [4]: [plantUuid#909152, storageLocId#909153, storageLocUuid#909154, plant#909156]
(720) BroadcastHashJoin
Left keys [2]: [coalesce(plant#909125.internalRefUUID, ), isnull(plant#909125.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#909152, ), isnull(plantUuid#909152)]
Join type: Inner
Join condition: None
(721) Generate
Input [9]: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127, plantUuid#909152, storageLocId#909153, storageLocUuid#909154]
Arguments: explode(filter(stockQuantities#909127, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909154) AND (lambda x#905594.storageLocation.Id = storageLocId#909153)), lambda x#905594, false))), [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, plantUuid#909152], false, [stockQuantity#909186]
(722) ObjectHashAggregate
Input [7]: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, plantUuid#909152, stockQuantity#909186]
Keys [5]: [plantUuid#909152, internalUUID#909123, plant#909125, product#909124, systemId#909122]
Functions [2]: [partial_first(calculationDateTime#909126, false), partial_collect_list(stockQuantity#909186, 0, 0)]
Aggregate Attributes [3]: [first#912558, valueSet#912559, buf#912560]
Results [8]: [plantUuid#909152, internalUUID#909123, plant#909125, product#909124, systemId#909122, first#912561, valueSet#912562, buf#912563]
(723) ObjectHashAggregate
Input [8]: [plantUuid#909152, internalUUID#909123, plant#909125, product#909124, systemId#909122, first#912561, valueSet#912562, buf#912563]
Keys [5]: [plantUuid#909152, internalUUID#909123, plant#909125, product#909124, systemId#909122]
Functions [2]: [first(calculationDateTime#909126, false), collect_list(stockQuantity#909186, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#909126)()#905609, collect_list(stockQuantity#909186, 0, 0)#905610]
Results [4]: [product#909124, plant#909125, first(calculationDateTime#909126)()#905609 AS calculationDateTime#909187, collect_list(stockQuantity#909186, 0, 0)#905610 AS stockQuantities#909188]
(724) Filter
Input [4]: [product#909124, plant#909125, calculationDateTime#909187, stockQuantities#909188]
Condition : ((size(stockQuantities#909188, true) > 0) AND isnotnull(calculationDateTime#909187))
(725) Generate
Input [4]: [product#909124, plant#909125, calculationDateTime#909187, stockQuantities#909188]
Arguments: explode(stockQuantities#909188), [product#909124, plant#909125, calculationDateTime#909187], false, [stockQuantity#909189]
(726) Filter
Input [4]: [product#909124, plant#909125, calculationDateTime#909187, stockQuantity#909189]
Condition : (((isnotnull(stockQuantity#909189.specialStockIndicator.code) AND isnotnull(stockQuantity#909189.stockType.code)) AND (stockQuantity#909189.specialStockIndicator.code = )) AND (stockQuantity#909189.stockType.code = 01))
(727) Project
Output [5]: [plant#909125.internalRefUUID AS plantUuid#909191, product#909124.internalRefUUID AS productUuid#909193, calculationDateTime#909187, stockQuantity#909189.storagelocation.id AS storageLocId#909194, stockQuantity#909189.quantity.measure AS quantity#909196]
Input [4]: [product#909124, plant#909125, calculationDateTime#909187, stockQuantity#909189]
(728) Exchange
Input [5]: [plantUuid#909191, productUuid#909193, calculationDateTime#909187, storageLocId#909194, quantity#909196]
Arguments: hashpartitioning(productUuid#909193, plantUuid#909191, 37), ENSURE_REQUIREMENTS, [plan_id=1399838]
(729) Sort
Input [5]: [plantUuid#909191, productUuid#909193, calculationDateTime#909187, storageLocId#909194, quantity#909196]
Arguments: [productUuid#909193 ASC NULLS FIRST, plantUuid#909191 ASC NULLS FIRST], false, 0
(730) Scan parquet
Output [3]: [product#909199, plant#909200, orderDateTime#909201]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(731) Filter
Input [3]: [product#909199, plant#909200, orderDateTime#909201]
Condition : ((isnotnull(orderDateTime#909201) AND isnotnull(plant#909200)) AND isnotnull(product#909199))
(732) Exchange
Input [3]: [product#909199, plant#909200, orderDateTime#909201]
Arguments: hashpartitioning(product#909199, plant#909200, 37), REPARTITION_BY_NUM, [plan_id=1399358]
(733) Scan parquet
Output [4]: [plant#909205, product#909206, productionAspect#909208, systemId#909203]
Batched: 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#909205.internalRefUUID AS _extract_internalRefUUID#911467, product#909206.internalRefUUID AS _extract_internalRefUUID#911468, productionAspect#909208.productMovementPlants.unitOfIssue.code AS _extract_code#911465, productionAspect#909208.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911466]
Input [4]: [plant#909205, product#909206, productionAspect#909208, systemId#909203]
(735) Exchange
Input [4]: [_extract_internalRefUUID#911467, _extract_internalRefUUID#911468, _extract_code#911465, _extract_internalRefUUID#911466]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398900]
(736) Project
Output [4]: [_extract_code#911465, _extract_internalRefUUID#911466, _extract_internalRefUUID#911468, _extract_internalRefUUID#911467]
Input [4]: [_extract_internalRefUUID#911467, _extract_internalRefUUID#911468, _extract_code#911465, _extract_internalRefUUID#911466]
(737) BroadcastExchange
Input [4]: [_extract_code#911465, _extract_internalRefUUID#911466, _extract_internalRefUUID#911468, _extract_internalRefUUID#911467]
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=1399825]
(738) BroadcastHashJoin
Left keys [4]: [coalesce(product#909199, ), isnull(product#909199), coalesce(plant#909200, ), isnull(plant#909200)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911468, ), isnull(_extract_internalRefUUID#911468), coalesce(_extract_internalRefUUID#911467, ), isnull(_extract_internalRefUUID#911467)]
Join type: LeftOuter
Join condition: None
(739) Project
Output [5]: [product#909199, plant#909200, orderDateTime#909201, _extract_code#911465, _extract_internalRefUUID#911466]
Input [7]: [product#909199, plant#909200, orderDateTime#909201, _extract_code#911465, _extract_internalRefUUID#911466, _extract_internalRefUUID#911468, _extract_internalRefUUID#911467]
(740) Scan parquet
Output [4]: [internalUUID#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220, systemId#909213]
Batched: 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#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220, systemId#909213]
Condition : isnotnull(internalUUID#909214)
(742) Project
Output [3]: [internalUUID#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220]
Input [4]: [internalUUID#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220, systemId#909213]
(743) Exchange
Input [3]: [internalUUID#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398907]
(744) BroadcastExchange
Input [3]: [internalUUID#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399829]
(745) BroadcastHashJoin
Left keys [1]: [product#909199]
Right keys [1]: [internalUUID#909214]
Join type: LeftOuter
Join condition: None
(746) Project
Output [4]: [product#909199, plant#909200, orderDateTime#909201, filter(unitOfMeasureConversions#909220, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911465) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911466)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909218.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909218.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909225]
Input [8]: [product#909199, plant#909200, orderDateTime#909201, _extract_code#911465, _extract_internalRefUUID#911466, internalUUID#909214, baseUnitOfMeasure#909218, unitOfMeasureConversions#909220]
(747) Generate
Input [4]: [product#909199, plant#909200, orderDateTime#909201, filteredUnitOfMeasureConversions#909225]
Arguments: explode(filteredUnitOfMeasureConversions#909225.quantityNumerator), [product#909199, plant#909200, orderDateTime#909201, filteredUnitOfMeasureConversions#909225], true, [quantityNumerator#909226]
(748) Project
Output [4]: [product#909199, plant#909200, orderDateTime#909201, filteredUnitOfMeasureConversions#909225.quantityDenominator AS _extract_quantityDenominator#911220]
Input [5]: [product#909199, plant#909200, orderDateTime#909201, filteredUnitOfMeasureConversions#909225, quantityNumerator#909226]
(749) Generate
Input [4]: [product#909199, plant#909200, orderDateTime#909201, _extract_quantityDenominator#911220]
Arguments: explode(_extract_quantityDenominator#911220), [product#909199, plant#909200, orderDateTime#909201], true, [quantityDenominator#909227]
(750) Project
Output [3]: [product#909199, plant#909200, orderDateTime#909201]
Input [4]: [product#909199, plant#909200, orderDateTime#909201, quantityDenominator#909227]
(751) Sort
Input [3]: [product#909199, plant#909200, orderDateTime#909201]
Arguments: [product#909199 ASC NULLS FIRST, plant#909200 ASC NULLS FIRST], false, 0
(752) SortMergeJoin
Left keys [2]: [productUuid#909193, plantUuid#909191]
Right keys [2]: [product#909199, plant#909200]
Join type: Inner
Join condition: (calculationDateTime#909187 <= orderDateTime#909201)
(753) Project
Output [5]: [plantUuid#909191 AS plant#909230, productUuid#909193 AS product#909231, storageLocId#909194, calculationDateTime#909187, quantity#909196]
Input [8]: [plantUuid#909191, productUuid#909193, calculationDateTime#909187, storageLocId#909194, quantity#909196, product#909199, plant#909200, orderDateTime#909201]
(754) Exchange
Input [5]: [plant#909230, product#909231, storageLocId#909194, calculationDateTime#909187, quantity#909196]
Arguments: hashpartitioning(coalesce(plant#909230, ), isnull(plant#909230), coalesce(product#909231, ), isnull(product#909231), coalesce(storageLocId#909194, ), isnull(storageLocId#909194), coalesce(calculationDateTime#909187, 1970-01-01 00:00:00), isnull(calculationDateTime#909187), 37), ENSURE_REQUIREMENTS, [plan_id=1399894]
(755) Sort
Input [5]: [plant#909230, product#909231, storageLocId#909194, calculationDateTime#909187, quantity#909196]
Arguments: [coalesce(plant#909230, ) ASC NULLS FIRST, isnull(plant#909230) ASC NULLS FIRST, coalesce(product#909231, ) ASC NULLS FIRST, isnull(product#909231) ASC NULLS FIRST, coalesce(storageLocId#909194, ) ASC NULLS FIRST, isnull(storageLocId#909194) ASC NULLS FIRST, coalesce(calculationDateTime#909187, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#909187) ASC NULLS FIRST], false, 0
(756) Scan parquet
Output [6]: [internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237, systemId#909232]
Batched: 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#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237, systemId#909232]
Condition : (isnotnull(plant#909235.internalRefUUID) AND isnotnull(product#909234.internalRefUUID))
(758) Project
Output [6]: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237]
Input [6]: [internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237, systemId#909232]
(759) Exchange
Input [6]: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398919]
(760) BroadcastExchange
Input [6]: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237]
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=1399863]
(761) Scan parquet
Output [2]: [marketUnit#909238, distributionCenters#909244]
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#909238, distributionCenters#909244]
Condition : (((marketUnit#909238 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#909244, true) > 0)) AND isnotnull(distributionCenters#909244))
(763) Project
Output [1]: [distributionCenters#909244]
Input [2]: [marketUnit#909238, distributionCenters#909244]
(764) Exchange
Input [1]: [distributionCenters#909244]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398923]
(765) Generate
Input [1]: [distributionCenters#909244]
Arguments: explode(distributionCenters#909244), false, [distributionCenters#909259]
(766) Filter
Input [1]: [distributionCenters#909259]
Condition : (((size(distributionCenters#909259.storageLocations, true) > 0) AND isnotnull(distributionCenters#909259.storageLocations)) AND isnotnull(distributionCenters#909259.internalRefUUID))
(767) Project
Output [2]: [distributionCenters#909259.internalRefUUID AS _extract_internalRefUUID#911227, distributionCenters#909259.storageLocations AS _extract_storageLocations#911228]
Input [1]: [distributionCenters#909259]
(768) Generate
Input [2]: [_extract_internalRefUUID#911227, _extract_storageLocations#911228]
Arguments: explode(_extract_storageLocations#911228), [_extract_internalRefUUID#911227], false, [storageLocations#909260]
(769) Project
Output [3]: [_extract_internalRefUUID#911227 AS plantUuid#909262, storageLocations#909260.id AS storageLocId#909263, storageLocations#909260.internalRefUUID AS storageLocUuid#909264]
Input [2]: [_extract_internalRefUUID#911227, storageLocations#909260]
(770) BroadcastExchange
Input [3]: [plantUuid#909262, storageLocId#909263, storageLocUuid#909264]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399859]
(771) Scan parquet
Output [2]: [product#909265, plant#909266]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(772) Filter
Input [2]: [product#909265, plant#909266]
Condition : isnotnull(plant#909266)
(773) Exchange
Input [2]: [product#909265, plant#909266]
Arguments: hashpartitioning(product#909265, plant#909266, 37), REPARTITION_BY_NUM, [plan_id=1399369]
(774) Scan parquet
Output [4]: [plant#909271, product#909272, productionAspect#909274, systemId#909269]
Batched: 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#909271.internalRefUUID AS _extract_internalRefUUID#911471, product#909272.internalRefUUID AS _extract_internalRefUUID#911472, productionAspect#909274.productMovementPlants.unitOfIssue.code AS _extract_code#911469, productionAspect#909274.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911470]
Input [4]: [plant#909271, product#909272, productionAspect#909274, systemId#909269]
(776) Exchange
Input [4]: [_extract_internalRefUUID#911471, _extract_internalRefUUID#911472, _extract_code#911469, _extract_internalRefUUID#911470]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398935]
(777) Project
Output [4]: [_extract_code#911469, _extract_internalRefUUID#911470, _extract_internalRefUUID#911472, _extract_internalRefUUID#911471]
Input [4]: [_extract_internalRefUUID#911471, _extract_internalRefUUID#911472, _extract_code#911469, _extract_internalRefUUID#911470]
(778) BroadcastExchange
Input [4]: [_extract_code#911469, _extract_internalRefUUID#911470, _extract_internalRefUUID#911472, _extract_internalRefUUID#911471]
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=1399843]
(779) BroadcastHashJoin
Left keys [4]: [coalesce(product#909265, ), isnull(product#909265), coalesce(plant#909266, ), isnull(plant#909266)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911472, ), isnull(_extract_internalRefUUID#911472), coalesce(_extract_internalRefUUID#911471, ), isnull(_extract_internalRefUUID#911471)]
Join type: LeftOuter
Join condition: None
(780) Project
Output [4]: [product#909265, plant#909266, _extract_code#911469, _extract_internalRefUUID#911470]
Input [6]: [product#909265, plant#909266, _extract_code#911469, _extract_internalRefUUID#911470, _extract_internalRefUUID#911472, _extract_internalRefUUID#911471]
(781) Scan parquet
Output [4]: [internalUUID#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286, systemId#909279]
Batched: 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#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286, systemId#909279]
Condition : isnotnull(internalUUID#909280)
(783) Project
Output [3]: [internalUUID#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286]
Input [4]: [internalUUID#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286, systemId#909279]
(784) Exchange
Input [3]: [internalUUID#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398942]
(785) BroadcastExchange
Input [3]: [internalUUID#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399847]
(786) BroadcastHashJoin
Left keys [1]: [product#909265]
Right keys [1]: [internalUUID#909280]
Join type: LeftOuter
Join condition: None
(787) Project
Output [2]: [plant#909266, filter(unitOfMeasureConversions#909286, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911469) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911470)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909284.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909284.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909291]
Input [7]: [product#909265, plant#909266, _extract_code#911469, _extract_internalRefUUID#911470, internalUUID#909280, baseUnitOfMeasure#909284, unitOfMeasureConversions#909286]
(788) Generate
Input [2]: [plant#909266, filteredUnitOfMeasureConversions#909291]
Arguments: explode(filteredUnitOfMeasureConversions#909291.quantityNumerator), [plant#909266, filteredUnitOfMeasureConversions#909291], true, [quantityNumerator#909292]
(789) Project
Output [2]: [plant#909266, filteredUnitOfMeasureConversions#909291.quantityDenominator AS _extract_quantityDenominator#911229]
Input [3]: [plant#909266, filteredUnitOfMeasureConversions#909291, quantityNumerator#909292]
(790) Generate
Input [2]: [plant#909266, _extract_quantityDenominator#911229]
Arguments: explode(_extract_quantityDenominator#911229), [plant#909266], true, [quantityDenominator#909293]
(791) Project
Output [1]: [plant#909266]
Input [2]: [plant#909266, quantityDenominator#909293]
(792) HashAggregate
Input [1]: [plant#909266]
Keys [1]: [plant#909266]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909266]
(793) Exchange
Input [1]: [plant#909266]
Arguments: hashpartitioning(plant#909266, 37), ENSURE_REQUIREMENTS, [plan_id=1399856]
(794) HashAggregate
Input [1]: [plant#909266]
Keys [1]: [plant#909266]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909266]
(795) BroadcastHashJoin
Left keys [1]: [plantUuid#909262]
Right keys [1]: [plant#909266]
Join type: Inner
Join condition: None
(796) Project
Output [3]: [plantUuid#909262, storageLocId#909263, storageLocUuid#909264]
Input [4]: [plantUuid#909262, storageLocId#909263, storageLocUuid#909264, plant#909266]
(797) BroadcastHashJoin
Left keys [2]: [coalesce(plant#909235.internalRefUUID, ), isnull(plant#909235.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#909262, ), isnull(plantUuid#909262)]
Join type: Inner
Join condition: None
(798) Generate
Input [9]: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237, plantUuid#909262, storageLocId#909263, storageLocUuid#909264]
Arguments: explode(filter(stockQuantities#909237, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909264) AND (lambda x#905594.storageLocation.Id = storageLocId#909263)), lambda x#905594, false))), [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, plantUuid#909262], false, [stockQuantity#909296]
(799) ObjectHashAggregate
Input [7]: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, plantUuid#909262, stockQuantity#909296]
Keys [5]: [plantUuid#909262, internalUUID#909233, plant#909235, product#909234, systemId#909232]
Functions [2]: [partial_first(calculationDateTime#909236, false), partial_collect_list(stockQuantity#909296, 0, 0)]
Aggregate Attributes [3]: [first#912566, valueSet#912567, buf#912568]
Results [8]: [plantUuid#909262, internalUUID#909233, plant#909235, product#909234, systemId#909232, first#912569, valueSet#912570, buf#912571]
(800) ObjectHashAggregate
Input [8]: [plantUuid#909262, internalUUID#909233, plant#909235, product#909234, systemId#909232, first#912569, valueSet#912570, buf#912571]
Keys [5]: [plantUuid#909262, internalUUID#909233, plant#909235, product#909234, systemId#909232]
Functions [2]: [first(calculationDateTime#909236, false), collect_list(stockQuantity#909296, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#909236)()#905609, collect_list(stockQuantity#909296, 0, 0)#905610]
Results [4]: [product#909234, plant#909235, first(calculationDateTime#909236)()#905609 AS calculationDateTime#909297, collect_list(stockQuantity#909296, 0, 0)#905610 AS stockQuantities#909298]
(801) Filter
Input [4]: [product#909234, plant#909235, calculationDateTime#909297, stockQuantities#909298]
Condition : ((size(stockQuantities#909298, true) > 0) AND isnotnull(calculationDateTime#909297))
(802) Generate
Input [4]: [product#909234, plant#909235, calculationDateTime#909297, stockQuantities#909298]
Arguments: explode(stockQuantities#909298), [product#909234, plant#909235, calculationDateTime#909297], false, [stockQuantity#909299]
(803) Filter
Input [4]: [product#909234, plant#909235, calculationDateTime#909297, stockQuantity#909299]
Condition : (((isnotnull(stockQuantity#909299.specialStockIndicator.code) AND isnotnull(stockQuantity#909299.stockType.code)) AND (stockQuantity#909299.specialStockIndicator.code = )) AND (stockQuantity#909299.stockType.code = 01))
(804) Project
Output [4]: [plant#909235.internalRefUUID AS plantUuid#909301, product#909234.internalRefUUID AS productUuid#909303, calculationDateTime#909297, stockQuantity#909299.storagelocation.id AS storageLocId#909304]
Input [4]: [product#909234, plant#909235, calculationDateTime#909297, stockQuantity#909299]
(805) Exchange
Input [4]: [plantUuid#909301, productUuid#909303, calculationDateTime#909297, storageLocId#909304]
Arguments: hashpartitioning(productUuid#909303, plantUuid#909301, 37), ENSURE_REQUIREMENTS, [plan_id=1399885]
(806) Sort
Input [4]: [plantUuid#909301, productUuid#909303, calculationDateTime#909297, storageLocId#909304]
Arguments: [productUuid#909303 ASC NULLS FIRST, plantUuid#909301 ASC NULLS FIRST], false, 0
(807) Scan parquet
Output [3]: [product#909309, plant#909310, orderDateTime#909311]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(808) Filter
Input [3]: [product#909309, plant#909310, orderDateTime#909311]
Condition : ((isnotnull(orderDateTime#909311) AND isnotnull(plant#909310)) AND isnotnull(product#909309))
(809) Exchange
Input [3]: [product#909309, plant#909310, orderDateTime#909311]
Arguments: hashpartitioning(product#909309, plant#909310, 37), REPARTITION_BY_NUM, [plan_id=1399390]
(810) Scan parquet
Output [4]: [plant#909315, product#909316, productionAspect#909318, systemId#909313]
Batched: 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#909315.internalRefUUID AS _extract_internalRefUUID#911475, product#909316.internalRefUUID AS _extract_internalRefUUID#911476, productionAspect#909318.productMovementPlants.unitOfIssue.code AS _extract_code#911473, productionAspect#909318.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911474]
Input [4]: [plant#909315, product#909316, productionAspect#909318, systemId#909313]
(812) Exchange
Input [4]: [_extract_internalRefUUID#911475, _extract_internalRefUUID#911476, _extract_code#911473, _extract_internalRefUUID#911474]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398967]
(813) Project
Output [4]: [_extract_code#911473, _extract_internalRefUUID#911474, _extract_internalRefUUID#911476, _extract_internalRefUUID#911475]
Input [4]: [_extract_internalRefUUID#911475, _extract_internalRefUUID#911476, _extract_code#911473, _extract_internalRefUUID#911474]
(814) BroadcastExchange
Input [4]: [_extract_code#911473, _extract_internalRefUUID#911474, _extract_internalRefUUID#911476, _extract_internalRefUUID#911475]
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=1399872]
(815) BroadcastHashJoin
Left keys [4]: [coalesce(product#909309, ), isnull(product#909309), coalesce(plant#909310, ), isnull(plant#909310)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911476, ), isnull(_extract_internalRefUUID#911476), coalesce(_extract_internalRefUUID#911475, ), isnull(_extract_internalRefUUID#911475)]
Join type: LeftOuter
Join condition: None
(816) Project
Output [5]: [product#909309, plant#909310, orderDateTime#909311, _extract_code#911473, _extract_internalRefUUID#911474]
Input [7]: [product#909309, plant#909310, orderDateTime#909311, _extract_code#911473, _extract_internalRefUUID#911474, _extract_internalRefUUID#911476, _extract_internalRefUUID#911475]
(817) Scan parquet
Output [4]: [internalUUID#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330, systemId#909323]
Batched: 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#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330, systemId#909323]
Condition : isnotnull(internalUUID#909324)
(819) Project
Output [3]: [internalUUID#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330]
Input [4]: [internalUUID#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330, systemId#909323]
(820) Exchange
Input [3]: [internalUUID#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398974]
(821) BroadcastExchange
Input [3]: [internalUUID#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399876]
(822) BroadcastHashJoin
Left keys [1]: [product#909309]
Right keys [1]: [internalUUID#909324]
Join type: LeftOuter
Join condition: None
(823) Project
Output [4]: [product#909309, plant#909310, orderDateTime#909311, filter(unitOfMeasureConversions#909330, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911473) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911474)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909328.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909328.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909335]
Input [8]: [product#909309, plant#909310, orderDateTime#909311, _extract_code#911473, _extract_internalRefUUID#911474, internalUUID#909324, baseUnitOfMeasure#909328, unitOfMeasureConversions#909330]
(824) Generate
Input [4]: [product#909309, plant#909310, orderDateTime#909311, filteredUnitOfMeasureConversions#909335]
Arguments: explode(filteredUnitOfMeasureConversions#909335.quantityNumerator), [product#909309, plant#909310, orderDateTime#909311, filteredUnitOfMeasureConversions#909335], true, [quantityNumerator#909336]
(825) Project
Output [4]: [product#909309, plant#909310, orderDateTime#909311, filteredUnitOfMeasureConversions#909335.quantityDenominator AS _extract_quantityDenominator#911236]
Input [5]: [product#909309, plant#909310, orderDateTime#909311, filteredUnitOfMeasureConversions#909335, quantityNumerator#909336]
(826) Generate
Input [4]: [product#909309, plant#909310, orderDateTime#909311, _extract_quantityDenominator#911236]
Arguments: explode(_extract_quantityDenominator#911236), [product#909309, plant#909310, orderDateTime#909311], true, [quantityDenominator#909337]
(827) Project
Output [3]: [product#909309, plant#909310, orderDateTime#909311]
Input [4]: [product#909309, plant#909310, orderDateTime#909311, quantityDenominator#909337]
(828) Sort
Input [3]: [product#909309, plant#909310, orderDateTime#909311]
Arguments: [product#909309 ASC NULLS FIRST, plant#909310 ASC NULLS FIRST], false, 0
(829) SortMergeJoin
Left keys [2]: [productUuid#909303, plantUuid#909301]
Right keys [2]: [product#909309, plant#909310]
Join type: Inner
Join condition: (calculationDateTime#909297 <= orderDateTime#909311)
(830) Project
Output [4]: [plantUuid#909301 AS plant#909340, productUuid#909303 AS product#909341, storageLocId#909304, calculationDateTime#909297]
Input [7]: [plantUuid#909301, productUuid#909303, calculationDateTime#909297, storageLocId#909304, product#909309, plant#909310, orderDateTime#909311]
(831) HashAggregate
Input [4]: [plant#909340, product#909341, storageLocId#909304, calculationDateTime#909297]
Keys [3]: [plant#909340, product#909341, storageLocId#909304]
Functions [1]: [partial_max(calculationDateTime#909297)]
Aggregate Attributes [1]: [max#912564]
Results [4]: [plant#909340, product#909341, storageLocId#909304, max#912565]
(832) HashAggregate
Input [4]: [plant#909340, product#909341, storageLocId#909304, max#912565]
Keys [3]: [plant#909340, product#909341, storageLocId#909304]
Functions [1]: [max(calculationDateTime#909297)]
Aggregate Attributes [1]: [max(calculationDateTime#909297)#905673]
Results [4]: [plant#909340, product#909341, storageLocId#909304, max(calculationDateTime#909297)#905673 AS max_calc_datetime#909342]
(833) Exchange
Input [4]: [plant#909340, product#909341, storageLocId#909304, max_calc_datetime#909342]
Arguments: hashpartitioning(coalesce(plant#909340, ), isnull(plant#909340), coalesce(product#909341, ), isnull(product#909341), coalesce(storageLocId#909304, ), isnull(storageLocId#909304), coalesce(max_calc_datetime#909342, 1970-01-01 00:00:00), isnull(max_calc_datetime#909342), 37), ENSURE_REQUIREMENTS, [plan_id=1399895]
(834) Sort
Input [4]: [plant#909340, product#909341, storageLocId#909304, max_calc_datetime#909342]
Arguments: [coalesce(plant#909340, ) ASC NULLS FIRST, isnull(plant#909340) ASC NULLS FIRST, coalesce(product#909341, ) ASC NULLS FIRST, isnull(product#909341) ASC NULLS FIRST, coalesce(storageLocId#909304, ) ASC NULLS FIRST, isnull(storageLocId#909304) ASC NULLS FIRST, coalesce(max_calc_datetime#909342, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#909342) ASC NULLS FIRST], false, 0
(835) SortMergeJoin
Left keys [8]: [coalesce(plant#909230, ), isnull(plant#909230), coalesce(product#909231, ), isnull(product#909231), coalesce(storageLocId#909194, ), isnull(storageLocId#909194), coalesce(calculationDateTime#909187, 1970-01-01 00:00:00), isnull(calculationDateTime#909187)]
Right keys [8]: [coalesce(plant#909340, ), isnull(plant#909340), coalesce(product#909341, ), isnull(product#909341), coalesce(storageLocId#909304, ), isnull(storageLocId#909304), coalesce(max_calc_datetime#909342, 1970-01-01 00:00:00), isnull(max_calc_datetime#909342)]
Join type: Inner
Join condition: None
(836) Project
Output [4]: [plant#909230, product#909231, calculationDateTime#909187, quantity#909196]
Input [9]: [plant#909230, product#909231, storageLocId#909194, calculationDateTime#909187, quantity#909196, plant#909340, product#909341, storageLocId#909304, max_calc_datetime#909342]
(837) HashAggregate
Input [4]: [plant#909230, product#909231, calculationDateTime#909187, quantity#909196]
Keys [2]: [product#909231, plant#909230]
Functions [2]: [partial_min(calculationDateTime#909187), partial_sum(quantity#909196)]
Aggregate Attributes [2]: [min#912554, sum#912555]
Results [4]: [product#909231, plant#909230, min#912556, sum#912557]
(838) Exchange
Input [4]: [product#909231, plant#909230, min#912556, sum#912557]
Arguments: hashpartitioning(product#909231, plant#909230, 37), ENSURE_REQUIREMENTS, [plan_id=1399902]
(839) HashAggregate
Input [4]: [product#909231, plant#909230, min#912556, sum#912557]
Keys [2]: [product#909231, plant#909230]
Functions [2]: [min(calculationDateTime#909187), sum(quantity#909196)]
Aggregate Attributes [2]: [min(calculationDateTime#909187)#905800, sum(quantity#909196)#905799]
Results [4]: [product#909231, plant#909230, min(calculationDateTime#909187)#905800 AS minCalculationDateTime#909344, round(sum(quantity#909196)#905799, 0) AS roundedQuantitySum#909345]
(840) Sort
Input [4]: [product#909231, plant#909230, minCalculationDateTime#909344, roundedQuantitySum#909345]
Arguments: [product#909231 ASC NULLS FIRST, plant#909230 ASC NULLS FIRST], false, 0
(841) SortMergeJoin
Left keys [2]: [product#909091, plant#909092]
Right keys [2]: [product#909231, plant#909230]
Join type: LeftOuter
Join condition: None
(842) Project
Output [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, CASE WHEN isnotnull(minCalculationDateTime#909344) THEN minCalculationDateTime#909344 ELSE orderDateTime#909093 END AS stockDatetime#909346, CASE WHEN isnotnull(roundedQuantitySum#909345) THEN array(roundedQuantitySum#909345) ELSE [0.0] END AS stockBatchQuantities#909347]
Input [9]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, product#909231, plant#909230, minCalculationDateTime#909344, roundedQuantitySum#909345]
(843) Exchange
Input [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347]
Arguments: hashpartitioning(coalesce(plant#909092, ), isnull(plant#909092), coalesce(product#909091, ), isnull(product#909091), 37), ENSURE_REQUIREMENTS, [plan_id=1400056]
(844) Sort
Input [7]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347]
Arguments: [coalesce(plant#909092, ) ASC NULLS FIRST, isnull(plant#909092) ASC NULLS FIRST, coalesce(product#909091, ) ASC NULLS FIRST, isnull(product#909091) ASC NULLS FIRST], false, 0
(845) Scan parquet
Output [3]: [product#909349, plant#909350, orderDateTime#909351]
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/10000000348/shardId=0_1_10000000348]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(846) Exchange
Input [3]: [product#909349, plant#909350, orderDateTime#909351]
Arguments: hashpartitioning(product#909349, plant#909350, 37), REPARTITION_BY_NUM, [plan_id=1398992]
(847) Scan parquet
Output [9]: [internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361, systemId#909353]
Batched: 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#909353, internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361]
Input [9]: [internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361, systemId#909353]
(849) Exchange
Input [9]: [systemId#909353, internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1398995]
(850) Project
Output [1]: [struct(systemId, systemId#909353, internalUUID, internalUUID#909354, plant, plant#909355, product, product#909356, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909357, productionAspect, productionAspect#909358, salesPlant, salesPlant#909359, listing, listing#909360, sourceOfSupplyCategory, sourceOfSupplyCategory#909361) AS productPlant#909362]
Input [9]: [systemId#909353, internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361]
(851) BroadcastExchange
Input [1]: [productPlant#909362]
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=1399910]
(852) BroadcastHashJoin
Left keys [4]: [coalesce(product#909349, ), isnull(product#909349), coalesce(plant#909350, ), isnull(plant#909350)]
Right keys [4]: [coalesce(productPlant#909362.product.internalRefUUID, ), isnull(productPlant#909362.product.internalRefUUID), coalesce(productPlant#909362.plant.internalRefUUID, ), isnull(productPlant#909362.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(853) Scan parquet
Output [4]: [internalUUID#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370, systemId#909363]
Batched: 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#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370, systemId#909363]
Condition : isnotnull(internalUUID#909364)
(855) Project
Output [3]: [internalUUID#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370]
Input [4]: [internalUUID#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370, systemId#909363]
(856) Exchange
Input [3]: [internalUUID#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399001]
(857) BroadcastExchange
Input [3]: [internalUUID#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399913]
(858) BroadcastHashJoin
Left keys [1]: [product#909349]
Right keys [1]: [internalUUID#909364]
Join type: LeftOuter
Join condition: None
(859) Project
Output [5]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, filter(unitOfMeasureConversions#909370, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909362.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909362.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909368.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909368.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909375]
Input [7]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, internalUUID#909364, baseUnitOfMeasure#909368, unitOfMeasureConversions#909370]
(860) Project
Output [6]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, filteredUnitOfMeasureConversions#909375.quantityDenominator AS _extract_quantityDenominator#911477, filteredUnitOfMeasureConversions#909375.quantityNumerator AS _extract_quantityNumerator#911478]
Input [5]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, filteredUnitOfMeasureConversions#909375]
(861) Generate
Input [6]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, _extract_quantityDenominator#911477, _extract_quantityNumerator#911478]
Arguments: explode(_extract_quantityNumerator#911478), [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, _extract_quantityDenominator#911477], true, [quantityNumerator#909376]
(862) Generate
Input [6]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, _extract_quantityDenominator#911477, quantityNumerator#909376]
Arguments: explode(_extract_quantityDenominator#911477), [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, quantityNumerator#909376], true, [quantityDenominator#909377]
(863) Project
Output [5]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, (cast(quantityNumerator#909376 as double) / cast(quantityDenominator#909377 as double)) AS outboundUnit#909378]
Input [6]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, quantityNumerator#909376, quantityDenominator#909377]
(864) Project
Output [5]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, CASE WHEN (isnull(outboundUnit#909378) OR (outboundUnit#909378 <= 0.0)) THEN 1.0 ELSE outboundUnit#909378 END AS outboundUnit#909379]
Input [5]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909378]
(865) Sort
Input [5]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379]
Arguments: [product#909349 ASC NULLS FIRST, plant#909350 ASC NULLS FIRST], false, 0
(866) Scan parquet
Output [6]: [internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385, systemId#909380]
Batched: 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#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385, systemId#909380]
Condition : (isnotnull(plant#909383.internalRefUUID) AND isnotnull(product#909382.internalRefUUID))
(868) Project
Output [6]: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385]
Input [6]: [internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385, systemId#909380]
(869) Exchange
Input [6]: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399012]
(870) BroadcastExchange
Input [6]: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385]
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=1399941]
(871) Scan parquet
Output [2]: [marketUnit#909386, distributionCenters#909392]
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#909386, distributionCenters#909392]
Condition : (((marketUnit#909386 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#909392, true) > 0)) AND isnotnull(distributionCenters#909392))
(873) Project
Output [1]: [distributionCenters#909392]
Input [2]: [marketUnit#909386, distributionCenters#909392]
(874) Exchange
Input [1]: [distributionCenters#909392]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399016]
(875) Generate
Input [1]: [distributionCenters#909392]
Arguments: explode(distributionCenters#909392), false, [distributionCenters#909407]
(876) Filter
Input [1]: [distributionCenters#909407]
Condition : (((size(distributionCenters#909407.storageLocations, true) > 0) AND isnotnull(distributionCenters#909407.storageLocations)) AND isnotnull(distributionCenters#909407.internalRefUUID))
(877) Project
Output [2]: [distributionCenters#909407.internalRefUUID AS _extract_internalRefUUID#911244, distributionCenters#909407.storageLocations AS _extract_storageLocations#911245]
Input [1]: [distributionCenters#909407]
(878) Generate
Input [2]: [_extract_internalRefUUID#911244, _extract_storageLocations#911245]
Arguments: explode(_extract_storageLocations#911245), [_extract_internalRefUUID#911244], false, [storageLocations#909408]
(879) Project
Output [3]: [_extract_internalRefUUID#911244 AS plantUuid#909410, storageLocations#909408.id AS storageLocId#909411, storageLocations#909408.internalRefUUID AS storageLocUuid#909412]
Input [2]: [_extract_internalRefUUID#911244, storageLocations#909408]
(880) BroadcastExchange
Input [3]: [plantUuid#909410, storageLocId#909411, storageLocUuid#909412]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399937]
(881) Scan parquet
Output [2]: [product#909413, plant#909414]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(882) Filter
Input [2]: [product#909413, plant#909414]
Condition : isnotnull(plant#909414)
(883) Exchange
Input [2]: [product#909413, plant#909414]
Arguments: hashpartitioning(product#909413, plant#909414, 37), REPARTITION_BY_NUM, [plan_id=1399409]
(884) Scan parquet
Output [4]: [plant#909419, product#909420, productionAspect#909422, systemId#909417]
Batched: 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#909419.internalRefUUID AS _extract_internalRefUUID#911482, product#909420.internalRefUUID AS _extract_internalRefUUID#911481, productionAspect#909422.productMovementPlants.unitOfIssue.code AS _extract_code#911479, productionAspect#909422.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911480]
Input [4]: [plant#909419, product#909420, productionAspect#909422, systemId#909417]
(886) Exchange
Input [4]: [_extract_internalRefUUID#911482, _extract_internalRefUUID#911481, _extract_code#911479, _extract_internalRefUUID#911480]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399028]
(887) Project
Output [4]: [_extract_code#911479, _extract_internalRefUUID#911480, _extract_internalRefUUID#911481, _extract_internalRefUUID#911482]
Input [4]: [_extract_internalRefUUID#911482, _extract_internalRefUUID#911481, _extract_code#911479, _extract_internalRefUUID#911480]
(888) BroadcastExchange
Input [4]: [_extract_code#911479, _extract_internalRefUUID#911480, _extract_internalRefUUID#911481, _extract_internalRefUUID#911482]
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=1399921]
(889) BroadcastHashJoin
Left keys [4]: [coalesce(product#909413, ), isnull(product#909413), coalesce(plant#909414, ), isnull(plant#909414)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911481, ), isnull(_extract_internalRefUUID#911481), coalesce(_extract_internalRefUUID#911482, ), isnull(_extract_internalRefUUID#911482)]
Join type: LeftOuter
Join condition: None
(890) Project
Output [4]: [product#909413, plant#909414, _extract_code#911479, _extract_internalRefUUID#911480]
Input [6]: [product#909413, plant#909414, _extract_code#911479, _extract_internalRefUUID#911480, _extract_internalRefUUID#911481, _extract_internalRefUUID#911482]
(891) Scan parquet
Output [4]: [internalUUID#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434, systemId#909427]
Batched: 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#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434, systemId#909427]
Condition : isnotnull(internalUUID#909428)
(893) Project
Output [3]: [internalUUID#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434]
Input [4]: [internalUUID#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434, systemId#909427]
(894) Exchange
Input [3]: [internalUUID#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399035]
(895) BroadcastExchange
Input [3]: [internalUUID#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399925]
(896) BroadcastHashJoin
Left keys [1]: [product#909413]
Right keys [1]: [internalUUID#909428]
Join type: LeftOuter
Join condition: None
(897) Project
Output [2]: [plant#909414, filter(unitOfMeasureConversions#909434, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911479) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911480)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909432.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909432.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909439]
Input [7]: [product#909413, plant#909414, _extract_code#911479, _extract_internalRefUUID#911480, internalUUID#909428, baseUnitOfMeasure#909432, unitOfMeasureConversions#909434]
(898) Generate
Input [2]: [plant#909414, filteredUnitOfMeasureConversions#909439]
Arguments: explode(filteredUnitOfMeasureConversions#909439.quantityNumerator), [plant#909414, filteredUnitOfMeasureConversions#909439], true, [quantityNumerator#909440]
(899) Project
Output [2]: [plant#909414, filteredUnitOfMeasureConversions#909439.quantityDenominator AS _extract_quantityDenominator#911246]
Input [3]: [plant#909414, filteredUnitOfMeasureConversions#909439, quantityNumerator#909440]
(900) Generate
Input [2]: [plant#909414, _extract_quantityDenominator#911246]
Arguments: explode(_extract_quantityDenominator#911246), [plant#909414], true, [quantityDenominator#909441]
(901) Project
Output [1]: [plant#909414]
Input [2]: [plant#909414, quantityDenominator#909441]
(902) HashAggregate
Input [1]: [plant#909414]
Keys [1]: [plant#909414]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909414]
(903) Exchange
Input [1]: [plant#909414]
Arguments: hashpartitioning(plant#909414, 37), ENSURE_REQUIREMENTS, [plan_id=1399934]
(904) HashAggregate
Input [1]: [plant#909414]
Keys [1]: [plant#909414]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909414]
(905) BroadcastHashJoin
Left keys [1]: [plantUuid#909410]
Right keys [1]: [plant#909414]
Join type: Inner
Join condition: None
(906) Project
Output [3]: [plantUuid#909410, storageLocId#909411, storageLocUuid#909412]
Input [4]: [plantUuid#909410, storageLocId#909411, storageLocUuid#909412, plant#909414]
(907) BroadcastHashJoin
Left keys [2]: [coalesce(plant#909383.internalRefUUID, ), isnull(plant#909383.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#909410, ), isnull(plantUuid#909410)]
Join type: Inner
Join condition: None
(908) Generate
Input [9]: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385, plantUuid#909410, storageLocId#909411, storageLocUuid#909412]
Arguments: explode(filter(stockQuantities#909385, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909412) AND (lambda x#905594.storageLocation.Id = storageLocId#909411)), lambda x#905594, false))), [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, plantUuid#909410], false, [stockQuantity#909444]
(909) ObjectHashAggregate
Input [7]: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, plantUuid#909410, stockQuantity#909444]
Keys [5]: [plantUuid#909410, internalUUID#909381, plant#909383, product#909382, systemId#909380]
Functions [2]: [partial_first(calculationDateTime#909384, false), partial_collect_list(stockQuantity#909444, 0, 0)]
Aggregate Attributes [3]: [first#912580, valueSet#912581, buf#912582]
Results [8]: [plantUuid#909410, internalUUID#909381, plant#909383, product#909382, systemId#909380, first#912583, valueSet#912584, buf#912585]
(910) ObjectHashAggregate
Input [8]: [plantUuid#909410, internalUUID#909381, plant#909383, product#909382, systemId#909380, first#912583, valueSet#912584, buf#912585]
Keys [5]: [plantUuid#909410, internalUUID#909381, plant#909383, product#909382, systemId#909380]
Functions [2]: [first(calculationDateTime#909384, false), collect_list(stockQuantity#909444, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#909384)()#905609, collect_list(stockQuantity#909444, 0, 0)#905610]
Results [4]: [product#909382, plant#909383, first(calculationDateTime#909384)()#905609 AS calculationDateTime#909445, collect_list(stockQuantity#909444, 0, 0)#905610 AS stockQuantities#909446]
(911) Filter
Input [4]: [product#909382, plant#909383, calculationDateTime#909445, stockQuantities#909446]
Condition : ((size(stockQuantities#909446, true) > 0) AND isnotnull(calculationDateTime#909445))
(912) Generate
Input [4]: [product#909382, plant#909383, calculationDateTime#909445, stockQuantities#909446]
Arguments: explode(stockQuantities#909446), [product#909382, plant#909383, calculationDateTime#909445], false, [stockQuantity#909447]
(913) Filter
Input [4]: [product#909382, plant#909383, calculationDateTime#909445, stockQuantity#909447]
Condition : (((isnotnull(stockQuantity#909447.specialStockIndicator.code) AND isnotnull(stockQuantity#909447.stockType.code)) AND (stockQuantity#909447.specialStockIndicator.code = )) AND (stockQuantity#909447.stockType.code = 01))
(914) Project
Output [5]: [plant#909383.internalRefUUID AS plantUuid#909449, product#909382.internalRefUUID AS productUuid#909451, calculationDateTime#909445, stockQuantity#909447.storagelocation.id AS storageLocId#909452, stockQuantity#909447.quantity.measure AS quantity#909454]
Input [4]: [product#909382, plant#909383, calculationDateTime#909445, stockQuantity#909447]
(915) Exchange
Input [5]: [plantUuid#909449, productUuid#909451, calculationDateTime#909445, storageLocId#909452, quantity#909454]
Arguments: hashpartitioning(productUuid#909451, plantUuid#909449, 37), ENSURE_REQUIREMENTS, [plan_id=1399963]
(916) Sort
Input [5]: [plantUuid#909449, productUuid#909451, calculationDateTime#909445, storageLocId#909452, quantity#909454]
Arguments: [productUuid#909451 ASC NULLS FIRST, plantUuid#909449 ASC NULLS FIRST], false, 0
(917) Scan parquet
Output [3]: [product#909457, plant#909458, orderDateTime#909459]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(918) Filter
Input [3]: [product#909457, plant#909458, orderDateTime#909459]
Condition : ((isnotnull(orderDateTime#909459) AND isnotnull(plant#909458)) AND isnotnull(product#909457))
(919) Exchange
Input [3]: [product#909457, plant#909458, orderDateTime#909459]
Arguments: hashpartitioning(product#909457, plant#909458, 37), REPARTITION_BY_NUM, [plan_id=1399430]
(920) Scan parquet
Output [4]: [plant#909463, product#909464, productionAspect#909466, systemId#909461]
Batched: 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#909463.internalRefUUID AS _extract_internalRefUUID#911483, product#909464.internalRefUUID AS _extract_internalRefUUID#911484, productionAspect#909466.productMovementPlants.unitOfIssue.code AS _extract_code#911485, productionAspect#909466.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911486]
Input [4]: [plant#909463, product#909464, productionAspect#909466, systemId#909461]
(922) Exchange
Input [4]: [_extract_internalRefUUID#911483, _extract_internalRefUUID#911484, _extract_code#911485, _extract_internalRefUUID#911486]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399060]
(923) Project
Output [4]: [_extract_code#911485, _extract_internalRefUUID#911486, _extract_internalRefUUID#911484, _extract_internalRefUUID#911483]
Input [4]: [_extract_internalRefUUID#911483, _extract_internalRefUUID#911484, _extract_code#911485, _extract_internalRefUUID#911486]
(924) BroadcastExchange
Input [4]: [_extract_code#911485, _extract_internalRefUUID#911486, _extract_internalRefUUID#911484, _extract_internalRefUUID#911483]
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=1399950]
(925) BroadcastHashJoin
Left keys [4]: [coalesce(product#909457, ), isnull(product#909457), coalesce(plant#909458, ), isnull(plant#909458)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911484, ), isnull(_extract_internalRefUUID#911484), coalesce(_extract_internalRefUUID#911483, ), isnull(_extract_internalRefUUID#911483)]
Join type: LeftOuter
Join condition: None
(926) Project
Output [5]: [product#909457, plant#909458, orderDateTime#909459, _extract_code#911485, _extract_internalRefUUID#911486]
Input [7]: [product#909457, plant#909458, orderDateTime#909459, _extract_code#911485, _extract_internalRefUUID#911486, _extract_internalRefUUID#911484, _extract_internalRefUUID#911483]
(927) Scan parquet
Output [4]: [internalUUID#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478, systemId#909471]
Batched: 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#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478, systemId#909471]
Condition : isnotnull(internalUUID#909472)
(929) Project
Output [3]: [internalUUID#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478]
Input [4]: [internalUUID#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478, systemId#909471]
(930) Exchange
Input [3]: [internalUUID#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399067]
(931) BroadcastExchange
Input [3]: [internalUUID#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399954]
(932) BroadcastHashJoin
Left keys [1]: [product#909457]
Right keys [1]: [internalUUID#909472]
Join type: LeftOuter
Join condition: None
(933) Project
Output [4]: [product#909457, plant#909458, orderDateTime#909459, filter(unitOfMeasureConversions#909478, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911485) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911486)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909476.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909476.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909483]
Input [8]: [product#909457, plant#909458, orderDateTime#909459, _extract_code#911485, _extract_internalRefUUID#911486, internalUUID#909472, baseUnitOfMeasure#909476, unitOfMeasureConversions#909478]
(934) Generate
Input [4]: [product#909457, plant#909458, orderDateTime#909459, filteredUnitOfMeasureConversions#909483]
Arguments: explode(filteredUnitOfMeasureConversions#909483.quantityNumerator), [product#909457, plant#909458, orderDateTime#909459, filteredUnitOfMeasureConversions#909483], true, [quantityNumerator#909484]
(935) Project
Output [4]: [product#909457, plant#909458, orderDateTime#909459, filteredUnitOfMeasureConversions#909483.quantityDenominator AS _extract_quantityDenominator#911253]
Input [5]: [product#909457, plant#909458, orderDateTime#909459, filteredUnitOfMeasureConversions#909483, quantityNumerator#909484]
(936) Generate
Input [4]: [product#909457, plant#909458, orderDateTime#909459, _extract_quantityDenominator#911253]
Arguments: explode(_extract_quantityDenominator#911253), [product#909457, plant#909458, orderDateTime#909459], true, [quantityDenominator#909485]
(937) Project
Output [3]: [product#909457, plant#909458, orderDateTime#909459]
Input [4]: [product#909457, plant#909458, orderDateTime#909459, quantityDenominator#909485]
(938) Sort
Input [3]: [product#909457, plant#909458, orderDateTime#909459]
Arguments: [product#909457 ASC NULLS FIRST, plant#909458 ASC NULLS FIRST], false, 0
(939) SortMergeJoin
Left keys [2]: [productUuid#909451, plantUuid#909449]
Right keys [2]: [product#909457, plant#909458]
Join type: Inner
Join condition: (calculationDateTime#909445 <= orderDateTime#909459)
(940) Project
Output [5]: [plantUuid#909449 AS plant#909488, productUuid#909451 AS product#909489, storageLocId#909452, calculationDateTime#909445, quantity#909454]
Input [8]: [plantUuid#909449, productUuid#909451, calculationDateTime#909445, storageLocId#909452, quantity#909454, product#909457, plant#909458, orderDateTime#909459]
(941) Exchange
Input [5]: [plant#909488, product#909489, storageLocId#909452, calculationDateTime#909445, quantity#909454]
Arguments: hashpartitioning(coalesce(plant#909488, ), isnull(plant#909488), coalesce(product#909489, ), isnull(product#909489), coalesce(storageLocId#909452, ), isnull(storageLocId#909452), coalesce(calculationDateTime#909445, 1970-01-01 00:00:00), isnull(calculationDateTime#909445), 37), ENSURE_REQUIREMENTS, [plan_id=1400019]
(942) Sort
Input [5]: [plant#909488, product#909489, storageLocId#909452, calculationDateTime#909445, quantity#909454]
Arguments: [coalesce(plant#909488, ) ASC NULLS FIRST, isnull(plant#909488) ASC NULLS FIRST, coalesce(product#909489, ) ASC NULLS FIRST, isnull(product#909489) ASC NULLS FIRST, coalesce(storageLocId#909452, ) ASC NULLS FIRST, isnull(storageLocId#909452) ASC NULLS FIRST, coalesce(calculationDateTime#909445, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#909445) ASC NULLS FIRST], false, 0
(943) Scan parquet
Output [6]: [internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495, systemId#909490]
Batched: 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#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495, systemId#909490]
Condition : (isnotnull(plant#909493.internalRefUUID) AND isnotnull(product#909492.internalRefUUID))
(945) Project
Output [6]: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495]
Input [6]: [internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495, systemId#909490]
(946) Exchange
Input [6]: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399079]
(947) BroadcastExchange
Input [6]: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495]
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=1399988]
(948) Scan parquet
Output [2]: [marketUnit#909496, distributionCenters#909502]
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#909496, distributionCenters#909502]
Condition : (((marketUnit#909496 <=> AUTO_ALL_ProdLoc) AND (size(distributionCenters#909502, true) > 0)) AND isnotnull(distributionCenters#909502))
(950) Project
Output [1]: [distributionCenters#909502]
Input [2]: [marketUnit#909496, distributionCenters#909502]
(951) Exchange
Input [1]: [distributionCenters#909502]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399083]
(952) Generate
Input [1]: [distributionCenters#909502]
Arguments: explode(distributionCenters#909502), false, [distributionCenters#909517]
(953) Filter
Input [1]: [distributionCenters#909517]
Condition : (((size(distributionCenters#909517.storageLocations, true) > 0) AND isnotnull(distributionCenters#909517.storageLocations)) AND isnotnull(distributionCenters#909517.internalRefUUID))
(954) Project
Output [2]: [distributionCenters#909517.internalRefUUID AS _extract_internalRefUUID#911260, distributionCenters#909517.storageLocations AS _extract_storageLocations#911261]
Input [1]: [distributionCenters#909517]
(955) Generate
Input [2]: [_extract_internalRefUUID#911260, _extract_storageLocations#911261]
Arguments: explode(_extract_storageLocations#911261), [_extract_internalRefUUID#911260], false, [storageLocations#909518]
(956) Project
Output [3]: [_extract_internalRefUUID#911260 AS plantUuid#909520, storageLocations#909518.id AS storageLocId#909521, storageLocations#909518.internalRefUUID AS storageLocUuid#909522]
Input [2]: [_extract_internalRefUUID#911260, storageLocations#909518]
(957) BroadcastExchange
Input [3]: [plantUuid#909520, storageLocId#909521, storageLocUuid#909522]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399984]
(958) Scan parquet
Output [2]: [product#909523, plant#909524]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(959) Filter
Input [2]: [product#909523, plant#909524]
Condition : isnotnull(plant#909524)
(960) Exchange
Input [2]: [product#909523, plant#909524]
Arguments: hashpartitioning(product#909523, plant#909524, 37), REPARTITION_BY_NUM, [plan_id=1399441]
(961) Scan parquet
Output [4]: [plant#909529, product#909530, productionAspect#909532, systemId#909527]
Batched: 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#909529.internalRefUUID AS _extract_internalRefUUID#911490, product#909530.internalRefUUID AS _extract_internalRefUUID#911487, productionAspect#909532.productMovementPlants.unitOfIssue.code AS _extract_code#911488, productionAspect#909532.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911489]
Input [4]: [plant#909529, product#909530, productionAspect#909532, systemId#909527]
(963) Exchange
Input [4]: [_extract_internalRefUUID#911490, _extract_internalRefUUID#911487, _extract_code#911488, _extract_internalRefUUID#911489]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399095]
(964) Project
Output [4]: [_extract_code#911488, _extract_internalRefUUID#911489, _extract_internalRefUUID#911487, _extract_internalRefUUID#911490]
Input [4]: [_extract_internalRefUUID#911490, _extract_internalRefUUID#911487, _extract_code#911488, _extract_internalRefUUID#911489]
(965) BroadcastExchange
Input [4]: [_extract_code#911488, _extract_internalRefUUID#911489, _extract_internalRefUUID#911487, _extract_internalRefUUID#911490]
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=1399968]
(966) BroadcastHashJoin
Left keys [4]: [coalesce(product#909523, ), isnull(product#909523), coalesce(plant#909524, ), isnull(plant#909524)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911487, ), isnull(_extract_internalRefUUID#911487), coalesce(_extract_internalRefUUID#911490, ), isnull(_extract_internalRefUUID#911490)]
Join type: LeftOuter
Join condition: None
(967) Project
Output [4]: [product#909523, plant#909524, _extract_code#911488, _extract_internalRefUUID#911489]
Input [6]: [product#909523, plant#909524, _extract_code#911488, _extract_internalRefUUID#911489, _extract_internalRefUUID#911487, _extract_internalRefUUID#911490]
(968) Scan parquet
Output [4]: [internalUUID#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544, systemId#909537]
Batched: 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#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544, systemId#909537]
Condition : isnotnull(internalUUID#909538)
(970) Project
Output [3]: [internalUUID#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544]
Input [4]: [internalUUID#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544, systemId#909537]
(971) Exchange
Input [3]: [internalUUID#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399102]
(972) BroadcastExchange
Input [3]: [internalUUID#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1399972]
(973) BroadcastHashJoin
Left keys [1]: [product#909523]
Right keys [1]: [internalUUID#909538]
Join type: LeftOuter
Join condition: None
(974) Project
Output [2]: [plant#909524, filter(unitOfMeasureConversions#909544, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911488) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911489)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909542.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909542.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909549]
Input [7]: [product#909523, plant#909524, _extract_code#911488, _extract_internalRefUUID#911489, internalUUID#909538, baseUnitOfMeasure#909542, unitOfMeasureConversions#909544]
(975) Generate
Input [2]: [plant#909524, filteredUnitOfMeasureConversions#909549]
Arguments: explode(filteredUnitOfMeasureConversions#909549.quantityNumerator), [plant#909524, filteredUnitOfMeasureConversions#909549], true, [quantityNumerator#909550]
(976) Project
Output [2]: [plant#909524, filteredUnitOfMeasureConversions#909549.quantityDenominator AS _extract_quantityDenominator#911262]
Input [3]: [plant#909524, filteredUnitOfMeasureConversions#909549, quantityNumerator#909550]
(977) Generate
Input [2]: [plant#909524, _extract_quantityDenominator#911262]
Arguments: explode(_extract_quantityDenominator#911262), [plant#909524], true, [quantityDenominator#909551]
(978) Project
Output [1]: [plant#909524]
Input [2]: [plant#909524, quantityDenominator#909551]
(979) HashAggregate
Input [1]: [plant#909524]
Keys [1]: [plant#909524]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909524]
(980) Exchange
Input [1]: [plant#909524]
Arguments: hashpartitioning(plant#909524, 37), ENSURE_REQUIREMENTS, [plan_id=1399981]
(981) HashAggregate
Input [1]: [plant#909524]
Keys [1]: [plant#909524]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#909524]
(982) BroadcastHashJoin
Left keys [1]: [plantUuid#909520]
Right keys [1]: [plant#909524]
Join type: Inner
Join condition: None
(983) Project
Output [3]: [plantUuid#909520, storageLocId#909521, storageLocUuid#909522]
Input [4]: [plantUuid#909520, storageLocId#909521, storageLocUuid#909522, plant#909524]
(984) BroadcastHashJoin
Left keys [2]: [coalesce(plant#909493.internalRefUUID, ), isnull(plant#909493.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#909520, ), isnull(plantUuid#909520)]
Join type: Inner
Join condition: None
(985) Generate
Input [9]: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495, plantUuid#909520, storageLocId#909521, storageLocUuid#909522]
Arguments: explode(filter(stockQuantities#909495, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909522) AND (lambda x#905594.storageLocation.Id = storageLocId#909521)), lambda x#905594, false))), [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, plantUuid#909520], false, [stockQuantity#909554]
(986) ObjectHashAggregate
Input [7]: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, plantUuid#909520, stockQuantity#909554]
Keys [5]: [plantUuid#909520, internalUUID#909491, plant#909493, product#909492, systemId#909490]
Functions [2]: [partial_first(calculationDateTime#909494, false), partial_collect_list(stockQuantity#909554, 0, 0)]
Aggregate Attributes [3]: [first#912588, valueSet#912589, buf#912590]
Results [8]: [plantUuid#909520, internalUUID#909491, plant#909493, product#909492, systemId#909490, first#912591, valueSet#912592, buf#912593]
(987) ObjectHashAggregate
Input [8]: [plantUuid#909520, internalUUID#909491, plant#909493, product#909492, systemId#909490, first#912591, valueSet#912592, buf#912593]
Keys [5]: [plantUuid#909520, internalUUID#909491, plant#909493, product#909492, systemId#909490]
Functions [2]: [first(calculationDateTime#909494, false), collect_list(stockQuantity#909554, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#909494)()#905609, collect_list(stockQuantity#909554, 0, 0)#905610]
Results [4]: [product#909492, plant#909493, first(calculationDateTime#909494)()#905609 AS calculationDateTime#909555, collect_list(stockQuantity#909554, 0, 0)#905610 AS stockQuantities#909556]
(988) Filter
Input [4]: [product#909492, plant#909493, calculationDateTime#909555, stockQuantities#909556]
Condition : ((size(stockQuantities#909556, true) > 0) AND isnotnull(calculationDateTime#909555))
(989) Generate
Input [4]: [product#909492, plant#909493, calculationDateTime#909555, stockQuantities#909556]
Arguments: explode(stockQuantities#909556), [product#909492, plant#909493, calculationDateTime#909555], false, [stockQuantity#909557]
(990) Filter
Input [4]: [product#909492, plant#909493, calculationDateTime#909555, stockQuantity#909557]
Condition : (((isnotnull(stockQuantity#909557.specialStockIndicator.code) AND isnotnull(stockQuantity#909557.stockType.code)) AND (stockQuantity#909557.specialStockIndicator.code = )) AND (stockQuantity#909557.stockType.code = 01))
(991) Project
Output [4]: [plant#909493.internalRefUUID AS plantUuid#909559, product#909492.internalRefUUID AS productUuid#909561, calculationDateTime#909555, stockQuantity#909557.storagelocation.id AS storageLocId#909562]
Input [4]: [product#909492, plant#909493, calculationDateTime#909555, stockQuantity#909557]
(992) Exchange
Input [4]: [plantUuid#909559, productUuid#909561, calculationDateTime#909555, storageLocId#909562]
Arguments: hashpartitioning(productUuid#909561, plantUuid#909559, 37), ENSURE_REQUIREMENTS, [plan_id=1400010]
(993) Sort
Input [4]: [plantUuid#909559, productUuid#909561, calculationDateTime#909555, storageLocId#909562]
Arguments: [productUuid#909561 ASC NULLS FIRST, plantUuid#909559 ASC NULLS FIRST], false, 0
(994) Scan parquet
Output [3]: [product#909567, plant#909568, orderDateTime#909569]
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/10000000348/shardId=0_1_10000000348]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(995) Filter
Input [3]: [product#909567, plant#909568, orderDateTime#909569]
Condition : ((isnotnull(orderDateTime#909569) AND isnotnull(plant#909568)) AND isnotnull(product#909567))
(996) Exchange
Input [3]: [product#909567, plant#909568, orderDateTime#909569]
Arguments: hashpartitioning(product#909567, plant#909568, 37), REPARTITION_BY_NUM, [plan_id=1399462]
(997) Scan parquet
Output [4]: [plant#909573, product#909574, productionAspect#909576, systemId#909571]
Batched: 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#909573.internalRefUUID AS _extract_internalRefUUID#911494, product#909574.internalRefUUID AS _extract_internalRefUUID#911493, productionAspect#909576.productMovementPlants.unitOfIssue.code AS _extract_code#911491, productionAspect#909576.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#911492]
Input [4]: [plant#909573, product#909574, productionAspect#909576, systemId#909571]
(999) Exchange
Input [4]: [_extract_internalRefUUID#911494, _extract_internalRefUUID#911493, _extract_code#911491, _extract_internalRefUUID#911492]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399127]
(1000) Project
Output [4]: [_extract_code#911491, _extract_internalRefUUID#911492, _extract_internalRefUUID#911493, _extract_internalRefUUID#911494]
Input [4]: [_extract_internalRefUUID#911494, _extract_internalRefUUID#911493, _extract_code#911491, _extract_internalRefUUID#911492]
(1001) BroadcastExchange
Input [4]: [_extract_code#911491, _extract_internalRefUUID#911492, _extract_internalRefUUID#911493, _extract_internalRefUUID#911494]
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=1399997]
(1002) BroadcastHashJoin
Left keys [4]: [coalesce(product#909567, ), isnull(product#909567), coalesce(plant#909568, ), isnull(plant#909568)]
Right keys [4]: [coalesce(_extract_internalRefUUID#911493, ), isnull(_extract_internalRefUUID#911493), coalesce(_extract_internalRefUUID#911494, ), isnull(_extract_internalRefUUID#911494)]
Join type: LeftOuter
Join condition: None
(1003) Project
Output [5]: [product#909567, plant#909568, orderDateTime#909569, _extract_code#911491, _extract_internalRefUUID#911492]
Input [7]: [product#909567, plant#909568, orderDateTime#909569, _extract_code#911491, _extract_internalRefUUID#911492, _extract_internalRefUUID#911493, _extract_internalRefUUID#911494]
(1004) Scan parquet
Output [4]: [internalUUID#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588, systemId#909581]
Batched: 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#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588, systemId#909581]
Condition : isnotnull(internalUUID#909582)
(1006) Project
Output [3]: [internalUUID#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588]
Input [4]: [internalUUID#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588, systemId#909581]
(1007) Exchange
Input [3]: [internalUUID#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399134]
(1008) BroadcastExchange
Input [3]: [internalUUID#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1400001]
(1009) BroadcastHashJoin
Left keys [1]: [product#909567]
Right keys [1]: [internalUUID#909582]
Join type: LeftOuter
Join condition: None
(1010) Project
Output [4]: [product#909567, plant#909568, orderDateTime#909569, filter(unitOfMeasureConversions#909588, lambdafunction((((lambda u#905464.measurementUnit1.code = _extract_code#911491) AND (lambda u#905464.measurementUnit1.internalRefUUID = _extract_internalRefUUID#911492)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909586.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909586.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909593]
Input [8]: [product#909567, plant#909568, orderDateTime#909569, _extract_code#911491, _extract_internalRefUUID#911492, internalUUID#909582, baseUnitOfMeasure#909586, unitOfMeasureConversions#909588]
(1011) Generate
Input [4]: [product#909567, plant#909568, orderDateTime#909569, filteredUnitOfMeasureConversions#909593]
Arguments: explode(filteredUnitOfMeasureConversions#909593.quantityNumerator), [product#909567, plant#909568, orderDateTime#909569, filteredUnitOfMeasureConversions#909593], true, [quantityNumerator#909594]
(1012) Project
Output [4]: [product#909567, plant#909568, orderDateTime#909569, filteredUnitOfMeasureConversions#909593.quantityDenominator AS _extract_quantityDenominator#911269]
Input [5]: [product#909567, plant#909568, orderDateTime#909569, filteredUnitOfMeasureConversions#909593, quantityNumerator#909594]
(1013) Generate
Input [4]: [product#909567, plant#909568, orderDateTime#909569, _extract_quantityDenominator#911269]
Arguments: explode(_extract_quantityDenominator#911269), [product#909567, plant#909568, orderDateTime#909569], true, [quantityDenominator#909595]
(1014) Project
Output [3]: [product#909567, plant#909568, orderDateTime#909569]
Input [4]: [product#909567, plant#909568, orderDateTime#909569, quantityDenominator#909595]
(1015) Sort
Input [3]: [product#909567, plant#909568, orderDateTime#909569]
Arguments: [product#909567 ASC NULLS FIRST, plant#909568 ASC NULLS FIRST], false, 0
(1016) SortMergeJoin
Left keys [2]: [productUuid#909561, plantUuid#909559]
Right keys [2]: [product#909567, plant#909568]
Join type: Inner
Join condition: (calculationDateTime#909555 <= orderDateTime#909569)
(1017) Project
Output [4]: [plantUuid#909559 AS plant#909598, productUuid#909561 AS product#909599, storageLocId#909562, calculationDateTime#909555]
Input [7]: [plantUuid#909559, productUuid#909561, calculationDateTime#909555, storageLocId#909562, product#909567, plant#909568, orderDateTime#909569]
(1018) HashAggregate
Input [4]: [plant#909598, product#909599, storageLocId#909562, calculationDateTime#909555]
Keys [3]: [plant#909598, product#909599, storageLocId#909562]
Functions [1]: [partial_max(calculationDateTime#909555)]
Aggregate Attributes [1]: [max#912586]
Results [4]: [plant#909598, product#909599, storageLocId#909562, max#912587]
(1019) HashAggregate
Input [4]: [plant#909598, product#909599, storageLocId#909562, max#912587]
Keys [3]: [plant#909598, product#909599, storageLocId#909562]
Functions [1]: [max(calculationDateTime#909555)]
Aggregate Attributes [1]: [max(calculationDateTime#909555)#905673]
Results [4]: [plant#909598, product#909599, storageLocId#909562, max(calculationDateTime#909555)#905673 AS max_calc_datetime#909600]
(1020) Exchange
Input [4]: [plant#909598, product#909599, storageLocId#909562, max_calc_datetime#909600]
Arguments: hashpartitioning(coalesce(plant#909598, ), isnull(plant#909598), coalesce(product#909599, ), isnull(product#909599), coalesce(storageLocId#909562, ), isnull(storageLocId#909562), coalesce(max_calc_datetime#909600, 1970-01-01 00:00:00), isnull(max_calc_datetime#909600), 37), ENSURE_REQUIREMENTS, [plan_id=1400020]
(1021) Sort
Input [4]: [plant#909598, product#909599, storageLocId#909562, max_calc_datetime#909600]
Arguments: [coalesce(plant#909598, ) ASC NULLS FIRST, isnull(plant#909598) ASC NULLS FIRST, coalesce(product#909599, ) ASC NULLS FIRST, isnull(product#909599) ASC NULLS FIRST, coalesce(storageLocId#909562, ) ASC NULLS FIRST, isnull(storageLocId#909562) ASC NULLS FIRST, coalesce(max_calc_datetime#909600, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#909600) ASC NULLS FIRST], false, 0
(1022) SortMergeJoin
Left keys [8]: [coalesce(plant#909488, ), isnull(plant#909488), coalesce(product#909489, ), isnull(product#909489), coalesce(storageLocId#909452, ), isnull(storageLocId#909452), coalesce(calculationDateTime#909445, 1970-01-01 00:00:00), isnull(calculationDateTime#909445)]
Right keys [8]: [coalesce(plant#909598, ), isnull(plant#909598), coalesce(product#909599, ), isnull(product#909599), coalesce(storageLocId#909562, ), isnull(storageLocId#909562), coalesce(max_calc_datetime#909600, 1970-01-01 00:00:00), isnull(max_calc_datetime#909600)]
Join type: Inner
Join condition: None
(1023) Project
Output [4]: [plant#909488, product#909489, calculationDateTime#909445, quantity#909454]
Input [9]: [plant#909488, product#909489, storageLocId#909452, calculationDateTime#909445, quantity#909454, plant#909598, product#909599, storageLocId#909562, max_calc_datetime#909600]
(1024) HashAggregate
Input [4]: [plant#909488, product#909489, calculationDateTime#909445, quantity#909454]
Keys [2]: [product#909489, plant#909488]
Functions [2]: [partial_min(calculationDateTime#909445), partial_sum(quantity#909454)]
Aggregate Attributes [2]: [min#912576, sum#912577]
Results [4]: [product#909489, plant#909488, min#912578, sum#912579]
(1025) Exchange
Input [4]: [product#909489, plant#909488, min#912578, sum#912579]
Arguments: hashpartitioning(product#909489, plant#909488, 37), ENSURE_REQUIREMENTS, [plan_id=1400027]
(1026) HashAggregate
Input [4]: [product#909489, plant#909488, min#912578, sum#912579]
Keys [2]: [product#909489, plant#909488]
Functions [2]: [min(calculationDateTime#909445), sum(quantity#909454)]
Aggregate Attributes [2]: [min(calculationDateTime#909445)#905800, sum(quantity#909454)#905799]
Results [4]: [product#909489, plant#909488, min(calculationDateTime#909445)#905800 AS minCalculationDateTime#909602, round(sum(quantity#909454)#905799, 0) AS roundedQuantitySum#909603]
(1027) Sort
Input [4]: [product#909489, plant#909488, minCalculationDateTime#909602, roundedQuantitySum#909603]
Arguments: [product#909489 ASC NULLS FIRST, plant#909488 ASC NULLS FIRST], false, 0
(1028) SortMergeJoin
Left keys [2]: [product#909349, plant#909350]
Right keys [2]: [product#909489, plant#909488]
Join type: LeftOuter
Join condition: None
(1029) Project
Output [7]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, CASE WHEN isnotnull(minCalculationDateTime#909602) THEN minCalculationDateTime#909602 ELSE orderDateTime#909351 END AS stockDatetime#909604, CASE WHEN isnotnull(roundedQuantitySum#909603) THEN array(roundedQuantitySum#909603) ELSE [0.0] END AS stockBatchQuantities#909605]
Input [9]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, product#909489, plant#909488, minCalculationDateTime#909602, roundedQuantitySum#909603]
(1030) Exchange
Input [7]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605]
Arguments: hashpartitioning(coalesce(plant#909350, ), isnull(plant#909350), coalesce(product#909349, ), isnull(product#909349), 37), ENSURE_REQUIREMENTS, [plan_id=1400037]
(1031) Sort
Input [7]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605]
Arguments: [coalesce(plant#909350, ) ASC NULLS FIRST, isnull(plant#909350) ASC NULLS FIRST, coalesce(product#909349, ) ASC NULLS FIRST, isnull(product#909349) ASC NULLS FIRST], false, 0
(1032) Scan parquet
Output [9]: [product#909607, plant#909608, demandChannel#909609, demandStream#909610, considerVariance#909611, demandTimeBuckets#909612, demandPointInTimeStart#909613, demandPointInTimeEnd#909614, demandPointInTime#909615]
Batched: true
Location: InMemoryFileIndex [hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000348/0_1_10000000348]
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#909607, plant#909608, demandChannel#909609, demandStream#909610, considerVariance#909611, demandTimeBuckets#909612, demandPointInTimeStart#909613, demandPointInTimeEnd#909614, demandPointInTime#909615]
Arguments: hashpartitioning(coalesce(plant#909608, ), isnull(plant#909608), coalesce(product#909607, ), isnull(product#909607), 37), ENSURE_REQUIREMENTS, [plan_id=1400038]
(1034) Sort
Input [9]: [product#909607, plant#909608, demandChannel#909609, demandStream#909610, considerVariance#909611, demandTimeBuckets#909612, demandPointInTimeStart#909613, demandPointInTimeEnd#909614, demandPointInTime#909615]
Arguments: [coalesce(plant#909608, ) ASC NULLS FIRST, isnull(plant#909608) ASC NULLS FIRST, coalesce(product#909607, ) ASC NULLS FIRST, isnull(product#909607) ASC NULLS FIRST], false, 0
(1035) SortMergeJoin
Left keys [4]: [coalesce(plant#909350, ), isnull(plant#909350), coalesce(product#909349, ), isnull(product#909349)]
Right keys [4]: [coalesce(plant#909608, ), isnull(plant#909608), coalesce(product#909607, ), isnull(product#909607)]
Join type: LeftOuter
Join condition: None
(1036) Project
Output [8]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, CASE WHEN isnotnull(product#909607) THEN struct(demandChannel, demandChannel#909609, demandStream, demandStream#909610, considerVariance, considerVariance#909611, demandTimeBuckets, demandTimeBuckets#909612, demandPointInTimeStart, demandPointInTimeStart#909613, demandPointInTimeEnd, demandPointInTimeEnd#909614, demandPointInTime, demandPointInTime#909615) END AS rawDemands#909616]
Input [16]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, product#909607, plant#909608, demandChannel#909609, demandStream#909610, considerVariance#909611, demandTimeBuckets#909612, demandPointInTimeStart#909613, demandPointInTimeEnd#909614, demandPointInTime#909615]
(1037) ObjectHashAggregate
Input [8]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, rawDemands#909616]
Keys [8]: [product#909349, plant#909350, orderDateTime#909351, knownfloatingpointnormalized(if (isnull(productPlant#909362)) null else named_struct(systemId, productPlant#909362.systemId, internalUUID, productPlant#909362.internalUUID, plant, productPlant#909362.plant, product, productPlant#909362.product, blockedForReplenishmentStartingFrom, productPlant#909362.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#909362.productionAspect)) null else named_struct(productMovementPlants, productPlant#909362.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#909362.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#909362.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#909362.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#909362.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#909362.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#909362.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#909362.salesPlant, listing, productPlant#909362.listing, sourceOfSupplyCategory, productPlant#909362.sourceOfSupplyCategory)) AS productPlant#909362, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#909379)) AS outboundUnit#909379, stockDatetime#909604, knownfloatingpointnormalized(transform(stockBatchQuantities#909605, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#912573)), lambda arg#912573, false))) AS stockBatchQuantities#909605, [7226582400000000] AS [7226582400000000]#912572]
Functions [1]: [partial_collect_list(rawDemands#909616, 0, 0)]
Aggregate Attributes [1]: [buf#912574]
Results [9]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, [7226582400000000]#912572, buf#912575]
(1038) Exchange
Input [9]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, [7226582400000000]#912572, buf#912575]
Arguments: hashpartitioning(product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, [7226582400000000]#912572, 37), ENSURE_REQUIREMENTS, [plan_id=1400045]
(1039) ObjectHashAggregate
Input [9]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, [7226582400000000]#912572, buf#912575]
Keys [8]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, [7226582400000000]#912572]
Functions [1]: [collect_list(rawDemands#909616, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#909616, 0, 0)#905869]
Results [8]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, collect_list(rawDemands#909616, 0, 0)#905869 AS rawDemands#909617]
(1040) Scan parquet
Output [3]: [internalUUID#909619, address#909625, systemId#909618]
Batched: 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#909619, address#909625.timeZone.code AS timezonecode#909630]
Input [3]: [internalUUID#909619, address#909625, systemId#909618]
(1042) Exchange
Input [2]: [internalUUID#909619, timezonecode#909630]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1399158]
(1043) BroadcastExchange
Input [2]: [internalUUID#909619, timezonecode#909630]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1400048]
(1044) BroadcastHashJoin
Left keys [2]: [coalesce(plant#909350, ), isnull(plant#909350)]
Right keys [2]: [coalesce(internalUUID#909619, ), isnull(internalUUID#909619)]
Join type: LeftOuter
Join condition: None
(1045) Project
Output [10]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#909606, rawDemands#909617, CASE WHEN isnotnull(timezonecode#909630) THEN timezonecode#909630 ELSE UTC END AS timezonecode#909631]
Input [10]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, rawDemands#909617, internalUUID#909619, timezonecode#909630]
(1046) DeserializeToObject
Input [10]: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606, rawDemands#909617, timezonecode#909631]
Arguments: createexternalrow(invoke(product#909349.toString()), invoke(plant#909350.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#909351)), if (isnull(productPlant#909362)) null else createexternalrow(invoke(productPlant#909362.systemId.toString()), invoke(productPlant#909362.internalUUID.toString()), if (isnull(productPlant#909362.plant)) null else createexternalrow(invoke(productPlant#909362.plant.internalRefUUID.toString()), invoke(productPlant#909362.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#909362.product)) null else createexternalrow(invoke(productPlant#909362.product.internalRefUUID.toString()), invoke(productPlant#909362.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#909362.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#909362.productionAspect)) null else createexternalrow(if (isnull(productPlant#909362.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#909362.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#909362.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#909362.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#909362.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909362.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#909362.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909362.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#909362.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#909362.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#909362.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#909362.salesPlant)) null else createexternalrow(if (isnull(productPlant#909362.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#909362.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#909362.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#909362.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#909362.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#909362.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#909362.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#909379)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#909604)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#909605, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#909606, 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#909617, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#909631.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#906942: org.apache.spark.sql.Row
(1047) MapElements
Input [1]: [obj#906942]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, obj#906947: org.apache.spark.sql.Row
(1048) SerializeFromObject
Input [1]: [obj#906947]
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#909632, 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#909633, 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#909634, 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#909635]
(1049) Exchange
Input [4]: [product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
Arguments: hashpartitioning(coalesce(plant#909633, ), isnull(plant#909633), coalesce(product#909632, ), isnull(product#909632), 37), ENSURE_REQUIREMENTS, [plan_id=1400057]
(1050) Sort
Input [4]: [product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
Arguments: [coalesce(plant#909633, ) ASC NULLS FIRST, isnull(plant#909633) ASC NULLS FIRST, coalesce(product#909632, ) ASC NULLS FIRST, isnull(product#909632) ASC NULLS FIRST], false, 0
(1051) SortMergeJoin
Left keys [4]: [coalesce(plant#909092, ), isnull(plant#909092), coalesce(product#909091, ), isnull(product#909091)]
Right keys [4]: [coalesce(plant#909633, ), isnull(plant#909633), coalesce(product#909632, ), isnull(product#909632)]
Join type: LeftOuter
Join condition: None
(1052) Project
Output [9]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, dayBucketDemands#909634, pointInTimeDemands#909635]
Input [11]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, product#909632, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
(1053) InMemoryTableScan
Output [3]: [product#910250, plant#910249, openGoodsMovements#910261]
Arguments: [product#910250, plant#910249, openGoodsMovements#910261], [isnotnull(product#910250), isnotnull(plant#910249)]
(1054) InMemoryRelation
Arguments: [product#910250, plant#910249, openGoodsMovements#910261], StorageLevel(disk, memory, 2 replicas)
(1055) Filter
Input [3]: [product#910250, plant#910249, openGoodsMovements#910261]
Condition : (isnotnull(product#910250) AND isnotnull(plant#910249))
(1056) ObjectHashAggregate
Input [3]: [product#910250, plant#910249, openGoodsMovements#910261]
Keys [2]: [product#910250, plant#910249]
Functions [1]: [partial_collect_list(openGoodsMovements#910261, 0, 0)]
Aggregate Attributes [1]: [buf#912594]
Results [3]: [product#910250, plant#910249, buf#912595]
(1057) Exchange
Input [3]: [product#910250, plant#910249, buf#912595]
Arguments: hashpartitioning(product#910250, plant#910249, 37), ENSURE_REQUIREMENTS, [plan_id=1400062]
(1058) ObjectHashAggregate
Input [3]: [product#910250, plant#910249, buf#912595]
Keys [2]: [product#910250, plant#910249]
Functions [1]: [collect_list(openGoodsMovements#910261, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#910261, 0, 0)#908015]
Results [3]: [product#910250, plant#910249, flatten(collect_list(openGoodsMovements#910261, 0, 0)#908015) AS openGoodsMovements#910827]
(1059) Project
Output [5]: [product#910250, plant#910249, openGoodsMovements#910827.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#911456, openGoodsMovements#910827.availabilityDatetime AS _extract_availabilityDatetime#911457, openGoodsMovements#910827.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#911458]
Input [3]: [product#910250, plant#910249, openGoodsMovements#910827]
(1060) BroadcastExchange
Input [5]: [product#910250, plant#910249, _extract_openQtyInBaseUnit#911456, _extract_availabilityDatetime#911457, _extract_shelfLifeEndDatetime#911458]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1400066]
(1061) BroadcastHashJoin
Left keys [2]: [product#909091, plant#909092]
Right keys [2]: [product#910250, plant#910249]
Join type: LeftOuter
Join condition: None
(1062) Project
Output [15]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, coalesce(_extract_openQtyInBaseUnit#911456, []) AS openGoodsMovementQuantities#910828, coalesce(_extract_availabilityDatetime#911457, []) AS openGoodsMovementAvailabilityDatetimes#910829, coalesce(_extract_shelfLifeEndDatetime#911458, []) AS openGoodsMovementShelfLifeEndDatetimes#910830, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#910831, array_sort(filter(CASE WHEN isnotnull(productPlant#909104.listing) THEN productPlant#909104.listing ELSE [] END, lambdafunction(lambda listing#909037.isListed, lambda listing#909037, false)), lambdafunction(if ((isnull(lambda left#909039) AND isnull(lambda right#909040))) 0 else if (isnull(lambda left#909039)) 1 else if (isnull(lambda right#909040)) -1 else if ((lambda left#909039 < lambda right#909040)) -1 else if ((lambda left#909039 > lambda right#909040)) 1 else 0, lambda left#909039, lambda right#909040, false), false) AS listing#909038]
Input [14]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, dayBucketDemands#909634, pointInTimeDemands#909635, product#910250, plant#910249, _extract_openQtyInBaseUnit#911456, _extract_availabilityDatetime#911457, _extract_shelfLifeEndDatetime#911458]
(1063) DeserializeToObject
Input [15]: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, configuration#910831, listing#909038]
Arguments: createexternalrow(invoke(product#909091.toString()), invoke(plant#909092.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#909093)), if (isnull(productPlant#909104)) null else createexternalrow(invoke(productPlant#909104.systemId.toString()), invoke(productPlant#909104.internalUUID.toString()), if (isnull(productPlant#909104.plant)) null else createexternalrow(invoke(productPlant#909104.plant.internalRefUUID.toString()), invoke(productPlant#909104.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#909104.product)) null else createexternalrow(invoke(productPlant#909104.product.internalRefUUID.toString()), invoke(productPlant#909104.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#909104.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#909104.productionAspect)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#909104.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.salesPlant)) null else createexternalrow(if (isnull(productPlant#909104.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#909104.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#909104.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#909104.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#909104.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#909121)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#909346)), mapobjects(lambdavariable(MapObject, DoubleType, true, -22), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -22))), stockBatchQuantities#909347, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -23), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -23))), stockBatchShelfLifeEndDatetimes#909348, 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#909634, 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#909635, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, -34), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -34))), openGoodsMovementQuantities#910828, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, -35), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, true, -35))), openGoodsMovementAvailabilityDatetimes#910829, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -36), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -36))), openGoodsMovementShelfLifeEndDatetimes#910830, 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#910831, 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#909038, 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#909071: org.apache.spark.sql.Row
(1064) MapElements
Input [1]: [obj#909071]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, obj#909078: org.apache.spark.sql.Row
(1065) SerializeFromObject
Input [1]: [obj#909078]
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#909085, 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#909086, 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#909087, 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#909088, 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#909089, 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#909090]
(1066) Filter
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Condition : (isnotnull(product#909085) AND isnotnull(plant#909086))
(1067) Exchange
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: hashpartitioning(product#909085, plant#909086, 37), ENSURE_REQUIREMENTS, [plan_id=1400076]
(1068) Sort
Input [6]: [product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
Arguments: [product#909085 ASC NULLS FIRST, plant#909086 ASC NULLS FIRST], false, 0
(1069) SortMergeJoin
Left keys [2]: [product#905388, plant#905389]
Right keys [2]: [product#909085, plant#909086]
Join type: LeftOuter
Join condition: None
(1070) Project
Output [16]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#908894, CASE WHEN isnotnull(timeDependentSettingsName#909087) THEN timeDependentSettingsName#909087 ELSE [] END AS timeDependentSettingsName#910956, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#909088) THEN timeDependentSettingsStartDatetime#909088 ELSE [] END AS timeDependentSettingsStartDatetime#910957, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#909089) THEN timeDependentSettingsEndDatetime#909089 ELSE [] END AS timeDependentSettingsEndDatetime#910958, CASE WHEN isnotnull(timeDependentSettingsValue#909090) THEN timeDependentSettingsValue#909090 ELSE [] END AS timeDependentSettingsValue#910959]
Input [16]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, product#909085, plant#909086, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
(1071) AdaptiveSparkPlan
Output [16]: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#910957, timeDependentSettingsEndDatetime#910958, timeDependentSettingsValue#910959]
Arguments: isFinalPlan=false