== Physical Plan ==
AdaptiveSparkPlan (1379)
+- == Current Plan ==
ResultQueryStage (106)
+- * Project (105)
+- * Project (104)
+- AQEShuffleRead (103)
+- ShuffleQueryStage (102), Statistics(sizeInBytes=3.2 MiB, rowCount=1.00E+4)
+- Exchange (101)
+- * Project (100)
+- * SortMergeJoin LeftOuter (99)
:- * Sort (46)
: +- AQEShuffleRead (45)
: +- ShuffleQueryStage (44), Statistics(sizeInBytes=1328.0 KiB, rowCount=1.00E+4)
: +- Exchange (43)
: +- * Project (42)
: +- * Project (41)
: +- AQEShuffleRead (40)
: +- ShuffleQueryStage (39), Statistics(sizeInBytes=1015.5 KiB, rowCount=1.00E+4)
: +- Exchange (38)
: +- * Project (37)
: +- * Project (36)
: +- * Generate (35)
: +- * Generate (34)
: +- * Project (33)
: +- Project (32)
: +- * SortMergeJoin LeftOuter (31)
: :- * Sort (21)
: : +- ShuffleQueryStage (20), Statistics(sizeInBytes=1484.2 KiB, rowCount=1.00E+4)
: : +- Exchange (19)
: : +- * Project (18)
: : +- * SortMergeJoin LeftOuter (17)
: : :- * Sort (7)
: : : +- ShuffleQueryStage (6), Statistics(sizeInBytes=937.4 KiB, rowCount=1.00E+4)
: : : +- Exchange (5)
: : : +- ShuffleQueryStage (4), Statistics(sizeInBytes=937.4 KiB, rowCount=1.00E+4)
: : : +- Exchange (3)
: : : +- * ColumnarToRow (2)
: : : +- Scan parquet (1)
: : +- * Sort (16)
: : +- ShuffleQueryStage (15), Statistics(sizeInBytes=2.1 GiB, rowCount=1.60E+7)
: : +- Exchange (14)
: : +- * Project (13)
: : +- ShuffleQueryStage (12), Statistics(sizeInBytes=2.1 GiB, rowCount=1.60E+7)
: : +- Exchange (11)
: : +- * Project (10)
: : +- * ColumnarToRow (9)
: : +- Scan parquet (8)
: +- * Sort (30)
: +- ShuffleQueryStage (29), Statistics(sizeInBytes=73.4 MiB, rowCount=1.55E+5)
: +- Exchange (28)
: +- ShuffleQueryStage (27), Statistics(sizeInBytes=73.4 MiB, rowCount=1.55E+5)
: +- Exchange (26)
: +- * Project (25)
: +- * Filter (24)
: +- * ColumnarToRow (23)
: +- Scan parquet (22)
+- * Sort (98)
+- AQEShuffleRead (97)
+- ShuffleQueryStage (96), Statistics(sizeInBytes=2.7 MiB, rowCount=1.00E+4)
+- Exchange (95)
+- * SerializeFromObject (94)
+- * MapElements (93)
+- * DeserializeToObject (92)
+- * Project (91)
+- * BroadcastHashJoin LeftOuter BuildRight (90)
:- ObjectHashAggregate (82)
: +- ObjectHashAggregate (81)
: +- * Project (80)
: +- * BroadcastHashJoin LeftOuter BuildRight (79)
: :- * Project (74)
: : +- * Project (73)
: : +- * Project (72)
: : +- * Project (71)
: : +- * Generate (70)
: : +- * Generate (69)
: : +- * Project (68)
: : +- Project (67)
: : +- * SortMergeJoin LeftOuter (66)
: : :- * Sort (62)
: : : +- ShuffleQueryStage (61), Statistics(sizeInBytes=8.5 MiB, rowCount=1.00E+4)
: : : +- Exchange (60)
: : : +- * SortMergeJoin LeftOuter (59)
: : : :- * Sort (49)
: : : : +- ShuffleQueryStage (48), Statistics(sizeInBytes=937.4 KiB, rowCount=1.00E+4)
: : : : +- ReusedExchange (47)
: : : +- * Sort (58)
: : : +- ShuffleQueryStage (57), Statistics(sizeInBytes=11.3 GiB, rowCount=1.60E+7)
: : : +- Exchange (56)
: : : +- * Project (55)
: : : +- ShuffleQueryStage (54), Statistics(sizeInBytes=11.1 GiB, rowCount=1.60E+7)
: : : +- Exchange (53)
: : : +- * Project (52)
: : : +- * ColumnarToRow (51)
: : : +- Scan parquet (50)
: : +- * Sort (65)
: : +- ShuffleQueryStage (64), Statistics(sizeInBytes=73.4 MiB, rowCount=1.55E+5)
: : +- ReusedExchange (63)
: +- BroadcastQueryStage (78), Statistics(sizeInBytes=4.5 MiB, rowCount=1.00E+4)
: +- BroadcastExchange (77)
: +- * ColumnarToRow (76)
: +- Scan parquet (75)
+- BroadcastQueryStage (89), Statistics(sizeInBytes=2.0 MiB, rowCount=101)
+- BroadcastExchange (88)
+- ShuffleQueryStage (87), Statistics(sizeInBytes=7.1 KiB, rowCount=101)
+- Exchange (86)
+- * Project (85)
+- * ColumnarToRow (84)
+- Scan parquet (83)
+- == Initial Plan ==
Project (1378)
+- SortMergeJoin LeftOuter (1377)
:- Sort (560)
: +- Exchange (559)
: +- Project (558)
: +- SortMergeJoin LeftOuter (557)
: :- Sort (324)
: : +- Exchange (323)
: : +- Project (322)
: : +- SortMergeJoin LeftOuter (321)
: : :- Sort (132)
: : : +- Exchange (131)
: : : +- Project (130)
: : : +- Project (129)
: : : +- Generate (128)
: : : +- Generate (127)
: : : +- Project (126)
: : : +- Project (125)
: : : +- SortMergeJoin LeftOuter (124)
: : : :- Sort (118)
: : : : +- Exchange (117)
: : : : +- Project (116)
: : : : +- SortMergeJoin LeftOuter (115)
: : : : :- Sort (109)
: : : : : +- Exchange (108)
: : : : : +- Exchange (107)
: : : : : +- Scan parquet (1)
: : : : +- Sort (114)
: : : : +- Exchange (113)
: : : : +- Project (112)
: : : : +- Exchange (111)
: : : : +- Project (110)
: : : : +- Scan parquet (8)
: : : +- Sort (123)
: : : +- Exchange (122)
: : : +- Exchange (121)
: : : +- Project (120)
: : : +- Filter (119)
: : : +- Scan parquet (22)
: : +- Sort (320)
: : +- HashAggregate (319)
: : +- Exchange (318)
: : +- HashAggregate (317)
: : +- Project (316)
: : +- SortMergeJoin Inner (315)
: : :- Sort (222)
: : : +- Exchange (221)
: : : +- Project (220)
: : : +- SortMergeJoin Inner (219)
: : : :- Sort (189)
: : : : +- Exchange (188)
: : : : +- Project (187)
: : : : +- Filter (186)
: : : : +- Generate (185)
: : : : +- Filter (184)
: : : : +- ObjectHashAggregate (183)
: : : : +- ObjectHashAggregate (182)
: : : : +- Generate (181)
: : : : +- BroadcastHashJoin Inner BuildLeft (180)
: : : : :- BroadcastExchange (137)
: : : : : +- Exchange (136)
: : : : : +- Project (135)
: : : : : +- Filter (134)
: : : : : +- Scan parquet (133)
: : : : +- Project (179)
: : : : +- BroadcastHashJoin Inner BuildLeft (178)
: : : : :- BroadcastExchange (147)
: : : : : +- Project (146)
: : : : : +- Generate (145)
: : : : : +- Project (144)
: : : : : +- Filter (143)
: : : : : +- Generate (142)
: : : : : +- Exchange (141)
: : : : : +- Project (140)
: : : : : +- Filter (139)
: : : : : +- Scan parquet (138)
: : : : +- HashAggregate (177)
: : : : +- Exchange (176)
: : : : +- HashAggregate (175)
: : : : +- Project (174)
: : : : +- Generate (173)
: : : : +- Project (172)
: : : : +- Generate (171)
: : : : +- Project (170)
: : : : +- SortMergeJoin LeftOuter (169)
: : : : :- Sort (162)
: : : : : +- Exchange (161)
: : : : : +- Project (160)
: : : : : +- SortMergeJoin LeftOuter (159)
: : : : : :- Sort (152)
: : : : : : +- Exchange (151)
: : : : : : +- Exchange (150)
: : : : : : +- Filter (149)
: : : : : : +- Scan parquet (148)
: : : : : +- Sort (158)
: : : : : +- Exchange (157)
: : : : : +- Project (156)
: : : : : +- Exchange (155)
: : : : : +- Project (154)
: : : : : +- Scan parquet (153)
: : : : +- Sort (168)
: : : : +- Exchange (167)
: : : : +- Exchange (166)
: : : : +- Project (165)
: : : : +- Filter (164)
: : : : +- Scan parquet (163)
: : : +- Sort (218)
: : : +- Exchange (217)
: : : +- Project (216)
: : : +- Generate (215)
: : : +- Project (214)
: : : +- Generate (213)
: : : +- Project (212)
: : : +- SortMergeJoin LeftOuter (211)
: : : :- Sort (204)
: : : : +- Exchange (203)
: : : : +- Project (202)
: : : : +- SortMergeJoin LeftOuter (201)
: : : : :- Sort (194)
: : : : : +- Exchange (193)
: : : : : +- Exchange (192)
: : : : : +- Filter (191)
: : : : : +- Scan parquet (190)
: : : : +- Sort (200)
: : : : +- Exchange (199)
: : : : +- Project (198)
: : : : +- Exchange (197)
: : : : +- Project (196)
: : : : +- Scan parquet (195)
: : : +- Sort (210)
: : : +- Exchange (209)
: : : +- Exchange (208)
: : : +- Project (207)
: : : +- Filter (206)
: : : +- Scan parquet (205)
: : +- Sort (314)
: : +- Exchange (313)
: : +- HashAggregate (312)
: : +- HashAggregate (311)
: : +- Project (310)
: : +- SortMergeJoin Inner (309)
: : :- Sort (279)
: : : +- Exchange (278)
: : : +- Project (277)
: : : +- Filter (276)
: : : +- Generate (275)
: : : +- Filter (274)
: : : +- ObjectHashAggregate (273)
: : : +- ObjectHashAggregate (272)
: : : +- Generate (271)
: : : +- BroadcastHashJoin Inner BuildLeft (270)
: : : :- BroadcastExchange (227)
: : : : +- Exchange (226)
: : : : +- Project (225)
: : : : +- Filter (224)
: : : : +- Scan parquet (223)
: : : +- Project (269)
: : : +- BroadcastHashJoin Inner BuildLeft (268)
: : : :- BroadcastExchange (237)
: : : : +- Project (236)
: : : : +- Generate (235)
: : : : +- Project (234)
: : : : +- Filter (233)
: : : : +- Generate (232)
: : : : +- Exchange (231)
: : : : +- Project (230)
: : : : +- Filter (229)
: : : : +- Scan parquet (228)
: : : +- HashAggregate (267)
: : : +- Exchange (266)
: : : +- HashAggregate (265)
: : : +- Project (264)
: : : +- Generate (263)
: : : +- Project (262)
: : : +- Generate (261)
: : : +- Project (260)
: : : +- SortMergeJoin LeftOuter (259)
: : : :- Sort (252)
: : : : +- Exchange (251)
: : : : +- Project (250)
: : : : +- SortMergeJoin LeftOuter (249)
: : : : :- Sort (242)
: : : : : +- Exchange (241)
: : : : : +- Exchange (240)
: : : : : +- Filter (239)
: : : : : +- Scan parquet (238)
: : : : +- Sort (248)
: : : : +- Exchange (247)
: : : : +- Project (246)
: : : : +- Exchange (245)
: : : : +- Project (244)
: : : : +- Scan parquet (243)
: : : +- Sort (258)
: : : +- Exchange (257)
: : : +- Exchange (256)
: : : +- Project (255)
: : : +- Filter (254)
: : : +- Scan parquet (253)
: : +- Sort (308)
: : +- Exchange (307)
: : +- Project (306)
: : +- Generate (305)
: : +- Project (304)
: : +- Generate (303)
: : +- Project (302)
: : +- SortMergeJoin LeftOuter (301)
: : :- Sort (294)
: : : +- Exchange (293)
: : : +- Project (292)
: : : +- SortMergeJoin LeftOuter (291)
: : : :- Sort (284)
: : : : +- Exchange (283)
: : : : +- Exchange (282)
: : : : +- Filter (281)
: : : : +- Scan parquet (280)
: : : +- Sort (290)
: : : +- Exchange (289)
: : : +- Project (288)
: : : +- Exchange (287)
: : : +- Project (286)
: : : +- Scan parquet (285)
: : +- Sort (300)
: : +- Exchange (299)
: : +- Exchange (298)
: : +- Project (297)
: : +- Filter (296)
: : +- Scan parquet (295)
: +- Sort (556)
: +- Exchange (555)
: +- SerializeFromObject (554)
: +- MapElements (553)
: +- DeserializeToObject (552)
: +- Project (551)
: +- BroadcastHashJoin LeftOuter BuildRight (550)
: :- ObjectHashAggregate (546)
: : +- ObjectHashAggregate (545)
: : +- Project (544)
: : +- BroadcastHashJoin LeftOuter BuildRight (543)
: : :- Project (541)
: : : +- SortMergeJoin LeftOuter (540)
: : : :- Sort (351)
: : : : +- Exchange (350)
: : : : +- Project (349)
: : : : +- Project (348)
: : : : +- Generate (347)
: : : : +- Generate (346)
: : : : +- Project (345)
: : : : +- Project (344)
: : : : +- SortMergeJoin LeftOuter (343)
: : : : :- Sort (336)
: : : : : +- Exchange (335)
: : : : : +- SortMergeJoin LeftOuter (334)
: : : : : :- Sort (328)
: : : : : : +- Exchange (327)
: : : : : : +- Exchange (326)
: : : : : : +- Scan parquet (325)
: : : : : +- Sort (333)
: : : : : +- Exchange (332)
: : : : : +- Project (331)
: : : : : +- Exchange (330)
: : : : : +- Project (329)
: : : : : +- Scan parquet (50)
: : : : +- Sort (342)
: : : : +- Exchange (341)
: : : : +- Exchange (340)
: : : : +- Project (339)
: : : : +- Filter (338)
: : : : +- Scan parquet (337)
: : : +- Sort (539)
: : : +- HashAggregate (538)
: : : +- Exchange (537)
: : : +- HashAggregate (536)
: : : +- Project (535)
: : : +- SortMergeJoin Inner (534)
: : : :- Sort (441)
: : : : +- Exchange (440)
: : : : +- Project (439)
: : : : +- SortMergeJoin Inner (438)
: : : : :- Sort (408)
: : : : : +- Exchange (407)
: : : : : +- Project (406)
: : : : : +- Filter (405)
: : : : : +- Generate (404)
: : : : : +- Filter (403)
: : : : : +- ObjectHashAggregate (402)
: : : : : +- ObjectHashAggregate (401)
: : : : : +- Generate (400)
: : : : : +- BroadcastHashJoin Inner BuildLeft (399)
: : : : : :- BroadcastExchange (356)
: : : : : : +- Exchange (355)
: : : : : : +- Project (354)
: : : : : : +- Filter (353)
: : : : : : +- Scan parquet (352)
: : : : : +- Project (398)
: : : : : +- BroadcastHashJoin Inner BuildLeft (397)
: : : : : :- BroadcastExchange (366)
: : : : : : +- Project (365)
: : : : : : +- Generate (364)
: : : : : : +- Project (363)
: : : : : : +- Filter (362)
: : : : : : +- Generate (361)
: : : : : : +- Exchange (360)
: : : : : : +- Project (359)
: : : : : : +- Filter (358)
: : : : : : +- Scan parquet (357)
: : : : : +- HashAggregate (396)
: : : : : +- Exchange (395)
: : : : : +- HashAggregate (394)
: : : : : +- Project (393)
: : : : : +- Generate (392)
: : : : : +- Project (391)
: : : : : +- Generate (390)
: : : : : +- Project (389)
: : : : : +- SortMergeJoin LeftOuter (388)
: : : : : :- Sort (381)
: : : : : : +- Exchange (380)
: : : : : : +- Project (379)
: : : : : : +- SortMergeJoin LeftOuter (378)
: : : : : : :- Sort (371)
: : : : : : : +- Exchange (370)
: : : : : : : +- Exchange (369)
: : : : : : : +- Filter (368)
: : : : : : : +- Scan parquet (367)
: : : : : : +- Sort (377)
: : : : : : +- Exchange (376)
: : : : : : +- Project (375)
: : : : : : +- Exchange (374)
: : : : : : +- Project (373)
: : : : : : +- Scan parquet (372)
: : : : : +- Sort (387)
: : : : : +- Exchange (386)
: : : : : +- Exchange (385)
: : : : : +- Project (384)
: : : : : +- Filter (383)
: : : : : +- Scan parquet (382)
: : : : +- Sort (437)
: : : : +- Exchange (436)
: : : : +- Project (435)
: : : : +- Generate (434)
: : : : +- Project (433)
: : : : +- Generate (432)
: : : : +- Project (431)
: : : : +- SortMergeJoin LeftOuter (430)
: : : : :- Sort (423)
: : : : : +- Exchange (422)
: : : : : +- Project (421)
: : : : : +- SortMergeJoin LeftOuter (420)
: : : : : :- Sort (413)
: : : : : : +- Exchange (412)
: : : : : : +- Exchange (411)
: : : : : : +- Filter (410)
: : : : : : +- Scan parquet (409)
: : : : : +- Sort (419)
: : : : : +- Exchange (418)
: : : : : +- Project (417)
: : : : : +- Exchange (416)
: : : : : +- Project (415)
: : : : : +- Scan parquet (414)
: : : : +- Sort (429)
: : : : +- Exchange (428)
: : : : +- Exchange (427)
: : : : +- Project (426)
: : : : +- Filter (425)
: : : : +- Scan parquet (424)
: : : +- Sort (533)
: : : +- Exchange (532)
: : : +- HashAggregate (531)
: : : +- HashAggregate (530)
: : : +- Project (529)
: : : +- SortMergeJoin Inner (528)
: : : :- Sort (498)
: : : : +- Exchange (497)
: : : : +- Project (496)
: : : : +- Filter (495)
: : : : +- Generate (494)
: : : : +- Filter (493)
: : : : +- ObjectHashAggregate (492)
: : : : +- ObjectHashAggregate (491)
: : : : +- Generate (490)
: : : : +- BroadcastHashJoin Inner BuildLeft (489)
: : : : :- BroadcastExchange (446)
: : : : : +- Exchange (445)
: : : : : +- Project (444)
: : : : : +- Filter (443)
: : : : : +- Scan parquet (442)
: : : : +- Project (488)
: : : : +- BroadcastHashJoin Inner BuildLeft (487)
: : : : :- BroadcastExchange (456)
: : : : : +- Project (455)
: : : : : +- Generate (454)
: : : : : +- Project (453)
: : : : : +- Filter (452)
: : : : : +- Generate (451)
: : : : : +- Exchange (450)
: : : : : +- Project (449)
: : : : : +- Filter (448)
: : : : : +- Scan parquet (447)
: : : : +- HashAggregate (486)
: : : : +- Exchange (485)
: : : : +- HashAggregate (484)
: : : : +- Project (483)
: : : : +- Generate (482)
: : : : +- Project (481)
: : : : +- Generate (480)
: : : : +- Project (479)
: : : : +- SortMergeJoin LeftOuter (478)
: : : : :- Sort (471)
: : : : : +- Exchange (470)
: : : : : +- Project (469)
: : : : : +- SortMergeJoin LeftOuter (468)
: : : : : :- Sort (461)
: : : : : : +- Exchange (460)
: : : : : : +- Exchange (459)
: : : : : : +- Filter (458)
: : : : : : +- Scan parquet (457)
: : : : : +- Sort (467)
: : : : : +- Exchange (466)
: : : : : +- Project (465)
: : : : : +- Exchange (464)
: : : : : +- Project (463)
: : : : : +- Scan parquet (462)
: : : : +- Sort (477)
: : : : +- Exchange (476)
: : : : +- Exchange (475)
: : : : +- Project (474)
: : : : +- Filter (473)
: : : : +- Scan parquet (472)
: : : +- Sort (527)
: : : +- Exchange (526)
: : : +- Project (525)
: : : +- Generate (524)
: : : +- Project (523)
: : : +- Generate (522)
: : : +- Project (521)
: : : +- SortMergeJoin LeftOuter (520)
: : : :- Sort (513)
: : : : +- Exchange (512)
: : : : +- Project (511)
: : : : +- SortMergeJoin LeftOuter (510)
: : : : :- Sort (503)
: : : : : +- Exchange (502)
: : : : : +- Exchange (501)
: : : : : +- Filter (500)
: : : : : +- Scan parquet (499)
: : : : +- Sort (509)
: : : : +- Exchange (508)
: : : : +- Project (507)
: : : : +- Exchange (506)
: : : : +- Project (505)
: : : : +- Scan parquet (504)
: : : +- Sort (519)
: : : +- Exchange (518)
: : : +- Exchange (517)
: : : +- Project (516)
: : : +- Filter (515)
: : : +- Scan parquet (514)
: : +- BroadcastExchange (542)
: : +- Scan parquet (75)
: +- BroadcastExchange (549)
: +- Exchange (548)
: +- Project (547)
: +- Scan parquet (83)
+- Sort (1376)
+- Project (1375)
+- ObjectHashAggregate (1374)
+- Exchange (1373)
+- ObjectHashAggregate (1372)
+- Union (1371)
:- Filter (898)
: +- InMemoryTableScan (561)
: +- InMemoryRelation (562)
: +- AdaptiveSparkPlan (897)
+- == Final Plan ==
ResultQueryStage (564)
+- EmptyRelation (563)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (896)
+- ObjectHashAggregate (895)
+- Exchange (894)
+- ObjectHashAggregate (893)
+- Project (892)
+- Window (891)
+- Sort (890)
+- Exchange (889)
+- Project (888)
+- BroadcastHashJoin Inner BuildRight (887)
:- Project (878)
: +- SortMergeJoin Inner (877)
: :- Sort (832)
: : +- Exchange (831)
: : +- Project (830)
: : +- SortMergeJoin LeftOuter (829)
: : :- Sort (593)
: : : +- Exchange (592)
: : : +- Project (591)
: : : +- Generate (590)
: : : +- Project (589)
: : : +- Generate (588)
: : : +- Project (587)
: : : +- SortMergeJoin LeftOuter (586)
: : : :- Sort (579)
: : : : +- Exchange (578)
: : : : +- Project (577)
: : : : +- SortMergeJoin LeftOuter (576)
: : : : :- Sort (569)
: : : : : +- Exchange (568)
: : : : : +- Exchange (567)
: : : : : +- Filter (566)
: : : : : +- Scan parquet (565)
: : : : +- Sort (575)
: : : : +- Exchange (574)
: : : : +- Project (573)
: : : : +- Exchange (572)
: : : : +- Project (571)
: : : : +- Scan parquet (570)
: : : +- Sort (585)
: : : +- Exchange (584)
: : : +- Exchange (583)
: : : +- Project (582)
: : : +- Filter (581)
: : : +- Scan parquet (580)
: : +- Sort (828)
: : +- Exchange (827)
: : +- SerializeFromObject (826)
: : +- MapElements (825)
: : +- DeserializeToObject (824)
: : +- Project (823)
: : +- BroadcastHashJoin LeftOuter BuildRight (822)
: : :- ObjectHashAggregate (817)
: : : +- ObjectHashAggregate (816)
: : : +- Project (815)
: : : +- BroadcastHashJoin LeftOuter BuildRight (814)
: : : :- Project (811)
: : : : +- SortMergeJoin LeftOuter (810)
: : : : :- Sort (621)
: : : : : +- Exchange (620)
: : : : : +- Project (619)
: : : : : +- Project (618)
: : : : : +- Generate (617)
: : : : : +- Generate (616)
: : : : : +- Project (615)
: : : : : +- Project (614)
: : : : : +- SortMergeJoin LeftOuter (613)
: : : : : :- Sort (606)
: : : : : : +- Exchange (605)
: : : : : : +- SortMergeJoin LeftOuter (604)
: : : : : : :- Sort (597)
: : : : : : : +- Exchange (596)
: : : : : : : +- Exchange (595)
: : : : : : : +- Scan parquet (594)
: : : : : : +- Sort (603)
: : : : : : +- Exchange (602)
: : : : : : +- Project (601)
: : : : : : +- Exchange (600)
: : : : : : +- Project (599)
: : : : : : +- Scan parquet (598)
: : : : : +- Sort (612)
: : : : : +- Exchange (611)
: : : : : +- Exchange (610)
: : : : : +- Project (609)
: : : : : +- Filter (608)
: : : : : +- Scan parquet (607)
: : : : +- Sort (809)
: : : : +- HashAggregate (808)
: : : : +- Exchange (807)
: : : : +- HashAggregate (806)
: : : : +- Project (805)
: : : : +- SortMergeJoin Inner (804)
: : : : :- Sort (711)
: : : : : +- Exchange (710)
: : : : : +- Project (709)
: : : : : +- SortMergeJoin Inner (708)
: : : : : :- Sort (678)
: : : : : : +- Exchange (677)
: : : : : : +- Project (676)
: : : : : : +- Filter (675)
: : : : : : +- Generate (674)
: : : : : : +- Filter (673)
: : : : : : +- ObjectHashAggregate (672)
: : : : : : +- ObjectHashAggregate (671)
: : : : : : +- Generate (670)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (669)
: : : : : : :- BroadcastExchange (626)
: : : : : : : +- Exchange (625)
: : : : : : : +- Project (624)
: : : : : : : +- Filter (623)
: : : : : : : +- Scan parquet (622)
: : : : : : +- Project (668)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (667)
: : : : : : :- BroadcastExchange (636)
: : : : : : : +- Project (635)
: : : : : : : +- Generate (634)
: : : : : : : +- Project (633)
: : : : : : : +- Filter (632)
: : : : : : : +- Generate (631)
: : : : : : : +- Exchange (630)
: : : : : : : +- Project (629)
: : : : : : : +- Filter (628)
: : : : : : : +- Scan parquet (627)
: : : : : : +- HashAggregate (666)
: : : : : : +- Exchange (665)
: : : : : : +- HashAggregate (664)
: : : : : : +- Project (663)
: : : : : : +- Generate (662)
: : : : : : +- Project (661)
: : : : : : +- Generate (660)
: : : : : : +- Project (659)
: : : : : : +- SortMergeJoin LeftOuter (658)
: : : : : : :- Sort (651)
: : : : : : : +- Exchange (650)
: : : : : : : +- Project (649)
: : : : : : : +- SortMergeJoin LeftOuter (648)
: : : : : : : :- Sort (641)
: : : : : : : : +- Exchange (640)
: : : : : : : : +- Exchange (639)
: : : : : : : : +- Filter (638)
: : : : : : : : +- Scan parquet (637)
: : : : : : : +- Sort (647)
: : : : : : : +- Exchange (646)
: : : : : : : +- Project (645)
: : : : : : : +- Exchange (644)
: : : : : : : +- Project (643)
: : : : : : : +- Scan parquet (642)
: : : : : : +- Sort (657)
: : : : : : +- Exchange (656)
: : : : : : +- Exchange (655)
: : : : : : +- Project (654)
: : : : : : +- Filter (653)
: : : : : : +- Scan parquet (652)
: : : : : +- Sort (707)
: : : : : +- Exchange (706)
: : : : : +- Project (705)
: : : : : +- Generate (704)
: : : : : +- Project (703)
: : : : : +- Generate (702)
: : : : : +- Project (701)
: : : : : +- SortMergeJoin LeftOuter (700)
: : : : : :- Sort (693)
: : : : : : +- Exchange (692)
: : : : : : +- Project (691)
: : : : : : +- SortMergeJoin LeftOuter (690)
: : : : : : :- Sort (683)
: : : : : : : +- Exchange (682)
: : : : : : : +- Exchange (681)
: : : : : : : +- Filter (680)
: : : : : : : +- Scan parquet (679)
: : : : : : +- Sort (689)
: : : : : : +- Exchange (688)
: : : : : : +- Project (687)
: : : : : : +- Exchange (686)
: : : : : : +- Project (685)
: : : : : : +- Scan parquet (684)
: : : : : +- Sort (699)
: : : : : +- Exchange (698)
: : : : : +- Exchange (697)
: : : : : +- Project (696)
: : : : : +- Filter (695)
: : : : : +- Scan parquet (694)
: : : : +- Sort (803)
: : : : +- Exchange (802)
: : : : +- HashAggregate (801)
: : : : +- HashAggregate (800)
: : : : +- Project (799)
: : : : +- SortMergeJoin Inner (798)
: : : : :- Sort (768)
: : : : : +- Exchange (767)
: : : : : +- Project (766)
: : : : : +- Filter (765)
: : : : : +- Generate (764)
: : : : : +- Filter (763)
: : : : : +- ObjectHashAggregate (762)
: : : : : +- ObjectHashAggregate (761)
: : : : : +- Generate (760)
: : : : : +- BroadcastHashJoin Inner BuildLeft (759)
: : : : : :- BroadcastExchange (716)
: : : : : : +- Exchange (715)
: : : : : : +- Project (714)
: : : : : : +- Filter (713)
: : : : : : +- Scan parquet (712)
: : : : : +- Project (758)
: : : : : +- BroadcastHashJoin Inner BuildLeft (757)
: : : : : :- BroadcastExchange (726)
: : : : : : +- Project (725)
: : : : : : +- Generate (724)
: : : : : : +- Project (723)
: : : : : : +- Filter (722)
: : : : : : +- Generate (721)
: : : : : : +- Exchange (720)
: : : : : : +- Project (719)
: : : : : : +- Filter (718)
: : : : : : +- Scan parquet (717)
: : : : : +- HashAggregate (756)
: : : : : +- Exchange (755)
: : : : : +- HashAggregate (754)
: : : : : +- Project (753)
: : : : : +- Generate (752)
: : : : : +- Project (751)
: : : : : +- Generate (750)
: : : : : +- Project (749)
: : : : : +- SortMergeJoin LeftOuter (748)
: : : : : :- Sort (741)
: : : : : : +- Exchange (740)
: : : : : : +- Project (739)
: : : : : : +- SortMergeJoin LeftOuter (738)
: : : : : : :- Sort (731)
: : : : : : : +- Exchange (730)
: : : : : : : +- Exchange (729)
: : : : : : : +- Filter (728)
: : : : : : : +- Scan parquet (727)
: : : : : : +- Sort (737)
: : : : : : +- Exchange (736)
: : : : : : +- Project (735)
: : : : : : +- Exchange (734)
: : : : : : +- Project (733)
: : : : : : +- Scan parquet (732)
: : : : : +- Sort (747)
: : : : : +- Exchange (746)
: : : : : +- Exchange (745)
: : : : : +- Project (744)
: : : : : +- Filter (743)
: : : : : +- Scan parquet (742)
: : : : +- Sort (797)
: : : : +- Exchange (796)
: : : : +- Project (795)
: : : : +- Generate (794)
: : : : +- Project (793)
: : : : +- Generate (792)
: : : : +- Project (791)
: : : : +- SortMergeJoin LeftOuter (790)
: : : : :- Sort (783)
: : : : : +- Exchange (782)
: : : : : +- Project (781)
: : : : : +- SortMergeJoin LeftOuter (780)
: : : : : :- Sort (773)
: : : : : : +- Exchange (772)
: : : : : : +- Exchange (771)
: : : : : : +- Filter (770)
: : : : : : +- Scan parquet (769)
: : : : : +- Sort (779)
: : : : : +- Exchange (778)
: : : : : +- Project (777)
: : : : : +- Exchange (776)
: : : : : +- Project (775)
: : : : : +- Scan parquet (774)
: : : : +- Sort (789)
: : : : +- Exchange (788)
: : : : +- Exchange (787)
: : : : +- Project (786)
: : : : +- Filter (785)
: : : : +- Scan parquet (784)
: : : +- BroadcastExchange (813)
: : : +- Scan parquet (812)
: : +- BroadcastExchange (821)
: : +- Exchange (820)
: : +- Project (819)
: : +- Scan parquet (818)
: +- Sort (876)
: +- Project (875)
: +- BroadcastHashJoin Inner BuildLeft (874)
: :- BroadcastExchange (843)
: : +- Project (842)
: : +- Filter (841)
: : +- Generate (840)
: : +- Project (839)
: : +- Filter (838)
: : +- Generate (837)
: : +- Exchange (836)
: : +- Project (835)
: : +- Filter (834)
: : +- Scan parquet (833)
: +- HashAggregate (873)
: +- Exchange (872)
: +- HashAggregate (871)
: +- Project (870)
: +- Generate (869)
: +- Project (868)
: +- Generate (867)
: +- Project (866)
: +- SortMergeJoin LeftOuter (865)
: :- Sort (858)
: : +- Exchange (857)
: : +- Project (856)
: : +- SortMergeJoin LeftOuter (855)
: : :- Sort (848)
: : : +- Exchange (847)
: : : +- Exchange (846)
: : : +- Filter (845)
: : : +- Scan parquet (844)
: : +- Sort (854)
: : +- Exchange (853)
: : +- Project (852)
: : +- Exchange (851)
: : +- Project (850)
: : +- Scan parquet (849)
: +- Sort (864)
: +- Exchange (863)
: +- Exchange (862)
: +- Project (861)
: +- Filter (860)
: +- Scan parquet (859)
+- BroadcastExchange (886)
+- Project (885)
+- Filter (884)
+- Generate (883)
+- Exchange (882)
+- Project (881)
+- Filter (880)
+- Scan parquet (879)
+- Filter (1370)
+- ObjectHashAggregate (1369)
+- Exchange (1368)
+- ObjectHashAggregate (1367)
+- Project (1366)
+- BroadcastHashJoin Inner BuildRight (1365)
:- Project (1356)
: +- SortMergeJoin LeftOuter (1355)
: :- Sort (1119)
: : +- Exchange (1118)
: : +- Project (1117)
: : +- SortMergeJoin LeftOuter (1116)
: : :- Sort (927)
: : : +- Exchange (926)
: : : +- Project (925)
: : : +- Generate (924)
: : : +- Project (923)
: : : +- Generate (922)
: : : +- Project (921)
: : : +- SortMergeJoin LeftOuter (920)
: : : :- Sort (913)
: : : : +- Exchange (912)
: : : : +- Project (911)
: : : : +- SortMergeJoin LeftOuter (910)
: : : : :- Sort (903)
: : : : : +- Exchange (902)
: : : : : +- Exchange (901)
: : : : : +- Filter (900)
: : : : : +- Scan parquet (899)
: : : : +- Sort (909)
: : : : +- Exchange (908)
: : : : +- Project (907)
: : : : +- Exchange (906)
: : : : +- Project (905)
: : : : +- Scan parquet (904)
: : : +- Sort (919)
: : : +- Exchange (918)
: : : +- Exchange (917)
: : : +- Project (916)
: : : +- Filter (915)
: : : +- Scan parquet (914)
: : +- Sort (1115)
: : +- HashAggregate (1114)
: : +- Exchange (1113)
: : +- HashAggregate (1112)
: : +- Project (1111)
: : +- SortMergeJoin Inner (1110)
: : :- Sort (1017)
: : : +- Exchange (1016)
: : : +- Project (1015)
: : : +- SortMergeJoin Inner (1014)
: : : :- Sort (984)
: : : : +- Exchange (983)
: : : : +- Project (982)
: : : : +- Filter (981)
: : : : +- Generate (980)
: : : : +- Filter (979)
: : : : +- ObjectHashAggregate (978)
: : : : +- ObjectHashAggregate (977)
: : : : +- Generate (976)
: : : : +- BroadcastHashJoin Inner BuildLeft (975)
: : : : :- BroadcastExchange (932)
: : : : : +- Exchange (931)
: : : : : +- Project (930)
: : : : : +- Filter (929)
: : : : : +- Scan parquet (928)
: : : : +- Project (974)
: : : : +- BroadcastHashJoin Inner BuildLeft (973)
: : : : :- BroadcastExchange (942)
: : : : : +- Project (941)
: : : : : +- Generate (940)
: : : : : +- Project (939)
: : : : : +- Filter (938)
: : : : : +- Generate (937)
: : : : : +- Exchange (936)
: : : : : +- Project (935)
: : : : : +- Filter (934)
: : : : : +- Scan parquet (933)
: : : : +- HashAggregate (972)
: : : : +- Exchange (971)
: : : : +- HashAggregate (970)
: : : : +- Project (969)
: : : : +- Generate (968)
: : : : +- Project (967)
: : : : +- Generate (966)
: : : : +- Project (965)
: : : : +- SortMergeJoin LeftOuter (964)
: : : : :- Sort (957)
: : : : : +- Exchange (956)
: : : : : +- Project (955)
: : : : : +- SortMergeJoin LeftOuter (954)
: : : : : :- Sort (947)
: : : : : : +- Exchange (946)
: : : : : : +- Exchange (945)
: : : : : : +- Filter (944)
: : : : : : +- Scan parquet (943)
: : : : : +- Sort (953)
: : : : : +- Exchange (952)
: : : : : +- Project (951)
: : : : : +- Exchange (950)
: : : : : +- Project (949)
: : : : : +- Scan parquet (948)
: : : : +- Sort (963)
: : : : +- Exchange (962)
: : : : +- Exchange (961)
: : : : +- Project (960)
: : : : +- Filter (959)
: : : : +- Scan parquet (958)
: : : +- Sort (1013)
: : : +- Exchange (1012)
: : : +- Project (1011)
: : : +- Generate (1010)
: : : +- Project (1009)
: : : +- Generate (1008)
: : : +- Project (1007)
: : : +- SortMergeJoin LeftOuter (1006)
: : : :- Sort (999)
: : : : +- Exchange (998)
: : : : +- Project (997)
: : : : +- SortMergeJoin LeftOuter (996)
: : : : :- Sort (989)
: : : : : +- Exchange (988)
: : : : : +- Exchange (987)
: : : : : +- Filter (986)
: : : : : +- Scan parquet (985)
: : : : +- Sort (995)
: : : : +- Exchange (994)
: : : : +- Project (993)
: : : : +- Exchange (992)
: : : : +- Project (991)
: : : : +- Scan parquet (990)
: : : +- Sort (1005)
: : : +- Exchange (1004)
: : : +- Exchange (1003)
: : : +- Project (1002)
: : : +- Filter (1001)
: : : +- Scan parquet (1000)
: : +- Sort (1109)
: : +- Exchange (1108)
: : +- HashAggregate (1107)
: : +- HashAggregate (1106)
: : +- Project (1105)
: : +- SortMergeJoin Inner (1104)
: : :- Sort (1074)
: : : +- Exchange (1073)
: : : +- Project (1072)
: : : +- Filter (1071)
: : : +- Generate (1070)
: : : +- Filter (1069)
: : : +- ObjectHashAggregate (1068)
: : : +- ObjectHashAggregate (1067)
: : : +- Generate (1066)
: : : +- BroadcastHashJoin Inner BuildLeft (1065)
: : : :- BroadcastExchange (1022)
: : : : +- Exchange (1021)
: : : : +- Project (1020)
: : : : +- Filter (1019)
: : : : +- Scan parquet (1018)
: : : +- Project (1064)
: : : +- BroadcastHashJoin Inner BuildLeft (1063)
: : : :- BroadcastExchange (1032)
: : : : +- Project (1031)
: : : : +- Generate (1030)
: : : : +- Project (1029)
: : : : +- Filter (1028)
: : : : +- Generate (1027)
: : : : +- Exchange (1026)
: : : : +- Project (1025)
: : : : +- Filter (1024)
: : : : +- Scan parquet (1023)
: : : +- HashAggregate (1062)
: : : +- Exchange (1061)
: : : +- HashAggregate (1060)
: : : +- Project (1059)
: : : +- Generate (1058)
: : : +- Project (1057)
: : : +- Generate (1056)
: : : +- Project (1055)
: : : +- SortMergeJoin LeftOuter (1054)
: : : :- Sort (1047)
: : : : +- Exchange (1046)
: : : : +- Project (1045)
: : : : +- SortMergeJoin LeftOuter (1044)
: : : : :- Sort (1037)
: : : : : +- Exchange (1036)
: : : : : +- Exchange (1035)
: : : : : +- Filter (1034)
: : : : : +- Scan parquet (1033)
: : : : +- Sort (1043)
: : : : +- Exchange (1042)
: : : : +- Project (1041)
: : : : +- Exchange (1040)
: : : : +- Project (1039)
: : : : +- Scan parquet (1038)
: : : +- Sort (1053)
: : : +- Exchange (1052)
: : : +- Exchange (1051)
: : : +- Project (1050)
: : : +- Filter (1049)
: : : +- Scan parquet (1048)
: : +- Sort (1103)
: : +- Exchange (1102)
: : +- Project (1101)
: : +- Generate (1100)
: : +- Project (1099)
: : +- Generate (1098)
: : +- Project (1097)
: : +- SortMergeJoin LeftOuter (1096)
: : :- Sort (1089)
: : : +- Exchange (1088)
: : : +- Project (1087)
: : : +- SortMergeJoin LeftOuter (1086)
: : : :- Sort (1079)
: : : : +- Exchange (1078)
: : : : +- Exchange (1077)
: : : : +- Filter (1076)
: : : : +- Scan parquet (1075)
: : : +- Sort (1085)
: : : +- Exchange (1084)
: : : +- Project (1083)
: : : +- Exchange (1082)
: : : +- Project (1081)
: : : +- Scan parquet (1080)
: : +- Sort (1095)
: : +- Exchange (1094)
: : +- Exchange (1093)
: : +- Project (1092)
: : +- Filter (1091)
: : +- Scan parquet (1090)
: +- Sort (1354)
: +- Exchange (1353)
: +- SerializeFromObject (1352)
: +- MapElements (1351)
: +- DeserializeToObject (1350)
: +- Project (1349)
: +- BroadcastHashJoin LeftOuter BuildRight (1348)
: :- ObjectHashAggregate (1343)
: : +- ObjectHashAggregate (1342)
: : +- Project (1341)
: : +- BroadcastHashJoin LeftOuter BuildRight (1340)
: : :- Project (1337)
: : : +- SortMergeJoin LeftOuter (1336)
: : : :- Sort (1147)
: : : : +- Exchange (1146)
: : : : +- Project (1145)
: : : : +- Project (1144)
: : : : +- Generate (1143)
: : : : +- Generate (1142)
: : : : +- Project (1141)
: : : : +- Project (1140)
: : : : +- SortMergeJoin LeftOuter (1139)
: : : : :- Sort (1132)
: : : : : +- Exchange (1131)
: : : : : +- SortMergeJoin LeftOuter (1130)
: : : : : :- Sort (1123)
: : : : : : +- Exchange (1122)
: : : : : : +- Exchange (1121)
: : : : : : +- Scan parquet (1120)
: : : : : +- Sort (1129)
: : : : : +- Exchange (1128)
: : : : : +- Project (1127)
: : : : : +- Exchange (1126)
: : : : : +- Project (1125)
: : : : : +- Scan parquet (1124)
: : : : +- Sort (1138)
: : : : +- Exchange (1137)
: : : : +- Exchange (1136)
: : : : +- Project (1135)
: : : : +- Filter (1134)
: : : : +- Scan parquet (1133)
: : : +- Sort (1335)
: : : +- HashAggregate (1334)
: : : +- Exchange (1333)
: : : +- HashAggregate (1332)
: : : +- Project (1331)
: : : +- SortMergeJoin Inner (1330)
: : : :- Sort (1237)
: : : : +- Exchange (1236)
: : : : +- Project (1235)
: : : : +- SortMergeJoin Inner (1234)
: : : : :- Sort (1204)
: : : : : +- Exchange (1203)
: : : : : +- Project (1202)
: : : : : +- Filter (1201)
: : : : : +- Generate (1200)
: : : : : +- Filter (1199)
: : : : : +- ObjectHashAggregate (1198)
: : : : : +- ObjectHashAggregate (1197)
: : : : : +- Generate (1196)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1195)
: : : : : :- BroadcastExchange (1152)
: : : : : : +- Exchange (1151)
: : : : : : +- Project (1150)
: : : : : : +- Filter (1149)
: : : : : : +- Scan parquet (1148)
: : : : : +- Project (1194)
: : : : : +- BroadcastHashJoin Inner BuildLeft (1193)
: : : : : :- BroadcastExchange (1162)
: : : : : : +- Project (1161)
: : : : : : +- Generate (1160)
: : : : : : +- Project (1159)
: : : : : : +- Filter (1158)
: : : : : : +- Generate (1157)
: : : : : : +- Exchange (1156)
: : : : : : +- Project (1155)
: : : : : : +- Filter (1154)
: : : : : : +- Scan parquet (1153)
: : : : : +- HashAggregate (1192)
: : : : : +- Exchange (1191)
: : : : : +- HashAggregate (1190)
: : : : : +- Project (1189)
: : : : : +- Generate (1188)
: : : : : +- Project (1187)
: : : : : +- Generate (1186)
: : : : : +- Project (1185)
: : : : : +- SortMergeJoin LeftOuter (1184)
: : : : : :- Sort (1177)
: : : : : : +- Exchange (1176)
: : : : : : +- Project (1175)
: : : : : : +- SortMergeJoin LeftOuter (1174)
: : : : : : :- Sort (1167)
: : : : : : : +- Exchange (1166)
: : : : : : : +- Exchange (1165)
: : : : : : : +- Filter (1164)
: : : : : : : +- Scan parquet (1163)
: : : : : : +- Sort (1173)
: : : : : : +- Exchange (1172)
: : : : : : +- Project (1171)
: : : : : : +- Exchange (1170)
: : : : : : +- Project (1169)
: : : : : : +- Scan parquet (1168)
: : : : : +- Sort (1183)
: : : : : +- Exchange (1182)
: : : : : +- Exchange (1181)
: : : : : +- Project (1180)
: : : : : +- Filter (1179)
: : : : : +- Scan parquet (1178)
: : : : +- Sort (1233)
: : : : +- Exchange (1232)
: : : : +- Project (1231)
: : : : +- Generate (1230)
: : : : +- Project (1229)
: : : : +- Generate (1228)
: : : : +- Project (1227)
: : : : +- SortMergeJoin LeftOuter (1226)
: : : : :- Sort (1219)
: : : : : +- Exchange (1218)
: : : : : +- Project (1217)
: : : : : +- SortMergeJoin LeftOuter (1216)
: : : : : :- Sort (1209)
: : : : : : +- Exchange (1208)
: : : : : : +- Exchange (1207)
: : : : : : +- Filter (1206)
: : : : : : +- Scan parquet (1205)
: : : : : +- Sort (1215)
: : : : : +- Exchange (1214)
: : : : : +- Project (1213)
: : : : : +- Exchange (1212)
: : : : : +- Project (1211)
: : : : : +- Scan parquet (1210)
: : : : +- Sort (1225)
: : : : +- Exchange (1224)
: : : : +- Exchange (1223)
: : : : +- Project (1222)
: : : : +- Filter (1221)
: : : : +- Scan parquet (1220)
: : : +- Sort (1329)
: : : +- Exchange (1328)
: : : +- HashAggregate (1327)
: : : +- HashAggregate (1326)
: : : +- Project (1325)
: : : +- SortMergeJoin Inner (1324)
: : : :- Sort (1294)
: : : : +- Exchange (1293)
: : : : +- Project (1292)
: : : : +- Filter (1291)
: : : : +- Generate (1290)
: : : : +- Filter (1289)
: : : : +- ObjectHashAggregate (1288)
: : : : +- ObjectHashAggregate (1287)
: : : : +- Generate (1286)
: : : : +- BroadcastHashJoin Inner BuildLeft (1285)
: : : : :- BroadcastExchange (1242)
: : : : : +- Exchange (1241)
: : : : : +- Project (1240)
: : : : : +- Filter (1239)
: : : : : +- Scan parquet (1238)
: : : : +- Project (1284)
: : : : +- BroadcastHashJoin Inner BuildLeft (1283)
: : : : :- BroadcastExchange (1252)
: : : : : +- Project (1251)
: : : : : +- Generate (1250)
: : : : : +- Project (1249)
: : : : : +- Filter (1248)
: : : : : +- Generate (1247)
: : : : : +- Exchange (1246)
: : : : : +- Project (1245)
: : : : : +- Filter (1244)
: : : : : +- Scan parquet (1243)
: : : : +- HashAggregate (1282)
: : : : +- Exchange (1281)
: : : : +- HashAggregate (1280)
: : : : +- Project (1279)
: : : : +- Generate (1278)
: : : : +- Project (1277)
: : : : +- Generate (1276)
: : : : +- Project (1275)
: : : : +- SortMergeJoin LeftOuter (1274)
: : : : :- Sort (1267)
: : : : : +- Exchange (1266)
: : : : : +- Project (1265)
: : : : : +- SortMergeJoin LeftOuter (1264)
: : : : : :- Sort (1257)
: : : : : : +- Exchange (1256)
: : : : : : +- Exchange (1255)
: : : : : : +- Filter (1254)
: : : : : : +- Scan parquet (1253)
: : : : : +- Sort (1263)
: : : : : +- Exchange (1262)
: : : : : +- Project (1261)
: : : : : +- Exchange (1260)
: : : : : +- Project (1259)
: : : : : +- Scan parquet (1258)
: : : : +- Sort (1273)
: : : : +- Exchange (1272)
: : : : +- Exchange (1271)
: : : : +- Project (1270)
: : : : +- Filter (1269)
: : : : +- Scan parquet (1268)
: : : +- Sort (1323)
: : : +- Exchange (1322)
: : : +- Project (1321)
: : : +- Generate (1320)
: : : +- Project (1319)
: : : +- Generate (1318)
: : : +- Project (1317)
: : : +- SortMergeJoin LeftOuter (1316)
: : : :- Sort (1309)
: : : : +- Exchange (1308)
: : : : +- Project (1307)
: : : : +- SortMergeJoin LeftOuter (1306)
: : : : :- Sort (1299)
: : : : : +- Exchange (1298)
: : : : : +- Exchange (1297)
: : : : : +- Filter (1296)
: : : : : +- Scan parquet (1295)
: : : : +- Sort (1305)
: : : : +- Exchange (1304)
: : : : +- Project (1303)
: : : : +- Exchange (1302)
: : : : +- Project (1301)
: : : : +- Scan parquet (1300)
: : : +- Sort (1315)
: : : +- Exchange (1314)
: : : +- Exchange (1313)
: : : +- Project (1312)
: : : +- Filter (1311)
: : : +- Scan parquet (1310)
: : +- BroadcastExchange (1339)
: : +- Scan parquet (1338)
: +- BroadcastExchange (1347)
: +- Exchange (1346)
: +- Project (1345)
: +- Scan parquet (1344)
+- BroadcastExchange (1364)
+- Project (1363)
+- Filter (1362)
+- Generate (1361)
+- Exchange (1360)
+- Project (1359)
+- Filter (1358)
+- Scan parquet (1357)
(1) Scan parquet
Output [3]: [product#1127, plant#1128, orderDateTime#1129]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(2) ColumnarToRow [codegen id : 1]
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
(3) Exchange
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: hashpartitioning(product#1127, plant#1128, 37), REPARTITION_BY_NUM, [plan_id=8771]
(4) ShuffleQueryStage
Output [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: 0
(5) Exchange
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: hashpartitioning(coalesce(product#1127, ), isnull(product#1127), coalesce(plant#1128, ), isnull(plant#1128), 37), ENSURE_REQUIREMENTS, [plan_id=49051]
(6) ShuffleQueryStage
Output [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: 151
(7) Sort [codegen id : 111]
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: [coalesce(product#1127, ) ASC NULLS FIRST, isnull(product#1127) ASC NULLS FIRST, coalesce(plant#1128, ) ASC NULLS FIRST, isnull(plant#1128) ASC NULLS FIRST], false, 0
(8) Scan parquet
Output [4]: [plant#1160, product#1161, productionAspect#1163, systemId#1158]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(9) ColumnarToRow [codegen id : 2]
Input [4]: [plant#1160, product#1161, productionAspect#1163, systemId#1158]
(10) Project [codegen id : 2]
Output [4]: [plant#1160.internalRefUUID AS _extract_internalRefUUID#6541, product#1161.internalRefUUID AS _extract_internalRefUUID#6540, productionAspect#1163.productMovementPlants.unitOfIssue.code AS _extract_code#6538, productionAspect#1163.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6539]
Input [4]: [plant#1160, product#1161, productionAspect#1163, systemId#1158]
(11) Exchange
Input [4]: [_extract_internalRefUUID#6541, _extract_internalRefUUID#6540, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=8787]
(12) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#6541, _extract_internalRefUUID#6540, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: 1
(13) Project [codegen id : 82]
Output [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Input [4]: [_extract_internalRefUUID#6541, _extract_internalRefUUID#6540, _extract_code#6538, _extract_internalRefUUID#6539]
(14) Exchange
Input [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6540, ), isnull(_extract_internalRefUUID#6540), coalesce(_extract_internalRefUUID#6541, ), isnull(_extract_internalRefUUID#6541), 37), ENSURE_REQUIREMENTS, [plan_id=50427]
(15) ShuffleQueryStage
Output [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Arguments: 152
(16) Sort [codegen id : 112]
Input [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Arguments: [coalesce(_extract_internalRefUUID#6540, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6540) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6541, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6541) ASC NULLS FIRST], false, 0
(17) SortMergeJoin [codegen id : 113]
Left keys [4]: [coalesce(product#1127, ), isnull(product#1127), coalesce(plant#1128, ), isnull(plant#1128)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6540, ), isnull(_extract_internalRefUUID#6540), coalesce(_extract_internalRefUUID#6541, ), isnull(_extract_internalRefUUID#6541)]
Join type: LeftOuter
Join condition: None
(18) Project [codegen id : 113]
Output [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Input [7]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
(19) Exchange
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: hashpartitioning(product#1127, 37), ENSURE_REQUIREMENTS, [plan_id=82745]
(20) ShuffleQueryStage
Output [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: 255
(21) Sort [codegen id : 165]
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: [product#1127 ASC NULLS FIRST], false, 0
(22) Scan parquet
Output [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(23) ColumnarToRow [codegen id : 3]
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
(24) Filter [codegen id : 3]
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
Condition : isnotnull(internalUUID#1194)
(25) Project [codegen id : 3]
Output [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
(26) Exchange
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=8811]
(27) ShuffleQueryStage
Output [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: 2
(28) Exchange
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: hashpartitioning(internalUUID#1194, 37), ENSURE_REQUIREMENTS, [plan_id=49060]
(29) ShuffleQueryStage
Output [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: 153
(30) Sort [codegen id : 166]
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: [internalUUID#1194 ASC NULLS FIRST], false, 0
(31) SortMergeJoin [codegen id : 167]
Left keys [1]: [product#1127]
Right keys [1]: [internalUUID#1194]
Join type: LeftOuter
Join condition: None
(32) Project
Output [4]: [product#1127, plant#1128, orderDateTime#1129, filter(unitOfMeasureConversions#1200, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6538) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6539)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1198.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1198.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1205]
Input [8]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539, internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
(33) Project [codegen id : 168]
Output [5]: [product#1127, plant#1128, orderDateTime#1129, filteredUnitOfMeasureConversions#1205.quantityDenominator AS _extract_quantityDenominator#6536, filteredUnitOfMeasureConversions#1205.quantityNumerator AS _extract_quantityNumerator#6537]
Input [4]: [product#1127, plant#1128, orderDateTime#1129, filteredUnitOfMeasureConversions#1205]
(34) Generate [codegen id : 168]
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_quantityDenominator#6536, _extract_quantityNumerator#6537]
Arguments: explode(_extract_quantityNumerator#6537), [product#1127, plant#1128, orderDateTime#1129, _extract_quantityDenominator#6536], true, [quantityNumerator#1213]
(35) Generate [codegen id : 168]
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_quantityDenominator#6536, quantityNumerator#1213]
Arguments: explode(_extract_quantityDenominator#6536), [product#1127, plant#1128, orderDateTime#1129, quantityNumerator#1213], true, [quantityDenominator#1216]
(36) Project [codegen id : 168]
Output [4]: [product#1127, plant#1128, orderDateTime#1129, (cast(quantityNumerator#1213 as double) / cast(quantityDenominator#1216 as double)) AS outboundUnit#1217]
Input [5]: [product#1127, plant#1128, orderDateTime#1129, quantityNumerator#1213, quantityDenominator#1216]
(37) Project [codegen id : 168]
Output [4]: [product#1127, plant#1128, orderDateTime#1129, CASE WHEN (isnull(outboundUnit#1217) OR (outboundUnit#1217 <= 0.0)) THEN 1.0 ELSE outboundUnit#1217 END AS outboundUnit#1218]
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1217]
(38) Exchange
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218]
Arguments: hashpartitioning(product#1127, plant#1128, 37), ENSURE_REQUIREMENTS, [plan_id=88529]
(39) ShuffleQueryStage
Output [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218]
Arguments: 287
(40) AQEShuffleRead
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218]
Arguments: coalesced
(41) Project [codegen id : 259]
Output [8]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218, cast(null as string) AS product#1401, cast(null as string) AS plant#1400, cast(null as timestamp) AS minCalculationDateTime#1527, cast(null as double) AS roundedQuantitySum#1535]
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218]
(42) Project [codegen id : 259]
Output [5]: [product#1127, plant#1128, outboundUnit#1218, CASE WHEN isnotnull(minCalculationDateTime#1527) THEN minCalculationDateTime#1527 ELSE orderDateTime#1129 END AS stockDatetime#1569, CASE WHEN isnotnull(roundedQuantitySum#1535) THEN array(roundedQuantitySum#1535) ELSE [0.0] END AS stockBatchQuantities#1570]
Input [8]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218, product#1401, plant#1400, minCalculationDateTime#1527, roundedQuantitySum#1535]
(43) Exchange
Input [5]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570]
Arguments: hashpartitioning(coalesce(plant#1128, ), isnull(plant#1128), coalesce(product#1127, ), isnull(product#1127), 37), ENSURE_REQUIREMENTS, [plan_id=110114]
(44) ShuffleQueryStage
Output [5]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570]
Arguments: 336
(45) AQEShuffleRead
Input [5]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570]
Arguments: coalesced
(46) Sort [codegen id : 271]
Input [5]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570]
Arguments: [coalesce(plant#1128, ) ASC NULLS FIRST, isnull(plant#1128) ASC NULLS FIRST, coalesce(product#1127, ) ASC NULLS FIRST, isnull(product#1127) ASC NULLS FIRST], false, 0
(47) ReusedExchange [Reuses operator id: 5]
Output [3]: [product#2711, plant#2712, orderDateTime#2713]
(48) ShuffleQueryStage
Output [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: 175
(49) Sort [codegen id : 169]
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: [coalesce(product#2711, ) ASC NULLS FIRST, isnull(product#2711) ASC NULLS FIRST, coalesce(plant#2712, ) ASC NULLS FIRST, isnull(plant#2712) ASC NULLS FIRST], false, 0
(50) Scan parquet
Output [9]: [internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723, systemId#2715]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>
(51) ColumnarToRow [codegen id : 21]
Input [9]: [internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723, systemId#2715]
(52) Project [codegen id : 21]
Output [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Input [9]: [internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723, systemId#2715]
(53) Exchange
Input [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=9291]
(54) ShuffleQueryStage
Output [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Arguments: 33
(55) Project [codegen id : 89]
Output [1]: [struct(systemId, systemId#2715, internalUUID, internalUUID#2716, plant, plant#2717, product, product#2718, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#2719, productionAspect, productionAspect#2720, salesPlant, salesPlant#2721, listing, listing#2722, sourceOfSupplyCategory, sourceOfSupplyCategory#2723) AS productPlant#2724]
Input [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
(56) Exchange
Input [1]: [productPlant#2724]
Arguments: hashpartitioning(coalesce(productPlant#2724.product.internalRefUUID, ), isnull(productPlant#2724.product.internalRefUUID), coalesce(productPlant#2724.plant.internalRefUUID, ), isnull(productPlant#2724.plant.internalRefUUID), 37), ENSURE_REQUIREMENTS, [plan_id=50678]
(57) ShuffleQueryStage
Output [1]: [productPlant#2724]
Arguments: 176
(58) Sort [codegen id : 170]
Input [1]: [productPlant#2724]
Arguments: [coalesce(productPlant#2724.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#2724.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#2724.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#2724.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(59) SortMergeJoin [codegen id : 171]
Left keys [4]: [coalesce(product#2711, ), isnull(product#2711), coalesce(plant#2712, ), isnull(plant#2712)]
Right keys [4]: [coalesce(productPlant#2724.product.internalRefUUID, ), isnull(productPlant#2724.product.internalRefUUID), coalesce(productPlant#2724.plant.internalRefUUID, ), isnull(productPlant#2724.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(60) Exchange
Input [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: hashpartitioning(product#2711, 37), ENSURE_REQUIREMENTS, [plan_id=90894]
(61) ShuffleQueryStage
Output [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: 288
(62) Sort [codegen id : 261]
Input [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: [product#2711 ASC NULLS FIRST], false, 0
(63) ReusedExchange [Reuses operator id: 28]
Output [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
(64) ShuffleQueryStage
Output [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: 177
(65) Sort [codegen id : 262]
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: [internalUUID#2726 ASC NULLS FIRST], false, 0
(66) SortMergeJoin [codegen id : 263]
Left keys [1]: [product#2711]
Right keys [1]: [internalUUID#2726]
Join type: LeftOuter
Join condition: None
(67) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filter(unitOfMeasureConversions#2732, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2730.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2730.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2736]
Input [7]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
(68) Project [codegen id : 264]
Output [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filteredUnitOfMeasureConversions#2736.quantityDenominator AS _extract_quantityDenominator#6558, filteredUnitOfMeasureConversions#2736.quantityNumerator AS _extract_quantityNumerator#6559]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filteredUnitOfMeasureConversions#2736]
(69) Generate [codegen id : 264]
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#6558, _extract_quantityNumerator#6559]
Arguments: explode(_extract_quantityNumerator#6559), [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#6558], true, [quantityNumerator#2737]
(70) Generate [codegen id : 264]
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#6558, quantityNumerator#2737]
Arguments: explode(_extract_quantityDenominator#6558), [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, quantityNumerator#2737], true, [quantityDenominator#2738]
(71) Project [codegen id : 264]
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, (cast(quantityNumerator#2737 as double) / cast(quantityDenominator#2738 as double)) AS outboundUnit#2739]
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, quantityNumerator#2737, quantityDenominator#2738]
(72) Project [codegen id : 264]
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, CASE WHEN (isnull(outboundUnit#2739) OR (outboundUnit#2739 <= 0.0)) THEN 1.0 ELSE outboundUnit#2739 END AS outboundUnit#2740]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2739]
(73) Project [codegen id : 264]
Output [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, cast(null as string) AS product#2849, cast(null as string) AS plant#2848, cast(null as timestamp) AS minCalculationDateTime#2961, cast(null as double) AS roundedQuantitySum#2962]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740]
(74) Project [codegen id : 264]
Output [7]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, CASE WHEN isnotnull(minCalculationDateTime#2961) THEN minCalculationDateTime#2961 ELSE orderDateTime#2713 END AS stockDatetime#2963, CASE WHEN isnotnull(roundedQuantitySum#2962) THEN array(roundedQuantitySum#2962) ELSE [0.0] END AS stockBatchQuantities#2964]
Input [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, product#2849, plant#2848, minCalculationDateTime#2961, roundedQuantitySum#2962]
(75) Scan parquet
Output [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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>>>
(76) ColumnarToRow [codegen id : 39]
Input [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
(77) BroadcastExchange
Input [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=9784]
(78) BroadcastQueryStage
Output [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
Arguments: 68
(79) BroadcastHashJoin [codegen id : 264]
Left keys [4]: [coalesce(plant#2712, ), isnull(plant#2712), coalesce(product#2711, ), isnull(product#2711)]
Right keys [4]: [coalesce(plant#1573, ), isnull(plant#1573), coalesce(product#1572, ), isnull(product#1572)]
Join type: LeftOuter
Join condition: None
(80) Project [codegen id : 264]
Output [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, CASE WHEN isnotnull(product#1572) THEN struct(demandChannel, demandChannel#1574, demandStream, demandStream#1575, considerVariance, considerVariance#1576, demandTimeBuckets, demandTimeBuckets#1577, demandPointInTimeStart, demandPointInTimeStart#1578, demandPointInTimeEnd, demandPointInTimeEnd#1579, demandPointInTime, demandPointInTime#1580) END AS rawDemands#1582]
Input [16]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
(81) ObjectHashAggregate
Input [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, rawDemands#1582]
Keys [8]: [product#2711, plant#2712, orderDateTime#2713, knownfloatingpointnormalized(if (isnull(productPlant#2724)) null else named_struct(systemId, productPlant#2724.systemId, internalUUID, productPlant#2724.internalUUID, plant, productPlant#2724.plant, product, productPlant#2724.product, blockedForReplenishmentStartingFrom, productPlant#2724.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#2724.productionAspect)) null else named_struct(productMovementPlants, productPlant#2724.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#2724.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#2724.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#2724.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#2724.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#2724.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#2724.salesPlant, listing, productPlant#2724.listing, sourceOfSupplyCategory, productPlant#2724.sourceOfSupplyCategory)) AS productPlant#2724, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#2740)) AS outboundUnit#2740, stockDatetime#2963, knownfloatingpointnormalized(transform(stockBatchQuantities#2964, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#11666)), lambda arg#11666, false))) AS stockBatchQuantities#2964, [7226582400000000] AS [7226582400000000]#11665]
Functions [1]: [partial_collect_list(rawDemands#1582, 0, 0)]
Aggregate Attributes [1]: [buf#4602]
Results [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#11665, buf#4603]
(82) ObjectHashAggregate
Input [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#11665, buf#4603]
Keys [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#11665]
Functions [1]: [collect_list(rawDemands#1582, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1582, 0, 0)#1602]
Results [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, collect_list(rawDemands#1582, 0, 0)#1602 AS rawDemands#1583]
(83) Scan parquet
Output [3]: [internalUUID#2662, address#2668, systemId#2661]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(84) ColumnarToRow [codegen id : 40]
Input [3]: [internalUUID#2662, address#2668, systemId#2661]
(85) Project [codegen id : 40]
Output [2]: [internalUUID#2662, address#2668.timeZone.code AS timezonecode#2674]
Input [3]: [internalUUID#2662, address#2668, systemId#2661]
(86) Exchange
Input [2]: [internalUUID#2662, timezonecode#2674]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=9801]
(87) ShuffleQueryStage
Output [2]: [internalUUID#2662, timezonecode#2674]
Arguments: 69
(88) BroadcastExchange
Input [2]: [internalUUID#2662, timezonecode#2674]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=49392]
(89) BroadcastQueryStage
Output [2]: [internalUUID#2662, timezonecode#2674]
Arguments: 200
(90) BroadcastHashJoin [codegen id : 265]
Left keys [2]: [coalesce(plant#2712, ), isnull(plant#2712)]
Right keys [2]: [coalesce(internalUUID#2662, ), isnull(internalUUID#2662)]
Join type: LeftOuter
Join condition: None
(91) Project [codegen id : 265]
Output [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#2965, rawDemands#1583, CASE WHEN isnotnull(timezonecode#2674) THEN timezonecode#2674 ELSE UTC END AS timezonecode#2676]
Input [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, rawDemands#1583, internalUUID#2662, timezonecode#2674]
(92) DeserializeToObject [codegen id : 265]
Input [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, stockBatchShelfLifeEndDatetimes#2965, rawDemands#1583, timezonecode#2676]
Arguments: createexternalrow(invoke(product#2711.toString()), invoke(plant#2712.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#2713)), if (isnull(productPlant#2724)) null else createexternalrow(invoke(productPlant#2724.systemId.toString()), invoke(productPlant#2724.internalUUID.toString()), if (isnull(productPlant#2724.plant)) null else createexternalrow(invoke(productPlant#2724.plant.internalRefUUID.toString()), invoke(productPlant#2724.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#2724.product)) null else createexternalrow(invoke(productPlant#2724.product.internalRefUUID.toString()), invoke(productPlant#2724.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#2724.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#2724.productionAspect)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#2724.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.salesPlant)) null else createexternalrow(if (isnull(productPlant#2724.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#2724.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#2724.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#2724.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#2724.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#2740)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#2963)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#2964, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#2965, 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#1583, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#2676.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#2697: org.apache.spark.sql.Row
(93) MapElements [codegen id : 265]
Input [1]: [obj#2697]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000802111db0@1fa786b, obj#2702: org.apache.spark.sql.Row
(94) SerializeFromObject [codegen id : 265]
Input [1]: [obj#2702]
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#2707, 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#2708, 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#2709, 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#2710]
(95) Exchange
Input [4]: [product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: hashpartitioning(coalesce(plant#2708, ), isnull(plant#2708), coalesce(product#2707, ), isnull(product#2707), 37), ENSURE_REQUIREMENTS, [plan_id=111673]
(96) ShuffleQueryStage
Output [4]: [product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: 338
(97) AQEShuffleRead
Input [4]: [product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: coalesced
(98) Sort [codegen id : 272]
Input [4]: [product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: [coalesce(plant#2708, ) ASC NULLS FIRST, isnull(plant#2708) ASC NULLS FIRST, coalesce(product#2707, ) ASC NULLS FIRST, isnull(product#2707) ASC NULLS FIRST], false, 0
(99) SortMergeJoin [codegen id : 273]
Left keys [4]: [coalesce(plant#1128, ), isnull(plant#1128), coalesce(product#1127, ), isnull(product#1127)]
Right keys [4]: [coalesce(plant#2708, ), isnull(plant#2708), coalesce(product#2707, ), isnull(product#2707)]
Join type: LeftOuter
Join condition: None
(100) Project [codegen id : 273]
Output [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Input [9]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
(101) Exchange
Input [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: hashpartitioning(product#1127, plant#1128, 37), ENSURE_REQUIREMENTS, [plan_id=112019]
(102) ShuffleQueryStage
Output [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: 340
(103) AQEShuffleRead
Input [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: coalesced
(104) Project [codegen id : 278]
Output [12]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710, cast(null as string) AS product#3025, cast(null as string) AS plant#3024, cast(null as array<double>) AS _extract_openQtyInBaseUnit#6533, cast(null as array<timestamp>) AS _extract_availabilityDatetime#6534, cast(null as array<timestamp>) AS _extract_shelfLifeEndDatetime#6535]
Input [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
(105) Project [codegen id : 278]
Output [16]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1571, dayBucketDemands#2709, pointInTimeDemands#2710, coalesce(_extract_openQtyInBaseUnit#6533, []) AS openGoodsMovementQuantities#5850, coalesce(_extract_availabilityDatetime#6534, []) AS openGoodsMovementAvailabilityDatetimes#5851, coalesce(_extract_shelfLifeEndDatetime#6535, []) AS openGoodsMovementShelfLifeEndDatetimes#5852, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#5953, [ListingPeriod] AS timeDependentSettingsName#6092, [-2208988800000000] AS timeDependentSettingsStartDatetime#6093, [7226582400000000] AS timeDependentSettingsEndDatetime#6094, [1.0] AS timeDependentSettingsValue#6095]
Input [12]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710, product#3025, plant#3024, _extract_openQtyInBaseUnit#6533, _extract_availabilityDatetime#6534, _extract_shelfLifeEndDatetime#6535]
(106) ResultQueryStage
Output [16]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, stockBatchShelfLifeEndDatetimes#1571, dayBucketDemands#2709, pointInTimeDemands#2710, openGoodsMovementQuantities#5850, openGoodsMovementAvailabilityDatetimes#5851, openGoodsMovementShelfLifeEndDatetimes#5852, configuration#5953, timeDependentSettingsName#6092, timeDependentSettingsStartDatetime#6093, timeDependentSettingsEndDatetime#6094, timeDependentSettingsValue#6095]
Arguments: 344
(107) Exchange
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: hashpartitioning(product#1127, plant#1128, 37), REPARTITION_BY_NUM, [plan_id=6166]
(108) Exchange
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: hashpartitioning(coalesce(product#1127, ), isnull(product#1127), coalesce(plant#1128, ), isnull(plant#1128), 37), ENSURE_REQUIREMENTS, [plan_id=7190]
(109) Sort
Input [3]: [product#1127, plant#1128, orderDateTime#1129]
Arguments: [coalesce(product#1127, ) ASC NULLS FIRST, isnull(product#1127) ASC NULLS FIRST, coalesce(plant#1128, ) ASC NULLS FIRST, isnull(plant#1128) ASC NULLS FIRST], false, 0
(110) Project
Output [4]: [plant#1160.internalRefUUID AS _extract_internalRefUUID#6541, product#1161.internalRefUUID AS _extract_internalRefUUID#6540, productionAspect#1163.productMovementPlants.unitOfIssue.code AS _extract_code#6538, productionAspect#1163.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6539]
Input [4]: [plant#1160, product#1161, productionAspect#1163, systemId#1158]
(111) Exchange
Input [4]: [_extract_internalRefUUID#6541, _extract_internalRefUUID#6540, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6169]
(112) Project
Output [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Input [4]: [_extract_internalRefUUID#6541, _extract_internalRefUUID#6540, _extract_code#6538, _extract_internalRefUUID#6539]
(113) Exchange
Input [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6540, ), isnull(_extract_internalRefUUID#6540), coalesce(_extract_internalRefUUID#6541, ), isnull(_extract_internalRefUUID#6541), 37), ENSURE_REQUIREMENTS, [plan_id=7191]
(114) Sort
Input [4]: [_extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
Arguments: [coalesce(_extract_internalRefUUID#6540, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6540) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6541, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6541) ASC NULLS FIRST], false, 0
(115) SortMergeJoin
Left keys [4]: [coalesce(product#1127, ), isnull(product#1127), coalesce(plant#1128, ), isnull(plant#1128)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6540, ), isnull(_extract_internalRefUUID#6540), coalesce(_extract_internalRefUUID#6541, ), isnull(_extract_internalRefUUID#6541)]
Join type: LeftOuter
Join condition: None
(116) Project
Output [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Input [7]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539, _extract_internalRefUUID#6540, _extract_internalRefUUID#6541]
(117) Exchange
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: hashpartitioning(product#1127, 37), ENSURE_REQUIREMENTS, [plan_id=7198]
(118) Sort
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539]
Arguments: [product#1127 ASC NULLS FIRST], false, 0
(119) Filter
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
Condition : isnotnull(internalUUID#1194)
(120) Project
Output [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
(121) Exchange
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6176]
(122) Exchange
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: hashpartitioning(internalUUID#1194, 37), ENSURE_REQUIREMENTS, [plan_id=7199]
(123) Sort
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: [internalUUID#1194 ASC NULLS FIRST], false, 0
(124) SortMergeJoin
Left keys [1]: [product#1127]
Right keys [1]: [internalUUID#1194]
Join type: LeftOuter
Join condition: None
(125) Project
Output [4]: [product#1127, plant#1128, orderDateTime#1129, filter(unitOfMeasureConversions#1200, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6538) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6539)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1198.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1198.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1205]
Input [8]: [product#1127, plant#1128, orderDateTime#1129, _extract_code#6538, _extract_internalRefUUID#6539, internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
(126) Project
Output [5]: [product#1127, plant#1128, orderDateTime#1129, filteredUnitOfMeasureConversions#1205.quantityDenominator AS _extract_quantityDenominator#6536, filteredUnitOfMeasureConversions#1205.quantityNumerator AS _extract_quantityNumerator#6537]
Input [4]: [product#1127, plant#1128, orderDateTime#1129, filteredUnitOfMeasureConversions#1205]
(127) Generate
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_quantityDenominator#6536, _extract_quantityNumerator#6537]
Arguments: explode(_extract_quantityNumerator#6537), [product#1127, plant#1128, orderDateTime#1129, _extract_quantityDenominator#6536], true, [quantityNumerator#1213]
(128) Generate
Input [5]: [product#1127, plant#1128, orderDateTime#1129, _extract_quantityDenominator#6536, quantityNumerator#1213]
Arguments: explode(_extract_quantityDenominator#6536), [product#1127, plant#1128, orderDateTime#1129, quantityNumerator#1213], true, [quantityDenominator#1216]
(129) Project
Output [4]: [product#1127, plant#1128, orderDateTime#1129, (cast(quantityNumerator#1213 as double) / cast(quantityDenominator#1216 as double)) AS outboundUnit#1217]
Input [5]: [product#1127, plant#1128, orderDateTime#1129, quantityNumerator#1213, quantityDenominator#1216]
(130) Project
Output [4]: [product#1127, plant#1128, orderDateTime#1129, CASE WHEN (isnull(outboundUnit#1217) OR (outboundUnit#1217 <= 0.0)) THEN 1.0 ELSE outboundUnit#1217 END AS outboundUnit#1218]
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1217]
(131) Exchange
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218]
Arguments: hashpartitioning(product#1127, plant#1128, 37), ENSURE_REQUIREMENTS, [plan_id=7353]
(132) Sort
Input [4]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218]
Arguments: [product#1127 ASC NULLS FIRST, plant#1128 ASC NULLS FIRST], false, 0
(133) Scan parquet
Output [6]: [internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326, systemId#1321]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(134) Filter
Input [6]: [internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326, systemId#1321]
Condition : (isnotnull(plant#1324.internalRefUUID) AND isnotnull(product#1323.internalRefUUID))
(135) Project
Output [6]: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326]
Input [6]: [internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326, systemId#1321]
(136) Exchange
Input [6]: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6187]
(137) BroadcastExchange
Input [6]: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326]
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=7237]
(138) Scan parquet
Output [2]: [marketUnit#1241, distributionCenters#1247]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(139) Filter
Input [2]: [marketUnit#1241, distributionCenters#1247]
Condition : (((marketUnit#1241 <=> 10000_OP_PERF) AND (size(distributionCenters#1247, true) > 0)) AND isnotnull(distributionCenters#1247))
(140) Project
Output [1]: [distributionCenters#1247]
Input [2]: [marketUnit#1241, distributionCenters#1247]
(141) Exchange
Input [1]: [distributionCenters#1247]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6191]
(142) Generate
Input [1]: [distributionCenters#1247]
Arguments: explode(distributionCenters#1247), false, [distributionCenters#1265]
(143) Filter
Input [1]: [distributionCenters#1265]
Condition : (((size(distributionCenters#1265.storageLocations, true) > 0) AND isnotnull(distributionCenters#1265.storageLocations)) AND isnotnull(distributionCenters#1265.internalRefUUID))
(144) Project
Output [2]: [distributionCenters#1265.internalRefUUID AS _extract_internalRefUUID#6250, distributionCenters#1265.storageLocations AS _extract_storageLocations#6251]
Input [1]: [distributionCenters#1265]
(145) Generate
Input [2]: [_extract_internalRefUUID#6250, _extract_storageLocations#6251]
Arguments: explode(_extract_storageLocations#6251), [_extract_internalRefUUID#6250], false, [storageLocations#1272]
(146) Project
Output [3]: [_extract_internalRefUUID#6250 AS plantUuid#1267, storageLocations#1272.id AS storageLocId#1273, storageLocations#1272.internalRefUUID AS storageLocUuid#1274]
Input [2]: [_extract_internalRefUUID#6250, storageLocations#1272]
(147) BroadcastExchange
Input [3]: [plantUuid#1267, storageLocId#1273, storageLocUuid#1274]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7233]
(148) Scan parquet
Output [2]: [product#1536, plant#1537]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(149) Filter
Input [2]: [product#1536, plant#1537]
Condition : isnotnull(plant#1537)
(150) Exchange
Input [2]: [product#1536, plant#1537]
Arguments: hashpartitioning(product#1536, plant#1537, 37), REPARTITION_BY_NUM, [plan_id=6859]
(151) Exchange
Input [2]: [product#1536, plant#1537]
Arguments: hashpartitioning(coalesce(product#1536, ), isnull(product#1536), coalesce(plant#1537, ), isnull(plant#1537), 37), ENSURE_REQUIREMENTS, [plan_id=7210]
(152) Sort
Input [2]: [product#1536, plant#1537]
Arguments: [coalesce(product#1536, ) ASC NULLS FIRST, isnull(product#1536) ASC NULLS FIRST, coalesce(plant#1537, ) ASC NULLS FIRST, isnull(plant#1537) ASC NULLS FIRST], false, 0
(153) Scan parquet
Output [4]: [plant#1542, product#1543, productionAspect#1545, systemId#1540]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(154) Project
Output [4]: [plant#1542.internalRefUUID AS _extract_internalRefUUID#6545, product#1543.internalRefUUID AS _extract_internalRefUUID#6542, productionAspect#1545.productMovementPlants.unitOfIssue.code AS _extract_code#6543, productionAspect#1545.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6544]
Input [4]: [plant#1542, product#1543, productionAspect#1545, systemId#1540]
(155) Exchange
Input [4]: [_extract_internalRefUUID#6545, _extract_internalRefUUID#6542, _extract_code#6543, _extract_internalRefUUID#6544]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6203]
(156) Project
Output [4]: [_extract_code#6543, _extract_internalRefUUID#6544, _extract_internalRefUUID#6542, _extract_internalRefUUID#6545]
Input [4]: [_extract_internalRefUUID#6545, _extract_internalRefUUID#6542, _extract_code#6543, _extract_internalRefUUID#6544]
(157) Exchange
Input [4]: [_extract_code#6543, _extract_internalRefUUID#6544, _extract_internalRefUUID#6542, _extract_internalRefUUID#6545]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6542, ), isnull(_extract_internalRefUUID#6542), coalesce(_extract_internalRefUUID#6545, ), isnull(_extract_internalRefUUID#6545), 37), ENSURE_REQUIREMENTS, [plan_id=7211]
(158) Sort
Input [4]: [_extract_code#6543, _extract_internalRefUUID#6544, _extract_internalRefUUID#6542, _extract_internalRefUUID#6545]
Arguments: [coalesce(_extract_internalRefUUID#6542, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6542) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6545, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6545) ASC NULLS FIRST], false, 0
(159) SortMergeJoin
Left keys [4]: [coalesce(product#1536, ), isnull(product#1536), coalesce(plant#1537, ), isnull(plant#1537)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6542, ), isnull(_extract_internalRefUUID#6542), coalesce(_extract_internalRefUUID#6545, ), isnull(_extract_internalRefUUID#6545)]
Join type: LeftOuter
Join condition: None
(160) Project
Output [4]: [product#1536, plant#1537, _extract_code#6543, _extract_internalRefUUID#6544]
Input [6]: [product#1536, plant#1537, _extract_code#6543, _extract_internalRefUUID#6544, _extract_internalRefUUID#6542, _extract_internalRefUUID#6545]
(161) Exchange
Input [4]: [product#1536, plant#1537, _extract_code#6543, _extract_internalRefUUID#6544]
Arguments: hashpartitioning(product#1536, 37), ENSURE_REQUIREMENTS, [plan_id=7218]
(162) Sort
Input [4]: [product#1536, plant#1537, _extract_code#6543, _extract_internalRefUUID#6544]
Arguments: [product#1536 ASC NULLS FIRST], false, 0
(163) Scan parquet
Output [4]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557, systemId#1550]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(164) Filter
Input [4]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557, systemId#1550]
Condition : isnotnull(internalUUID#1551)
(165) Project
Output [3]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557]
Input [4]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557, systemId#1550]
(166) Exchange
Input [3]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6210]
(167) Exchange
Input [3]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557]
Arguments: hashpartitioning(internalUUID#1551, 37), ENSURE_REQUIREMENTS, [plan_id=7219]
(168) Sort
Input [3]: [internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557]
Arguments: [internalUUID#1551 ASC NULLS FIRST], false, 0
(169) SortMergeJoin
Left keys [1]: [product#1536]
Right keys [1]: [internalUUID#1551]
Join type: LeftOuter
Join condition: None
(170) Project
Output [2]: [plant#1537, filter(unitOfMeasureConversions#1557, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6543) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6544)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1555.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1555.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1561]
Input [7]: [product#1536, plant#1537, _extract_code#6543, _extract_internalRefUUID#6544, internalUUID#1551, baseUnitOfMeasure#1555, unitOfMeasureConversions#1557]
(171) Generate
Input [2]: [plant#1537, filteredUnitOfMeasureConversions#1561]
Arguments: explode(filteredUnitOfMeasureConversions#1561.quantityNumerator), [plant#1537, filteredUnitOfMeasureConversions#1561], true, [quantityNumerator#1562]
(172) Project
Output [2]: [plant#1537, filteredUnitOfMeasureConversions#1561.quantityDenominator AS _extract_quantityDenominator#6252]
Input [3]: [plant#1537, filteredUnitOfMeasureConversions#1561, quantityNumerator#1562]
(173) Generate
Input [2]: [plant#1537, _extract_quantityDenominator#6252]
Arguments: explode(_extract_quantityDenominator#6252), [plant#1537], true, [quantityDenominator#1563]
(174) Project
Output [1]: [plant#1537]
Input [2]: [plant#1537, quantityDenominator#1563]
(175) HashAggregate
Input [1]: [plant#1537]
Keys [1]: [plant#1537]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1537]
(176) Exchange
Input [1]: [plant#1537]
Arguments: hashpartitioning(plant#1537, 37), ENSURE_REQUIREMENTS, [plan_id=7230]
(177) HashAggregate
Input [1]: [plant#1537]
Keys [1]: [plant#1537]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1537]
(178) BroadcastHashJoin
Left keys [1]: [plantUuid#1267]
Right keys [1]: [plant#1537]
Join type: Inner
Join condition: None
(179) Project
Output [3]: [plantUuid#1267, storageLocId#1273, storageLocUuid#1274]
Input [4]: [plantUuid#1267, storageLocId#1273, storageLocUuid#1274, plant#1537]
(180) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1324.internalRefUUID, ), isnull(plant#1324.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1267, ), isnull(plantUuid#1267)]
Join type: Inner
Join condition: None
(181) Generate
Input [9]: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326, plantUuid#1267, storageLocId#1273, storageLocUuid#1274]
Arguments: explode(filter(stockQuantities#1326, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#1274) AND (lambda x#1330.storageLocation.Id = storageLocId#1273)), lambda x#1330, false))), [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, plantUuid#1267], false, [stockQuantity#1331]
(182) ObjectHashAggregate
Input [7]: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, plantUuid#1267, stockQuantity#1331]
Keys [5]: [plantUuid#1267, internalUUID#1322, plant#1324, product#1323, systemId#1321]
Functions [2]: [partial_first(calculationDateTime#1325, false), partial_collect_list(stockQuantity#1331, 0, 0)]
Aggregate Attributes [3]: [first#7287, valueSet#7288, buf#7289]
Results [8]: [plantUuid#1267, internalUUID#1322, plant#1324, product#1323, systemId#1321, first#7290, valueSet#7291, buf#7292]
(183) ObjectHashAggregate
Input [8]: [plantUuid#1267, internalUUID#1322, plant#1324, product#1323, systemId#1321, first#7290, valueSet#7291, buf#7292]
Keys [5]: [plantUuid#1267, internalUUID#1322, plant#1324, product#1323, systemId#1321]
Functions [2]: [first(calculationDateTime#1325, false), collect_list(stockQuantity#1331, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1325)()#1345, collect_list(stockQuantity#1331, 0, 0)#1346]
Results [4]: [product#1323, plant#1324, first(calculationDateTime#1325)()#1345 AS calculationDateTime#1332, collect_list(stockQuantity#1331, 0, 0)#1346 AS stockQuantities#1333]
(184) Filter
Input [4]: [product#1323, plant#1324, calculationDateTime#1332, stockQuantities#1333]
Condition : ((size(stockQuantities#1333, true) > 0) AND isnotnull(calculationDateTime#1332))
(185) Generate
Input [4]: [product#1323, plant#1324, calculationDateTime#1332, stockQuantities#1333]
Arguments: explode(stockQuantities#1333), [product#1323, plant#1324, calculationDateTime#1332], false, [stockQuantity#1348]
(186) Filter
Input [4]: [product#1323, plant#1324, calculationDateTime#1332, stockQuantity#1348]
Condition : (((isnotnull(stockQuantity#1348.specialStockIndicator.code) AND isnotnull(stockQuantity#1348.stockType.code)) AND (stockQuantity#1348.specialStockIndicator.code = )) AND (stockQuantity#1348.stockType.code = 01))
(187) Project
Output [5]: [plant#1324.internalRefUUID AS plantUuid#1350, product#1323.internalRefUUID AS productUuid#1352, calculationDateTime#1332, stockQuantity#1348.storagelocation.id AS storageLocId#1353, stockQuantity#1348.quantity.measure AS quantity#1355]
Input [4]: [product#1323, plant#1324, calculationDateTime#1332, stockQuantity#1348]
(188) Exchange
Input [5]: [plantUuid#1350, productUuid#1352, calculationDateTime#1332, storageLocId#1353, quantity#1355]
Arguments: hashpartitioning(plantUuid#1350, productUuid#1352, 37), ENSURE_REQUIREMENTS, [plan_id=7267]
(189) Sort
Input [5]: [plantUuid#1350, productUuid#1352, calculationDateTime#1332, storageLocId#1353, quantity#1355]
Arguments: [plantUuid#1350 ASC NULLS FIRST, productUuid#1352 ASC NULLS FIRST], false, 0
(190) Scan parquet
Output [3]: [product#1367, plant#1368, orderDateTime#1369]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(191) Filter
Input [3]: [product#1367, plant#1368, orderDateTime#1369]
Condition : ((isnotnull(orderDateTime#1369) AND isnotnull(plant#1368)) AND isnotnull(product#1367))
(192) Exchange
Input [3]: [product#1367, plant#1368, orderDateTime#1369]
Arguments: hashpartitioning(product#1367, plant#1368, 37), REPARTITION_BY_NUM, [plan_id=6880]
(193) Exchange
Input [3]: [product#1367, plant#1368, orderDateTime#1369]
Arguments: hashpartitioning(coalesce(product#1367, ), isnull(product#1367), coalesce(plant#1368, ), isnull(plant#1368), 37), ENSURE_REQUIREMENTS, [plan_id=7247]
(194) Sort
Input [3]: [product#1367, plant#1368, orderDateTime#1369]
Arguments: [coalesce(product#1367, ) ASC NULLS FIRST, isnull(product#1367) ASC NULLS FIRST, coalesce(plant#1368, ) ASC NULLS FIRST, isnull(plant#1368) ASC NULLS FIRST], false, 0
(195) Scan parquet
Output [4]: [plant#1373, product#1374, productionAspect#1376, systemId#1371]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(196) Project
Output [4]: [plant#1373.internalRefUUID AS _extract_internalRefUUID#6548, product#1374.internalRefUUID AS _extract_internalRefUUID#6549, productionAspect#1376.productMovementPlants.unitOfIssue.code AS _extract_code#6546, productionAspect#1376.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6547]
Input [4]: [plant#1373, product#1374, productionAspect#1376, systemId#1371]
(197) Exchange
Input [4]: [_extract_internalRefUUID#6548, _extract_internalRefUUID#6549, _extract_code#6546, _extract_internalRefUUID#6547]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6235]
(198) Project
Output [4]: [_extract_code#6546, _extract_internalRefUUID#6547, _extract_internalRefUUID#6549, _extract_internalRefUUID#6548]
Input [4]: [_extract_internalRefUUID#6548, _extract_internalRefUUID#6549, _extract_code#6546, _extract_internalRefUUID#6547]
(199) Exchange
Input [4]: [_extract_code#6546, _extract_internalRefUUID#6547, _extract_internalRefUUID#6549, _extract_internalRefUUID#6548]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6549, ), isnull(_extract_internalRefUUID#6549), coalesce(_extract_internalRefUUID#6548, ), isnull(_extract_internalRefUUID#6548), 37), ENSURE_REQUIREMENTS, [plan_id=7248]
(200) Sort
Input [4]: [_extract_code#6546, _extract_internalRefUUID#6547, _extract_internalRefUUID#6549, _extract_internalRefUUID#6548]
Arguments: [coalesce(_extract_internalRefUUID#6549, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6549) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6548, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6548) ASC NULLS FIRST], false, 0
(201) SortMergeJoin
Left keys [4]: [coalesce(product#1367, ), isnull(product#1367), coalesce(plant#1368, ), isnull(plant#1368)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6549, ), isnull(_extract_internalRefUUID#6549), coalesce(_extract_internalRefUUID#6548, ), isnull(_extract_internalRefUUID#6548)]
Join type: LeftOuter
Join condition: None
(202) Project
Output [5]: [product#1367, plant#1368, orderDateTime#1369, _extract_code#6546, _extract_internalRefUUID#6547]
Input [7]: [product#1367, plant#1368, orderDateTime#1369, _extract_code#6546, _extract_internalRefUUID#6547, _extract_internalRefUUID#6549, _extract_internalRefUUID#6548]
(203) Exchange
Input [5]: [product#1367, plant#1368, orderDateTime#1369, _extract_code#6546, _extract_internalRefUUID#6547]
Arguments: hashpartitioning(product#1367, 37), ENSURE_REQUIREMENTS, [plan_id=7255]
(204) Sort
Input [5]: [product#1367, plant#1368, orderDateTime#1369, _extract_code#6546, _extract_internalRefUUID#6547]
Arguments: [product#1367 ASC NULLS FIRST], false, 0
(205) Scan parquet
Output [4]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388, systemId#1381]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(206) Filter
Input [4]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388, systemId#1381]
Condition : isnotnull(internalUUID#1382)
(207) Project
Output [3]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388]
Input [4]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388, systemId#1381]
(208) Exchange
Input [3]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6242]
(209) Exchange
Input [3]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388]
Arguments: hashpartitioning(internalUUID#1382, 37), ENSURE_REQUIREMENTS, [plan_id=7256]
(210) Sort
Input [3]: [internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388]
Arguments: [internalUUID#1382 ASC NULLS FIRST], false, 0
(211) SortMergeJoin
Left keys [1]: [product#1367]
Right keys [1]: [internalUUID#1382]
Join type: LeftOuter
Join condition: None
(212) Project
Output [4]: [product#1367, plant#1368, orderDateTime#1369, filter(unitOfMeasureConversions#1388, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6546) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6547)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1386.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1386.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1392]
Input [8]: [product#1367, plant#1368, orderDateTime#1369, _extract_code#6546, _extract_internalRefUUID#6547, internalUUID#1382, baseUnitOfMeasure#1386, unitOfMeasureConversions#1388]
(213) Generate
Input [4]: [product#1367, plant#1368, orderDateTime#1369, filteredUnitOfMeasureConversions#1392]
Arguments: explode(filteredUnitOfMeasureConversions#1392.quantityNumerator), [product#1367, plant#1368, orderDateTime#1369, filteredUnitOfMeasureConversions#1392], true, [quantityNumerator#1393]
(214) Project
Output [4]: [product#1367, plant#1368, orderDateTime#1369, filteredUnitOfMeasureConversions#1392.quantityDenominator AS _extract_quantityDenominator#6259]
Input [5]: [product#1367, plant#1368, orderDateTime#1369, filteredUnitOfMeasureConversions#1392, quantityNumerator#1393]
(215) Generate
Input [4]: [product#1367, plant#1368, orderDateTime#1369, _extract_quantityDenominator#6259]
Arguments: explode(_extract_quantityDenominator#6259), [product#1367, plant#1368, orderDateTime#1369], true, [quantityDenominator#1394]
(216) Project
Output [3]: [product#1367, plant#1368, orderDateTime#1369]
Input [4]: [product#1367, plant#1368, orderDateTime#1369, quantityDenominator#1394]
(217) Exchange
Input [3]: [product#1367, plant#1368, orderDateTime#1369]
Arguments: hashpartitioning(plant#1368, product#1367, 37), ENSURE_REQUIREMENTS, [plan_id=7268]
(218) Sort
Input [3]: [product#1367, plant#1368, orderDateTime#1369]
Arguments: [plant#1368 ASC NULLS FIRST, product#1367 ASC NULLS FIRST], false, 0
(219) SortMergeJoin
Left keys [2]: [plantUuid#1350, productUuid#1352]
Right keys [2]: [plant#1368, product#1367]
Join type: Inner
Join condition: (calculationDateTime#1332 <= orderDateTime#1369)
(220) Project
Output [5]: [plantUuid#1350 AS plant#1400, productUuid#1352 AS product#1401, storageLocId#1353, calculationDateTime#1332, quantity#1355]
Input [8]: [plantUuid#1350, productUuid#1352, calculationDateTime#1332, storageLocId#1353, quantity#1355, product#1367, plant#1368, orderDateTime#1369]
(221) Exchange
Input [5]: [plant#1400, product#1401, storageLocId#1353, calculationDateTime#1332, quantity#1355]
Arguments: hashpartitioning(coalesce(plant#1400, ), isnull(plant#1400), coalesce(product#1401, ), isnull(product#1401), coalesce(storageLocId#1353, ), isnull(storageLocId#1353), coalesce(calculationDateTime#1332, 1970-01-01 00:00:00), isnull(calculationDateTime#1332), 37), ENSURE_REQUIREMENTS, [plan_id=7341]
(222) Sort
Input [5]: [plant#1400, product#1401, storageLocId#1353, calculationDateTime#1332, quantity#1355]
Arguments: [coalesce(plant#1400, ) ASC NULLS FIRST, isnull(plant#1400) ASC NULLS FIRST, coalesce(product#1401, ) ASC NULLS FIRST, isnull(product#1401) ASC NULLS FIRST, coalesce(storageLocId#1353, ) ASC NULLS FIRST, isnull(storageLocId#1353) ASC NULLS FIRST, coalesce(calculationDateTime#1332, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1332) ASC NULLS FIRST], false, 0
(223) Scan parquet
Output [6]: [internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414, systemId#1409]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(224) Filter
Input [6]: [internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414, systemId#1409]
Condition : (isnotnull(plant#1412.internalRefUUID) AND isnotnull(product#1411.internalRefUUID))
(225) Project
Output [6]: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414]
Input [6]: [internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414, systemId#1409]
(226) Exchange
Input [6]: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6254]
(227) BroadcastExchange
Input [6]: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414]
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=7301]
(228) Scan parquet
Output [2]: [marketUnit#1415, distributionCenters#1421]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(229) Filter
Input [2]: [marketUnit#1415, distributionCenters#1421]
Condition : (((marketUnit#1415 <=> 10000_OP_PERF) AND (size(distributionCenters#1421, true) > 0)) AND isnotnull(distributionCenters#1421))
(230) Project
Output [1]: [distributionCenters#1421]
Input [2]: [marketUnit#1415, distributionCenters#1421]
(231) Exchange
Input [1]: [distributionCenters#1421]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6258]
(232) Generate
Input [1]: [distributionCenters#1421]
Arguments: explode(distributionCenters#1421), false, [distributionCenters#1437]
(233) Filter
Input [1]: [distributionCenters#1437]
Condition : (((size(distributionCenters#1437.storageLocations, true) > 0) AND isnotnull(distributionCenters#1437.storageLocations)) AND isnotnull(distributionCenters#1437.internalRefUUID))
(234) Project
Output [2]: [distributionCenters#1437.internalRefUUID AS _extract_internalRefUUID#6266, distributionCenters#1437.storageLocations AS _extract_storageLocations#6267]
Input [1]: [distributionCenters#1437]
(235) Generate
Input [2]: [_extract_internalRefUUID#6266, _extract_storageLocations#6267]
Arguments: explode(_extract_storageLocations#6267), [_extract_internalRefUUID#6266], false, [storageLocations#1438]
(236) Project
Output [3]: [_extract_internalRefUUID#6266 AS plantUuid#1440, storageLocations#1438.id AS storageLocId#1441, storageLocations#1438.internalRefUUID AS storageLocUuid#1442]
Input [2]: [_extract_internalRefUUID#6266, storageLocations#1438]
(237) BroadcastExchange
Input [3]: [plantUuid#1440, storageLocId#1441, storageLocUuid#1442]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7297]
(238) Scan parquet
Output [2]: [product#1443, plant#1444]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(239) Filter
Input [2]: [product#1443, plant#1444]
Condition : isnotnull(plant#1444)
(240) Exchange
Input [2]: [product#1443, plant#1444]
Arguments: hashpartitioning(product#1443, plant#1444, 37), REPARTITION_BY_NUM, [plan_id=6891]
(241) Exchange
Input [2]: [product#1443, plant#1444]
Arguments: hashpartitioning(coalesce(product#1443, ), isnull(product#1443), coalesce(plant#1444, ), isnull(plant#1444), 37), ENSURE_REQUIREMENTS, [plan_id=7274]
(242) Sort
Input [2]: [product#1443, plant#1444]
Arguments: [coalesce(product#1443, ) ASC NULLS FIRST, isnull(product#1443) ASC NULLS FIRST, coalesce(plant#1444, ) ASC NULLS FIRST, isnull(plant#1444) ASC NULLS FIRST], false, 0
(243) Scan parquet
Output [4]: [plant#1449, product#1450, productionAspect#1452, systemId#1447]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(244) Project
Output [4]: [plant#1449.internalRefUUID AS _extract_internalRefUUID#6553, product#1450.internalRefUUID AS _extract_internalRefUUID#6552, productionAspect#1452.productMovementPlants.unitOfIssue.code AS _extract_code#6550, productionAspect#1452.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6551]
Input [4]: [plant#1449, product#1450, productionAspect#1452, systemId#1447]
(245) Exchange
Input [4]: [_extract_internalRefUUID#6553, _extract_internalRefUUID#6552, _extract_code#6550, _extract_internalRefUUID#6551]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6270]
(246) Project
Output [4]: [_extract_code#6550, _extract_internalRefUUID#6551, _extract_internalRefUUID#6552, _extract_internalRefUUID#6553]
Input [4]: [_extract_internalRefUUID#6553, _extract_internalRefUUID#6552, _extract_code#6550, _extract_internalRefUUID#6551]
(247) Exchange
Input [4]: [_extract_code#6550, _extract_internalRefUUID#6551, _extract_internalRefUUID#6552, _extract_internalRefUUID#6553]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6552, ), isnull(_extract_internalRefUUID#6552), coalesce(_extract_internalRefUUID#6553, ), isnull(_extract_internalRefUUID#6553), 37), ENSURE_REQUIREMENTS, [plan_id=7275]
(248) Sort
Input [4]: [_extract_code#6550, _extract_internalRefUUID#6551, _extract_internalRefUUID#6552, _extract_internalRefUUID#6553]
Arguments: [coalesce(_extract_internalRefUUID#6552, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6552) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6553, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6553) ASC NULLS FIRST], false, 0
(249) SortMergeJoin
Left keys [4]: [coalesce(product#1443, ), isnull(product#1443), coalesce(plant#1444, ), isnull(plant#1444)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6552, ), isnull(_extract_internalRefUUID#6552), coalesce(_extract_internalRefUUID#6553, ), isnull(_extract_internalRefUUID#6553)]
Join type: LeftOuter
Join condition: None
(250) Project
Output [4]: [product#1443, plant#1444, _extract_code#6550, _extract_internalRefUUID#6551]
Input [6]: [product#1443, plant#1444, _extract_code#6550, _extract_internalRefUUID#6551, _extract_internalRefUUID#6552, _extract_internalRefUUID#6553]
(251) Exchange
Input [4]: [product#1443, plant#1444, _extract_code#6550, _extract_internalRefUUID#6551]
Arguments: hashpartitioning(product#1443, 37), ENSURE_REQUIREMENTS, [plan_id=7282]
(252) Sort
Input [4]: [product#1443, plant#1444, _extract_code#6550, _extract_internalRefUUID#6551]
Arguments: [product#1443 ASC NULLS FIRST], false, 0
(253) Scan parquet
Output [4]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464, systemId#1457]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(254) Filter
Input [4]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464, systemId#1457]
Condition : isnotnull(internalUUID#1458)
(255) Project
Output [3]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464]
Input [4]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464, systemId#1457]
(256) Exchange
Input [3]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6277]
(257) Exchange
Input [3]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464]
Arguments: hashpartitioning(internalUUID#1458, 37), ENSURE_REQUIREMENTS, [plan_id=7283]
(258) Sort
Input [3]: [internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464]
Arguments: [internalUUID#1458 ASC NULLS FIRST], false, 0
(259) SortMergeJoin
Left keys [1]: [product#1443]
Right keys [1]: [internalUUID#1458]
Join type: LeftOuter
Join condition: None
(260) Project
Output [2]: [plant#1444, filter(unitOfMeasureConversions#1464, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6550) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6551)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1462.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1462.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1468]
Input [7]: [product#1443, plant#1444, _extract_code#6550, _extract_internalRefUUID#6551, internalUUID#1458, baseUnitOfMeasure#1462, unitOfMeasureConversions#1464]
(261) Generate
Input [2]: [plant#1444, filteredUnitOfMeasureConversions#1468]
Arguments: explode(filteredUnitOfMeasureConversions#1468.quantityNumerator), [plant#1444, filteredUnitOfMeasureConversions#1468], true, [quantityNumerator#1469]
(262) Project
Output [2]: [plant#1444, filteredUnitOfMeasureConversions#1468.quantityDenominator AS _extract_quantityDenominator#6268]
Input [3]: [plant#1444, filteredUnitOfMeasureConversions#1468, quantityNumerator#1469]
(263) Generate
Input [2]: [plant#1444, _extract_quantityDenominator#6268]
Arguments: explode(_extract_quantityDenominator#6268), [plant#1444], true, [quantityDenominator#1470]
(264) Project
Output [1]: [plant#1444]
Input [2]: [plant#1444, quantityDenominator#1470]
(265) HashAggregate
Input [1]: [plant#1444]
Keys [1]: [plant#1444]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1444]
(266) Exchange
Input [1]: [plant#1444]
Arguments: hashpartitioning(plant#1444, 37), ENSURE_REQUIREMENTS, [plan_id=7294]
(267) HashAggregate
Input [1]: [plant#1444]
Keys [1]: [plant#1444]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1444]
(268) BroadcastHashJoin
Left keys [1]: [plantUuid#1440]
Right keys [1]: [plant#1444]
Join type: Inner
Join condition: None
(269) Project
Output [3]: [plantUuid#1440, storageLocId#1441, storageLocUuid#1442]
Input [4]: [plantUuid#1440, storageLocId#1441, storageLocUuid#1442, plant#1444]
(270) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1412.internalRefUUID, ), isnull(plant#1412.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1440, ), isnull(plantUuid#1440)]
Join type: Inner
Join condition: None
(271) Generate
Input [9]: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414, plantUuid#1440, storageLocId#1441, storageLocUuid#1442]
Arguments: explode(filter(stockQuantities#1414, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#1442) AND (lambda x#1330.storageLocation.Id = storageLocId#1441)), lambda x#1330, false))), [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, plantUuid#1440], false, [stockQuantity#1473]
(272) ObjectHashAggregate
Input [7]: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, plantUuid#1440, stockQuantity#1473]
Keys [5]: [plantUuid#1440, internalUUID#1410, plant#1412, product#1411, systemId#1409]
Functions [2]: [partial_first(calculationDateTime#1413, false), partial_collect_list(stockQuantity#1473, 0, 0)]
Aggregate Attributes [3]: [first#7295, valueSet#7296, buf#7297]
Results [8]: [plantUuid#1440, internalUUID#1410, plant#1412, product#1411, systemId#1409, first#7298, valueSet#7299, buf#7300]
(273) ObjectHashAggregate
Input [8]: [plantUuid#1440, internalUUID#1410, plant#1412, product#1411, systemId#1409, first#7298, valueSet#7299, buf#7300]
Keys [5]: [plantUuid#1440, internalUUID#1410, plant#1412, product#1411, systemId#1409]
Functions [2]: [first(calculationDateTime#1413, false), collect_list(stockQuantity#1473, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1413)()#1345, collect_list(stockQuantity#1473, 0, 0)#1346]
Results [4]: [product#1411, plant#1412, first(calculationDateTime#1413)()#1345 AS calculationDateTime#1474, collect_list(stockQuantity#1473, 0, 0)#1346 AS stockQuantities#1475]
(274) Filter
Input [4]: [product#1411, plant#1412, calculationDateTime#1474, stockQuantities#1475]
Condition : ((size(stockQuantities#1475, true) > 0) AND isnotnull(calculationDateTime#1474))
(275) Generate
Input [4]: [product#1411, plant#1412, calculationDateTime#1474, stockQuantities#1475]
Arguments: explode(stockQuantities#1475), [product#1411, plant#1412, calculationDateTime#1474], false, [stockQuantity#1476]
(276) Filter
Input [4]: [product#1411, plant#1412, calculationDateTime#1474, stockQuantity#1476]
Condition : (((isnotnull(stockQuantity#1476.specialStockIndicator.code) AND isnotnull(stockQuantity#1476.stockType.code)) AND (stockQuantity#1476.specialStockIndicator.code = )) AND (stockQuantity#1476.stockType.code = 01))
(277) Project
Output [4]: [plant#1412.internalRefUUID AS plantUuid#1478, product#1411.internalRefUUID AS productUuid#1480, calculationDateTime#1474, stockQuantity#1476.storagelocation.id AS storageLocId#1481]
Input [4]: [product#1411, plant#1412, calculationDateTime#1474, stockQuantity#1476]
(278) Exchange
Input [4]: [plantUuid#1478, productUuid#1480, calculationDateTime#1474, storageLocId#1481]
Arguments: hashpartitioning(plantUuid#1478, productUuid#1480, 37), ENSURE_REQUIREMENTS, [plan_id=7331]
(279) Sort
Input [4]: [plantUuid#1478, productUuid#1480, calculationDateTime#1474, storageLocId#1481]
Arguments: [plantUuid#1478 ASC NULLS FIRST, productUuid#1480 ASC NULLS FIRST], false, 0
(280) Scan parquet
Output [3]: [product#1486, plant#1487, orderDateTime#1488]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(281) Filter
Input [3]: [product#1486, plant#1487, orderDateTime#1488]
Condition : ((isnotnull(orderDateTime#1488) AND isnotnull(plant#1487)) AND isnotnull(product#1486))
(282) Exchange
Input [3]: [product#1486, plant#1487, orderDateTime#1488]
Arguments: hashpartitioning(product#1486, plant#1487, 37), REPARTITION_BY_NUM, [plan_id=6912]
(283) Exchange
Input [3]: [product#1486, plant#1487, orderDateTime#1488]
Arguments: hashpartitioning(coalesce(product#1486, ), isnull(product#1486), coalesce(plant#1487, ), isnull(plant#1487), 37), ENSURE_REQUIREMENTS, [plan_id=7311]
(284) Sort
Input [3]: [product#1486, plant#1487, orderDateTime#1488]
Arguments: [coalesce(product#1486, ) ASC NULLS FIRST, isnull(product#1486) ASC NULLS FIRST, coalesce(plant#1487, ) ASC NULLS FIRST, isnull(plant#1487) ASC NULLS FIRST], false, 0
(285) Scan parquet
Output [4]: [plant#1492, product#1493, productionAspect#1495, systemId#1490]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(286) Project
Output [4]: [plant#1492.internalRefUUID AS _extract_internalRefUUID#6557, product#1493.internalRefUUID AS _extract_internalRefUUID#6554, productionAspect#1495.productMovementPlants.unitOfIssue.code AS _extract_code#6555, productionAspect#1495.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6556]
Input [4]: [plant#1492, product#1493, productionAspect#1495, systemId#1490]
(287) Exchange
Input [4]: [_extract_internalRefUUID#6557, _extract_internalRefUUID#6554, _extract_code#6555, _extract_internalRefUUID#6556]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6302]
(288) Project
Output [4]: [_extract_code#6555, _extract_internalRefUUID#6556, _extract_internalRefUUID#6554, _extract_internalRefUUID#6557]
Input [4]: [_extract_internalRefUUID#6557, _extract_internalRefUUID#6554, _extract_code#6555, _extract_internalRefUUID#6556]
(289) Exchange
Input [4]: [_extract_code#6555, _extract_internalRefUUID#6556, _extract_internalRefUUID#6554, _extract_internalRefUUID#6557]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6554, ), isnull(_extract_internalRefUUID#6554), coalesce(_extract_internalRefUUID#6557, ), isnull(_extract_internalRefUUID#6557), 37), ENSURE_REQUIREMENTS, [plan_id=7312]
(290) Sort
Input [4]: [_extract_code#6555, _extract_internalRefUUID#6556, _extract_internalRefUUID#6554, _extract_internalRefUUID#6557]
Arguments: [coalesce(_extract_internalRefUUID#6554, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6554) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6557, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6557) ASC NULLS FIRST], false, 0
(291) SortMergeJoin
Left keys [4]: [coalesce(product#1486, ), isnull(product#1486), coalesce(plant#1487, ), isnull(plant#1487)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6554, ), isnull(_extract_internalRefUUID#6554), coalesce(_extract_internalRefUUID#6557, ), isnull(_extract_internalRefUUID#6557)]
Join type: LeftOuter
Join condition: None
(292) Project
Output [5]: [product#1486, plant#1487, orderDateTime#1488, _extract_code#6555, _extract_internalRefUUID#6556]
Input [7]: [product#1486, plant#1487, orderDateTime#1488, _extract_code#6555, _extract_internalRefUUID#6556, _extract_internalRefUUID#6554, _extract_internalRefUUID#6557]
(293) Exchange
Input [5]: [product#1486, plant#1487, orderDateTime#1488, _extract_code#6555, _extract_internalRefUUID#6556]
Arguments: hashpartitioning(product#1486, 37), ENSURE_REQUIREMENTS, [plan_id=7319]
(294) Sort
Input [5]: [product#1486, plant#1487, orderDateTime#1488, _extract_code#6555, _extract_internalRefUUID#6556]
Arguments: [product#1486 ASC NULLS FIRST], false, 0
(295) Scan parquet
Output [4]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507, systemId#1500]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(296) Filter
Input [4]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507, systemId#1500]
Condition : isnotnull(internalUUID#1501)
(297) Project
Output [3]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507]
Input [4]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507, systemId#1500]
(298) Exchange
Input [3]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6309]
(299) Exchange
Input [3]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507]
Arguments: hashpartitioning(internalUUID#1501, 37), ENSURE_REQUIREMENTS, [plan_id=7320]
(300) Sort
Input [3]: [internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507]
Arguments: [internalUUID#1501 ASC NULLS FIRST], false, 0
(301) SortMergeJoin
Left keys [1]: [product#1486]
Right keys [1]: [internalUUID#1501]
Join type: LeftOuter
Join condition: None
(302) Project
Output [4]: [product#1486, plant#1487, orderDateTime#1488, filter(unitOfMeasureConversions#1507, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6555) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6556)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1505.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1505.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1511]
Input [8]: [product#1486, plant#1487, orderDateTime#1488, _extract_code#6555, _extract_internalRefUUID#6556, internalUUID#1501, baseUnitOfMeasure#1505, unitOfMeasureConversions#1507]
(303) Generate
Input [4]: [product#1486, plant#1487, orderDateTime#1488, filteredUnitOfMeasureConversions#1511]
Arguments: explode(filteredUnitOfMeasureConversions#1511.quantityNumerator), [product#1486, plant#1487, orderDateTime#1488, filteredUnitOfMeasureConversions#1511], true, [quantityNumerator#1512]
(304) Project
Output [4]: [product#1486, plant#1487, orderDateTime#1488, filteredUnitOfMeasureConversions#1511.quantityDenominator AS _extract_quantityDenominator#6275]
Input [5]: [product#1486, plant#1487, orderDateTime#1488, filteredUnitOfMeasureConversions#1511, quantityNumerator#1512]
(305) Generate
Input [4]: [product#1486, plant#1487, orderDateTime#1488, _extract_quantityDenominator#6275]
Arguments: explode(_extract_quantityDenominator#6275), [product#1486, plant#1487, orderDateTime#1488], true, [quantityDenominator#1513]
(306) Project
Output [3]: [product#1486, plant#1487, orderDateTime#1488]
Input [4]: [product#1486, plant#1487, orderDateTime#1488, quantityDenominator#1513]
(307) Exchange
Input [3]: [product#1486, plant#1487, orderDateTime#1488]
Arguments: hashpartitioning(plant#1487, product#1486, 37), ENSURE_REQUIREMENTS, [plan_id=7332]
(308) Sort
Input [3]: [product#1486, plant#1487, orderDateTime#1488]
Arguments: [plant#1487 ASC NULLS FIRST, product#1486 ASC NULLS FIRST], false, 0
(309) SortMergeJoin
Left keys [2]: [plantUuid#1478, productUuid#1480]
Right keys [2]: [plant#1487, product#1486]
Join type: Inner
Join condition: (calculationDateTime#1474 <= orderDateTime#1488)
(310) Project
Output [4]: [plantUuid#1478 AS plant#1516, productUuid#1480 AS product#1517, storageLocId#1481, calculationDateTime#1474]
Input [7]: [plantUuid#1478, productUuid#1480, calculationDateTime#1474, storageLocId#1481, product#1486, plant#1487, orderDateTime#1488]
(311) HashAggregate
Input [4]: [plant#1516, product#1517, storageLocId#1481, calculationDateTime#1474]
Keys [3]: [plant#1516, product#1517, storageLocId#1481]
Functions [1]: [partial_max(calculationDateTime#1474)]
Aggregate Attributes [1]: [max#7293]
Results [4]: [plant#1516, product#1517, storageLocId#1481, max#7294]
(312) HashAggregate
Input [4]: [plant#1516, product#1517, storageLocId#1481, max#7294]
Keys [3]: [plant#1516, product#1517, storageLocId#1481]
Functions [1]: [max(calculationDateTime#1474)]
Aggregate Attributes [1]: [max(calculationDateTime#1474)#1408]
Results [4]: [plant#1516, product#1517, storageLocId#1481, max(calculationDateTime#1474)#1408 AS max_calc_datetime#1402]
(313) Exchange
Input [4]: [plant#1516, product#1517, storageLocId#1481, max_calc_datetime#1402]
Arguments: hashpartitioning(coalesce(plant#1516, ), isnull(plant#1516), coalesce(product#1517, ), isnull(product#1517), coalesce(storageLocId#1481, ), isnull(storageLocId#1481), coalesce(max_calc_datetime#1402, 1970-01-01 00:00:00), isnull(max_calc_datetime#1402), 37), ENSURE_REQUIREMENTS, [plan_id=7342]
(314) Sort
Input [4]: [plant#1516, product#1517, storageLocId#1481, max_calc_datetime#1402]
Arguments: [coalesce(plant#1516, ) ASC NULLS FIRST, isnull(plant#1516) ASC NULLS FIRST, coalesce(product#1517, ) ASC NULLS FIRST, isnull(product#1517) ASC NULLS FIRST, coalesce(storageLocId#1481, ) ASC NULLS FIRST, isnull(storageLocId#1481) ASC NULLS FIRST, coalesce(max_calc_datetime#1402, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1402) ASC NULLS FIRST], false, 0
(315) SortMergeJoin
Left keys [8]: [coalesce(plant#1400, ), isnull(plant#1400), coalesce(product#1401, ), isnull(product#1401), coalesce(storageLocId#1353, ), isnull(storageLocId#1353), coalesce(calculationDateTime#1332, 1970-01-01 00:00:00), isnull(calculationDateTime#1332)]
Right keys [8]: [coalesce(plant#1516, ), isnull(plant#1516), coalesce(product#1517, ), isnull(product#1517), coalesce(storageLocId#1481, ), isnull(storageLocId#1481), coalesce(max_calc_datetime#1402, 1970-01-01 00:00:00), isnull(max_calc_datetime#1402)]
Join type: Inner
Join condition: None
(316) Project
Output [4]: [plant#1400, product#1401, calculationDateTime#1332, quantity#1355]
Input [9]: [plant#1400, product#1401, storageLocId#1353, calculationDateTime#1332, quantity#1355, plant#1516, product#1517, storageLocId#1481, max_calc_datetime#1402]
(317) HashAggregate
Input [4]: [plant#1400, product#1401, calculationDateTime#1332, quantity#1355]
Keys [2]: [product#1401, plant#1400]
Functions [2]: [partial_min(calculationDateTime#1332), partial_sum(quantity#1355)]
Aggregate Attributes [2]: [min#7283, sum#7284]
Results [4]: [product#1401, plant#1400, min#7285, sum#7286]
(318) Exchange
Input [4]: [product#1401, plant#1400, min#7285, sum#7286]
Arguments: hashpartitioning(product#1401, plant#1400, 37), ENSURE_REQUIREMENTS, [plan_id=7349]
(319) HashAggregate
Input [4]: [product#1401, plant#1400, min#7285, sum#7286]
Keys [2]: [product#1401, plant#1400]
Functions [2]: [min(calculationDateTime#1332), sum(quantity#1355)]
Aggregate Attributes [2]: [min(calculationDateTime#1332)#1534, sum(quantity#1355)#1533]
Results [4]: [product#1401, plant#1400, min(calculationDateTime#1332)#1534 AS minCalculationDateTime#1527, round(sum(quantity#1355)#1533, 0) AS roundedQuantitySum#1535]
(320) Sort
Input [4]: [product#1401, plant#1400, minCalculationDateTime#1527, roundedQuantitySum#1535]
Arguments: [product#1401 ASC NULLS FIRST, plant#1400 ASC NULLS FIRST], false, 0
(321) SortMergeJoin
Left keys [2]: [product#1127, plant#1128]
Right keys [2]: [product#1401, plant#1400]
Join type: LeftOuter
Join condition: None
(322) Project
Output [5]: [product#1127, plant#1128, outboundUnit#1218, CASE WHEN isnotnull(minCalculationDateTime#1527) THEN minCalculationDateTime#1527 ELSE orderDateTime#1129 END AS stockDatetime#1569, CASE WHEN isnotnull(roundedQuantitySum#1535) THEN array(roundedQuantitySum#1535) ELSE [0.0] END AS stockBatchQuantities#1570]
Input [8]: [product#1127, plant#1128, orderDateTime#1129, outboundUnit#1218, product#1401, plant#1400, minCalculationDateTime#1527, roundedQuantitySum#1535]
(323) Exchange
Input [5]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570]
Arguments: hashpartitioning(coalesce(plant#1128, ), isnull(plant#1128), coalesce(product#1127, ), isnull(product#1127), 37), ENSURE_REQUIREMENTS, [plan_id=7541]
(324) Sort
Input [5]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570]
Arguments: [coalesce(plant#1128, ) ASC NULLS FIRST, isnull(plant#1128) ASC NULLS FIRST, coalesce(product#1127, ) ASC NULLS FIRST, isnull(product#1127) ASC NULLS FIRST], false, 0
(325) Scan parquet
Output [3]: [product#2711, plant#2712, orderDateTime#2713]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(326) Exchange
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: hashpartitioning(product#2711, plant#2712, 37), REPARTITION_BY_NUM, [plan_id=6327]
(327) Exchange
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: hashpartitioning(coalesce(product#2711, ), isnull(product#2711), coalesce(plant#2712, ), isnull(plant#2712), 37), ENSURE_REQUIREMENTS, [plan_id=7359]
(328) Sort
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: [coalesce(product#2711, ) ASC NULLS FIRST, isnull(product#2711) ASC NULLS FIRST, coalesce(plant#2712, ) ASC NULLS FIRST, isnull(plant#2712) ASC NULLS FIRST], false, 0
(329) Project
Output [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Input [9]: [internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723, systemId#2715]
(330) Exchange
Input [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6330]
(331) Project
Output [1]: [struct(systemId, systemId#2715, internalUUID, internalUUID#2716, plant, plant#2717, product, product#2718, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#2719, productionAspect, productionAspect#2720, salesPlant, salesPlant#2721, listing, listing#2722, sourceOfSupplyCategory, sourceOfSupplyCategory#2723) AS productPlant#2724]
Input [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
(332) Exchange
Input [1]: [productPlant#2724]
Arguments: hashpartitioning(coalesce(productPlant#2724.product.internalRefUUID, ), isnull(productPlant#2724.product.internalRefUUID), coalesce(productPlant#2724.plant.internalRefUUID, ), isnull(productPlant#2724.plant.internalRefUUID), 37), ENSURE_REQUIREMENTS, [plan_id=7360]
(333) Sort
Input [1]: [productPlant#2724]
Arguments: [coalesce(productPlant#2724.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#2724.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#2724.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#2724.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(334) SortMergeJoin
Left keys [4]: [coalesce(product#2711, ), isnull(product#2711), coalesce(plant#2712, ), isnull(plant#2712)]
Right keys [4]: [coalesce(productPlant#2724.product.internalRefUUID, ), isnull(productPlant#2724.product.internalRefUUID), coalesce(productPlant#2724.plant.internalRefUUID, ), isnull(productPlant#2724.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(335) Exchange
Input [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: hashpartitioning(product#2711, 37), ENSURE_REQUIREMENTS, [plan_id=7366]
(336) Sort
Input [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: [product#2711 ASC NULLS FIRST], false, 0
(337) Scan parquet
Output [4]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732, systemId#2725]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(338) Filter
Input [4]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732, systemId#2725]
Condition : isnotnull(internalUUID#2726)
(339) Project
Output [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Input [4]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732, systemId#2725]
(340) Exchange
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6336]
(341) Exchange
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: hashpartitioning(internalUUID#2726, 37), ENSURE_REQUIREMENTS, [plan_id=7367]
(342) Sort
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: [internalUUID#2726 ASC NULLS FIRST], false, 0
(343) SortMergeJoin
Left keys [1]: [product#2711]
Right keys [1]: [internalUUID#2726]
Join type: LeftOuter
Join condition: None
(344) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filter(unitOfMeasureConversions#2732, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2730.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2730.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2736]
Input [7]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
(345) Project
Output [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filteredUnitOfMeasureConversions#2736.quantityDenominator AS _extract_quantityDenominator#6558, filteredUnitOfMeasureConversions#2736.quantityNumerator AS _extract_quantityNumerator#6559]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filteredUnitOfMeasureConversions#2736]
(346) Generate
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#6558, _extract_quantityNumerator#6559]
Arguments: explode(_extract_quantityNumerator#6559), [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#6558], true, [quantityNumerator#2737]
(347) Generate
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#6558, quantityNumerator#2737]
Arguments: explode(_extract_quantityDenominator#6558), [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, quantityNumerator#2737], true, [quantityDenominator#2738]
(348) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, (cast(quantityNumerator#2737 as double) / cast(quantityDenominator#2738 as double)) AS outboundUnit#2739]
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, quantityNumerator#2737, quantityDenominator#2738]
(349) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, CASE WHEN (isnull(outboundUnit#2739) OR (outboundUnit#2739 <= 0.0)) THEN 1.0 ELSE outboundUnit#2739 END AS outboundUnit#2740]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2739]
(350) Exchange
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740]
Arguments: hashpartitioning(product#2711, plant#2712, 37), ENSURE_REQUIREMENTS, [plan_id=7521]
(351) Sort
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740]
Arguments: [product#2711 ASC NULLS FIRST, plant#2712 ASC NULLS FIRST], false, 0
(352) Scan parquet
Output [6]: [internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, systemId#2741]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(353) Filter
Input [6]: [internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, systemId#2741]
Condition : (isnotnull(plant#2744.internalRefUUID) AND isnotnull(product#2743.internalRefUUID))
(354) Project
Output [6]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746]
Input [6]: [internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, systemId#2741]
(355) Exchange
Input [6]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6347]
(356) BroadcastExchange
Input [6]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746]
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=7405]
(357) Scan parquet
Output [2]: [marketUnit#2747, distributionCenters#2753]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(358) Filter
Input [2]: [marketUnit#2747, distributionCenters#2753]
Condition : (((marketUnit#2747 <=> 10000_OP_PERF) AND (size(distributionCenters#2753, true) > 0)) AND isnotnull(distributionCenters#2753))
(359) Project
Output [1]: [distributionCenters#2753]
Input [2]: [marketUnit#2747, distributionCenters#2753]
(360) Exchange
Input [1]: [distributionCenters#2753]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6351]
(361) Generate
Input [1]: [distributionCenters#2753]
Arguments: explode(distributionCenters#2753), false, [distributionCenters#2769]
(362) Filter
Input [1]: [distributionCenters#2769]
Condition : (((size(distributionCenters#2769.storageLocations, true) > 0) AND isnotnull(distributionCenters#2769.storageLocations)) AND isnotnull(distributionCenters#2769.internalRefUUID))
(363) Project
Output [2]: [distributionCenters#2769.internalRefUUID AS _extract_internalRefUUID#6283, distributionCenters#2769.storageLocations AS _extract_storageLocations#6284]
Input [1]: [distributionCenters#2769]
(364) Generate
Input [2]: [_extract_internalRefUUID#6283, _extract_storageLocations#6284]
Arguments: explode(_extract_storageLocations#6284), [_extract_internalRefUUID#6283], false, [storageLocations#2770]
(365) Project
Output [3]: [_extract_internalRefUUID#6283 AS plantUuid#2772, storageLocations#2770.id AS storageLocId#2773, storageLocations#2770.internalRefUUID AS storageLocUuid#2774]
Input [2]: [_extract_internalRefUUID#6283, storageLocations#2770]
(366) BroadcastExchange
Input [3]: [plantUuid#2772, storageLocId#2773, storageLocUuid#2774]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7401]
(367) Scan parquet
Output [2]: [product#2775, plant#2776]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(368) Filter
Input [2]: [product#2775, plant#2776]
Condition : isnotnull(plant#2776)
(369) Exchange
Input [2]: [product#2775, plant#2776]
Arguments: hashpartitioning(product#2775, plant#2776, 37), REPARTITION_BY_NUM, [plan_id=6931]
(370) Exchange
Input [2]: [product#2775, plant#2776]
Arguments: hashpartitioning(coalesce(product#2775, ), isnull(product#2775), coalesce(plant#2776, ), isnull(plant#2776), 37), ENSURE_REQUIREMENTS, [plan_id=7378]
(371) Sort
Input [2]: [product#2775, plant#2776]
Arguments: [coalesce(product#2775, ) ASC NULLS FIRST, isnull(product#2775) ASC NULLS FIRST, coalesce(plant#2776, ) ASC NULLS FIRST, isnull(plant#2776) ASC NULLS FIRST], false, 0
(372) Scan parquet
Output [4]: [plant#2781, product#2782, productionAspect#2784, systemId#2779]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(373) Project
Output [4]: [plant#2781.internalRefUUID AS _extract_internalRefUUID#6560, product#2782.internalRefUUID AS _extract_internalRefUUID#6561, productionAspect#2784.productMovementPlants.unitOfIssue.code AS _extract_code#6562, productionAspect#2784.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6563]
Input [4]: [plant#2781, product#2782, productionAspect#2784, systemId#2779]
(374) Exchange
Input [4]: [_extract_internalRefUUID#6560, _extract_internalRefUUID#6561, _extract_code#6562, _extract_internalRefUUID#6563]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6363]
(375) Project
Output [4]: [_extract_code#6562, _extract_internalRefUUID#6563, _extract_internalRefUUID#6561, _extract_internalRefUUID#6560]
Input [4]: [_extract_internalRefUUID#6560, _extract_internalRefUUID#6561, _extract_code#6562, _extract_internalRefUUID#6563]
(376) Exchange
Input [4]: [_extract_code#6562, _extract_internalRefUUID#6563, _extract_internalRefUUID#6561, _extract_internalRefUUID#6560]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6561, ), isnull(_extract_internalRefUUID#6561), coalesce(_extract_internalRefUUID#6560, ), isnull(_extract_internalRefUUID#6560), 37), ENSURE_REQUIREMENTS, [plan_id=7379]
(377) Sort
Input [4]: [_extract_code#6562, _extract_internalRefUUID#6563, _extract_internalRefUUID#6561, _extract_internalRefUUID#6560]
Arguments: [coalesce(_extract_internalRefUUID#6561, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6561) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6560, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6560) ASC NULLS FIRST], false, 0
(378) SortMergeJoin
Left keys [4]: [coalesce(product#2775, ), isnull(product#2775), coalesce(plant#2776, ), isnull(plant#2776)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6561, ), isnull(_extract_internalRefUUID#6561), coalesce(_extract_internalRefUUID#6560, ), isnull(_extract_internalRefUUID#6560)]
Join type: LeftOuter
Join condition: None
(379) Project
Output [4]: [product#2775, plant#2776, _extract_code#6562, _extract_internalRefUUID#6563]
Input [6]: [product#2775, plant#2776, _extract_code#6562, _extract_internalRefUUID#6563, _extract_internalRefUUID#6561, _extract_internalRefUUID#6560]
(380) Exchange
Input [4]: [product#2775, plant#2776, _extract_code#6562, _extract_internalRefUUID#6563]
Arguments: hashpartitioning(product#2775, 37), ENSURE_REQUIREMENTS, [plan_id=7386]
(381) Sort
Input [4]: [product#2775, plant#2776, _extract_code#6562, _extract_internalRefUUID#6563]
Arguments: [product#2775 ASC NULLS FIRST], false, 0
(382) Scan parquet
Output [4]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796, systemId#2789]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(383) Filter
Input [4]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796, systemId#2789]
Condition : isnotnull(internalUUID#2790)
(384) Project
Output [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Input [4]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796, systemId#2789]
(385) Exchange
Input [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6370]
(386) Exchange
Input [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Arguments: hashpartitioning(internalUUID#2790, 37), ENSURE_REQUIREMENTS, [plan_id=7387]
(387) Sort
Input [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Arguments: [internalUUID#2790 ASC NULLS FIRST], false, 0
(388) SortMergeJoin
Left keys [1]: [product#2775]
Right keys [1]: [internalUUID#2790]
Join type: LeftOuter
Join condition: None
(389) Project
Output [2]: [plant#2776, filter(unitOfMeasureConversions#2796, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6562) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6563)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2794.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2794.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2800]
Input [7]: [product#2775, plant#2776, _extract_code#6562, _extract_internalRefUUID#6563, internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
(390) Generate
Input [2]: [plant#2776, filteredUnitOfMeasureConversions#2800]
Arguments: explode(filteredUnitOfMeasureConversions#2800.quantityNumerator), [plant#2776, filteredUnitOfMeasureConversions#2800], true, [quantityNumerator#2801]
(391) Project
Output [2]: [plant#2776, filteredUnitOfMeasureConversions#2800.quantityDenominator AS _extract_quantityDenominator#6285]
Input [3]: [plant#2776, filteredUnitOfMeasureConversions#2800, quantityNumerator#2801]
(392) Generate
Input [2]: [plant#2776, _extract_quantityDenominator#6285]
Arguments: explode(_extract_quantityDenominator#6285), [plant#2776], true, [quantityDenominator#2802]
(393) Project
Output [1]: [plant#2776]
Input [2]: [plant#2776, quantityDenominator#2802]
(394) HashAggregate
Input [1]: [plant#2776]
Keys [1]: [plant#2776]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2776]
(395) Exchange
Input [1]: [plant#2776]
Arguments: hashpartitioning(plant#2776, 37), ENSURE_REQUIREMENTS, [plan_id=7398]
(396) HashAggregate
Input [1]: [plant#2776]
Keys [1]: [plant#2776]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2776]
(397) BroadcastHashJoin
Left keys [1]: [plantUuid#2772]
Right keys [1]: [plant#2776]
Join type: Inner
Join condition: None
(398) Project
Output [3]: [plantUuid#2772, storageLocId#2773, storageLocUuid#2774]
Input [4]: [plantUuid#2772, storageLocId#2773, storageLocUuid#2774, plant#2776]
(399) BroadcastHashJoin
Left keys [2]: [coalesce(plant#2744.internalRefUUID, ), isnull(plant#2744.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#2772, ), isnull(plantUuid#2772)]
Join type: Inner
Join condition: None
(400) Generate
Input [9]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, plantUuid#2772, storageLocId#2773, storageLocUuid#2774]
Arguments: explode(filter(stockQuantities#2746, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#2774) AND (lambda x#1330.storageLocation.Id = storageLocId#2773)), lambda x#1330, false))), [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, plantUuid#2772], false, [stockQuantity#2805]
(401) ObjectHashAggregate
Input [7]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, plantUuid#2772, stockQuantity#2805]
Keys [5]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741]
Functions [2]: [partial_first(calculationDateTime#2745, false), partial_collect_list(stockQuantity#2805, 0, 0)]
Aggregate Attributes [3]: [first#4608, valueSet#4609, buf#4610]
Results [8]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741, first#4611, valueSet#4612, buf#4613]
(402) ObjectHashAggregate
Input [8]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741, first#4611, valueSet#4612, buf#4613]
Keys [5]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741]
Functions [2]: [first(calculationDateTime#2745, false), collect_list(stockQuantity#2805, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#2745)()#1345, collect_list(stockQuantity#2805, 0, 0)#1346]
Results [4]: [product#2743, plant#2744, first(calculationDateTime#2745)()#1345 AS calculationDateTime#2806, collect_list(stockQuantity#2805, 0, 0)#1346 AS stockQuantities#2807]
(403) Filter
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantities#2807]
Condition : ((size(stockQuantities#2807, true) > 0) AND isnotnull(calculationDateTime#2806))
(404) Generate
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantities#2807]
Arguments: explode(stockQuantities#2807), [product#2743, plant#2744, calculationDateTime#2806], false, [stockQuantity#2808]
(405) Filter
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantity#2808]
Condition : (((isnotnull(stockQuantity#2808.specialStockIndicator.code) AND isnotnull(stockQuantity#2808.stockType.code)) AND (stockQuantity#2808.specialStockIndicator.code = )) AND (stockQuantity#2808.stockType.code = 01))
(406) Project
Output [5]: [plant#2744.internalRefUUID AS plantUuid#2810, product#2743.internalRefUUID AS productUuid#2812, calculationDateTime#2806, stockQuantity#2808.storagelocation.id AS storageLocId#2813, stockQuantity#2808.quantity.measure AS quantity#2815]
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantity#2808]
(407) Exchange
Input [5]: [plantUuid#2810, productUuid#2812, calculationDateTime#2806, storageLocId#2813, quantity#2815]
Arguments: hashpartitioning(plantUuid#2810, productUuid#2812, 37), ENSURE_REQUIREMENTS, [plan_id=7435]
(408) Sort
Input [5]: [plantUuid#2810, productUuid#2812, calculationDateTime#2806, storageLocId#2813, quantity#2815]
Arguments: [plantUuid#2810 ASC NULLS FIRST, productUuid#2812 ASC NULLS FIRST], false, 0
(409) Scan parquet
Output [3]: [product#2818, plant#2819, orderDateTime#2820]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(410) Filter
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Condition : ((isnotnull(orderDateTime#2820) AND isnotnull(plant#2819)) AND isnotnull(product#2818))
(411) Exchange
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: hashpartitioning(product#2818, plant#2819, 37), REPARTITION_BY_NUM, [plan_id=6952]
(412) Exchange
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: hashpartitioning(coalesce(product#2818, ), isnull(product#2818), coalesce(plant#2819, ), isnull(plant#2819), 37), ENSURE_REQUIREMENTS, [plan_id=7415]
(413) Sort
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: [coalesce(product#2818, ) ASC NULLS FIRST, isnull(product#2818) ASC NULLS FIRST, coalesce(plant#2819, ) ASC NULLS FIRST, isnull(plant#2819) ASC NULLS FIRST], false, 0
(414) Scan parquet
Output [4]: [plant#2824, product#2825, productionAspect#2827, systemId#2822]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(415) Project
Output [4]: [plant#2824.internalRefUUID AS _extract_internalRefUUID#6565, product#2825.internalRefUUID AS _extract_internalRefUUID#6564, productionAspect#2827.productMovementPlants.unitOfIssue.code AS _extract_code#6566, productionAspect#2827.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6567]
Input [4]: [plant#2824, product#2825, productionAspect#2827, systemId#2822]
(416) Exchange
Input [4]: [_extract_internalRefUUID#6565, _extract_internalRefUUID#6564, _extract_code#6566, _extract_internalRefUUID#6567]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6395]
(417) Project
Output [4]: [_extract_code#6566, _extract_internalRefUUID#6567, _extract_internalRefUUID#6564, _extract_internalRefUUID#6565]
Input [4]: [_extract_internalRefUUID#6565, _extract_internalRefUUID#6564, _extract_code#6566, _extract_internalRefUUID#6567]
(418) Exchange
Input [4]: [_extract_code#6566, _extract_internalRefUUID#6567, _extract_internalRefUUID#6564, _extract_internalRefUUID#6565]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6564, ), isnull(_extract_internalRefUUID#6564), coalesce(_extract_internalRefUUID#6565, ), isnull(_extract_internalRefUUID#6565), 37), ENSURE_REQUIREMENTS, [plan_id=7416]
(419) Sort
Input [4]: [_extract_code#6566, _extract_internalRefUUID#6567, _extract_internalRefUUID#6564, _extract_internalRefUUID#6565]
Arguments: [coalesce(_extract_internalRefUUID#6564, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6564) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6565, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6565) ASC NULLS FIRST], false, 0
(420) SortMergeJoin
Left keys [4]: [coalesce(product#2818, ), isnull(product#2818), coalesce(plant#2819, ), isnull(plant#2819)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6564, ), isnull(_extract_internalRefUUID#6564), coalesce(_extract_internalRefUUID#6565, ), isnull(_extract_internalRefUUID#6565)]
Join type: LeftOuter
Join condition: None
(421) Project
Output [5]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#6566, _extract_internalRefUUID#6567]
Input [7]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#6566, _extract_internalRefUUID#6567, _extract_internalRefUUID#6564, _extract_internalRefUUID#6565]
(422) Exchange
Input [5]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#6566, _extract_internalRefUUID#6567]
Arguments: hashpartitioning(product#2818, 37), ENSURE_REQUIREMENTS, [plan_id=7423]
(423) Sort
Input [5]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#6566, _extract_internalRefUUID#6567]
Arguments: [product#2818 ASC NULLS FIRST], false, 0
(424) Scan parquet
Output [4]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839, systemId#2832]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(425) Filter
Input [4]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839, systemId#2832]
Condition : isnotnull(internalUUID#2833)
(426) Project
Output [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Input [4]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839, systemId#2832]
(427) Exchange
Input [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6402]
(428) Exchange
Input [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Arguments: hashpartitioning(internalUUID#2833, 37), ENSURE_REQUIREMENTS, [plan_id=7424]
(429) Sort
Input [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Arguments: [internalUUID#2833 ASC NULLS FIRST], false, 0
(430) SortMergeJoin
Left keys [1]: [product#2818]
Right keys [1]: [internalUUID#2833]
Join type: LeftOuter
Join condition: None
(431) Project
Output [4]: [product#2818, plant#2819, orderDateTime#2820, filter(unitOfMeasureConversions#2839, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6566) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6567)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2837.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2837.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2843]
Input [8]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#6566, _extract_internalRefUUID#6567, internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
(432) Generate
Input [4]: [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843]
Arguments: explode(filteredUnitOfMeasureConversions#2843.quantityNumerator), [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843], true, [quantityNumerator#2844]
(433) Project
Output [4]: [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843.quantityDenominator AS _extract_quantityDenominator#6292]
Input [5]: [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843, quantityNumerator#2844]
(434) Generate
Input [4]: [product#2818, plant#2819, orderDateTime#2820, _extract_quantityDenominator#6292]
Arguments: explode(_extract_quantityDenominator#6292), [product#2818, plant#2819, orderDateTime#2820], true, [quantityDenominator#2845]
(435) Project
Output [3]: [product#2818, plant#2819, orderDateTime#2820]
Input [4]: [product#2818, plant#2819, orderDateTime#2820, quantityDenominator#2845]
(436) Exchange
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: hashpartitioning(plant#2819, product#2818, 37), ENSURE_REQUIREMENTS, [plan_id=7436]
(437) Sort
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: [plant#2819 ASC NULLS FIRST, product#2818 ASC NULLS FIRST], false, 0
(438) SortMergeJoin
Left keys [2]: [plantUuid#2810, productUuid#2812]
Right keys [2]: [plant#2819, product#2818]
Join type: Inner
Join condition: (calculationDateTime#2806 <= orderDateTime#2820)
(439) Project
Output [5]: [plantUuid#2810 AS plant#2848, productUuid#2812 AS product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815]
Input [8]: [plantUuid#2810, productUuid#2812, calculationDateTime#2806, storageLocId#2813, quantity#2815, product#2818, plant#2819, orderDateTime#2820]
(440) Exchange
Input [5]: [plant#2848, product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815]
Arguments: hashpartitioning(coalesce(plant#2848, ), isnull(plant#2848), coalesce(product#2849, ), isnull(product#2849), coalesce(storageLocId#2813, ), isnull(storageLocId#2813), coalesce(calculationDateTime#2806, 1970-01-01 00:00:00), isnull(calculationDateTime#2806), 37), ENSURE_REQUIREMENTS, [plan_id=7509]
(441) Sort
Input [5]: [plant#2848, product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815]
Arguments: [coalesce(plant#2848, ) ASC NULLS FIRST, isnull(plant#2848) ASC NULLS FIRST, coalesce(product#2849, ) ASC NULLS FIRST, isnull(product#2849) ASC NULLS FIRST, coalesce(storageLocId#2813, ) ASC NULLS FIRST, isnull(storageLocId#2813) ASC NULLS FIRST, coalesce(calculationDateTime#2806, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#2806) ASC NULLS FIRST], false, 0
(442) Scan parquet
Output [6]: [internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, systemId#2850]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(443) Filter
Input [6]: [internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, systemId#2850]
Condition : (isnotnull(plant#2853.internalRefUUID) AND isnotnull(product#2852.internalRefUUID))
(444) Project
Output [6]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855]
Input [6]: [internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, systemId#2850]
(445) Exchange
Input [6]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6414]
(446) BroadcastExchange
Input [6]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855]
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=7469]
(447) Scan parquet
Output [2]: [marketUnit#2856, distributionCenters#2862]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(448) Filter
Input [2]: [marketUnit#2856, distributionCenters#2862]
Condition : (((marketUnit#2856 <=> 10000_OP_PERF) AND (size(distributionCenters#2862, true) > 0)) AND isnotnull(distributionCenters#2862))
(449) Project
Output [1]: [distributionCenters#2862]
Input [2]: [marketUnit#2856, distributionCenters#2862]
(450) Exchange
Input [1]: [distributionCenters#2862]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6418]
(451) Generate
Input [1]: [distributionCenters#2862]
Arguments: explode(distributionCenters#2862), false, [distributionCenters#2878]
(452) Filter
Input [1]: [distributionCenters#2878]
Condition : (((size(distributionCenters#2878.storageLocations, true) > 0) AND isnotnull(distributionCenters#2878.storageLocations)) AND isnotnull(distributionCenters#2878.internalRefUUID))
(453) Project
Output [2]: [distributionCenters#2878.internalRefUUID AS _extract_internalRefUUID#6299, distributionCenters#2878.storageLocations AS _extract_storageLocations#6300]
Input [1]: [distributionCenters#2878]
(454) Generate
Input [2]: [_extract_internalRefUUID#6299, _extract_storageLocations#6300]
Arguments: explode(_extract_storageLocations#6300), [_extract_internalRefUUID#6299], false, [storageLocations#2879]
(455) Project
Output [3]: [_extract_internalRefUUID#6299 AS plantUuid#2881, storageLocations#2879.id AS storageLocId#2882, storageLocations#2879.internalRefUUID AS storageLocUuid#2883]
Input [2]: [_extract_internalRefUUID#6299, storageLocations#2879]
(456) BroadcastExchange
Input [3]: [plantUuid#2881, storageLocId#2882, storageLocUuid#2883]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7465]
(457) Scan parquet
Output [2]: [product#2884, plant#2885]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(458) Filter
Input [2]: [product#2884, plant#2885]
Condition : isnotnull(plant#2885)
(459) Exchange
Input [2]: [product#2884, plant#2885]
Arguments: hashpartitioning(product#2884, plant#2885, 37), REPARTITION_BY_NUM, [plan_id=6963]
(460) Exchange
Input [2]: [product#2884, plant#2885]
Arguments: hashpartitioning(coalesce(product#2884, ), isnull(product#2884), coalesce(plant#2885, ), isnull(plant#2885), 37), ENSURE_REQUIREMENTS, [plan_id=7442]
(461) Sort
Input [2]: [product#2884, plant#2885]
Arguments: [coalesce(product#2884, ) ASC NULLS FIRST, isnull(product#2884) ASC NULLS FIRST, coalesce(plant#2885, ) ASC NULLS FIRST, isnull(plant#2885) ASC NULLS FIRST], false, 0
(462) Scan parquet
Output [4]: [plant#2890, product#2891, productionAspect#2893, systemId#2888]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(463) Project
Output [4]: [plant#2890.internalRefUUID AS _extract_internalRefUUID#6568, product#2891.internalRefUUID AS _extract_internalRefUUID#6571, productionAspect#2893.productMovementPlants.unitOfIssue.code AS _extract_code#6569, productionAspect#2893.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6570]
Input [4]: [plant#2890, product#2891, productionAspect#2893, systemId#2888]
(464) Exchange
Input [4]: [_extract_internalRefUUID#6568, _extract_internalRefUUID#6571, _extract_code#6569, _extract_internalRefUUID#6570]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6430]
(465) Project
Output [4]: [_extract_code#6569, _extract_internalRefUUID#6570, _extract_internalRefUUID#6571, _extract_internalRefUUID#6568]
Input [4]: [_extract_internalRefUUID#6568, _extract_internalRefUUID#6571, _extract_code#6569, _extract_internalRefUUID#6570]
(466) Exchange
Input [4]: [_extract_code#6569, _extract_internalRefUUID#6570, _extract_internalRefUUID#6571, _extract_internalRefUUID#6568]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6571, ), isnull(_extract_internalRefUUID#6571), coalesce(_extract_internalRefUUID#6568, ), isnull(_extract_internalRefUUID#6568), 37), ENSURE_REQUIREMENTS, [plan_id=7443]
(467) Sort
Input [4]: [_extract_code#6569, _extract_internalRefUUID#6570, _extract_internalRefUUID#6571, _extract_internalRefUUID#6568]
Arguments: [coalesce(_extract_internalRefUUID#6571, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6571) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6568, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6568) ASC NULLS FIRST], false, 0
(468) SortMergeJoin
Left keys [4]: [coalesce(product#2884, ), isnull(product#2884), coalesce(plant#2885, ), isnull(plant#2885)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6571, ), isnull(_extract_internalRefUUID#6571), coalesce(_extract_internalRefUUID#6568, ), isnull(_extract_internalRefUUID#6568)]
Join type: LeftOuter
Join condition: None
(469) Project
Output [4]: [product#2884, plant#2885, _extract_code#6569, _extract_internalRefUUID#6570]
Input [6]: [product#2884, plant#2885, _extract_code#6569, _extract_internalRefUUID#6570, _extract_internalRefUUID#6571, _extract_internalRefUUID#6568]
(470) Exchange
Input [4]: [product#2884, plant#2885, _extract_code#6569, _extract_internalRefUUID#6570]
Arguments: hashpartitioning(product#2884, 37), ENSURE_REQUIREMENTS, [plan_id=7450]
(471) Sort
Input [4]: [product#2884, plant#2885, _extract_code#6569, _extract_internalRefUUID#6570]
Arguments: [product#2884 ASC NULLS FIRST], false, 0
(472) Scan parquet
Output [4]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905, systemId#2898]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(473) Filter
Input [4]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905, systemId#2898]
Condition : isnotnull(internalUUID#2899)
(474) Project
Output [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Input [4]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905, systemId#2898]
(475) Exchange
Input [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6437]
(476) Exchange
Input [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Arguments: hashpartitioning(internalUUID#2899, 37), ENSURE_REQUIREMENTS, [plan_id=7451]
(477) Sort
Input [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Arguments: [internalUUID#2899 ASC NULLS FIRST], false, 0
(478) SortMergeJoin
Left keys [1]: [product#2884]
Right keys [1]: [internalUUID#2899]
Join type: LeftOuter
Join condition: None
(479) Project
Output [2]: [plant#2885, filter(unitOfMeasureConversions#2905, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6569) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6570)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2903.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2903.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2909]
Input [7]: [product#2884, plant#2885, _extract_code#6569, _extract_internalRefUUID#6570, internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
(480) Generate
Input [2]: [plant#2885, filteredUnitOfMeasureConversions#2909]
Arguments: explode(filteredUnitOfMeasureConversions#2909.quantityNumerator), [plant#2885, filteredUnitOfMeasureConversions#2909], true, [quantityNumerator#2910]
(481) Project
Output [2]: [plant#2885, filteredUnitOfMeasureConversions#2909.quantityDenominator AS _extract_quantityDenominator#6301]
Input [3]: [plant#2885, filteredUnitOfMeasureConversions#2909, quantityNumerator#2910]
(482) Generate
Input [2]: [plant#2885, _extract_quantityDenominator#6301]
Arguments: explode(_extract_quantityDenominator#6301), [plant#2885], true, [quantityDenominator#2911]
(483) Project
Output [1]: [plant#2885]
Input [2]: [plant#2885, quantityDenominator#2911]
(484) HashAggregate
Input [1]: [plant#2885]
Keys [1]: [plant#2885]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2885]
(485) Exchange
Input [1]: [plant#2885]
Arguments: hashpartitioning(plant#2885, 37), ENSURE_REQUIREMENTS, [plan_id=7462]
(486) HashAggregate
Input [1]: [plant#2885]
Keys [1]: [plant#2885]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2885]
(487) BroadcastHashJoin
Left keys [1]: [plantUuid#2881]
Right keys [1]: [plant#2885]
Join type: Inner
Join condition: None
(488) Project
Output [3]: [plantUuid#2881, storageLocId#2882, storageLocUuid#2883]
Input [4]: [plantUuid#2881, storageLocId#2882, storageLocUuid#2883, plant#2885]
(489) BroadcastHashJoin
Left keys [2]: [coalesce(plant#2853.internalRefUUID, ), isnull(plant#2853.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#2881, ), isnull(plantUuid#2881)]
Join type: Inner
Join condition: None
(490) Generate
Input [9]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, plantUuid#2881, storageLocId#2882, storageLocUuid#2883]
Arguments: explode(filter(stockQuantities#2855, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#2883) AND (lambda x#1330.storageLocation.Id = storageLocId#2882)), lambda x#1330, false))), [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, plantUuid#2881], false, [stockQuantity#2914]
(491) ObjectHashAggregate
Input [7]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, plantUuid#2881, stockQuantity#2914]
Keys [5]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850]
Functions [2]: [partial_first(calculationDateTime#2854, false), partial_collect_list(stockQuantity#2914, 0, 0)]
Aggregate Attributes [3]: [first#4616, valueSet#4617, buf#4618]
Results [8]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850, first#4619, valueSet#4620, buf#4621]
(492) ObjectHashAggregate
Input [8]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850, first#4619, valueSet#4620, buf#4621]
Keys [5]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850]
Functions [2]: [first(calculationDateTime#2854, false), collect_list(stockQuantity#2914, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#2854)()#1345, collect_list(stockQuantity#2914, 0, 0)#1346]
Results [4]: [product#2852, plant#2853, first(calculationDateTime#2854)()#1345 AS calculationDateTime#2915, collect_list(stockQuantity#2914, 0, 0)#1346 AS stockQuantities#2916]
(493) Filter
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantities#2916]
Condition : ((size(stockQuantities#2916, true) > 0) AND isnotnull(calculationDateTime#2915))
(494) Generate
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantities#2916]
Arguments: explode(stockQuantities#2916), [product#2852, plant#2853, calculationDateTime#2915], false, [stockQuantity#2917]
(495) Filter
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantity#2917]
Condition : (((isnotnull(stockQuantity#2917.specialStockIndicator.code) AND isnotnull(stockQuantity#2917.stockType.code)) AND (stockQuantity#2917.specialStockIndicator.code = )) AND (stockQuantity#2917.stockType.code = 01))
(496) Project
Output [4]: [plant#2853.internalRefUUID AS plantUuid#2919, product#2852.internalRefUUID AS productUuid#2921, calculationDateTime#2915, stockQuantity#2917.storagelocation.id AS storageLocId#2922]
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantity#2917]
(497) Exchange
Input [4]: [plantUuid#2919, productUuid#2921, calculationDateTime#2915, storageLocId#2922]
Arguments: hashpartitioning(plantUuid#2919, productUuid#2921, 37), ENSURE_REQUIREMENTS, [plan_id=7499]
(498) Sort
Input [4]: [plantUuid#2919, productUuid#2921, calculationDateTime#2915, storageLocId#2922]
Arguments: [plantUuid#2919 ASC NULLS FIRST, productUuid#2921 ASC NULLS FIRST], false, 0
(499) Scan parquet
Output [3]: [product#2927, plant#2928, orderDateTime#2929]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(500) Filter
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Condition : ((isnotnull(orderDateTime#2929) AND isnotnull(plant#2928)) AND isnotnull(product#2927))
(501) Exchange
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: hashpartitioning(product#2927, plant#2928, 37), REPARTITION_BY_NUM, [plan_id=6984]
(502) Exchange
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: hashpartitioning(coalesce(product#2927, ), isnull(product#2927), coalesce(plant#2928, ), isnull(plant#2928), 37), ENSURE_REQUIREMENTS, [plan_id=7479]
(503) Sort
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: [coalesce(product#2927, ) ASC NULLS FIRST, isnull(product#2927) ASC NULLS FIRST, coalesce(plant#2928, ) ASC NULLS FIRST, isnull(plant#2928) ASC NULLS FIRST], false, 0
(504) Scan parquet
Output [4]: [plant#2933, product#2934, productionAspect#2936, systemId#2931]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(505) Project
Output [4]: [plant#2933.internalRefUUID AS _extract_internalRefUUID#6572, product#2934.internalRefUUID AS _extract_internalRefUUID#6573, productionAspect#2936.productMovementPlants.unitOfIssue.code AS _extract_code#6574, productionAspect#2936.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6575]
Input [4]: [plant#2933, product#2934, productionAspect#2936, systemId#2931]
(506) Exchange
Input [4]: [_extract_internalRefUUID#6572, _extract_internalRefUUID#6573, _extract_code#6574, _extract_internalRefUUID#6575]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6462]
(507) Project
Output [4]: [_extract_code#6574, _extract_internalRefUUID#6575, _extract_internalRefUUID#6573, _extract_internalRefUUID#6572]
Input [4]: [_extract_internalRefUUID#6572, _extract_internalRefUUID#6573, _extract_code#6574, _extract_internalRefUUID#6575]
(508) Exchange
Input [4]: [_extract_code#6574, _extract_internalRefUUID#6575, _extract_internalRefUUID#6573, _extract_internalRefUUID#6572]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6573, ), isnull(_extract_internalRefUUID#6573), coalesce(_extract_internalRefUUID#6572, ), isnull(_extract_internalRefUUID#6572), 37), ENSURE_REQUIREMENTS, [plan_id=7480]
(509) Sort
Input [4]: [_extract_code#6574, _extract_internalRefUUID#6575, _extract_internalRefUUID#6573, _extract_internalRefUUID#6572]
Arguments: [coalesce(_extract_internalRefUUID#6573, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6573) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6572, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6572) ASC NULLS FIRST], false, 0
(510) SortMergeJoin
Left keys [4]: [coalesce(product#2927, ), isnull(product#2927), coalesce(plant#2928, ), isnull(plant#2928)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6573, ), isnull(_extract_internalRefUUID#6573), coalesce(_extract_internalRefUUID#6572, ), isnull(_extract_internalRefUUID#6572)]
Join type: LeftOuter
Join condition: None
(511) Project
Output [5]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#6574, _extract_internalRefUUID#6575]
Input [7]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#6574, _extract_internalRefUUID#6575, _extract_internalRefUUID#6573, _extract_internalRefUUID#6572]
(512) Exchange
Input [5]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#6574, _extract_internalRefUUID#6575]
Arguments: hashpartitioning(product#2927, 37), ENSURE_REQUIREMENTS, [plan_id=7487]
(513) Sort
Input [5]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#6574, _extract_internalRefUUID#6575]
Arguments: [product#2927 ASC NULLS FIRST], false, 0
(514) Scan parquet
Output [4]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948, systemId#2941]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(515) Filter
Input [4]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948, systemId#2941]
Condition : isnotnull(internalUUID#2942)
(516) Project
Output [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Input [4]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948, systemId#2941]
(517) Exchange
Input [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6469]
(518) Exchange
Input [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Arguments: hashpartitioning(internalUUID#2942, 37), ENSURE_REQUIREMENTS, [plan_id=7488]
(519) Sort
Input [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Arguments: [internalUUID#2942 ASC NULLS FIRST], false, 0
(520) SortMergeJoin
Left keys [1]: [product#2927]
Right keys [1]: [internalUUID#2942]
Join type: LeftOuter
Join condition: None
(521) Project
Output [4]: [product#2927, plant#2928, orderDateTime#2929, filter(unitOfMeasureConversions#2948, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6574) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6575)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2946.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2946.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2952]
Input [8]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#6574, _extract_internalRefUUID#6575, internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
(522) Generate
Input [4]: [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952]
Arguments: explode(filteredUnitOfMeasureConversions#2952.quantityNumerator), [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952], true, [quantityNumerator#2953]
(523) Project
Output [4]: [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952.quantityDenominator AS _extract_quantityDenominator#6308]
Input [5]: [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952, quantityNumerator#2953]
(524) Generate
Input [4]: [product#2927, plant#2928, orderDateTime#2929, _extract_quantityDenominator#6308]
Arguments: explode(_extract_quantityDenominator#6308), [product#2927, plant#2928, orderDateTime#2929], true, [quantityDenominator#2954]
(525) Project
Output [3]: [product#2927, plant#2928, orderDateTime#2929]
Input [4]: [product#2927, plant#2928, orderDateTime#2929, quantityDenominator#2954]
(526) Exchange
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: hashpartitioning(plant#2928, product#2927, 37), ENSURE_REQUIREMENTS, [plan_id=7500]
(527) Sort
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: [plant#2928 ASC NULLS FIRST, product#2927 ASC NULLS FIRST], false, 0
(528) SortMergeJoin
Left keys [2]: [plantUuid#2919, productUuid#2921]
Right keys [2]: [plant#2928, product#2927]
Join type: Inner
Join condition: (calculationDateTime#2915 <= orderDateTime#2929)
(529) Project
Output [4]: [plantUuid#2919 AS plant#2957, productUuid#2921 AS product#2958, storageLocId#2922, calculationDateTime#2915]
Input [7]: [plantUuid#2919, productUuid#2921, calculationDateTime#2915, storageLocId#2922, product#2927, plant#2928, orderDateTime#2929]
(530) HashAggregate
Input [4]: [plant#2957, product#2958, storageLocId#2922, calculationDateTime#2915]
Keys [3]: [plant#2957, product#2958, storageLocId#2922]
Functions [1]: [partial_max(calculationDateTime#2915)]
Aggregate Attributes [1]: [max#4614]
Results [4]: [plant#2957, product#2958, storageLocId#2922, max#4615]
(531) HashAggregate
Input [4]: [plant#2957, product#2958, storageLocId#2922, max#4615]
Keys [3]: [plant#2957, product#2958, storageLocId#2922]
Functions [1]: [max(calculationDateTime#2915)]
Aggregate Attributes [1]: [max(calculationDateTime#2915)#1408]
Results [4]: [plant#2957, product#2958, storageLocId#2922, max(calculationDateTime#2915)#1408 AS max_calc_datetime#2959]
(532) Exchange
Input [4]: [plant#2957, product#2958, storageLocId#2922, max_calc_datetime#2959]
Arguments: hashpartitioning(coalesce(plant#2957, ), isnull(plant#2957), coalesce(product#2958, ), isnull(product#2958), coalesce(storageLocId#2922, ), isnull(storageLocId#2922), coalesce(max_calc_datetime#2959, 1970-01-01 00:00:00), isnull(max_calc_datetime#2959), 37), ENSURE_REQUIREMENTS, [plan_id=7510]
(533) Sort
Input [4]: [plant#2957, product#2958, storageLocId#2922, max_calc_datetime#2959]
Arguments: [coalesce(plant#2957, ) ASC NULLS FIRST, isnull(plant#2957) ASC NULLS FIRST, coalesce(product#2958, ) ASC NULLS FIRST, isnull(product#2958) ASC NULLS FIRST, coalesce(storageLocId#2922, ) ASC NULLS FIRST, isnull(storageLocId#2922) ASC NULLS FIRST, coalesce(max_calc_datetime#2959, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#2959) ASC NULLS FIRST], false, 0
(534) SortMergeJoin
Left keys [8]: [coalesce(plant#2848, ), isnull(plant#2848), coalesce(product#2849, ), isnull(product#2849), coalesce(storageLocId#2813, ), isnull(storageLocId#2813), coalesce(calculationDateTime#2806, 1970-01-01 00:00:00), isnull(calculationDateTime#2806)]
Right keys [8]: [coalesce(plant#2957, ), isnull(plant#2957), coalesce(product#2958, ), isnull(product#2958), coalesce(storageLocId#2922, ), isnull(storageLocId#2922), coalesce(max_calc_datetime#2959, 1970-01-01 00:00:00), isnull(max_calc_datetime#2959)]
Join type: Inner
Join condition: None
(535) Project
Output [4]: [plant#2848, product#2849, calculationDateTime#2806, quantity#2815]
Input [9]: [plant#2848, product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815, plant#2957, product#2958, storageLocId#2922, max_calc_datetime#2959]
(536) HashAggregate
Input [4]: [plant#2848, product#2849, calculationDateTime#2806, quantity#2815]
Keys [2]: [product#2849, plant#2848]
Functions [2]: [partial_min(calculationDateTime#2806), partial_sum(quantity#2815)]
Aggregate Attributes [2]: [min#4604, sum#4605]
Results [4]: [product#2849, plant#2848, min#4606, sum#4607]
(537) Exchange
Input [4]: [product#2849, plant#2848, min#4606, sum#4607]
Arguments: hashpartitioning(product#2849, plant#2848, 37), ENSURE_REQUIREMENTS, [plan_id=7517]
(538) HashAggregate
Input [4]: [product#2849, plant#2848, min#4606, sum#4607]
Keys [2]: [product#2849, plant#2848]
Functions [2]: [min(calculationDateTime#2806), sum(quantity#2815)]
Aggregate Attributes [2]: [min(calculationDateTime#2806)#1534, sum(quantity#2815)#1533]
Results [4]: [product#2849, plant#2848, min(calculationDateTime#2806)#1534 AS minCalculationDateTime#2961, round(sum(quantity#2815)#1533, 0) AS roundedQuantitySum#2962]
(539) Sort
Input [4]: [product#2849, plant#2848, minCalculationDateTime#2961, roundedQuantitySum#2962]
Arguments: [product#2849 ASC NULLS FIRST, plant#2848 ASC NULLS FIRST], false, 0
(540) SortMergeJoin
Left keys [2]: [product#2711, plant#2712]
Right keys [2]: [product#2849, plant#2848]
Join type: LeftOuter
Join condition: None
(541) Project
Output [7]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, CASE WHEN isnotnull(minCalculationDateTime#2961) THEN minCalculationDateTime#2961 ELSE orderDateTime#2713 END AS stockDatetime#2963, CASE WHEN isnotnull(roundedQuantitySum#2962) THEN array(roundedQuantitySum#2962) ELSE [0.0] END AS stockBatchQuantities#2964]
Input [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, product#2849, plant#2848, minCalculationDateTime#2961, roundedQuantitySum#2962]
(542) BroadcastExchange
Input [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=7527]
(543) BroadcastHashJoin
Left keys [4]: [coalesce(plant#2712, ), isnull(plant#2712), coalesce(product#2711, ), isnull(product#2711)]
Right keys [4]: [coalesce(plant#1573, ), isnull(plant#1573), coalesce(product#1572, ), isnull(product#1572)]
Join type: LeftOuter
Join condition: None
(544) Project
Output [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, CASE WHEN isnotnull(product#1572) THEN struct(demandChannel, demandChannel#1574, demandStream, demandStream#1575, considerVariance, considerVariance#1576, demandTimeBuckets, demandTimeBuckets#1577, demandPointInTimeStart, demandPointInTimeStart#1578, demandPointInTimeEnd, demandPointInTimeEnd#1579, demandPointInTime, demandPointInTime#1580) END AS rawDemands#1582]
Input [16]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
(545) ObjectHashAggregate
Input [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, rawDemands#1582]
Keys [8]: [product#2711, plant#2712, orderDateTime#2713, knownfloatingpointnormalized(if (isnull(productPlant#2724)) null else named_struct(systemId, productPlant#2724.systemId, internalUUID, productPlant#2724.internalUUID, plant, productPlant#2724.plant, product, productPlant#2724.product, blockedForReplenishmentStartingFrom, productPlant#2724.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#2724.productionAspect)) null else named_struct(productMovementPlants, productPlant#2724.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#2724.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#2724.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#2724.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#2724.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#2724.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#2724.salesPlant, listing, productPlant#2724.listing, sourceOfSupplyCategory, productPlant#2724.sourceOfSupplyCategory)) AS productPlant#2724, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#2740)) AS outboundUnit#2740, stockDatetime#2963, knownfloatingpointnormalized(transform(stockBatchQuantities#2964, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#7302)), lambda arg#7302, false))) AS stockBatchQuantities#2964, [7226582400000000] AS [7226582400000000]#7301]
Functions [1]: [partial_collect_list(rawDemands#1582, 0, 0)]
Aggregate Attributes [1]: [buf#4602]
Results [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#7301, buf#4603]
(546) ObjectHashAggregate
Input [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#7301, buf#4603]
Keys [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#7301]
Functions [1]: [collect_list(rawDemands#1582, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1582, 0, 0)#1602]
Results [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, collect_list(rawDemands#1582, 0, 0)#1602 AS rawDemands#1583]
(547) Project
Output [2]: [internalUUID#2662, address#2668.timeZone.code AS timezonecode#2674]
Input [3]: [internalUUID#2662, address#2668, systemId#2661]
(548) Exchange
Input [2]: [internalUUID#2662, timezonecode#2674]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6493]
(549) BroadcastExchange
Input [2]: [internalUUID#2662, timezonecode#2674]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=7533]
(550) BroadcastHashJoin
Left keys [2]: [coalesce(plant#2712, ), isnull(plant#2712)]
Right keys [2]: [coalesce(internalUUID#2662, ), isnull(internalUUID#2662)]
Join type: LeftOuter
Join condition: None
(551) Project
Output [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#2965, rawDemands#1583, CASE WHEN isnotnull(timezonecode#2674) THEN timezonecode#2674 ELSE UTC END AS timezonecode#2676]
Input [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, rawDemands#1583, internalUUID#2662, timezonecode#2674]
(552) DeserializeToObject
Input [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, stockBatchShelfLifeEndDatetimes#2965, rawDemands#1583, timezonecode#2676]
Arguments: createexternalrow(invoke(product#2711.toString()), invoke(plant#2712.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#2713)), if (isnull(productPlant#2724)) null else createexternalrow(invoke(productPlant#2724.systemId.toString()), invoke(productPlant#2724.internalUUID.toString()), if (isnull(productPlant#2724.plant)) null else createexternalrow(invoke(productPlant#2724.plant.internalRefUUID.toString()), invoke(productPlant#2724.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#2724.product)) null else createexternalrow(invoke(productPlant#2724.product.internalRefUUID.toString()), invoke(productPlant#2724.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#2724.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#2724.productionAspect)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#2724.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.salesPlant)) null else createexternalrow(if (isnull(productPlant#2724.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#2724.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#2724.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#2724.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#2724.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#2740)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#2963)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#2964, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#2965, 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#1583, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#2676.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#2697: org.apache.spark.sql.Row
(553) MapElements
Input [1]: [obj#2697]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000802111db0@1fa786b, obj#2702: org.apache.spark.sql.Row
(554) SerializeFromObject
Input [1]: [obj#2702]
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#2707, 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#2708, 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#2709, 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#2710]
(555) Exchange
Input [4]: [product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: hashpartitioning(coalesce(plant#2708, ), isnull(plant#2708), coalesce(product#2707, ), isnull(product#2707), 37), ENSURE_REQUIREMENTS, [plan_id=7542]
(556) Sort
Input [4]: [product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: [coalesce(plant#2708, ) ASC NULLS FIRST, isnull(plant#2708) ASC NULLS FIRST, coalesce(product#2707, ) ASC NULLS FIRST, isnull(product#2707) ASC NULLS FIRST], false, 0
(557) SortMergeJoin
Left keys [4]: [coalesce(plant#1128, ), isnull(plant#1128), coalesce(product#1127, ), isnull(product#1127)]
Right keys [4]: [coalesce(plant#2708, ), isnull(plant#2708), coalesce(product#2707, ), isnull(product#2707)]
Join type: LeftOuter
Join condition: None
(558) Project
Output [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Input [9]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, product#2707, plant#2708, dayBucketDemands#2709, pointInTimeDemands#2710]
(559) Exchange
Input [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: hashpartitioning(product#1127, plant#1128, 37), ENSURE_REQUIREMENTS, [plan_id=7921]
(560) Sort
Input [7]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710]
Arguments: [product#1127 ASC NULLS FIRST, plant#1128 ASC NULLS FIRST], false, 0
(561) InMemoryTableScan
Output [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Arguments: [product#3025, plant#3024, openGoodsMovements#3125], [isnotnull(product#3025), isnotnull(plant#3024)]
(562) InMemoryRelation
Arguments: [product#3025, plant#3024, openGoodsMovements#3125], StorageLevel(disk, memory, 2 replicas)
(563) EmptyRelation
Output [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Arguments: [plan_id=47710]
(564) ResultQueryStage
Output [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Arguments: 104
(565) Scan parquet
Output [2]: [product#1127, plant#1128]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(566) Filter
Input [2]: [product#1127, plant#1128]
Condition : (isnotnull(plant#1128) AND isnotnull(product#1127))
(567) Exchange
Input [2]: [product#1127, plant#1128]
Arguments: hashpartitioning(product#1127, plant#1128, 37), REPARTITION_BY_NUM, [plan_id=3746]
(568) Exchange
Input [2]: [product#1127, plant#1128]
Arguments: hashpartitioning(coalesce(product#1127, ), isnull(product#1127), coalesce(plant#1128, ), isnull(plant#1128), 37), ENSURE_REQUIREMENTS, [plan_id=3861]
(569) Sort
Input [2]: [product#1127, plant#1128]
Arguments: [coalesce(product#1127, ) ASC NULLS FIRST, isnull(product#1127) ASC NULLS FIRST, coalesce(plant#1128, ) ASC NULLS FIRST, isnull(plant#1128) ASC NULLS FIRST], false, 0
(570) Scan parquet
Output [4]: [plant#1160, product#1161, productionAspect#1163, systemId#1158]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(571) Project
Output [4]: [plant#1160.internalRefUUID AS _extract_internalRefUUID#3306, product#1161.internalRefUUID AS _extract_internalRefUUID#3305, productionAspect#1163.productMovementPlants.unitOfIssue.code AS _extract_code#3303, productionAspect#1163.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#3304]
Input [4]: [plant#1160, product#1161, productionAspect#1163, systemId#1158]
(572) Exchange
Input [4]: [_extract_internalRefUUID#3306, _extract_internalRefUUID#3305, _extract_code#3303, _extract_internalRefUUID#3304]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3506]
(573) Project
Output [4]: [_extract_code#3303, _extract_internalRefUUID#3304, _extract_internalRefUUID#3305, _extract_internalRefUUID#3306]
Input [4]: [_extract_internalRefUUID#3306, _extract_internalRefUUID#3305, _extract_code#3303, _extract_internalRefUUID#3304]
(574) Exchange
Input [4]: [_extract_code#3303, _extract_internalRefUUID#3304, _extract_internalRefUUID#3305, _extract_internalRefUUID#3306]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#3305, ), isnull(_extract_internalRefUUID#3305), coalesce(_extract_internalRefUUID#3306, ), isnull(_extract_internalRefUUID#3306), 37), ENSURE_REQUIREMENTS, [plan_id=3862]
(575) Sort
Input [4]: [_extract_code#3303, _extract_internalRefUUID#3304, _extract_internalRefUUID#3305, _extract_internalRefUUID#3306]
Arguments: [coalesce(_extract_internalRefUUID#3305, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3305) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#3306, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3306) ASC NULLS FIRST], false, 0
(576) SortMergeJoin
Left keys [4]: [coalesce(product#1127, ), isnull(product#1127), coalesce(plant#1128, ), isnull(plant#1128)]
Right keys [4]: [coalesce(_extract_internalRefUUID#3305, ), isnull(_extract_internalRefUUID#3305), coalesce(_extract_internalRefUUID#3306, ), isnull(_extract_internalRefUUID#3306)]
Join type: LeftOuter
Join condition: None
(577) Project
Output [4]: [product#1127, plant#1128, _extract_code#3303, _extract_internalRefUUID#3304]
Input [6]: [product#1127, plant#1128, _extract_code#3303, _extract_internalRefUUID#3304, _extract_internalRefUUID#3305, _extract_internalRefUUID#3306]
(578) Exchange
Input [4]: [product#1127, plant#1128, _extract_code#3303, _extract_internalRefUUID#3304]
Arguments: hashpartitioning(product#1127, 37), ENSURE_REQUIREMENTS, [plan_id=3869]
(579) Sort
Input [4]: [product#1127, plant#1128, _extract_code#3303, _extract_internalRefUUID#3304]
Arguments: [product#1127 ASC NULLS FIRST], false, 0
(580) Scan parquet
Output [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(581) Filter
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
Condition : isnotnull(internalUUID#1194)
(582) Project
Output [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Input [4]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200, systemId#1193]
(583) Exchange
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3513]
(584) Exchange
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: hashpartitioning(internalUUID#1194, 37), ENSURE_REQUIREMENTS, [plan_id=3870]
(585) Sort
Input [3]: [internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
Arguments: [internalUUID#1194 ASC NULLS FIRST], false, 0
(586) SortMergeJoin
Left keys [1]: [product#1127]
Right keys [1]: [internalUUID#1194]
Join type: LeftOuter
Join condition: None
(587) Project
Output [3]: [product#1127, plant#1128, filter(unitOfMeasureConversions#1200, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#3303) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#3304)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1198.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1198.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1205]
Input [7]: [product#1127, plant#1128, _extract_code#3303, _extract_internalRefUUID#3304, internalUUID#1194, baseUnitOfMeasure#1198, unitOfMeasureConversions#1200]
(588) Generate
Input [3]: [product#1127, plant#1128, filteredUnitOfMeasureConversions#1205]
Arguments: explode(filteredUnitOfMeasureConversions#1205.quantityNumerator), [product#1127, plant#1128, filteredUnitOfMeasureConversions#1205], true, [quantityNumerator#1213]
(589) Project
Output [3]: [product#1127, plant#1128, filteredUnitOfMeasureConversions#1205.quantityDenominator AS _extract_quantityDenominator#3141]
Input [4]: [product#1127, plant#1128, filteredUnitOfMeasureConversions#1205, quantityNumerator#1213]
(590) Generate
Input [3]: [product#1127, plant#1128, _extract_quantityDenominator#3141]
Arguments: explode(_extract_quantityDenominator#3141), [product#1127, plant#1128], true, [quantityDenominator#1216]
(591) Project
Output [2]: [product#1127, plant#1128]
Input [3]: [product#1127, plant#1128, quantityDenominator#1216]
(592) Exchange
Input [2]: [product#1127, plant#1128]
Arguments: hashpartitioning(coalesce(plant#1128, ), isnull(plant#1128), coalesce(product#1127, ), isnull(product#1127), 37), ENSURE_REQUIREMENTS, [plan_id=4062]
(593) Sort
Input [2]: [product#1127, plant#1128]
Arguments: [coalesce(plant#1128, ) ASC NULLS FIRST, isnull(plant#1128) ASC NULLS FIRST, coalesce(product#1127, ) ASC NULLS FIRST, isnull(product#1127) ASC NULLS FIRST], false, 0
(594) Scan parquet
Output [3]: [product#2711, plant#2712, orderDateTime#2713]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(595) Exchange
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: hashpartitioning(product#2711, plant#2712, 37), REPARTITION_BY_NUM, [plan_id=3521]
(596) Exchange
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: hashpartitioning(coalesce(product#2711, ), isnull(product#2711), coalesce(plant#2712, ), isnull(plant#2712), 37), ENSURE_REQUIREMENTS, [plan_id=3880]
(597) Sort
Input [3]: [product#2711, plant#2712, orderDateTime#2713]
Arguments: [coalesce(product#2711, ) ASC NULLS FIRST, isnull(product#2711) ASC NULLS FIRST, coalesce(plant#2712, ) ASC NULLS FIRST, isnull(plant#2712) ASC NULLS FIRST], false, 0
(598) Scan parquet
Output [9]: [internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723, systemId#2715]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>
(599) Project
Output [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Input [9]: [internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723, systemId#2715]
(600) Exchange
Input [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3524]
(601) Project
Output [1]: [struct(systemId, systemId#2715, internalUUID, internalUUID#2716, plant, plant#2717, product, product#2718, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#2719, productionAspect, productionAspect#2720, salesPlant, salesPlant#2721, listing, listing#2722, sourceOfSupplyCategory, sourceOfSupplyCategory#2723) AS productPlant#2724]
Input [9]: [systemId#2715, internalUUID#2716, plant#2717, product#2718, blockedForReplenishmentStartingFrom#2719, productionAspect#2720, salesPlant#2721, listing#2722, sourceOfSupplyCategory#2723]
(602) Exchange
Input [1]: [productPlant#2724]
Arguments: hashpartitioning(coalesce(productPlant#2724.product.internalRefUUID, ), isnull(productPlant#2724.product.internalRefUUID), coalesce(productPlant#2724.plant.internalRefUUID, ), isnull(productPlant#2724.plant.internalRefUUID), 37), ENSURE_REQUIREMENTS, [plan_id=3881]
(603) Sort
Input [1]: [productPlant#2724]
Arguments: [coalesce(productPlant#2724.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#2724.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#2724.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#2724.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(604) SortMergeJoin
Left keys [4]: [coalesce(product#2711, ), isnull(product#2711), coalesce(plant#2712, ), isnull(plant#2712)]
Right keys [4]: [coalesce(productPlant#2724.product.internalRefUUID, ), isnull(productPlant#2724.product.internalRefUUID), coalesce(productPlant#2724.plant.internalRefUUID, ), isnull(productPlant#2724.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(605) Exchange
Input [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: hashpartitioning(product#2711, 37), ENSURE_REQUIREMENTS, [plan_id=3887]
(606) Sort
Input [4]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724]
Arguments: [product#2711 ASC NULLS FIRST], false, 0
(607) Scan parquet
Output [4]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732, systemId#2725]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(608) Filter
Input [4]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732, systemId#2725]
Condition : isnotnull(internalUUID#2726)
(609) Project
Output [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Input [4]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732, systemId#2725]
(610) Exchange
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3530]
(611) Exchange
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: hashpartitioning(internalUUID#2726, 37), ENSURE_REQUIREMENTS, [plan_id=3888]
(612) Sort
Input [3]: [internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
Arguments: [internalUUID#2726 ASC NULLS FIRST], false, 0
(613) SortMergeJoin
Left keys [1]: [product#2711]
Right keys [1]: [internalUUID#2726]
Join type: LeftOuter
Join condition: None
(614) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filter(unitOfMeasureConversions#2732, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2730.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2730.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2736]
Input [7]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, internalUUID#2726, baseUnitOfMeasure#2730, unitOfMeasureConversions#2732]
(615) Project
Output [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filteredUnitOfMeasureConversions#2736.quantityDenominator AS _extract_quantityDenominator#3307, filteredUnitOfMeasureConversions#2736.quantityNumerator AS _extract_quantityNumerator#3308]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, filteredUnitOfMeasureConversions#2736]
(616) Generate
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#3307, _extract_quantityNumerator#3308]
Arguments: explode(_extract_quantityNumerator#3308), [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#3307], true, [quantityNumerator#2737]
(617) Generate
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, _extract_quantityDenominator#3307, quantityNumerator#2737]
Arguments: explode(_extract_quantityDenominator#3307), [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, quantityNumerator#2737], true, [quantityDenominator#2738]
(618) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, (cast(quantityNumerator#2737 as double) / cast(quantityDenominator#2738 as double)) AS outboundUnit#2739]
Input [6]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, quantityNumerator#2737, quantityDenominator#2738]
(619) Project
Output [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, CASE WHEN (isnull(outboundUnit#2739) OR (outboundUnit#2739 <= 0.0)) THEN 1.0 ELSE outboundUnit#2739 END AS outboundUnit#2740]
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2739]
(620) Exchange
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740]
Arguments: hashpartitioning(product#2711, plant#2712, 37), ENSURE_REQUIREMENTS, [plan_id=4042]
(621) Sort
Input [5]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740]
Arguments: [product#2711 ASC NULLS FIRST, plant#2712 ASC NULLS FIRST], false, 0
(622) Scan parquet
Output [6]: [internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, systemId#2741]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(623) Filter
Input [6]: [internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, systemId#2741]
Condition : (isnotnull(plant#2744.internalRefUUID) AND isnotnull(product#2743.internalRefUUID))
(624) Project
Output [6]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746]
Input [6]: [internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, systemId#2741]
(625) Exchange
Input [6]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3541]
(626) BroadcastExchange
Input [6]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746]
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=3926]
(627) Scan parquet
Output [2]: [marketUnit#2747, distributionCenters#2753]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(628) Filter
Input [2]: [marketUnit#2747, distributionCenters#2753]
Condition : (((marketUnit#2747 <=> 10000_OP_PERF) AND (size(distributionCenters#2753, true) > 0)) AND isnotnull(distributionCenters#2753))
(629) Project
Output [1]: [distributionCenters#2753]
Input [2]: [marketUnit#2747, distributionCenters#2753]
(630) Exchange
Input [1]: [distributionCenters#2753]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3545]
(631) Generate
Input [1]: [distributionCenters#2753]
Arguments: explode(distributionCenters#2753), false, [distributionCenters#2769]
(632) Filter
Input [1]: [distributionCenters#2769]
Condition : (((size(distributionCenters#2769.storageLocations, true) > 0) AND isnotnull(distributionCenters#2769.storageLocations)) AND isnotnull(distributionCenters#2769.internalRefUUID))
(633) Project
Output [2]: [distributionCenters#2769.internalRefUUID AS _extract_internalRefUUID#3181, distributionCenters#2769.storageLocations AS _extract_storageLocations#3182]
Input [1]: [distributionCenters#2769]
(634) Generate
Input [2]: [_extract_internalRefUUID#3181, _extract_storageLocations#3182]
Arguments: explode(_extract_storageLocations#3182), [_extract_internalRefUUID#3181], false, [storageLocations#2770]
(635) Project
Output [3]: [_extract_internalRefUUID#3181 AS plantUuid#2772, storageLocations#2770.id AS storageLocId#2773, storageLocations#2770.internalRefUUID AS storageLocUuid#2774]
Input [2]: [_extract_internalRefUUID#3181, storageLocations#2770]
(636) BroadcastExchange
Input [3]: [plantUuid#2772, storageLocId#2773, storageLocUuid#2774]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=3922]
(637) Scan parquet
Output [2]: [product#2775, plant#2776]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(638) Filter
Input [2]: [product#2775, plant#2776]
Condition : isnotnull(plant#2776)
(639) Exchange
Input [2]: [product#2775, plant#2776]
Arguments: hashpartitioning(product#2775, plant#2776, 37), REPARTITION_BY_NUM, [plan_id=3755]
(640) Exchange
Input [2]: [product#2775, plant#2776]
Arguments: hashpartitioning(coalesce(product#2775, ), isnull(product#2775), coalesce(plant#2776, ), isnull(plant#2776), 37), ENSURE_REQUIREMENTS, [plan_id=3899]
(641) Sort
Input [2]: [product#2775, plant#2776]
Arguments: [coalesce(product#2775, ) ASC NULLS FIRST, isnull(product#2775) ASC NULLS FIRST, coalesce(plant#2776, ) ASC NULLS FIRST, isnull(plant#2776) ASC NULLS FIRST], false, 0
(642) Scan parquet
Output [4]: [plant#2781, product#2782, productionAspect#2784, systemId#2779]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(643) Project
Output [4]: [plant#2781.internalRefUUID AS _extract_internalRefUUID#3309, product#2782.internalRefUUID AS _extract_internalRefUUID#3310, productionAspect#2784.productMovementPlants.unitOfIssue.code AS _extract_code#3311, productionAspect#2784.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#3312]
Input [4]: [plant#2781, product#2782, productionAspect#2784, systemId#2779]
(644) Exchange
Input [4]: [_extract_internalRefUUID#3309, _extract_internalRefUUID#3310, _extract_code#3311, _extract_internalRefUUID#3312]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3557]
(645) Project
Output [4]: [_extract_code#3311, _extract_internalRefUUID#3312, _extract_internalRefUUID#3310, _extract_internalRefUUID#3309]
Input [4]: [_extract_internalRefUUID#3309, _extract_internalRefUUID#3310, _extract_code#3311, _extract_internalRefUUID#3312]
(646) Exchange
Input [4]: [_extract_code#3311, _extract_internalRefUUID#3312, _extract_internalRefUUID#3310, _extract_internalRefUUID#3309]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#3310, ), isnull(_extract_internalRefUUID#3310), coalesce(_extract_internalRefUUID#3309, ), isnull(_extract_internalRefUUID#3309), 37), ENSURE_REQUIREMENTS, [plan_id=3900]
(647) Sort
Input [4]: [_extract_code#3311, _extract_internalRefUUID#3312, _extract_internalRefUUID#3310, _extract_internalRefUUID#3309]
Arguments: [coalesce(_extract_internalRefUUID#3310, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3310) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#3309, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3309) ASC NULLS FIRST], false, 0
(648) SortMergeJoin
Left keys [4]: [coalesce(product#2775, ), isnull(product#2775), coalesce(plant#2776, ), isnull(plant#2776)]
Right keys [4]: [coalesce(_extract_internalRefUUID#3310, ), isnull(_extract_internalRefUUID#3310), coalesce(_extract_internalRefUUID#3309, ), isnull(_extract_internalRefUUID#3309)]
Join type: LeftOuter
Join condition: None
(649) Project
Output [4]: [product#2775, plant#2776, _extract_code#3311, _extract_internalRefUUID#3312]
Input [6]: [product#2775, plant#2776, _extract_code#3311, _extract_internalRefUUID#3312, _extract_internalRefUUID#3310, _extract_internalRefUUID#3309]
(650) Exchange
Input [4]: [product#2775, plant#2776, _extract_code#3311, _extract_internalRefUUID#3312]
Arguments: hashpartitioning(product#2775, 37), ENSURE_REQUIREMENTS, [plan_id=3907]
(651) Sort
Input [4]: [product#2775, plant#2776, _extract_code#3311, _extract_internalRefUUID#3312]
Arguments: [product#2775 ASC NULLS FIRST], false, 0
(652) Scan parquet
Output [4]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796, systemId#2789]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(653) Filter
Input [4]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796, systemId#2789]
Condition : isnotnull(internalUUID#2790)
(654) Project
Output [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Input [4]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796, systemId#2789]
(655) Exchange
Input [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3564]
(656) Exchange
Input [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Arguments: hashpartitioning(internalUUID#2790, 37), ENSURE_REQUIREMENTS, [plan_id=3908]
(657) Sort
Input [3]: [internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
Arguments: [internalUUID#2790 ASC NULLS FIRST], false, 0
(658) SortMergeJoin
Left keys [1]: [product#2775]
Right keys [1]: [internalUUID#2790]
Join type: LeftOuter
Join condition: None
(659) Project
Output [2]: [plant#2776, filter(unitOfMeasureConversions#2796, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#3311) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#3312)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2794.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2794.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2800]
Input [7]: [product#2775, plant#2776, _extract_code#3311, _extract_internalRefUUID#3312, internalUUID#2790, baseUnitOfMeasure#2794, unitOfMeasureConversions#2796]
(660) Generate
Input [2]: [plant#2776, filteredUnitOfMeasureConversions#2800]
Arguments: explode(filteredUnitOfMeasureConversions#2800.quantityNumerator), [plant#2776, filteredUnitOfMeasureConversions#2800], true, [quantityNumerator#2801]
(661) Project
Output [2]: [plant#2776, filteredUnitOfMeasureConversions#2800.quantityDenominator AS _extract_quantityDenominator#3183]
Input [3]: [plant#2776, filteredUnitOfMeasureConversions#2800, quantityNumerator#2801]
(662) Generate
Input [2]: [plant#2776, _extract_quantityDenominator#3183]
Arguments: explode(_extract_quantityDenominator#3183), [plant#2776], true, [quantityDenominator#2802]
(663) Project
Output [1]: [plant#2776]
Input [2]: [plant#2776, quantityDenominator#2802]
(664) HashAggregate
Input [1]: [plant#2776]
Keys [1]: [plant#2776]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2776]
(665) Exchange
Input [1]: [plant#2776]
Arguments: hashpartitioning(plant#2776, 37), ENSURE_REQUIREMENTS, [plan_id=3919]
(666) HashAggregate
Input [1]: [plant#2776]
Keys [1]: [plant#2776]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2776]
(667) BroadcastHashJoin
Left keys [1]: [plantUuid#2772]
Right keys [1]: [plant#2776]
Join type: Inner
Join condition: None
(668) Project
Output [3]: [plantUuid#2772, storageLocId#2773, storageLocUuid#2774]
Input [4]: [plantUuid#2772, storageLocId#2773, storageLocUuid#2774, plant#2776]
(669) BroadcastHashJoin
Left keys [2]: [coalesce(plant#2744.internalRefUUID, ), isnull(plant#2744.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#2772, ), isnull(plantUuid#2772)]
Join type: Inner
Join condition: None
(670) Generate
Input [9]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, stockQuantities#2746, plantUuid#2772, storageLocId#2773, storageLocUuid#2774]
Arguments: explode(filter(stockQuantities#2746, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#2774) AND (lambda x#1330.storageLocation.Id = storageLocId#2773)), lambda x#1330, false))), [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, plantUuid#2772], false, [stockQuantity#2805]
(671) ObjectHashAggregate
Input [7]: [systemId#2741, internalUUID#2742, product#2743, plant#2744, calculationDateTime#2745, plantUuid#2772, stockQuantity#2805]
Keys [5]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741]
Functions [2]: [partial_first(calculationDateTime#2745, false), partial_collect_list(stockQuantity#2805, 0, 0)]
Aggregate Attributes [3]: [first#4608, valueSet#4609, buf#4610]
Results [8]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741, first#4611, valueSet#4612, buf#4613]
(672) ObjectHashAggregate
Input [8]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741, first#4611, valueSet#4612, buf#4613]
Keys [5]: [plantUuid#2772, internalUUID#2742, plant#2744, product#2743, systemId#2741]
Functions [2]: [first(calculationDateTime#2745, false), collect_list(stockQuantity#2805, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#2745)()#1345, collect_list(stockQuantity#2805, 0, 0)#1346]
Results [4]: [product#2743, plant#2744, first(calculationDateTime#2745)()#1345 AS calculationDateTime#2806, collect_list(stockQuantity#2805, 0, 0)#1346 AS stockQuantities#2807]
(673) Filter
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantities#2807]
Condition : ((size(stockQuantities#2807, true) > 0) AND isnotnull(calculationDateTime#2806))
(674) Generate
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantities#2807]
Arguments: explode(stockQuantities#2807), [product#2743, plant#2744, calculationDateTime#2806], false, [stockQuantity#2808]
(675) Filter
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantity#2808]
Condition : (((isnotnull(stockQuantity#2808.specialStockIndicator.code) AND isnotnull(stockQuantity#2808.stockType.code)) AND (stockQuantity#2808.specialStockIndicator.code = )) AND (stockQuantity#2808.stockType.code = 01))
(676) Project
Output [5]: [plant#2744.internalRefUUID AS plantUuid#2810, product#2743.internalRefUUID AS productUuid#2812, calculationDateTime#2806, stockQuantity#2808.storagelocation.id AS storageLocId#2813, stockQuantity#2808.quantity.measure AS quantity#2815]
Input [4]: [product#2743, plant#2744, calculationDateTime#2806, stockQuantity#2808]
(677) Exchange
Input [5]: [plantUuid#2810, productUuid#2812, calculationDateTime#2806, storageLocId#2813, quantity#2815]
Arguments: hashpartitioning(plantUuid#2810, productUuid#2812, 37), ENSURE_REQUIREMENTS, [plan_id=3956]
(678) Sort
Input [5]: [plantUuid#2810, productUuid#2812, calculationDateTime#2806, storageLocId#2813, quantity#2815]
Arguments: [plantUuid#2810 ASC NULLS FIRST, productUuid#2812 ASC NULLS FIRST], false, 0
(679) Scan parquet
Output [3]: [product#2818, plant#2819, orderDateTime#2820]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(680) Filter
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Condition : ((isnotnull(orderDateTime#2820) AND isnotnull(plant#2819)) AND isnotnull(product#2818))
(681) Exchange
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: hashpartitioning(product#2818, plant#2819, 37), REPARTITION_BY_NUM, [plan_id=3776]
(682) Exchange
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: hashpartitioning(coalesce(product#2818, ), isnull(product#2818), coalesce(plant#2819, ), isnull(plant#2819), 37), ENSURE_REQUIREMENTS, [plan_id=3936]
(683) Sort
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: [coalesce(product#2818, ) ASC NULLS FIRST, isnull(product#2818) ASC NULLS FIRST, coalesce(plant#2819, ) ASC NULLS FIRST, isnull(plant#2819) ASC NULLS FIRST], false, 0
(684) Scan parquet
Output [4]: [plant#2824, product#2825, productionAspect#2827, systemId#2822]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(685) Project
Output [4]: [plant#2824.internalRefUUID AS _extract_internalRefUUID#3314, product#2825.internalRefUUID AS _extract_internalRefUUID#3313, productionAspect#2827.productMovementPlants.unitOfIssue.code AS _extract_code#3315, productionAspect#2827.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#3316]
Input [4]: [plant#2824, product#2825, productionAspect#2827, systemId#2822]
(686) Exchange
Input [4]: [_extract_internalRefUUID#3314, _extract_internalRefUUID#3313, _extract_code#3315, _extract_internalRefUUID#3316]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3589]
(687) Project
Output [4]: [_extract_code#3315, _extract_internalRefUUID#3316, _extract_internalRefUUID#3313, _extract_internalRefUUID#3314]
Input [4]: [_extract_internalRefUUID#3314, _extract_internalRefUUID#3313, _extract_code#3315, _extract_internalRefUUID#3316]
(688) Exchange
Input [4]: [_extract_code#3315, _extract_internalRefUUID#3316, _extract_internalRefUUID#3313, _extract_internalRefUUID#3314]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#3313, ), isnull(_extract_internalRefUUID#3313), coalesce(_extract_internalRefUUID#3314, ), isnull(_extract_internalRefUUID#3314), 37), ENSURE_REQUIREMENTS, [plan_id=3937]
(689) Sort
Input [4]: [_extract_code#3315, _extract_internalRefUUID#3316, _extract_internalRefUUID#3313, _extract_internalRefUUID#3314]
Arguments: [coalesce(_extract_internalRefUUID#3313, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3313) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#3314, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3314) ASC NULLS FIRST], false, 0
(690) SortMergeJoin
Left keys [4]: [coalesce(product#2818, ), isnull(product#2818), coalesce(plant#2819, ), isnull(plant#2819)]
Right keys [4]: [coalesce(_extract_internalRefUUID#3313, ), isnull(_extract_internalRefUUID#3313), coalesce(_extract_internalRefUUID#3314, ), isnull(_extract_internalRefUUID#3314)]
Join type: LeftOuter
Join condition: None
(691) Project
Output [5]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#3315, _extract_internalRefUUID#3316]
Input [7]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#3315, _extract_internalRefUUID#3316, _extract_internalRefUUID#3313, _extract_internalRefUUID#3314]
(692) Exchange
Input [5]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#3315, _extract_internalRefUUID#3316]
Arguments: hashpartitioning(product#2818, 37), ENSURE_REQUIREMENTS, [plan_id=3944]
(693) Sort
Input [5]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#3315, _extract_internalRefUUID#3316]
Arguments: [product#2818 ASC NULLS FIRST], false, 0
(694) Scan parquet
Output [4]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839, systemId#2832]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(695) Filter
Input [4]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839, systemId#2832]
Condition : isnotnull(internalUUID#2833)
(696) Project
Output [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Input [4]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839, systemId#2832]
(697) Exchange
Input [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3596]
(698) Exchange
Input [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Arguments: hashpartitioning(internalUUID#2833, 37), ENSURE_REQUIREMENTS, [plan_id=3945]
(699) Sort
Input [3]: [internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
Arguments: [internalUUID#2833 ASC NULLS FIRST], false, 0
(700) SortMergeJoin
Left keys [1]: [product#2818]
Right keys [1]: [internalUUID#2833]
Join type: LeftOuter
Join condition: None
(701) Project
Output [4]: [product#2818, plant#2819, orderDateTime#2820, filter(unitOfMeasureConversions#2839, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#3315) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#3316)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2837.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2837.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2843]
Input [8]: [product#2818, plant#2819, orderDateTime#2820, _extract_code#3315, _extract_internalRefUUID#3316, internalUUID#2833, baseUnitOfMeasure#2837, unitOfMeasureConversions#2839]
(702) Generate
Input [4]: [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843]
Arguments: explode(filteredUnitOfMeasureConversions#2843.quantityNumerator), [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843], true, [quantityNumerator#2844]
(703) Project
Output [4]: [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843.quantityDenominator AS _extract_quantityDenominator#3190]
Input [5]: [product#2818, plant#2819, orderDateTime#2820, filteredUnitOfMeasureConversions#2843, quantityNumerator#2844]
(704) Generate
Input [4]: [product#2818, plant#2819, orderDateTime#2820, _extract_quantityDenominator#3190]
Arguments: explode(_extract_quantityDenominator#3190), [product#2818, plant#2819, orderDateTime#2820], true, [quantityDenominator#2845]
(705) Project
Output [3]: [product#2818, plant#2819, orderDateTime#2820]
Input [4]: [product#2818, plant#2819, orderDateTime#2820, quantityDenominator#2845]
(706) Exchange
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: hashpartitioning(plant#2819, product#2818, 37), ENSURE_REQUIREMENTS, [plan_id=3957]
(707) Sort
Input [3]: [product#2818, plant#2819, orderDateTime#2820]
Arguments: [plant#2819 ASC NULLS FIRST, product#2818 ASC NULLS FIRST], false, 0
(708) SortMergeJoin
Left keys [2]: [plantUuid#2810, productUuid#2812]
Right keys [2]: [plant#2819, product#2818]
Join type: Inner
Join condition: (calculationDateTime#2806 <= orderDateTime#2820)
(709) Project
Output [5]: [plantUuid#2810 AS plant#2848, productUuid#2812 AS product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815]
Input [8]: [plantUuid#2810, productUuid#2812, calculationDateTime#2806, storageLocId#2813, quantity#2815, product#2818, plant#2819, orderDateTime#2820]
(710) Exchange
Input [5]: [plant#2848, product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815]
Arguments: hashpartitioning(coalesce(plant#2848, ), isnull(plant#2848), coalesce(product#2849, ), isnull(product#2849), coalesce(storageLocId#2813, ), isnull(storageLocId#2813), coalesce(calculationDateTime#2806, 1970-01-01 00:00:00), isnull(calculationDateTime#2806), 37), ENSURE_REQUIREMENTS, [plan_id=4030]
(711) Sort
Input [5]: [plant#2848, product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815]
Arguments: [coalesce(plant#2848, ) ASC NULLS FIRST, isnull(plant#2848) ASC NULLS FIRST, coalesce(product#2849, ) ASC NULLS FIRST, isnull(product#2849) ASC NULLS FIRST, coalesce(storageLocId#2813, ) ASC NULLS FIRST, isnull(storageLocId#2813) ASC NULLS FIRST, coalesce(calculationDateTime#2806, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#2806) ASC NULLS FIRST], false, 0
(712) Scan parquet
Output [6]: [internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, systemId#2850]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(713) Filter
Input [6]: [internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, systemId#2850]
Condition : (isnotnull(plant#2853.internalRefUUID) AND isnotnull(product#2852.internalRefUUID))
(714) Project
Output [6]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855]
Input [6]: [internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, systemId#2850]
(715) Exchange
Input [6]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3608]
(716) BroadcastExchange
Input [6]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855]
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=3990]
(717) Scan parquet
Output [2]: [marketUnit#2856, distributionCenters#2862]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(718) Filter
Input [2]: [marketUnit#2856, distributionCenters#2862]
Condition : (((marketUnit#2856 <=> 10000_OP_PERF) AND (size(distributionCenters#2862, true) > 0)) AND isnotnull(distributionCenters#2862))
(719) Project
Output [1]: [distributionCenters#2862]
Input [2]: [marketUnit#2856, distributionCenters#2862]
(720) Exchange
Input [1]: [distributionCenters#2862]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3612]
(721) Generate
Input [1]: [distributionCenters#2862]
Arguments: explode(distributionCenters#2862), false, [distributionCenters#2878]
(722) Filter
Input [1]: [distributionCenters#2878]
Condition : (((size(distributionCenters#2878.storageLocations, true) > 0) AND isnotnull(distributionCenters#2878.storageLocations)) AND isnotnull(distributionCenters#2878.internalRefUUID))
(723) Project
Output [2]: [distributionCenters#2878.internalRefUUID AS _extract_internalRefUUID#3197, distributionCenters#2878.storageLocations AS _extract_storageLocations#3198]
Input [1]: [distributionCenters#2878]
(724) Generate
Input [2]: [_extract_internalRefUUID#3197, _extract_storageLocations#3198]
Arguments: explode(_extract_storageLocations#3198), [_extract_internalRefUUID#3197], false, [storageLocations#2879]
(725) Project
Output [3]: [_extract_internalRefUUID#3197 AS plantUuid#2881, storageLocations#2879.id AS storageLocId#2882, storageLocations#2879.internalRefUUID AS storageLocUuid#2883]
Input [2]: [_extract_internalRefUUID#3197, storageLocations#2879]
(726) BroadcastExchange
Input [3]: [plantUuid#2881, storageLocId#2882, storageLocUuid#2883]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=3986]
(727) Scan parquet
Output [2]: [product#2884, plant#2885]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(728) Filter
Input [2]: [product#2884, plant#2885]
Condition : isnotnull(plant#2885)
(729) Exchange
Input [2]: [product#2884, plant#2885]
Arguments: hashpartitioning(product#2884, plant#2885, 37), REPARTITION_BY_NUM, [plan_id=3787]
(730) Exchange
Input [2]: [product#2884, plant#2885]
Arguments: hashpartitioning(coalesce(product#2884, ), isnull(product#2884), coalesce(plant#2885, ), isnull(plant#2885), 37), ENSURE_REQUIREMENTS, [plan_id=3963]
(731) Sort
Input [2]: [product#2884, plant#2885]
Arguments: [coalesce(product#2884, ) ASC NULLS FIRST, isnull(product#2884) ASC NULLS FIRST, coalesce(plant#2885, ) ASC NULLS FIRST, isnull(plant#2885) ASC NULLS FIRST], false, 0
(732) Scan parquet
Output [4]: [plant#2890, product#2891, productionAspect#2893, systemId#2888]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(733) Project
Output [4]: [plant#2890.internalRefUUID AS _extract_internalRefUUID#3317, product#2891.internalRefUUID AS _extract_internalRefUUID#3320, productionAspect#2893.productMovementPlants.unitOfIssue.code AS _extract_code#3318, productionAspect#2893.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#3319]
Input [4]: [plant#2890, product#2891, productionAspect#2893, systemId#2888]
(734) Exchange
Input [4]: [_extract_internalRefUUID#3317, _extract_internalRefUUID#3320, _extract_code#3318, _extract_internalRefUUID#3319]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3624]
(735) Project
Output [4]: [_extract_code#3318, _extract_internalRefUUID#3319, _extract_internalRefUUID#3320, _extract_internalRefUUID#3317]
Input [4]: [_extract_internalRefUUID#3317, _extract_internalRefUUID#3320, _extract_code#3318, _extract_internalRefUUID#3319]
(736) Exchange
Input [4]: [_extract_code#3318, _extract_internalRefUUID#3319, _extract_internalRefUUID#3320, _extract_internalRefUUID#3317]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#3320, ), isnull(_extract_internalRefUUID#3320), coalesce(_extract_internalRefUUID#3317, ), isnull(_extract_internalRefUUID#3317), 37), ENSURE_REQUIREMENTS, [plan_id=3964]
(737) Sort
Input [4]: [_extract_code#3318, _extract_internalRefUUID#3319, _extract_internalRefUUID#3320, _extract_internalRefUUID#3317]
Arguments: [coalesce(_extract_internalRefUUID#3320, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3320) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#3317, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3317) ASC NULLS FIRST], false, 0
(738) SortMergeJoin
Left keys [4]: [coalesce(product#2884, ), isnull(product#2884), coalesce(plant#2885, ), isnull(plant#2885)]
Right keys [4]: [coalesce(_extract_internalRefUUID#3320, ), isnull(_extract_internalRefUUID#3320), coalesce(_extract_internalRefUUID#3317, ), isnull(_extract_internalRefUUID#3317)]
Join type: LeftOuter
Join condition: None
(739) Project
Output [4]: [product#2884, plant#2885, _extract_code#3318, _extract_internalRefUUID#3319]
Input [6]: [product#2884, plant#2885, _extract_code#3318, _extract_internalRefUUID#3319, _extract_internalRefUUID#3320, _extract_internalRefUUID#3317]
(740) Exchange
Input [4]: [product#2884, plant#2885, _extract_code#3318, _extract_internalRefUUID#3319]
Arguments: hashpartitioning(product#2884, 37), ENSURE_REQUIREMENTS, [plan_id=3971]
(741) Sort
Input [4]: [product#2884, plant#2885, _extract_code#3318, _extract_internalRefUUID#3319]
Arguments: [product#2884 ASC NULLS FIRST], false, 0
(742) Scan parquet
Output [4]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905, systemId#2898]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(743) Filter
Input [4]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905, systemId#2898]
Condition : isnotnull(internalUUID#2899)
(744) Project
Output [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Input [4]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905, systemId#2898]
(745) Exchange
Input [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3631]
(746) Exchange
Input [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Arguments: hashpartitioning(internalUUID#2899, 37), ENSURE_REQUIREMENTS, [plan_id=3972]
(747) Sort
Input [3]: [internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
Arguments: [internalUUID#2899 ASC NULLS FIRST], false, 0
(748) SortMergeJoin
Left keys [1]: [product#2884]
Right keys [1]: [internalUUID#2899]
Join type: LeftOuter
Join condition: None
(749) Project
Output [2]: [plant#2885, filter(unitOfMeasureConversions#2905, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#3318) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#3319)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2903.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2903.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2909]
Input [7]: [product#2884, plant#2885, _extract_code#3318, _extract_internalRefUUID#3319, internalUUID#2899, baseUnitOfMeasure#2903, unitOfMeasureConversions#2905]
(750) Generate
Input [2]: [plant#2885, filteredUnitOfMeasureConversions#2909]
Arguments: explode(filteredUnitOfMeasureConversions#2909.quantityNumerator), [plant#2885, filteredUnitOfMeasureConversions#2909], true, [quantityNumerator#2910]
(751) Project
Output [2]: [plant#2885, filteredUnitOfMeasureConversions#2909.quantityDenominator AS _extract_quantityDenominator#3199]
Input [3]: [plant#2885, filteredUnitOfMeasureConversions#2909, quantityNumerator#2910]
(752) Generate
Input [2]: [plant#2885, _extract_quantityDenominator#3199]
Arguments: explode(_extract_quantityDenominator#3199), [plant#2885], true, [quantityDenominator#2911]
(753) Project
Output [1]: [plant#2885]
Input [2]: [plant#2885, quantityDenominator#2911]
(754) HashAggregate
Input [1]: [plant#2885]
Keys [1]: [plant#2885]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2885]
(755) Exchange
Input [1]: [plant#2885]
Arguments: hashpartitioning(plant#2885, 37), ENSURE_REQUIREMENTS, [plan_id=3983]
(756) HashAggregate
Input [1]: [plant#2885]
Keys [1]: [plant#2885]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#2885]
(757) BroadcastHashJoin
Left keys [1]: [plantUuid#2881]
Right keys [1]: [plant#2885]
Join type: Inner
Join condition: None
(758) Project
Output [3]: [plantUuid#2881, storageLocId#2882, storageLocUuid#2883]
Input [4]: [plantUuid#2881, storageLocId#2882, storageLocUuid#2883, plant#2885]
(759) BroadcastHashJoin
Left keys [2]: [coalesce(plant#2853.internalRefUUID, ), isnull(plant#2853.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#2881, ), isnull(plantUuid#2881)]
Join type: Inner
Join condition: None
(760) Generate
Input [9]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, stockQuantities#2855, plantUuid#2881, storageLocId#2882, storageLocUuid#2883]
Arguments: explode(filter(stockQuantities#2855, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#2883) AND (lambda x#1330.storageLocation.Id = storageLocId#2882)), lambda x#1330, false))), [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, plantUuid#2881], false, [stockQuantity#2914]
(761) ObjectHashAggregate
Input [7]: [systemId#2850, internalUUID#2851, product#2852, plant#2853, calculationDateTime#2854, plantUuid#2881, stockQuantity#2914]
Keys [5]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850]
Functions [2]: [partial_first(calculationDateTime#2854, false), partial_collect_list(stockQuantity#2914, 0, 0)]
Aggregate Attributes [3]: [first#4616, valueSet#4617, buf#4618]
Results [8]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850, first#4619, valueSet#4620, buf#4621]
(762) ObjectHashAggregate
Input [8]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850, first#4619, valueSet#4620, buf#4621]
Keys [5]: [plantUuid#2881, internalUUID#2851, plant#2853, product#2852, systemId#2850]
Functions [2]: [first(calculationDateTime#2854, false), collect_list(stockQuantity#2914, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#2854)()#1345, collect_list(stockQuantity#2914, 0, 0)#1346]
Results [4]: [product#2852, plant#2853, first(calculationDateTime#2854)()#1345 AS calculationDateTime#2915, collect_list(stockQuantity#2914, 0, 0)#1346 AS stockQuantities#2916]
(763) Filter
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantities#2916]
Condition : ((size(stockQuantities#2916, true) > 0) AND isnotnull(calculationDateTime#2915))
(764) Generate
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantities#2916]
Arguments: explode(stockQuantities#2916), [product#2852, plant#2853, calculationDateTime#2915], false, [stockQuantity#2917]
(765) Filter
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantity#2917]
Condition : (((isnotnull(stockQuantity#2917.specialStockIndicator.code) AND isnotnull(stockQuantity#2917.stockType.code)) AND (stockQuantity#2917.specialStockIndicator.code = )) AND (stockQuantity#2917.stockType.code = 01))
(766) Project
Output [4]: [plant#2853.internalRefUUID AS plantUuid#2919, product#2852.internalRefUUID AS productUuid#2921, calculationDateTime#2915, stockQuantity#2917.storagelocation.id AS storageLocId#2922]
Input [4]: [product#2852, plant#2853, calculationDateTime#2915, stockQuantity#2917]
(767) Exchange
Input [4]: [plantUuid#2919, productUuid#2921, calculationDateTime#2915, storageLocId#2922]
Arguments: hashpartitioning(plantUuid#2919, productUuid#2921, 37), ENSURE_REQUIREMENTS, [plan_id=4020]
(768) Sort
Input [4]: [plantUuid#2919, productUuid#2921, calculationDateTime#2915, storageLocId#2922]
Arguments: [plantUuid#2919 ASC NULLS FIRST, productUuid#2921 ASC NULLS FIRST], false, 0
(769) Scan parquet
Output [3]: [product#2927, plant#2928, orderDateTime#2929]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(770) Filter
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Condition : ((isnotnull(orderDateTime#2929) AND isnotnull(plant#2928)) AND isnotnull(product#2927))
(771) Exchange
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: hashpartitioning(product#2927, plant#2928, 37), REPARTITION_BY_NUM, [plan_id=3808]
(772) Exchange
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: hashpartitioning(coalesce(product#2927, ), isnull(product#2927), coalesce(plant#2928, ), isnull(plant#2928), 37), ENSURE_REQUIREMENTS, [plan_id=4000]
(773) Sort
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: [coalesce(product#2927, ) ASC NULLS FIRST, isnull(product#2927) ASC NULLS FIRST, coalesce(plant#2928, ) ASC NULLS FIRST, isnull(plant#2928) ASC NULLS FIRST], false, 0
(774) Scan parquet
Output [4]: [plant#2933, product#2934, productionAspect#2936, systemId#2931]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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#2933.internalRefUUID AS _extract_internalRefUUID#3321, product#2934.internalRefUUID AS _extract_internalRefUUID#3322, productionAspect#2936.productMovementPlants.unitOfIssue.code AS _extract_code#3323, productionAspect#2936.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#3324]
Input [4]: [plant#2933, product#2934, productionAspect#2936, systemId#2931]
(776) Exchange
Input [4]: [_extract_internalRefUUID#3321, _extract_internalRefUUID#3322, _extract_code#3323, _extract_internalRefUUID#3324]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3656]
(777) Project
Output [4]: [_extract_code#3323, _extract_internalRefUUID#3324, _extract_internalRefUUID#3322, _extract_internalRefUUID#3321]
Input [4]: [_extract_internalRefUUID#3321, _extract_internalRefUUID#3322, _extract_code#3323, _extract_internalRefUUID#3324]
(778) Exchange
Input [4]: [_extract_code#3323, _extract_internalRefUUID#3324, _extract_internalRefUUID#3322, _extract_internalRefUUID#3321]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#3322, ), isnull(_extract_internalRefUUID#3322), coalesce(_extract_internalRefUUID#3321, ), isnull(_extract_internalRefUUID#3321), 37), ENSURE_REQUIREMENTS, [plan_id=4001]
(779) Sort
Input [4]: [_extract_code#3323, _extract_internalRefUUID#3324, _extract_internalRefUUID#3322, _extract_internalRefUUID#3321]
Arguments: [coalesce(_extract_internalRefUUID#3322, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3322) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#3321, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3321) ASC NULLS FIRST], false, 0
(780) SortMergeJoin
Left keys [4]: [coalesce(product#2927, ), isnull(product#2927), coalesce(plant#2928, ), isnull(plant#2928)]
Right keys [4]: [coalesce(_extract_internalRefUUID#3322, ), isnull(_extract_internalRefUUID#3322), coalesce(_extract_internalRefUUID#3321, ), isnull(_extract_internalRefUUID#3321)]
Join type: LeftOuter
Join condition: None
(781) Project
Output [5]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#3323, _extract_internalRefUUID#3324]
Input [7]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#3323, _extract_internalRefUUID#3324, _extract_internalRefUUID#3322, _extract_internalRefUUID#3321]
(782) Exchange
Input [5]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#3323, _extract_internalRefUUID#3324]
Arguments: hashpartitioning(product#2927, 37), ENSURE_REQUIREMENTS, [plan_id=4008]
(783) Sort
Input [5]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#3323, _extract_internalRefUUID#3324]
Arguments: [product#2927 ASC NULLS FIRST], false, 0
(784) Scan parquet
Output [4]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948, systemId#2941]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(785) Filter
Input [4]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948, systemId#2941]
Condition : isnotnull(internalUUID#2942)
(786) Project
Output [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Input [4]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948, systemId#2941]
(787) Exchange
Input [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3663]
(788) Exchange
Input [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Arguments: hashpartitioning(internalUUID#2942, 37), ENSURE_REQUIREMENTS, [plan_id=4009]
(789) Sort
Input [3]: [internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
Arguments: [internalUUID#2942 ASC NULLS FIRST], false, 0
(790) SortMergeJoin
Left keys [1]: [product#2927]
Right keys [1]: [internalUUID#2942]
Join type: LeftOuter
Join condition: None
(791) Project
Output [4]: [product#2927, plant#2928, orderDateTime#2929, filter(unitOfMeasureConversions#2948, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#3323) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#3324)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#2946.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2946.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#2952]
Input [8]: [product#2927, plant#2928, orderDateTime#2929, _extract_code#3323, _extract_internalRefUUID#3324, internalUUID#2942, baseUnitOfMeasure#2946, unitOfMeasureConversions#2948]
(792) Generate
Input [4]: [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952]
Arguments: explode(filteredUnitOfMeasureConversions#2952.quantityNumerator), [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952], true, [quantityNumerator#2953]
(793) Project
Output [4]: [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952.quantityDenominator AS _extract_quantityDenominator#3206]
Input [5]: [product#2927, plant#2928, orderDateTime#2929, filteredUnitOfMeasureConversions#2952, quantityNumerator#2953]
(794) Generate
Input [4]: [product#2927, plant#2928, orderDateTime#2929, _extract_quantityDenominator#3206]
Arguments: explode(_extract_quantityDenominator#3206), [product#2927, plant#2928, orderDateTime#2929], true, [quantityDenominator#2954]
(795) Project
Output [3]: [product#2927, plant#2928, orderDateTime#2929]
Input [4]: [product#2927, plant#2928, orderDateTime#2929, quantityDenominator#2954]
(796) Exchange
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: hashpartitioning(plant#2928, product#2927, 37), ENSURE_REQUIREMENTS, [plan_id=4021]
(797) Sort
Input [3]: [product#2927, plant#2928, orderDateTime#2929]
Arguments: [plant#2928 ASC NULLS FIRST, product#2927 ASC NULLS FIRST], false, 0
(798) SortMergeJoin
Left keys [2]: [plantUuid#2919, productUuid#2921]
Right keys [2]: [plant#2928, product#2927]
Join type: Inner
Join condition: (calculationDateTime#2915 <= orderDateTime#2929)
(799) Project
Output [4]: [plantUuid#2919 AS plant#2957, productUuid#2921 AS product#2958, storageLocId#2922, calculationDateTime#2915]
Input [7]: [plantUuid#2919, productUuid#2921, calculationDateTime#2915, storageLocId#2922, product#2927, plant#2928, orderDateTime#2929]
(800) HashAggregate
Input [4]: [plant#2957, product#2958, storageLocId#2922, calculationDateTime#2915]
Keys [3]: [plant#2957, product#2958, storageLocId#2922]
Functions [1]: [partial_max(calculationDateTime#2915)]
Aggregate Attributes [1]: [max#4614]
Results [4]: [plant#2957, product#2958, storageLocId#2922, max#4615]
(801) HashAggregate
Input [4]: [plant#2957, product#2958, storageLocId#2922, max#4615]
Keys [3]: [plant#2957, product#2958, storageLocId#2922]
Functions [1]: [max(calculationDateTime#2915)]
Aggregate Attributes [1]: [max(calculationDateTime#2915)#1408]
Results [4]: [plant#2957, product#2958, storageLocId#2922, max(calculationDateTime#2915)#1408 AS max_calc_datetime#2959]
(802) Exchange
Input [4]: [plant#2957, product#2958, storageLocId#2922, max_calc_datetime#2959]
Arguments: hashpartitioning(coalesce(plant#2957, ), isnull(plant#2957), coalesce(product#2958, ), isnull(product#2958), coalesce(storageLocId#2922, ), isnull(storageLocId#2922), coalesce(max_calc_datetime#2959, 1970-01-01 00:00:00), isnull(max_calc_datetime#2959), 37), ENSURE_REQUIREMENTS, [plan_id=4031]
(803) Sort
Input [4]: [plant#2957, product#2958, storageLocId#2922, max_calc_datetime#2959]
Arguments: [coalesce(plant#2957, ) ASC NULLS FIRST, isnull(plant#2957) ASC NULLS FIRST, coalesce(product#2958, ) ASC NULLS FIRST, isnull(product#2958) ASC NULLS FIRST, coalesce(storageLocId#2922, ) ASC NULLS FIRST, isnull(storageLocId#2922) ASC NULLS FIRST, coalesce(max_calc_datetime#2959, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#2959) ASC NULLS FIRST], false, 0
(804) SortMergeJoin
Left keys [8]: [coalesce(plant#2848, ), isnull(plant#2848), coalesce(product#2849, ), isnull(product#2849), coalesce(storageLocId#2813, ), isnull(storageLocId#2813), coalesce(calculationDateTime#2806, 1970-01-01 00:00:00), isnull(calculationDateTime#2806)]
Right keys [8]: [coalesce(plant#2957, ), isnull(plant#2957), coalesce(product#2958, ), isnull(product#2958), coalesce(storageLocId#2922, ), isnull(storageLocId#2922), coalesce(max_calc_datetime#2959, 1970-01-01 00:00:00), isnull(max_calc_datetime#2959)]
Join type: Inner
Join condition: None
(805) Project
Output [4]: [plant#2848, product#2849, calculationDateTime#2806, quantity#2815]
Input [9]: [plant#2848, product#2849, storageLocId#2813, calculationDateTime#2806, quantity#2815, plant#2957, product#2958, storageLocId#2922, max_calc_datetime#2959]
(806) HashAggregate
Input [4]: [plant#2848, product#2849, calculationDateTime#2806, quantity#2815]
Keys [2]: [product#2849, plant#2848]
Functions [2]: [partial_min(calculationDateTime#2806), partial_sum(quantity#2815)]
Aggregate Attributes [2]: [min#4604, sum#4605]
Results [4]: [product#2849, plant#2848, min#4606, sum#4607]
(807) Exchange
Input [4]: [product#2849, plant#2848, min#4606, sum#4607]
Arguments: hashpartitioning(product#2849, plant#2848, 37), ENSURE_REQUIREMENTS, [plan_id=4038]
(808) HashAggregate
Input [4]: [product#2849, plant#2848, min#4606, sum#4607]
Keys [2]: [product#2849, plant#2848]
Functions [2]: [min(calculationDateTime#2806), sum(quantity#2815)]
Aggregate Attributes [2]: [min(calculationDateTime#2806)#1534, sum(quantity#2815)#1533]
Results [4]: [product#2849, plant#2848, min(calculationDateTime#2806)#1534 AS minCalculationDateTime#2961, round(sum(quantity#2815)#1533, 0) AS roundedQuantitySum#2962]
(809) Sort
Input [4]: [product#2849, plant#2848, minCalculationDateTime#2961, roundedQuantitySum#2962]
Arguments: [product#2849 ASC NULLS FIRST, plant#2848 ASC NULLS FIRST], false, 0
(810) SortMergeJoin
Left keys [2]: [product#2711, plant#2712]
Right keys [2]: [product#2849, plant#2848]
Join type: LeftOuter
Join condition: None
(811) Project
Output [7]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, CASE WHEN isnotnull(minCalculationDateTime#2961) THEN minCalculationDateTime#2961 ELSE orderDateTime#2713 END AS stockDatetime#2963, CASE WHEN isnotnull(roundedQuantitySum#2962) THEN array(roundedQuantitySum#2962) ELSE [0.0] END AS stockBatchQuantities#2964]
Input [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, product#2849, plant#2848, minCalculationDateTime#2961, roundedQuantitySum#2962]
(812) Scan parquet
Output [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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>>>
(813) BroadcastExchange
Input [9]: [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=4048]
(814) BroadcastHashJoin
Left keys [4]: [coalesce(plant#2712, ), isnull(plant#2712), coalesce(product#2711, ), isnull(product#2711)]
Right keys [4]: [coalesce(plant#1573, ), isnull(plant#1573), coalesce(product#1572, ), isnull(product#1572)]
Join type: LeftOuter
Join condition: None
(815) Project
Output [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, CASE WHEN isnotnull(product#1572) THEN struct(demandChannel, demandChannel#1574, demandStream, demandStream#1575, considerVariance, considerVariance#1576, demandTimeBuckets, demandTimeBuckets#1577, demandPointInTimeStart, demandPointInTimeStart#1578, demandPointInTimeEnd, demandPointInTimeEnd#1579, demandPointInTime, demandPointInTime#1580) END AS rawDemands#1582]
Input [16]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580]
(816) ObjectHashAggregate
Input [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, rawDemands#1582]
Keys [8]: [product#2711, plant#2712, orderDateTime#2713, knownfloatingpointnormalized(if (isnull(productPlant#2724)) null else named_struct(systemId, productPlant#2724.systemId, internalUUID, productPlant#2724.internalUUID, plant, productPlant#2724.plant, product, productPlant#2724.product, blockedForReplenishmentStartingFrom, productPlant#2724.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#2724.productionAspect)) null else named_struct(productMovementPlants, productPlant#2724.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#2724.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#2724.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#2724.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#2724.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#2724.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#2724.salesPlant, listing, productPlant#2724.listing, sourceOfSupplyCategory, productPlant#2724.sourceOfSupplyCategory)) AS productPlant#2724, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#2740)) AS outboundUnit#2740, stockDatetime#2963, knownfloatingpointnormalized(transform(stockBatchQuantities#2964, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#4601)), lambda arg#4601, false))) AS stockBatchQuantities#2964, [7226582400000000] AS [7226582400000000]#4600]
Functions [1]: [partial_collect_list(rawDemands#1582, 0, 0)]
Aggregate Attributes [1]: [buf#4602]
Results [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#4600, buf#4603]
(817) ObjectHashAggregate
Input [9]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#4600, buf#4603]
Keys [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000]#4600]
Functions [1]: [collect_list(rawDemands#1582, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1582, 0, 0)#1602]
Results [8]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, collect_list(rawDemands#1582, 0, 0)#1602 AS rawDemands#1583]
(818) Scan parquet
Output [3]: [internalUUID#2662, address#2668, systemId#2661]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(819) Project
Output [2]: [internalUUID#2662, address#2668.timeZone.code AS timezonecode#2674]
Input [3]: [internalUUID#2662, address#2668, systemId#2661]
(820) Exchange
Input [2]: [internalUUID#2662, timezonecode#2674]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3687]
(821) BroadcastExchange
Input [2]: [internalUUID#2662, timezonecode#2674]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=4054]
(822) BroadcastHashJoin
Left keys [2]: [coalesce(plant#2712, ), isnull(plant#2712)]
Right keys [2]: [coalesce(internalUUID#2662, ), isnull(internalUUID#2662)]
Join type: LeftOuter
Join condition: None
(823) Project
Output [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#2965, rawDemands#1583, CASE WHEN isnotnull(timezonecode#2674) THEN timezonecode#2674 ELSE UTC END AS timezonecode#2676]
Input [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, rawDemands#1583, internalUUID#2662, timezonecode#2674]
(824) DeserializeToObject
Input [10]: [product#2711, plant#2712, orderDateTime#2713, productPlant#2724, outboundUnit#2740, stockDatetime#2963, stockBatchQuantities#2964, stockBatchShelfLifeEndDatetimes#2965, rawDemands#1583, timezonecode#2676]
Arguments: createexternalrow(invoke(product#2711.toString()), invoke(plant#2712.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#2713)), if (isnull(productPlant#2724)) null else createexternalrow(invoke(productPlant#2724.systemId.toString()), invoke(productPlant#2724.internalUUID.toString()), if (isnull(productPlant#2724.plant)) null else createexternalrow(invoke(productPlant#2724.plant.internalRefUUID.toString()), invoke(productPlant#2724.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#2724.product)) null else createexternalrow(invoke(productPlant#2724.product.internalRefUUID.toString()), invoke(productPlant#2724.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#2724.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#2724.productionAspect)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#2724.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#2724.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#2724.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#2724.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#2724.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#2724.salesPlant)) null else createexternalrow(if (isnull(productPlant#2724.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#2724.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#2724.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#2724.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#2724.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#2724.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#2724.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#2740)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#2963)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#2964, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#2965, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#1583, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#2676.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#2697: org.apache.spark.sql.Row
(825) MapElements
Input [1]: [obj#2697]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000802111db0@1fa786b, obj#2702: org.apache.spark.sql.Row
(826) SerializeFromObject
Input [1]: [obj#2702]
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#2707, 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#2708]
(827) Exchange
Input [2]: [product#2707, plant#2708]
Arguments: hashpartitioning(coalesce(plant#2708, ), isnull(plant#2708), coalesce(product#2707, ), isnull(product#2707), 37), ENSURE_REQUIREMENTS, [plan_id=4063]
(828) Sort
Input [2]: [product#2707, plant#2708]
Arguments: [coalesce(plant#2708, ) ASC NULLS FIRST, isnull(plant#2708) ASC NULLS FIRST, coalesce(product#2707, ) ASC NULLS FIRST, isnull(product#2707) ASC NULLS FIRST], false, 0
(829) SortMergeJoin
Left keys [4]: [coalesce(plant#1128, ), isnull(plant#1128), coalesce(product#1127, ), isnull(product#1127)]
Right keys [4]: [coalesce(plant#2708, ), isnull(plant#2708), coalesce(product#2707, ), isnull(product#2707)]
Join type: LeftOuter
Join condition: None
(830) Project
Output [2]: [product#1127, plant#1128]
Input [4]: [product#1127, plant#1128, product#2707, plant#2708]
(831) Exchange
Input [2]: [product#1127, plant#1128]
Arguments: hashpartitioning(plant#1128, 37), ENSURE_REQUIREMENTS, [plan_id=4097]
(832) Sort
Input [2]: [product#1127, plant#1128]
Arguments: [plant#1128 ASC NULLS FIRST], false, 0
(833) Scan parquet
Output [2]: [marketUnit#3043, distributionCenters#3049]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(834) Filter
Input [2]: [marketUnit#3043, distributionCenters#3049]
Condition : (((marketUnit#3043 <=> 10000_OP_PERF) AND (size(distributionCenters#3049, true) > 0)) AND isnotnull(distributionCenters#3049))
(835) Project
Output [1]: [distributionCenters#3049]
Input [2]: [marketUnit#3043, distributionCenters#3049]
(836) Exchange
Input [1]: [distributionCenters#3049]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3698]
(837) Generate
Input [1]: [distributionCenters#3049]
Arguments: explode(distributionCenters#3049), false, [distributionCenters#3065]
(838) Filter
Input [1]: [distributionCenters#3065]
Condition : (((size(distributionCenters#3065.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#3065.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#3065.internalRefUUID))
(839) Project
Output [2]: [distributionCenters#3065.internalRefUUID AS _extract_internalRefUUID#3214, distributionCenters#3065.storageLocations.internalRefUUID AS _extract_internalRefUUID#3330]
Input [1]: [distributionCenters#3065]
(840) Generate
Input [2]: [_extract_internalRefUUID#3214, _extract_internalRefUUID#3330]
Arguments: explode(_extract_internalRefUUID#3330), [_extract_internalRefUUID#3214], false, [storageLocations#3066]
(841) Filter
Input [2]: [_extract_internalRefUUID#3214, storageLocations#3066]
Condition : isnotnull(storageLocations#3066)
(842) Project
Output [2]: [_extract_internalRefUUID#3214 AS plantUuid#3068, storageLocations#3066 AS storageLocUuid#3070]
Input [2]: [_extract_internalRefUUID#3214, storageLocations#3066]
(843) BroadcastExchange
Input [2]: [plantUuid#3068, storageLocUuid#3070]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=4092]
(844) Scan parquet
Output [2]: [product#3071, plant#3072]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(845) Filter
Input [2]: [product#3071, plant#3072]
Condition : isnotnull(plant#3072)
(846) Exchange
Input [2]: [product#3071, plant#3072]
Arguments: hashpartitioning(product#3071, plant#3072, 37), REPARTITION_BY_NUM, [plan_id=3838]
(847) Exchange
Input [2]: [product#3071, plant#3072]
Arguments: hashpartitioning(coalesce(product#3071, ), isnull(product#3071), coalesce(plant#3072, ), isnull(plant#3072), 37), ENSURE_REQUIREMENTS, [plan_id=4069]
(848) Sort
Input [2]: [product#3071, plant#3072]
Arguments: [coalesce(product#3071, ) ASC NULLS FIRST, isnull(product#3071) ASC NULLS FIRST, coalesce(plant#3072, ) ASC NULLS FIRST, isnull(plant#3072) ASC NULLS FIRST], false, 0
(849) Scan parquet
Output [4]: [plant#3077, product#3078, productionAspect#3080, systemId#3075]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(850) Project
Output [4]: [plant#3077.internalRefUUID AS _extract_internalRefUUID#3327, product#3078.internalRefUUID AS _extract_internalRefUUID#3328, productionAspect#3080.productMovementPlants.unitOfIssue.code AS _extract_code#3325, productionAspect#3080.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#3326]
Input [4]: [plant#3077, product#3078, productionAspect#3080, systemId#3075]
(851) Exchange
Input [4]: [_extract_internalRefUUID#3327, _extract_internalRefUUID#3328, _extract_code#3325, _extract_internalRefUUID#3326]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3711]
(852) Project
Output [4]: [_extract_code#3325, _extract_internalRefUUID#3326, _extract_internalRefUUID#3328, _extract_internalRefUUID#3327]
Input [4]: [_extract_internalRefUUID#3327, _extract_internalRefUUID#3328, _extract_code#3325, _extract_internalRefUUID#3326]
(853) Exchange
Input [4]: [_extract_code#3325, _extract_internalRefUUID#3326, _extract_internalRefUUID#3328, _extract_internalRefUUID#3327]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#3328, ), isnull(_extract_internalRefUUID#3328), coalesce(_extract_internalRefUUID#3327, ), isnull(_extract_internalRefUUID#3327), 37), ENSURE_REQUIREMENTS, [plan_id=4070]
(854) Sort
Input [4]: [_extract_code#3325, _extract_internalRefUUID#3326, _extract_internalRefUUID#3328, _extract_internalRefUUID#3327]
Arguments: [coalesce(_extract_internalRefUUID#3328, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3328) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#3327, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#3327) ASC NULLS FIRST], false, 0
(855) SortMergeJoin
Left keys [4]: [coalesce(product#3071, ), isnull(product#3071), coalesce(plant#3072, ), isnull(plant#3072)]
Right keys [4]: [coalesce(_extract_internalRefUUID#3328, ), isnull(_extract_internalRefUUID#3328), coalesce(_extract_internalRefUUID#3327, ), isnull(_extract_internalRefUUID#3327)]
Join type: LeftOuter
Join condition: None
(856) Project
Output [4]: [product#3071, plant#3072, _extract_code#3325, _extract_internalRefUUID#3326]
Input [6]: [product#3071, plant#3072, _extract_code#3325, _extract_internalRefUUID#3326, _extract_internalRefUUID#3328, _extract_internalRefUUID#3327]
(857) Exchange
Input [4]: [product#3071, plant#3072, _extract_code#3325, _extract_internalRefUUID#3326]
Arguments: hashpartitioning(product#3071, 37), ENSURE_REQUIREMENTS, [plan_id=4077]
(858) Sort
Input [4]: [product#3071, plant#3072, _extract_code#3325, _extract_internalRefUUID#3326]
Arguments: [product#3071 ASC NULLS FIRST], false, 0
(859) Scan parquet
Output [4]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092, systemId#3085]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(860) Filter
Input [4]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092, systemId#3085]
Condition : isnotnull(internalUUID#3086)
(861) Project
Output [3]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092]
Input [4]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092, systemId#3085]
(862) Exchange
Input [3]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3718]
(863) Exchange
Input [3]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092]
Arguments: hashpartitioning(internalUUID#3086, 37), ENSURE_REQUIREMENTS, [plan_id=4078]
(864) Sort
Input [3]: [internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092]
Arguments: [internalUUID#3086 ASC NULLS FIRST], false, 0
(865) SortMergeJoin
Left keys [1]: [product#3071]
Right keys [1]: [internalUUID#3086]
Join type: LeftOuter
Join condition: None
(866) Project
Output [2]: [plant#3072, filter(unitOfMeasureConversions#3092, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#3325) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#3326)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#3090.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#3090.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#3096]
Input [7]: [product#3071, plant#3072, _extract_code#3325, _extract_internalRefUUID#3326, internalUUID#3086, baseUnitOfMeasure#3090, unitOfMeasureConversions#3092]
(867) Generate
Input [2]: [plant#3072, filteredUnitOfMeasureConversions#3096]
Arguments: explode(filteredUnitOfMeasureConversions#3096.quantityNumerator), [plant#3072, filteredUnitOfMeasureConversions#3096], true, [quantityNumerator#3097]
(868) Project
Output [2]: [plant#3072, filteredUnitOfMeasureConversions#3096.quantityDenominator AS _extract_quantityDenominator#3216]
Input [3]: [plant#3072, filteredUnitOfMeasureConversions#3096, quantityNumerator#3097]
(869) Generate
Input [2]: [plant#3072, _extract_quantityDenominator#3216]
Arguments: explode(_extract_quantityDenominator#3216), [plant#3072], true, [quantityDenominator#3098]
(870) Project
Output [1]: [plant#3072]
Input [2]: [plant#3072, quantityDenominator#3098]
(871) HashAggregate
Input [1]: [plant#3072]
Keys [1]: [plant#3072]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#3072]
(872) Exchange
Input [1]: [plant#3072]
Arguments: hashpartitioning(plant#3072, 37), ENSURE_REQUIREMENTS, [plan_id=4089]
(873) HashAggregate
Input [1]: [plant#3072]
Keys [1]: [plant#3072]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#3072]
(874) BroadcastHashJoin
Left keys [1]: [plantUuid#3068]
Right keys [1]: [plant#3072]
Join type: Inner
Join condition: None
(875) Project
Output [2]: [plantUuid#3068 AS plant#3042, storageLocUuid#3070]
Input [3]: [plantUuid#3068, storageLocUuid#3070, plant#3072]
(876) Sort
Input [2]: [plant#3042, storageLocUuid#3070]
Arguments: [plant#3042 ASC NULLS FIRST], false, 0
(877) SortMergeJoin
Left keys [1]: [plant#1128]
Right keys [1]: [plant#3042]
Join type: Inner
Join condition: None
(878) Project
Output [3]: [plant#1128, product#1127, storageLocUuid#3070]
Input [4]: [product#1127, plant#1128, plant#3042, storageLocUuid#3070]
(879) Scan parquet
Output [5]: [internalUUID#3008, id#3009, isMarkedForDeletion#3014, items#3015, systemId#3007]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(880) Filter
Input [5]: [internalUUID#3008, id#3009, isMarkedForDeletion#3014, items#3015, systemId#3007]
Condition : (((isnotnull(isMarkedForDeletion#3014) AND NOT isMarkedForDeletion#3014) AND (size(items#3015, true) > 0)) AND isnotnull(items#3015))
(881) Project
Output [3]: [internalUUID#3008, id#3009, items#3015]
Input [5]: [internalUUID#3008, id#3009, isMarkedForDeletion#3014, items#3015, systemId#3007]
(882) Exchange
Input [3]: [internalUUID#3008, id#3009, items#3015]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=3734]
(883) Generate
Input [3]: [internalUUID#3008, id#3009, items#3015]
Arguments: explode(items#3015), [internalUUID#3008, id#3009], false, [item#3019]
(884) Filter
Input [3]: [internalUUID#3008, id#3009, item#3019]
Condition : ((((isnotnull(item#3019.deletionIndicator) AND isnotnull(item#3019.completeIndicator)) AND isnotnull(item#3019.returnIndicator)) AND ((NOT item#3019.deletionIndicator AND NOT item#3019.completeIndicator) AND NOT item#3019.returnIndicator)) AND ((isnotnull(item#3019.product.internalRefUUID) AND isnotnull(item#3019.plant.internalRefUUID)) AND isnotnull(item#3019.storageLocation.internalRefUUID)))
(885) Project
Output [11]: [id#3009, internalUUID#3008, item#3019.plant.internalRefUUID AS plant#3024, item#3019.product.internalRefUUID AS product#3025, item#3019.storageLocation.internalRefUUID AS storageLocUuid#3026, item#3019.quantityUnit.code AS quantityUom#3027, item#3019.quantityUnit.internalRefUUID AS quantityUomUuid#3028, item#3019.quantityNumerator AS quantityNumerator#3029, item#3019.quantityDenominator AS quantityDenominator#3030, item#3019.scheduleLines AS scheduleLines#3031, item#3019.confirmations AS confirmations#3032]
Input [3]: [internalUUID#3008, id#3009, item#3019]
(886) BroadcastExchange
Input [11]: [id#3009, internalUUID#3008, plant#3024, product#3025, storageLocUuid#3026, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=4103]
(887) BroadcastHashJoin
Left keys [3]: [product#1127, plant#1128, storageLocUuid#3070]
Right keys [3]: [product#3025, plant#3024, storageLocUuid#3026]
Join type: Inner
Join condition: None
(888) Project
Output [11]: [id#3009, internalUUID#3008, plant#3024, product#3025, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032, size(filter(confirmations#3032, lambdafunction(((NOT lambda x_2#3116.deletionIndicator AND lambda x_2#3116.isRelevantForConfirmation) AND isnotnull(lambda x_2#3116.confirmedDeliveryAt)), lambda x_2#3116, false)), false) AS _w0#3123]
Input [14]: [plant#1128, product#1127, storageLocUuid#3070, id#3009, internalUUID#3008, plant#3024, product#3025, storageLocUuid#3026, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032]
(889) Exchange
Input [11]: [id#3009, internalUUID#3008, plant#3024, product#3025, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032, _w0#3123]
Arguments: hashpartitioning(internalUUID#3008, 37), ENSURE_REQUIREMENTS, [plan_id=4107]
(890) Sort
Input [11]: [id#3009, internalUUID#3008, plant#3024, product#3025, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032, _w0#3123]
Arguments: [internalUUID#3008 ASC NULLS FIRST], false, 0
(891) Window
Input [11]: [id#3009, internalUUID#3008, plant#3024, product#3025, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032, _w0#3123]
Arguments: [sum(_w0#3123) windowspecdefinition(internalUUID#3008, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#3124L], [internalUUID#3008]
(892) Project
Output [3]: [plant#3024, product#3025, filter(transform(CASE WHEN (_we0#3124L > 0) THEN transform(filter(confirmations#3032, lambdafunction(((NOT lambda x_2#3117.deletionIndicator AND lambda x_2#3117.isRelevantForConfirmation) AND isnotnull(lambda x_2#3117.confirmedDeliveryAt)), lambda x_2#3117, false)), lambdafunction(struct(openQty, greatest((lambda x_3#3120.confirmedQuantity - coalesce(lambda x_3#3120.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#3120.confirmedDeliveryAt), lambda x_3#3120, false)) ELSE transform(scheduleLines#3031, lambdafunction(struct(openQty, greatest((lambda x_1#3118.quantity - coalesce(lambda x_1#3118.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#3118.deliveryAt), lambda x_1#3118, false)) END, lambdafunction(struct(documentId, id#3009, documentUuid, internalUUID#3008, openQty, lambda x_4#3121.openQty, openQtyInBaseUnit, ((lambda x_4#3121.openQty * quantityNumerator#3029) / quantityDenominator#3030), qtyUom, quantityUom#3027, qtyUomUuid, quantityUomUuid#3028, availabilityDatetime, lambda x_4#3121.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#3121, false)), lambdafunction(NOT (lambda x_5#3122.openQty = 0.0), lambda x_5#3122, false)) AS openGoodsMovements#3115]
Input [12]: [id#3009, internalUUID#3008, plant#3024, product#3025, quantityUom#3027, quantityUomUuid#3028, quantityNumerator#3029, quantityDenominator#3030, scheduleLines#3031, confirmations#3032, _w0#3123, _we0#3124L]
(893) ObjectHashAggregate
Input [3]: [plant#3024, product#3025, openGoodsMovements#3115]
Keys [2]: [product#3025, plant#3024]
Functions [1]: [partial_collect_list(openGoodsMovements#3115, 0, 0)]
Aggregate Attributes [1]: [buf#4598]
Results [3]: [product#3025, plant#3024, buf#4599]
(894) Exchange
Input [3]: [product#3025, plant#3024, buf#4599]
Arguments: hashpartitioning(product#3025, plant#3024, 37), ENSURE_REQUIREMENTS, [plan_id=4113]
(895) ObjectHashAggregate
Input [3]: [product#3025, plant#3024, buf#4599]
Keys [2]: [product#3025, plant#3024]
Functions [1]: [collect_list(openGoodsMovements#3115, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#3115, 0, 0)#3140]
Results [3]: [product#3025, plant#3024, flatten(collect_list(openGoodsMovements#3115, 0, 0)#3140) AS openGoodsMovements#3125]
(896) Filter
Input [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Condition : (size(openGoodsMovements#3125, false) > 0)
(897) AdaptiveSparkPlan
Output [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Arguments: isFinalPlan=true
(898) Filter
Input [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Condition : (isnotnull(product#3025) AND isnotnull(plant#3024))
(899) Scan parquet
Output [3]: [product#4666, plant#4667, orderDateTime#4668]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(900) Filter
Input [3]: [product#4666, plant#4667, orderDateTime#4668]
Condition : isnotnull(plant#4667)
(901) Exchange
Input [3]: [product#4666, plant#4667, orderDateTime#4668]
Arguments: hashpartitioning(product#4666, plant#4667, 37), REPARTITION_BY_NUM, [plan_id=7014]
(902) Exchange
Input [3]: [product#4666, plant#4667, orderDateTime#4668]
Arguments: hashpartitioning(coalesce(product#4666, ), isnull(product#4666), coalesce(plant#4667, ), isnull(plant#4667), 37), ENSURE_REQUIREMENTS, [plan_id=7548]
(903) Sort
Input [3]: [product#4666, plant#4667, orderDateTime#4668]
Arguments: [coalesce(product#4666, ) ASC NULLS FIRST, isnull(product#4666) ASC NULLS FIRST, coalesce(plant#4667, ) ASC NULLS FIRST, isnull(plant#4667) ASC NULLS FIRST], false, 0
(904) Scan parquet
Output [4]: [plant#4672, product#4673, productionAspect#4675, systemId#4670]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(905) Project
Output [4]: [plant#4672.internalRefUUID AS _extract_internalRefUUID#6577, product#4673.internalRefUUID AS _extract_internalRefUUID#6576, productionAspect#4675.productMovementPlants.unitOfIssue.code AS _extract_code#6578, productionAspect#4675.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6579]
Input [4]: [plant#4672, product#4673, productionAspect#4675, systemId#4670]
(906) Exchange
Input [4]: [_extract_internalRefUUID#6577, _extract_internalRefUUID#6576, _extract_code#6578, _extract_internalRefUUID#6579]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6509]
(907) Project
Output [4]: [_extract_code#6578, _extract_internalRefUUID#6579, _extract_internalRefUUID#6576, _extract_internalRefUUID#6577]
Input [4]: [_extract_internalRefUUID#6577, _extract_internalRefUUID#6576, _extract_code#6578, _extract_internalRefUUID#6579]
(908) Exchange
Input [4]: [_extract_code#6578, _extract_internalRefUUID#6579, _extract_internalRefUUID#6576, _extract_internalRefUUID#6577]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6576, ), isnull(_extract_internalRefUUID#6576), coalesce(_extract_internalRefUUID#6577, ), isnull(_extract_internalRefUUID#6577), 37), ENSURE_REQUIREMENTS, [plan_id=7549]
(909) Sort
Input [4]: [_extract_code#6578, _extract_internalRefUUID#6579, _extract_internalRefUUID#6576, _extract_internalRefUUID#6577]
Arguments: [coalesce(_extract_internalRefUUID#6576, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6576) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6577, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6577) ASC NULLS FIRST], false, 0
(910) SortMergeJoin
Left keys [4]: [coalesce(product#4666, ), isnull(product#4666), coalesce(plant#4667, ), isnull(plant#4667)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6576, ), isnull(_extract_internalRefUUID#6576), coalesce(_extract_internalRefUUID#6577, ), isnull(_extract_internalRefUUID#6577)]
Join type: LeftOuter
Join condition: None
(911) Project
Output [5]: [product#4666, plant#4667, orderDateTime#4668, _extract_code#6578, _extract_internalRefUUID#6579]
Input [7]: [product#4666, plant#4667, orderDateTime#4668, _extract_code#6578, _extract_internalRefUUID#6579, _extract_internalRefUUID#6576, _extract_internalRefUUID#6577]
(912) Exchange
Input [5]: [product#4666, plant#4667, orderDateTime#4668, _extract_code#6578, _extract_internalRefUUID#6579]
Arguments: hashpartitioning(product#4666, 37), ENSURE_REQUIREMENTS, [plan_id=7556]
(913) Sort
Input [5]: [product#4666, plant#4667, orderDateTime#4668, _extract_code#6578, _extract_internalRefUUID#6579]
Arguments: [product#4666 ASC NULLS FIRST], false, 0
(914) Scan parquet
Output [4]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687, systemId#4680]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(915) Filter
Input [4]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687, systemId#4680]
Condition : isnotnull(internalUUID#4681)
(916) Project
Output [3]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687]
Input [4]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687, systemId#4680]
(917) Exchange
Input [3]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6516]
(918) Exchange
Input [3]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687]
Arguments: hashpartitioning(internalUUID#4681, 37), ENSURE_REQUIREMENTS, [plan_id=7557]
(919) Sort
Input [3]: [internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687]
Arguments: [internalUUID#4681 ASC NULLS FIRST], false, 0
(920) SortMergeJoin
Left keys [1]: [product#4666]
Right keys [1]: [internalUUID#4681]
Join type: LeftOuter
Join condition: None
(921) Project
Output [4]: [product#4666, plant#4667, orderDateTime#4668, filter(unitOfMeasureConversions#4687, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6578) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6579)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#4685.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4685.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#4691]
Input [8]: [product#4666, plant#4667, orderDateTime#4668, _extract_code#6578, _extract_internalRefUUID#6579, internalUUID#4681, baseUnitOfMeasure#4685, unitOfMeasureConversions#4687]
(922) Generate
Input [4]: [product#4666, plant#4667, orderDateTime#4668, filteredUnitOfMeasureConversions#4691]
Arguments: explode(filteredUnitOfMeasureConversions#4691.quantityNumerator), [product#4666, plant#4667, orderDateTime#4668, filteredUnitOfMeasureConversions#4691], true, [quantityNumerator#4692]
(923) Project
Output [4]: [product#4666, plant#4667, orderDateTime#4668, filteredUnitOfMeasureConversions#4691.quantityDenominator AS _extract_quantityDenominator#6316]
Input [5]: [product#4666, plant#4667, orderDateTime#4668, filteredUnitOfMeasureConversions#4691, quantityNumerator#4692]
(924) Generate
Input [4]: [product#4666, plant#4667, orderDateTime#4668, _extract_quantityDenominator#6316]
Arguments: explode(_extract_quantityDenominator#6316), [product#4666, plant#4667, orderDateTime#4668], true, [quantityDenominator#4693]
(925) Project
Output [3]: [product#4666, plant#4667, orderDateTime#4668]
Input [4]: [product#4666, plant#4667, orderDateTime#4668, quantityDenominator#4693]
(926) Exchange
Input [3]: [product#4666, plant#4667, orderDateTime#4668]
Arguments: hashpartitioning(product#4666, plant#4667, 37), ENSURE_REQUIREMENTS, [plan_id=7710]
(927) Sort
Input [3]: [product#4666, plant#4667, orderDateTime#4668]
Arguments: [product#4666 ASC NULLS FIRST, plant#4667 ASC NULLS FIRST], false, 0
(928) Scan parquet
Output [6]: [internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701, systemId#4696]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(929) Filter
Input [6]: [internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701, systemId#4696]
Condition : (isnotnull(plant#4699.internalRefUUID) AND isnotnull(product#4698.internalRefUUID))
(930) Project
Output [6]: [systemId#4696, internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701]
Input [6]: [internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701, systemId#4696]
(931) Exchange
Input [6]: [systemId#4696, internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6526]
(932) BroadcastExchange
Input [6]: [systemId#4696, internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701]
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=7594]
(933) Scan parquet
Output [2]: [marketUnit#4702, distributionCenters#4708]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(934) Filter
Input [2]: [marketUnit#4702, distributionCenters#4708]
Condition : (((marketUnit#4702 <=> 10000_OP_PERF) AND (size(distributionCenters#4708, true) > 0)) AND isnotnull(distributionCenters#4708))
(935) Project
Output [1]: [distributionCenters#4708]
Input [2]: [marketUnit#4702, distributionCenters#4708]
(936) Exchange
Input [1]: [distributionCenters#4708]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6530]
(937) Generate
Input [1]: [distributionCenters#4708]
Arguments: explode(distributionCenters#4708), false, [distributionCenters#4724]
(938) Filter
Input [1]: [distributionCenters#4724]
Condition : (((size(distributionCenters#4724.storageLocations, true) > 0) AND isnotnull(distributionCenters#4724.storageLocations)) AND isnotnull(distributionCenters#4724.internalRefUUID))
(939) Project
Output [2]: [distributionCenters#4724.internalRefUUID AS _extract_internalRefUUID#6323, distributionCenters#4724.storageLocations AS _extract_storageLocations#6324]
Input [1]: [distributionCenters#4724]
(940) Generate
Input [2]: [_extract_internalRefUUID#6323, _extract_storageLocations#6324]
Arguments: explode(_extract_storageLocations#6324), [_extract_internalRefUUID#6323], false, [storageLocations#4725]
(941) Project
Output [3]: [_extract_internalRefUUID#6323 AS plantUuid#4727, storageLocations#4725.id AS storageLocId#4728, storageLocations#4725.internalRefUUID AS storageLocUuid#4729]
Input [2]: [_extract_internalRefUUID#6323, storageLocations#4725]
(942) BroadcastExchange
Input [3]: [plantUuid#4727, storageLocId#4728, storageLocUuid#4729]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7590]
(943) Scan parquet
Output [2]: [product#4730, plant#4731]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(944) Filter
Input [2]: [product#4730, plant#4731]
Condition : isnotnull(plant#4731)
(945) Exchange
Input [2]: [product#4730, plant#4731]
Arguments: hashpartitioning(product#4730, plant#4731, 37), REPARTITION_BY_NUM, [plan_id=7023]
(946) Exchange
Input [2]: [product#4730, plant#4731]
Arguments: hashpartitioning(coalesce(product#4730, ), isnull(product#4730), coalesce(plant#4731, ), isnull(plant#4731), 37), ENSURE_REQUIREMENTS, [plan_id=7567]
(947) Sort
Input [2]: [product#4730, plant#4731]
Arguments: [coalesce(product#4730, ) ASC NULLS FIRST, isnull(product#4730) ASC NULLS FIRST, coalesce(plant#4731, ) ASC NULLS FIRST, isnull(plant#4731) ASC NULLS FIRST], false, 0
(948) Scan parquet
Output [4]: [plant#4736, product#4737, productionAspect#4739, systemId#4734]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(949) Project
Output [4]: [plant#4736.internalRefUUID AS _extract_internalRefUUID#6582, product#4737.internalRefUUID AS _extract_internalRefUUID#6583, productionAspect#4739.productMovementPlants.unitOfIssue.code AS _extract_code#6580, productionAspect#4739.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6581]
Input [4]: [plant#4736, product#4737, productionAspect#4739, systemId#4734]
(950) Exchange
Input [4]: [_extract_internalRefUUID#6582, _extract_internalRefUUID#6583, _extract_code#6580, _extract_internalRefUUID#6581]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6542]
(951) Project
Output [4]: [_extract_code#6580, _extract_internalRefUUID#6581, _extract_internalRefUUID#6583, _extract_internalRefUUID#6582]
Input [4]: [_extract_internalRefUUID#6582, _extract_internalRefUUID#6583, _extract_code#6580, _extract_internalRefUUID#6581]
(952) Exchange
Input [4]: [_extract_code#6580, _extract_internalRefUUID#6581, _extract_internalRefUUID#6583, _extract_internalRefUUID#6582]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6583, ), isnull(_extract_internalRefUUID#6583), coalesce(_extract_internalRefUUID#6582, ), isnull(_extract_internalRefUUID#6582), 37), ENSURE_REQUIREMENTS, [plan_id=7568]
(953) Sort
Input [4]: [_extract_code#6580, _extract_internalRefUUID#6581, _extract_internalRefUUID#6583, _extract_internalRefUUID#6582]
Arguments: [coalesce(_extract_internalRefUUID#6583, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6583) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6582, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6582) ASC NULLS FIRST], false, 0
(954) SortMergeJoin
Left keys [4]: [coalesce(product#4730, ), isnull(product#4730), coalesce(plant#4731, ), isnull(plant#4731)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6583, ), isnull(_extract_internalRefUUID#6583), coalesce(_extract_internalRefUUID#6582, ), isnull(_extract_internalRefUUID#6582)]
Join type: LeftOuter
Join condition: None
(955) Project
Output [4]: [product#4730, plant#4731, _extract_code#6580, _extract_internalRefUUID#6581]
Input [6]: [product#4730, plant#4731, _extract_code#6580, _extract_internalRefUUID#6581, _extract_internalRefUUID#6583, _extract_internalRefUUID#6582]
(956) Exchange
Input [4]: [product#4730, plant#4731, _extract_code#6580, _extract_internalRefUUID#6581]
Arguments: hashpartitioning(product#4730, 37), ENSURE_REQUIREMENTS, [plan_id=7575]
(957) Sort
Input [4]: [product#4730, plant#4731, _extract_code#6580, _extract_internalRefUUID#6581]
Arguments: [product#4730 ASC NULLS FIRST], false, 0
(958) Scan parquet
Output [4]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751, systemId#4744]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(959) Filter
Input [4]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751, systemId#4744]
Condition : isnotnull(internalUUID#4745)
(960) Project
Output [3]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751]
Input [4]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751, systemId#4744]
(961) Exchange
Input [3]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6549]
(962) Exchange
Input [3]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751]
Arguments: hashpartitioning(internalUUID#4745, 37), ENSURE_REQUIREMENTS, [plan_id=7576]
(963) Sort
Input [3]: [internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751]
Arguments: [internalUUID#4745 ASC NULLS FIRST], false, 0
(964) SortMergeJoin
Left keys [1]: [product#4730]
Right keys [1]: [internalUUID#4745]
Join type: LeftOuter
Join condition: None
(965) Project
Output [2]: [plant#4731, filter(unitOfMeasureConversions#4751, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6580) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6581)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#4749.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4749.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#4755]
Input [7]: [product#4730, plant#4731, _extract_code#6580, _extract_internalRefUUID#6581, internalUUID#4745, baseUnitOfMeasure#4749, unitOfMeasureConversions#4751]
(966) Generate
Input [2]: [plant#4731, filteredUnitOfMeasureConversions#4755]
Arguments: explode(filteredUnitOfMeasureConversions#4755.quantityNumerator), [plant#4731, filteredUnitOfMeasureConversions#4755], true, [quantityNumerator#4756]
(967) Project
Output [2]: [plant#4731, filteredUnitOfMeasureConversions#4755.quantityDenominator AS _extract_quantityDenominator#6325]
Input [3]: [plant#4731, filteredUnitOfMeasureConversions#4755, quantityNumerator#4756]
(968) Generate
Input [2]: [plant#4731, _extract_quantityDenominator#6325]
Arguments: explode(_extract_quantityDenominator#6325), [plant#4731], true, [quantityDenominator#4757]
(969) Project
Output [1]: [plant#4731]
Input [2]: [plant#4731, quantityDenominator#4757]
(970) HashAggregate
Input [1]: [plant#4731]
Keys [1]: [plant#4731]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4731]
(971) Exchange
Input [1]: [plant#4731]
Arguments: hashpartitioning(plant#4731, 37), ENSURE_REQUIREMENTS, [plan_id=7587]
(972) HashAggregate
Input [1]: [plant#4731]
Keys [1]: [plant#4731]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4731]
(973) BroadcastHashJoin
Left keys [1]: [plantUuid#4727]
Right keys [1]: [plant#4731]
Join type: Inner
Join condition: None
(974) Project
Output [3]: [plantUuid#4727, storageLocId#4728, storageLocUuid#4729]
Input [4]: [plantUuid#4727, storageLocId#4728, storageLocUuid#4729, plant#4731]
(975) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4699.internalRefUUID, ), isnull(plant#4699.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4727, ), isnull(plantUuid#4727)]
Join type: Inner
Join condition: None
(976) Generate
Input [9]: [systemId#4696, internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, stockQuantities#4701, plantUuid#4727, storageLocId#4728, storageLocUuid#4729]
Arguments: explode(filter(stockQuantities#4701, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#4729) AND (lambda x#1330.storageLocation.Id = storageLocId#4728)), lambda x#1330, false))), [systemId#4696, internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, plantUuid#4727], false, [stockQuantity#4760]
(977) ObjectHashAggregate
Input [7]: [systemId#4696, internalUUID#4697, product#4698, plant#4699, calculationDateTime#4700, plantUuid#4727, stockQuantity#4760]
Keys [5]: [plantUuid#4727, internalUUID#4697, plant#4699, product#4698, systemId#4696]
Functions [2]: [partial_first(calculationDateTime#4700, false), partial_collect_list(stockQuantity#4760, 0, 0)]
Aggregate Attributes [3]: [first#7309, valueSet#7310, buf#7311]
Results [8]: [plantUuid#4727, internalUUID#4697, plant#4699, product#4698, systemId#4696, first#7312, valueSet#7313, buf#7314]
(978) ObjectHashAggregate
Input [8]: [plantUuid#4727, internalUUID#4697, plant#4699, product#4698, systemId#4696, first#7312, valueSet#7313, buf#7314]
Keys [5]: [plantUuid#4727, internalUUID#4697, plant#4699, product#4698, systemId#4696]
Functions [2]: [first(calculationDateTime#4700, false), collect_list(stockQuantity#4760, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4700)()#1345, collect_list(stockQuantity#4760, 0, 0)#1346]
Results [4]: [product#4698, plant#4699, first(calculationDateTime#4700)()#1345 AS calculationDateTime#4761, collect_list(stockQuantity#4760, 0, 0)#1346 AS stockQuantities#4762]
(979) Filter
Input [4]: [product#4698, plant#4699, calculationDateTime#4761, stockQuantities#4762]
Condition : ((size(stockQuantities#4762, true) > 0) AND isnotnull(calculationDateTime#4761))
(980) Generate
Input [4]: [product#4698, plant#4699, calculationDateTime#4761, stockQuantities#4762]
Arguments: explode(stockQuantities#4762), [product#4698, plant#4699, calculationDateTime#4761], false, [stockQuantity#4763]
(981) Filter
Input [4]: [product#4698, plant#4699, calculationDateTime#4761, stockQuantity#4763]
Condition : (((isnotnull(stockQuantity#4763.specialStockIndicator.code) AND isnotnull(stockQuantity#4763.stockType.code)) AND (stockQuantity#4763.specialStockIndicator.code = )) AND (stockQuantity#4763.stockType.code = 01))
(982) Project
Output [4]: [plant#4699.internalRefUUID AS plantUuid#4765, product#4698.internalRefUUID AS productUuid#4767, calculationDateTime#4761, stockQuantity#4763.storagelocation.id AS storageLocId#4768]
Input [4]: [product#4698, plant#4699, calculationDateTime#4761, stockQuantity#4763]
(983) Exchange
Input [4]: [plantUuid#4765, productUuid#4767, calculationDateTime#4761, storageLocId#4768]
Arguments: hashpartitioning(plantUuid#4765, productUuid#4767, 37), ENSURE_REQUIREMENTS, [plan_id=7624]
(984) Sort
Input [4]: [plantUuid#4765, productUuid#4767, calculationDateTime#4761, storageLocId#4768]
Arguments: [plantUuid#4765 ASC NULLS FIRST, productUuid#4767 ASC NULLS FIRST], false, 0
(985) Scan parquet
Output [3]: [product#4773, plant#4774, orderDateTime#4775]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(986) Filter
Input [3]: [product#4773, plant#4774, orderDateTime#4775]
Condition : ((isnotnull(orderDateTime#4775) AND isnotnull(plant#4774)) AND isnotnull(product#4773))
(987) Exchange
Input [3]: [product#4773, plant#4774, orderDateTime#4775]
Arguments: hashpartitioning(product#4773, plant#4774, 37), REPARTITION_BY_NUM, [plan_id=7044]
(988) Exchange
Input [3]: [product#4773, plant#4774, orderDateTime#4775]
Arguments: hashpartitioning(coalesce(product#4773, ), isnull(product#4773), coalesce(plant#4774, ), isnull(plant#4774), 37), ENSURE_REQUIREMENTS, [plan_id=7604]
(989) Sort
Input [3]: [product#4773, plant#4774, orderDateTime#4775]
Arguments: [coalesce(product#4773, ) ASC NULLS FIRST, isnull(product#4773) ASC NULLS FIRST, coalesce(plant#4774, ) ASC NULLS FIRST, isnull(plant#4774) ASC NULLS FIRST], false, 0
(990) Scan parquet
Output [4]: [plant#4779, product#4780, productionAspect#4782, systemId#4777]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(991) Project
Output [4]: [plant#4779.internalRefUUID AS _extract_internalRefUUID#6584, product#4780.internalRefUUID AS _extract_internalRefUUID#6585, productionAspect#4782.productMovementPlants.unitOfIssue.code AS _extract_code#6586, productionAspect#4782.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6587]
Input [4]: [plant#4779, product#4780, productionAspect#4782, systemId#4777]
(992) Exchange
Input [4]: [_extract_internalRefUUID#6584, _extract_internalRefUUID#6585, _extract_code#6586, _extract_internalRefUUID#6587]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6574]
(993) Project
Output [4]: [_extract_code#6586, _extract_internalRefUUID#6587, _extract_internalRefUUID#6585, _extract_internalRefUUID#6584]
Input [4]: [_extract_internalRefUUID#6584, _extract_internalRefUUID#6585, _extract_code#6586, _extract_internalRefUUID#6587]
(994) Exchange
Input [4]: [_extract_code#6586, _extract_internalRefUUID#6587, _extract_internalRefUUID#6585, _extract_internalRefUUID#6584]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6585, ), isnull(_extract_internalRefUUID#6585), coalesce(_extract_internalRefUUID#6584, ), isnull(_extract_internalRefUUID#6584), 37), ENSURE_REQUIREMENTS, [plan_id=7605]
(995) Sort
Input [4]: [_extract_code#6586, _extract_internalRefUUID#6587, _extract_internalRefUUID#6585, _extract_internalRefUUID#6584]
Arguments: [coalesce(_extract_internalRefUUID#6585, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6585) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6584, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6584) ASC NULLS FIRST], false, 0
(996) SortMergeJoin
Left keys [4]: [coalesce(product#4773, ), isnull(product#4773), coalesce(plant#4774, ), isnull(plant#4774)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6585, ), isnull(_extract_internalRefUUID#6585), coalesce(_extract_internalRefUUID#6584, ), isnull(_extract_internalRefUUID#6584)]
Join type: LeftOuter
Join condition: None
(997) Project
Output [5]: [product#4773, plant#4774, orderDateTime#4775, _extract_code#6586, _extract_internalRefUUID#6587]
Input [7]: [product#4773, plant#4774, orderDateTime#4775, _extract_code#6586, _extract_internalRefUUID#6587, _extract_internalRefUUID#6585, _extract_internalRefUUID#6584]
(998) Exchange
Input [5]: [product#4773, plant#4774, orderDateTime#4775, _extract_code#6586, _extract_internalRefUUID#6587]
Arguments: hashpartitioning(product#4773, 37), ENSURE_REQUIREMENTS, [plan_id=7612]
(999) Sort
Input [5]: [product#4773, plant#4774, orderDateTime#4775, _extract_code#6586, _extract_internalRefUUID#6587]
Arguments: [product#4773 ASC NULLS FIRST], false, 0
(1000) Scan parquet
Output [4]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794, systemId#4787]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1001) Filter
Input [4]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794, systemId#4787]
Condition : isnotnull(internalUUID#4788)
(1002) Project
Output [3]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794]
Input [4]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794, systemId#4787]
(1003) Exchange
Input [3]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6581]
(1004) Exchange
Input [3]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794]
Arguments: hashpartitioning(internalUUID#4788, 37), ENSURE_REQUIREMENTS, [plan_id=7613]
(1005) Sort
Input [3]: [internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794]
Arguments: [internalUUID#4788 ASC NULLS FIRST], false, 0
(1006) SortMergeJoin
Left keys [1]: [product#4773]
Right keys [1]: [internalUUID#4788]
Join type: LeftOuter
Join condition: None
(1007) Project
Output [4]: [product#4773, plant#4774, orderDateTime#4775, filter(unitOfMeasureConversions#4794, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6586) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6587)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#4792.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4792.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#4798]
Input [8]: [product#4773, plant#4774, orderDateTime#4775, _extract_code#6586, _extract_internalRefUUID#6587, internalUUID#4788, baseUnitOfMeasure#4792, unitOfMeasureConversions#4794]
(1008) Generate
Input [4]: [product#4773, plant#4774, orderDateTime#4775, filteredUnitOfMeasureConversions#4798]
Arguments: explode(filteredUnitOfMeasureConversions#4798.quantityNumerator), [product#4773, plant#4774, orderDateTime#4775, filteredUnitOfMeasureConversions#4798], true, [quantityNumerator#4799]
(1009) Project
Output [4]: [product#4773, plant#4774, orderDateTime#4775, filteredUnitOfMeasureConversions#4798.quantityDenominator AS _extract_quantityDenominator#6332]
Input [5]: [product#4773, plant#4774, orderDateTime#4775, filteredUnitOfMeasureConversions#4798, quantityNumerator#4799]
(1010) Generate
Input [4]: [product#4773, plant#4774, orderDateTime#4775, _extract_quantityDenominator#6332]
Arguments: explode(_extract_quantityDenominator#6332), [product#4773, plant#4774, orderDateTime#4775], true, [quantityDenominator#4800]
(1011) Project
Output [3]: [product#4773, plant#4774, orderDateTime#4775]
Input [4]: [product#4773, plant#4774, orderDateTime#4775, quantityDenominator#4800]
(1012) Exchange
Input [3]: [product#4773, plant#4774, orderDateTime#4775]
Arguments: hashpartitioning(plant#4774, product#4773, 37), ENSURE_REQUIREMENTS, [plan_id=7625]
(1013) Sort
Input [3]: [product#4773, plant#4774, orderDateTime#4775]
Arguments: [plant#4774 ASC NULLS FIRST, product#4773 ASC NULLS FIRST], false, 0
(1014) SortMergeJoin
Left keys [2]: [plantUuid#4765, productUuid#4767]
Right keys [2]: [plant#4774, product#4773]
Join type: Inner
Join condition: (calculationDateTime#4761 <= orderDateTime#4775)
(1015) Project
Output [4]: [plantUuid#4765 AS plant#4803, productUuid#4767 AS product#4804, storageLocId#4768, calculationDateTime#4761]
Input [7]: [plantUuid#4765, productUuid#4767, calculationDateTime#4761, storageLocId#4768, product#4773, plant#4774, orderDateTime#4775]
(1016) Exchange
Input [4]: [plant#4803, product#4804, storageLocId#4768, calculationDateTime#4761]
Arguments: hashpartitioning(coalesce(plant#4803, ), isnull(plant#4803), coalesce(product#4804, ), isnull(product#4804), coalesce(storageLocId#4768, ), isnull(storageLocId#4768), coalesce(calculationDateTime#4761, 1970-01-01 00:00:00), isnull(calculationDateTime#4761), 37), ENSURE_REQUIREMENTS, [plan_id=7698]
(1017) Sort
Input [4]: [plant#4803, product#4804, storageLocId#4768, calculationDateTime#4761]
Arguments: [coalesce(plant#4803, ) ASC NULLS FIRST, isnull(plant#4803) ASC NULLS FIRST, coalesce(product#4804, ) ASC NULLS FIRST, isnull(product#4804) ASC NULLS FIRST, coalesce(storageLocId#4768, ) ASC NULLS FIRST, isnull(storageLocId#4768) ASC NULLS FIRST, coalesce(calculationDateTime#4761, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#4761) ASC NULLS FIRST], false, 0
(1018) Scan parquet
Output [6]: [internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810, systemId#4805]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(1019) Filter
Input [6]: [internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810, systemId#4805]
Condition : (isnotnull(plant#4808.internalRefUUID) AND isnotnull(product#4807.internalRefUUID))
(1020) Project
Output [6]: [systemId#4805, internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810]
Input [6]: [internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810, systemId#4805]
(1021) Exchange
Input [6]: [systemId#4805, internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6593]
(1022) BroadcastExchange
Input [6]: [systemId#4805, internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810]
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=7658]
(1023) Scan parquet
Output [2]: [marketUnit#4811, distributionCenters#4817]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1024) Filter
Input [2]: [marketUnit#4811, distributionCenters#4817]
Condition : (((marketUnit#4811 <=> 10000_OP_PERF) AND (size(distributionCenters#4817, true) > 0)) AND isnotnull(distributionCenters#4817))
(1025) Project
Output [1]: [distributionCenters#4817]
Input [2]: [marketUnit#4811, distributionCenters#4817]
(1026) Exchange
Input [1]: [distributionCenters#4817]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6597]
(1027) Generate
Input [1]: [distributionCenters#4817]
Arguments: explode(distributionCenters#4817), false, [distributionCenters#4833]
(1028) Filter
Input [1]: [distributionCenters#4833]
Condition : (((size(distributionCenters#4833.storageLocations, true) > 0) AND isnotnull(distributionCenters#4833.storageLocations)) AND isnotnull(distributionCenters#4833.internalRefUUID))
(1029) Project
Output [2]: [distributionCenters#4833.internalRefUUID AS _extract_internalRefUUID#6339, distributionCenters#4833.storageLocations AS _extract_storageLocations#6340]
Input [1]: [distributionCenters#4833]
(1030) Generate
Input [2]: [_extract_internalRefUUID#6339, _extract_storageLocations#6340]
Arguments: explode(_extract_storageLocations#6340), [_extract_internalRefUUID#6339], false, [storageLocations#4834]
(1031) Project
Output [3]: [_extract_internalRefUUID#6339 AS plantUuid#4836, storageLocations#4834.id AS storageLocId#4837, storageLocations#4834.internalRefUUID AS storageLocUuid#4838]
Input [2]: [_extract_internalRefUUID#6339, storageLocations#4834]
(1032) BroadcastExchange
Input [3]: [plantUuid#4836, storageLocId#4837, storageLocUuid#4838]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7654]
(1033) Scan parquet
Output [2]: [product#4839, plant#4840]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1034) Filter
Input [2]: [product#4839, plant#4840]
Condition : isnotnull(plant#4840)
(1035) Exchange
Input [2]: [product#4839, plant#4840]
Arguments: hashpartitioning(product#4839, plant#4840, 37), REPARTITION_BY_NUM, [plan_id=7055]
(1036) Exchange
Input [2]: [product#4839, plant#4840]
Arguments: hashpartitioning(coalesce(product#4839, ), isnull(product#4839), coalesce(plant#4840, ), isnull(plant#4840), 37), ENSURE_REQUIREMENTS, [plan_id=7631]
(1037) Sort
Input [2]: [product#4839, plant#4840]
Arguments: [coalesce(product#4839, ) ASC NULLS FIRST, isnull(product#4839) ASC NULLS FIRST, coalesce(plant#4840, ) ASC NULLS FIRST, isnull(plant#4840) ASC NULLS FIRST], false, 0
(1038) Scan parquet
Output [4]: [plant#4845, product#4846, productionAspect#4848, systemId#4843]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(1039) Project
Output [4]: [plant#4845.internalRefUUID AS _extract_internalRefUUID#6588, product#4846.internalRefUUID AS _extract_internalRefUUID#6591, productionAspect#4848.productMovementPlants.unitOfIssue.code AS _extract_code#6589, productionAspect#4848.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6590]
Input [4]: [plant#4845, product#4846, productionAspect#4848, systemId#4843]
(1040) Exchange
Input [4]: [_extract_internalRefUUID#6588, _extract_internalRefUUID#6591, _extract_code#6589, _extract_internalRefUUID#6590]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6609]
(1041) Project
Output [4]: [_extract_code#6589, _extract_internalRefUUID#6590, _extract_internalRefUUID#6591, _extract_internalRefUUID#6588]
Input [4]: [_extract_internalRefUUID#6588, _extract_internalRefUUID#6591, _extract_code#6589, _extract_internalRefUUID#6590]
(1042) Exchange
Input [4]: [_extract_code#6589, _extract_internalRefUUID#6590, _extract_internalRefUUID#6591, _extract_internalRefUUID#6588]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6591, ), isnull(_extract_internalRefUUID#6591), coalesce(_extract_internalRefUUID#6588, ), isnull(_extract_internalRefUUID#6588), 37), ENSURE_REQUIREMENTS, [plan_id=7632]
(1043) Sort
Input [4]: [_extract_code#6589, _extract_internalRefUUID#6590, _extract_internalRefUUID#6591, _extract_internalRefUUID#6588]
Arguments: [coalesce(_extract_internalRefUUID#6591, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6591) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6588, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6588) ASC NULLS FIRST], false, 0
(1044) SortMergeJoin
Left keys [4]: [coalesce(product#4839, ), isnull(product#4839), coalesce(plant#4840, ), isnull(plant#4840)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6591, ), isnull(_extract_internalRefUUID#6591), coalesce(_extract_internalRefUUID#6588, ), isnull(_extract_internalRefUUID#6588)]
Join type: LeftOuter
Join condition: None
(1045) Project
Output [4]: [product#4839, plant#4840, _extract_code#6589, _extract_internalRefUUID#6590]
Input [6]: [product#4839, plant#4840, _extract_code#6589, _extract_internalRefUUID#6590, _extract_internalRefUUID#6591, _extract_internalRefUUID#6588]
(1046) Exchange
Input [4]: [product#4839, plant#4840, _extract_code#6589, _extract_internalRefUUID#6590]
Arguments: hashpartitioning(product#4839, 37), ENSURE_REQUIREMENTS, [plan_id=7639]
(1047) Sort
Input [4]: [product#4839, plant#4840, _extract_code#6589, _extract_internalRefUUID#6590]
Arguments: [product#4839 ASC NULLS FIRST], false, 0
(1048) Scan parquet
Output [4]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860, systemId#4853]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(1049) Filter
Input [4]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860, systemId#4853]
Condition : isnotnull(internalUUID#4854)
(1050) Project
Output [3]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860]
Input [4]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860, systemId#4853]
(1051) Exchange
Input [3]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6616]
(1052) Exchange
Input [3]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860]
Arguments: hashpartitioning(internalUUID#4854, 37), ENSURE_REQUIREMENTS, [plan_id=7640]
(1053) Sort
Input [3]: [internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860]
Arguments: [internalUUID#4854 ASC NULLS FIRST], false, 0
(1054) SortMergeJoin
Left keys [1]: [product#4839]
Right keys [1]: [internalUUID#4854]
Join type: LeftOuter
Join condition: None
(1055) Project
Output [2]: [plant#4840, filter(unitOfMeasureConversions#4860, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6589) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6590)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#4858.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4858.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#4864]
Input [7]: [product#4839, plant#4840, _extract_code#6589, _extract_internalRefUUID#6590, internalUUID#4854, baseUnitOfMeasure#4858, unitOfMeasureConversions#4860]
(1056) Generate
Input [2]: [plant#4840, filteredUnitOfMeasureConversions#4864]
Arguments: explode(filteredUnitOfMeasureConversions#4864.quantityNumerator), [plant#4840, filteredUnitOfMeasureConversions#4864], true, [quantityNumerator#4865]
(1057) Project
Output [2]: [plant#4840, filteredUnitOfMeasureConversions#4864.quantityDenominator AS _extract_quantityDenominator#6341]
Input [3]: [plant#4840, filteredUnitOfMeasureConversions#4864, quantityNumerator#4865]
(1058) Generate
Input [2]: [plant#4840, _extract_quantityDenominator#6341]
Arguments: explode(_extract_quantityDenominator#6341), [plant#4840], true, [quantityDenominator#4866]
(1059) Project
Output [1]: [plant#4840]
Input [2]: [plant#4840, quantityDenominator#4866]
(1060) HashAggregate
Input [1]: [plant#4840]
Keys [1]: [plant#4840]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4840]
(1061) Exchange
Input [1]: [plant#4840]
Arguments: hashpartitioning(plant#4840, 37), ENSURE_REQUIREMENTS, [plan_id=7651]
(1062) HashAggregate
Input [1]: [plant#4840]
Keys [1]: [plant#4840]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4840]
(1063) BroadcastHashJoin
Left keys [1]: [plantUuid#4836]
Right keys [1]: [plant#4840]
Join type: Inner
Join condition: None
(1064) Project
Output [3]: [plantUuid#4836, storageLocId#4837, storageLocUuid#4838]
Input [4]: [plantUuid#4836, storageLocId#4837, storageLocUuid#4838, plant#4840]
(1065) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4808.internalRefUUID, ), isnull(plant#4808.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4836, ), isnull(plantUuid#4836)]
Join type: Inner
Join condition: None
(1066) Generate
Input [9]: [systemId#4805, internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, stockQuantities#4810, plantUuid#4836, storageLocId#4837, storageLocUuid#4838]
Arguments: explode(filter(stockQuantities#4810, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#4838) AND (lambda x#1330.storageLocation.Id = storageLocId#4837)), lambda x#1330, false))), [systemId#4805, internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, plantUuid#4836], false, [stockQuantity#4869]
(1067) ObjectHashAggregate
Input [7]: [systemId#4805, internalUUID#4806, product#4807, plant#4808, calculationDateTime#4809, plantUuid#4836, stockQuantity#4869]
Keys [5]: [plantUuid#4836, internalUUID#4806, plant#4808, product#4807, systemId#4805]
Functions [2]: [partial_first(calculationDateTime#4809, false), partial_collect_list(stockQuantity#4869, 0, 0)]
Aggregate Attributes [3]: [first#7317, valueSet#7318, buf#7319]
Results [8]: [plantUuid#4836, internalUUID#4806, plant#4808, product#4807, systemId#4805, first#7320, valueSet#7321, buf#7322]
(1068) ObjectHashAggregate
Input [8]: [plantUuid#4836, internalUUID#4806, plant#4808, product#4807, systemId#4805, first#7320, valueSet#7321, buf#7322]
Keys [5]: [plantUuid#4836, internalUUID#4806, plant#4808, product#4807, systemId#4805]
Functions [2]: [first(calculationDateTime#4809, false), collect_list(stockQuantity#4869, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4809)()#1345, collect_list(stockQuantity#4869, 0, 0)#1346]
Results [4]: [product#4807, plant#4808, first(calculationDateTime#4809)()#1345 AS calculationDateTime#4870, collect_list(stockQuantity#4869, 0, 0)#1346 AS stockQuantities#4871]
(1069) Filter
Input [4]: [product#4807, plant#4808, calculationDateTime#4870, stockQuantities#4871]
Condition : ((size(stockQuantities#4871, true) > 0) AND isnotnull(calculationDateTime#4870))
(1070) Generate
Input [4]: [product#4807, plant#4808, calculationDateTime#4870, stockQuantities#4871]
Arguments: explode(stockQuantities#4871), [product#4807, plant#4808, calculationDateTime#4870], false, [stockQuantity#4872]
(1071) Filter
Input [4]: [product#4807, plant#4808, calculationDateTime#4870, stockQuantity#4872]
Condition : (((isnotnull(stockQuantity#4872.specialStockIndicator.code) AND isnotnull(stockQuantity#4872.stockType.code)) AND (stockQuantity#4872.specialStockIndicator.code = )) AND (stockQuantity#4872.stockType.code = 01))
(1072) Project
Output [4]: [plant#4808.internalRefUUID AS plantUuid#4874, product#4807.internalRefUUID AS productUuid#4876, calculationDateTime#4870, stockQuantity#4872.storagelocation.id AS storageLocId#4877]
Input [4]: [product#4807, plant#4808, calculationDateTime#4870, stockQuantity#4872]
(1073) Exchange
Input [4]: [plantUuid#4874, productUuid#4876, calculationDateTime#4870, storageLocId#4877]
Arguments: hashpartitioning(plantUuid#4874, productUuid#4876, 37), ENSURE_REQUIREMENTS, [plan_id=7688]
(1074) Sort
Input [4]: [plantUuid#4874, productUuid#4876, calculationDateTime#4870, storageLocId#4877]
Arguments: [plantUuid#4874 ASC NULLS FIRST, productUuid#4876 ASC NULLS FIRST], false, 0
(1075) Scan parquet
Output [3]: [product#4882, plant#4883, orderDateTime#4884]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1076) Filter
Input [3]: [product#4882, plant#4883, orderDateTime#4884]
Condition : ((isnotnull(orderDateTime#4884) AND isnotnull(plant#4883)) AND isnotnull(product#4882))
(1077) Exchange
Input [3]: [product#4882, plant#4883, orderDateTime#4884]
Arguments: hashpartitioning(product#4882, plant#4883, 37), REPARTITION_BY_NUM, [plan_id=7076]
(1078) Exchange
Input [3]: [product#4882, plant#4883, orderDateTime#4884]
Arguments: hashpartitioning(coalesce(product#4882, ), isnull(product#4882), coalesce(plant#4883, ), isnull(plant#4883), 37), ENSURE_REQUIREMENTS, [plan_id=7668]
(1079) Sort
Input [3]: [product#4882, plant#4883, orderDateTime#4884]
Arguments: [coalesce(product#4882, ) ASC NULLS FIRST, isnull(product#4882) ASC NULLS FIRST, coalesce(plant#4883, ) ASC NULLS FIRST, isnull(plant#4883) ASC NULLS FIRST], false, 0
(1080) Scan parquet
Output [4]: [plant#4888, product#4889, productionAspect#4891, systemId#4886]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(1081) Project
Output [4]: [plant#4888.internalRefUUID AS _extract_internalRefUUID#6595, product#4889.internalRefUUID AS _extract_internalRefUUID#6594, productionAspect#4891.productMovementPlants.unitOfIssue.code AS _extract_code#6592, productionAspect#4891.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6593]
Input [4]: [plant#4888, product#4889, productionAspect#4891, systemId#4886]
(1082) Exchange
Input [4]: [_extract_internalRefUUID#6595, _extract_internalRefUUID#6594, _extract_code#6592, _extract_internalRefUUID#6593]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6641]
(1083) Project
Output [4]: [_extract_code#6592, _extract_internalRefUUID#6593, _extract_internalRefUUID#6594, _extract_internalRefUUID#6595]
Input [4]: [_extract_internalRefUUID#6595, _extract_internalRefUUID#6594, _extract_code#6592, _extract_internalRefUUID#6593]
(1084) Exchange
Input [4]: [_extract_code#6592, _extract_internalRefUUID#6593, _extract_internalRefUUID#6594, _extract_internalRefUUID#6595]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6594, ), isnull(_extract_internalRefUUID#6594), coalesce(_extract_internalRefUUID#6595, ), isnull(_extract_internalRefUUID#6595), 37), ENSURE_REQUIREMENTS, [plan_id=7669]
(1085) Sort
Input [4]: [_extract_code#6592, _extract_internalRefUUID#6593, _extract_internalRefUUID#6594, _extract_internalRefUUID#6595]
Arguments: [coalesce(_extract_internalRefUUID#6594, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6594) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6595, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6595) ASC NULLS FIRST], false, 0
(1086) SortMergeJoin
Left keys [4]: [coalesce(product#4882, ), isnull(product#4882), coalesce(plant#4883, ), isnull(plant#4883)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6594, ), isnull(_extract_internalRefUUID#6594), coalesce(_extract_internalRefUUID#6595, ), isnull(_extract_internalRefUUID#6595)]
Join type: LeftOuter
Join condition: None
(1087) Project
Output [5]: [product#4882, plant#4883, orderDateTime#4884, _extract_code#6592, _extract_internalRefUUID#6593]
Input [7]: [product#4882, plant#4883, orderDateTime#4884, _extract_code#6592, _extract_internalRefUUID#6593, _extract_internalRefUUID#6594, _extract_internalRefUUID#6595]
(1088) Exchange
Input [5]: [product#4882, plant#4883, orderDateTime#4884, _extract_code#6592, _extract_internalRefUUID#6593]
Arguments: hashpartitioning(product#4882, 37), ENSURE_REQUIREMENTS, [plan_id=7676]
(1089) Sort
Input [5]: [product#4882, plant#4883, orderDateTime#4884, _extract_code#6592, _extract_internalRefUUID#6593]
Arguments: [product#4882 ASC NULLS FIRST], false, 0
(1090) Scan parquet
Output [4]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903, systemId#4896]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1091) Filter
Input [4]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903, systemId#4896]
Condition : isnotnull(internalUUID#4897)
(1092) Project
Output [3]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903]
Input [4]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903, systemId#4896]
(1093) Exchange
Input [3]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6648]
(1094) Exchange
Input [3]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903]
Arguments: hashpartitioning(internalUUID#4897, 37), ENSURE_REQUIREMENTS, [plan_id=7677]
(1095) Sort
Input [3]: [internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903]
Arguments: [internalUUID#4897 ASC NULLS FIRST], false, 0
(1096) SortMergeJoin
Left keys [1]: [product#4882]
Right keys [1]: [internalUUID#4897]
Join type: LeftOuter
Join condition: None
(1097) Project
Output [4]: [product#4882, plant#4883, orderDateTime#4884, filter(unitOfMeasureConversions#4903, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6592) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6593)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#4901.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4901.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#4907]
Input [8]: [product#4882, plant#4883, orderDateTime#4884, _extract_code#6592, _extract_internalRefUUID#6593, internalUUID#4897, baseUnitOfMeasure#4901, unitOfMeasureConversions#4903]
(1098) Generate
Input [4]: [product#4882, plant#4883, orderDateTime#4884, filteredUnitOfMeasureConversions#4907]
Arguments: explode(filteredUnitOfMeasureConversions#4907.quantityNumerator), [product#4882, plant#4883, orderDateTime#4884, filteredUnitOfMeasureConversions#4907], true, [quantityNumerator#4908]
(1099) Project
Output [4]: [product#4882, plant#4883, orderDateTime#4884, filteredUnitOfMeasureConversions#4907.quantityDenominator AS _extract_quantityDenominator#6348]
Input [5]: [product#4882, plant#4883, orderDateTime#4884, filteredUnitOfMeasureConversions#4907, quantityNumerator#4908]
(1100) Generate
Input [4]: [product#4882, plant#4883, orderDateTime#4884, _extract_quantityDenominator#6348]
Arguments: explode(_extract_quantityDenominator#6348), [product#4882, plant#4883, orderDateTime#4884], true, [quantityDenominator#4909]
(1101) Project
Output [3]: [product#4882, plant#4883, orderDateTime#4884]
Input [4]: [product#4882, plant#4883, orderDateTime#4884, quantityDenominator#4909]
(1102) Exchange
Input [3]: [product#4882, plant#4883, orderDateTime#4884]
Arguments: hashpartitioning(plant#4883, product#4882, 37), ENSURE_REQUIREMENTS, [plan_id=7689]
(1103) Sort
Input [3]: [product#4882, plant#4883, orderDateTime#4884]
Arguments: [plant#4883 ASC NULLS FIRST, product#4882 ASC NULLS FIRST], false, 0
(1104) SortMergeJoin
Left keys [2]: [plantUuid#4874, productUuid#4876]
Right keys [2]: [plant#4883, product#4882]
Join type: Inner
Join condition: (calculationDateTime#4870 <= orderDateTime#4884)
(1105) Project
Output [4]: [plantUuid#4874 AS plant#4912, productUuid#4876 AS product#4913, storageLocId#4877, calculationDateTime#4870]
Input [7]: [plantUuid#4874, productUuid#4876, calculationDateTime#4870, storageLocId#4877, product#4882, plant#4883, orderDateTime#4884]
(1106) HashAggregate
Input [4]: [plant#4912, product#4913, storageLocId#4877, calculationDateTime#4870]
Keys [3]: [plant#4912, product#4913, storageLocId#4877]
Functions [1]: [partial_max(calculationDateTime#4870)]
Aggregate Attributes [1]: [max#7315]
Results [4]: [plant#4912, product#4913, storageLocId#4877, max#7316]
(1107) HashAggregate
Input [4]: [plant#4912, product#4913, storageLocId#4877, max#7316]
Keys [3]: [plant#4912, product#4913, storageLocId#4877]
Functions [1]: [max(calculationDateTime#4870)]
Aggregate Attributes [1]: [max(calculationDateTime#4870)#1408]
Results [4]: [plant#4912, product#4913, storageLocId#4877, max(calculationDateTime#4870)#1408 AS max_calc_datetime#4914]
(1108) Exchange
Input [4]: [plant#4912, product#4913, storageLocId#4877, max_calc_datetime#4914]
Arguments: hashpartitioning(coalesce(plant#4912, ), isnull(plant#4912), coalesce(product#4913, ), isnull(product#4913), coalesce(storageLocId#4877, ), isnull(storageLocId#4877), coalesce(max_calc_datetime#4914, 1970-01-01 00:00:00), isnull(max_calc_datetime#4914), 37), ENSURE_REQUIREMENTS, [plan_id=7699]
(1109) Sort
Input [4]: [plant#4912, product#4913, storageLocId#4877, max_calc_datetime#4914]
Arguments: [coalesce(plant#4912, ) ASC NULLS FIRST, isnull(plant#4912) ASC NULLS FIRST, coalesce(product#4913, ) ASC NULLS FIRST, isnull(product#4913) ASC NULLS FIRST, coalesce(storageLocId#4877, ) ASC NULLS FIRST, isnull(storageLocId#4877) ASC NULLS FIRST, coalesce(max_calc_datetime#4914, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#4914) ASC NULLS FIRST], false, 0
(1110) SortMergeJoin
Left keys [8]: [coalesce(plant#4803, ), isnull(plant#4803), coalesce(product#4804, ), isnull(product#4804), coalesce(storageLocId#4768, ), isnull(storageLocId#4768), coalesce(calculationDateTime#4761, 1970-01-01 00:00:00), isnull(calculationDateTime#4761)]
Right keys [8]: [coalesce(plant#4912, ), isnull(plant#4912), coalesce(product#4913, ), isnull(product#4913), coalesce(storageLocId#4877, ), isnull(storageLocId#4877), coalesce(max_calc_datetime#4914, 1970-01-01 00:00:00), isnull(max_calc_datetime#4914)]
Join type: Inner
Join condition: None
(1111) Project
Output [3]: [plant#4803, product#4804, calculationDateTime#4761]
Input [8]: [plant#4803, product#4804, storageLocId#4768, calculationDateTime#4761, plant#4912, product#4913, storageLocId#4877, max_calc_datetime#4914]
(1112) HashAggregate
Input [3]: [plant#4803, product#4804, calculationDateTime#4761]
Keys [2]: [product#4804, plant#4803]
Functions [1]: [partial_min(calculationDateTime#4761)]
Aggregate Attributes [1]: [min#7307]
Results [3]: [product#4804, plant#4803, min#7308]
(1113) Exchange
Input [3]: [product#4804, plant#4803, min#7308]
Arguments: hashpartitioning(product#4804, plant#4803, 37), ENSURE_REQUIREMENTS, [plan_id=7706]
(1114) HashAggregate
Input [3]: [product#4804, plant#4803, min#7308]
Keys [2]: [product#4804, plant#4803]
Functions [1]: [min(calculationDateTime#4761)]
Aggregate Attributes [1]: [min(calculationDateTime#4761)#1534]
Results [3]: [product#4804, plant#4803, min(calculationDateTime#4761)#1534 AS minCalculationDateTime#4916]
(1115) Sort
Input [3]: [product#4804, plant#4803, minCalculationDateTime#4916]
Arguments: [product#4804 ASC NULLS FIRST, plant#4803 ASC NULLS FIRST], false, 0
(1116) SortMergeJoin
Left keys [2]: [product#4666, plant#4667]
Right keys [2]: [product#4804, plant#4803]
Join type: LeftOuter
Join condition: None
(1117) Project
Output [3]: [product#4666, plant#4667, CASE WHEN isnotnull(minCalculationDateTime#4916) THEN minCalculationDateTime#4916 ELSE orderDateTime#4668 END AS stockDatetime#4918]
Input [6]: [product#4666, plant#4667, orderDateTime#4668, product#4804, plant#4803, minCalculationDateTime#4916]
(1118) Exchange
Input [3]: [product#4666, plant#4667, stockDatetime#4918]
Arguments: hashpartitioning(coalesce(plant#4667, ), isnull(plant#4667), coalesce(product#4666, ), isnull(product#4666), 37), ENSURE_REQUIREMENTS, [plan_id=7898]
(1119) Sort
Input [3]: [product#4666, plant#4667, stockDatetime#4918]
Arguments: [coalesce(plant#4667, ) ASC NULLS FIRST, isnull(plant#4667) ASC NULLS FIRST, coalesce(product#4666, ) ASC NULLS FIRST, isnull(product#4666) ASC NULLS FIRST], false, 0
(1120) Scan parquet
Output [3]: [product#4921, plant#4922, orderDateTime#4923]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1121) Exchange
Input [3]: [product#4921, plant#4922, orderDateTime#4923]
Arguments: hashpartitioning(product#4921, plant#4922, 37), REPARTITION_BY_NUM, [plan_id=6666]
(1122) Exchange
Input [3]: [product#4921, plant#4922, orderDateTime#4923]
Arguments: hashpartitioning(coalesce(product#4921, ), isnull(product#4921), coalesce(plant#4922, ), isnull(plant#4922), 37), ENSURE_REQUIREMENTS, [plan_id=7716]
(1123) Sort
Input [3]: [product#4921, plant#4922, orderDateTime#4923]
Arguments: [coalesce(product#4921, ) ASC NULLS FIRST, isnull(product#4921) ASC NULLS FIRST, coalesce(plant#4922, ) ASC NULLS FIRST, isnull(plant#4922) ASC NULLS FIRST], false, 0
(1124) Scan parquet
Output [9]: [internalUUID#4926, plant#4927, product#4928, blockedForReplenishmentStartingFrom#4929, productionAspect#4930, salesPlant#4931, listing#4932, sourceOfSupplyCategory#4933, systemId#4925]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>
(1125) Project
Output [9]: [systemId#4925, internalUUID#4926, plant#4927, product#4928, blockedForReplenishmentStartingFrom#4929, productionAspect#4930, salesPlant#4931, listing#4932, sourceOfSupplyCategory#4933]
Input [9]: [internalUUID#4926, plant#4927, product#4928, blockedForReplenishmentStartingFrom#4929, productionAspect#4930, salesPlant#4931, listing#4932, sourceOfSupplyCategory#4933, systemId#4925]
(1126) Exchange
Input [9]: [systemId#4925, internalUUID#4926, plant#4927, product#4928, blockedForReplenishmentStartingFrom#4929, productionAspect#4930, salesPlant#4931, listing#4932, sourceOfSupplyCategory#4933]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6669]
(1127) Project
Output [1]: [struct(systemId, systemId#4925, internalUUID, internalUUID#4926, plant, plant#4927, product, product#4928, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4929, productionAspect, productionAspect#4930, salesPlant, salesPlant#4931, listing, listing#4932, sourceOfSupplyCategory, sourceOfSupplyCategory#4933) AS productPlant#4934]
Input [9]: [systemId#4925, internalUUID#4926, plant#4927, product#4928, blockedForReplenishmentStartingFrom#4929, productionAspect#4930, salesPlant#4931, listing#4932, sourceOfSupplyCategory#4933]
(1128) Exchange
Input [1]: [productPlant#4934]
Arguments: hashpartitioning(coalesce(productPlant#4934.product.internalRefUUID, ), isnull(productPlant#4934.product.internalRefUUID), coalesce(productPlant#4934.plant.internalRefUUID, ), isnull(productPlant#4934.plant.internalRefUUID), 37), ENSURE_REQUIREMENTS, [plan_id=7717]
(1129) Sort
Input [1]: [productPlant#4934]
Arguments: [coalesce(productPlant#4934.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#4934.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#4934.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#4934.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(1130) SortMergeJoin
Left keys [4]: [coalesce(product#4921, ), isnull(product#4921), coalesce(plant#4922, ), isnull(plant#4922)]
Right keys [4]: [coalesce(productPlant#4934.product.internalRefUUID, ), isnull(productPlant#4934.product.internalRefUUID), coalesce(productPlant#4934.plant.internalRefUUID, ), isnull(productPlant#4934.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(1131) Exchange
Input [4]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934]
Arguments: hashpartitioning(product#4921, 37), ENSURE_REQUIREMENTS, [plan_id=7723]
(1132) Sort
Input [4]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934]
Arguments: [product#4921 ASC NULLS FIRST], false, 0
(1133) Scan parquet
Output [4]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942, systemId#4935]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1134) Filter
Input [4]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942, systemId#4935]
Condition : isnotnull(internalUUID#4936)
(1135) Project
Output [3]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942]
Input [4]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942, systemId#4935]
(1136) Exchange
Input [3]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6675]
(1137) Exchange
Input [3]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942]
Arguments: hashpartitioning(internalUUID#4936, 37), ENSURE_REQUIREMENTS, [plan_id=7724]
(1138) Sort
Input [3]: [internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942]
Arguments: [internalUUID#4936 ASC NULLS FIRST], false, 0
(1139) SortMergeJoin
Left keys [1]: [product#4921]
Right keys [1]: [internalUUID#4936]
Join type: LeftOuter
Join condition: None
(1140) Project
Output [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, filter(unitOfMeasureConversions#4942, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#4934.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#4934.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#4940.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4940.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#4946]
Input [7]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, internalUUID#4936, baseUnitOfMeasure#4940, unitOfMeasureConversions#4942]
(1141) Project
Output [6]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, filteredUnitOfMeasureConversions#4946.quantityDenominator AS _extract_quantityDenominator#6596, filteredUnitOfMeasureConversions#4946.quantityNumerator AS _extract_quantityNumerator#6597]
Input [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, filteredUnitOfMeasureConversions#4946]
(1142) Generate
Input [6]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, _extract_quantityDenominator#6596, _extract_quantityNumerator#6597]
Arguments: explode(_extract_quantityNumerator#6597), [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, _extract_quantityDenominator#6596], true, [quantityNumerator#4947]
(1143) Generate
Input [6]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, _extract_quantityDenominator#6596, quantityNumerator#4947]
Arguments: explode(_extract_quantityDenominator#6596), [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, quantityNumerator#4947], true, [quantityDenominator#4948]
(1144) Project
Output [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, (cast(quantityNumerator#4947 as double) / cast(quantityDenominator#4948 as double)) AS outboundUnit#4949]
Input [6]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, quantityNumerator#4947, quantityDenominator#4948]
(1145) Project
Output [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, CASE WHEN (isnull(outboundUnit#4949) OR (outboundUnit#4949 <= 0.0)) THEN 1.0 ELSE outboundUnit#4949 END AS outboundUnit#4950]
Input [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4949]
(1146) Exchange
Input [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950]
Arguments: hashpartitioning(product#4921, plant#4922, 37), ENSURE_REQUIREMENTS, [plan_id=7878]
(1147) Sort
Input [5]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950]
Arguments: [product#4921 ASC NULLS FIRST, plant#4922 ASC NULLS FIRST], false, 0
(1148) Scan parquet
Output [6]: [internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956, systemId#4951]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(1149) Filter
Input [6]: [internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956, systemId#4951]
Condition : (isnotnull(plant#4954.internalRefUUID) AND isnotnull(product#4953.internalRefUUID))
(1150) Project
Output [6]: [systemId#4951, internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956]
Input [6]: [internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956, systemId#4951]
(1151) Exchange
Input [6]: [systemId#4951, internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6686]
(1152) BroadcastExchange
Input [6]: [systemId#4951, internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956]
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=7762]
(1153) Scan parquet
Output [2]: [marketUnit#4957, distributionCenters#4963]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1154) Filter
Input [2]: [marketUnit#4957, distributionCenters#4963]
Condition : (((marketUnit#4957 <=> 10000_OP_PERF) AND (size(distributionCenters#4963, true) > 0)) AND isnotnull(distributionCenters#4963))
(1155) Project
Output [1]: [distributionCenters#4963]
Input [2]: [marketUnit#4957, distributionCenters#4963]
(1156) Exchange
Input [1]: [distributionCenters#4963]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6690]
(1157) Generate
Input [1]: [distributionCenters#4963]
Arguments: explode(distributionCenters#4963), false, [distributionCenters#4979]
(1158) Filter
Input [1]: [distributionCenters#4979]
Condition : (((size(distributionCenters#4979.storageLocations, true) > 0) AND isnotnull(distributionCenters#4979.storageLocations)) AND isnotnull(distributionCenters#4979.internalRefUUID))
(1159) Project
Output [2]: [distributionCenters#4979.internalRefUUID AS _extract_internalRefUUID#6356, distributionCenters#4979.storageLocations AS _extract_storageLocations#6357]
Input [1]: [distributionCenters#4979]
(1160) Generate
Input [2]: [_extract_internalRefUUID#6356, _extract_storageLocations#6357]
Arguments: explode(_extract_storageLocations#6357), [_extract_internalRefUUID#6356], false, [storageLocations#4980]
(1161) Project
Output [3]: [_extract_internalRefUUID#6356 AS plantUuid#4982, storageLocations#4980.id AS storageLocId#4983, storageLocations#4980.internalRefUUID AS storageLocUuid#4984]
Input [2]: [_extract_internalRefUUID#6356, storageLocations#4980]
(1162) BroadcastExchange
Input [3]: [plantUuid#4982, storageLocId#4983, storageLocUuid#4984]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7758]
(1163) Scan parquet
Output [2]: [product#4985, plant#4986]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1164) Filter
Input [2]: [product#4985, plant#4986]
Condition : isnotnull(plant#4986)
(1165) Exchange
Input [2]: [product#4985, plant#4986]
Arguments: hashpartitioning(product#4985, plant#4986, 37), REPARTITION_BY_NUM, [plan_id=7095]
(1166) Exchange
Input [2]: [product#4985, plant#4986]
Arguments: hashpartitioning(coalesce(product#4985, ), isnull(product#4985), coalesce(plant#4986, ), isnull(plant#4986), 37), ENSURE_REQUIREMENTS, [plan_id=7735]
(1167) Sort
Input [2]: [product#4985, plant#4986]
Arguments: [coalesce(product#4985, ) ASC NULLS FIRST, isnull(product#4985) ASC NULLS FIRST, coalesce(plant#4986, ) ASC NULLS FIRST, isnull(plant#4986) ASC NULLS FIRST], false, 0
(1168) Scan parquet
Output [4]: [plant#4991, product#4992, productionAspect#4994, systemId#4989]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(1169) Project
Output [4]: [plant#4991.internalRefUUID AS _extract_internalRefUUID#6598, product#4992.internalRefUUID AS _extract_internalRefUUID#6601, productionAspect#4994.productMovementPlants.unitOfIssue.code AS _extract_code#6599, productionAspect#4994.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6600]
Input [4]: [plant#4991, product#4992, productionAspect#4994, systemId#4989]
(1170) Exchange
Input [4]: [_extract_internalRefUUID#6598, _extract_internalRefUUID#6601, _extract_code#6599, _extract_internalRefUUID#6600]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6702]
(1171) Project
Output [4]: [_extract_code#6599, _extract_internalRefUUID#6600, _extract_internalRefUUID#6601, _extract_internalRefUUID#6598]
Input [4]: [_extract_internalRefUUID#6598, _extract_internalRefUUID#6601, _extract_code#6599, _extract_internalRefUUID#6600]
(1172) Exchange
Input [4]: [_extract_code#6599, _extract_internalRefUUID#6600, _extract_internalRefUUID#6601, _extract_internalRefUUID#6598]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6601, ), isnull(_extract_internalRefUUID#6601), coalesce(_extract_internalRefUUID#6598, ), isnull(_extract_internalRefUUID#6598), 37), ENSURE_REQUIREMENTS, [plan_id=7736]
(1173) Sort
Input [4]: [_extract_code#6599, _extract_internalRefUUID#6600, _extract_internalRefUUID#6601, _extract_internalRefUUID#6598]
Arguments: [coalesce(_extract_internalRefUUID#6601, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6601) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6598, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6598) ASC NULLS FIRST], false, 0
(1174) SortMergeJoin
Left keys [4]: [coalesce(product#4985, ), isnull(product#4985), coalesce(plant#4986, ), isnull(plant#4986)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6601, ), isnull(_extract_internalRefUUID#6601), coalesce(_extract_internalRefUUID#6598, ), isnull(_extract_internalRefUUID#6598)]
Join type: LeftOuter
Join condition: None
(1175) Project
Output [4]: [product#4985, plant#4986, _extract_code#6599, _extract_internalRefUUID#6600]
Input [6]: [product#4985, plant#4986, _extract_code#6599, _extract_internalRefUUID#6600, _extract_internalRefUUID#6601, _extract_internalRefUUID#6598]
(1176) Exchange
Input [4]: [product#4985, plant#4986, _extract_code#6599, _extract_internalRefUUID#6600]
Arguments: hashpartitioning(product#4985, 37), ENSURE_REQUIREMENTS, [plan_id=7743]
(1177) Sort
Input [4]: [product#4985, plant#4986, _extract_code#6599, _extract_internalRefUUID#6600]
Arguments: [product#4985 ASC NULLS FIRST], false, 0
(1178) Scan parquet
Output [4]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006, systemId#4999]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1179) Filter
Input [4]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006, systemId#4999]
Condition : isnotnull(internalUUID#5000)
(1180) Project
Output [3]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006]
Input [4]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006, systemId#4999]
(1181) Exchange
Input [3]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6709]
(1182) Exchange
Input [3]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006]
Arguments: hashpartitioning(internalUUID#5000, 37), ENSURE_REQUIREMENTS, [plan_id=7744]
(1183) Sort
Input [3]: [internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006]
Arguments: [internalUUID#5000 ASC NULLS FIRST], false, 0
(1184) SortMergeJoin
Left keys [1]: [product#4985]
Right keys [1]: [internalUUID#5000]
Join type: LeftOuter
Join condition: None
(1185) Project
Output [2]: [plant#4986, filter(unitOfMeasureConversions#5006, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6599) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6600)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#5004.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5004.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#5010]
Input [7]: [product#4985, plant#4986, _extract_code#6599, _extract_internalRefUUID#6600, internalUUID#5000, baseUnitOfMeasure#5004, unitOfMeasureConversions#5006]
(1186) Generate
Input [2]: [plant#4986, filteredUnitOfMeasureConversions#5010]
Arguments: explode(filteredUnitOfMeasureConversions#5010.quantityNumerator), [plant#4986, filteredUnitOfMeasureConversions#5010], true, [quantityNumerator#5011]
(1187) Project
Output [2]: [plant#4986, filteredUnitOfMeasureConversions#5010.quantityDenominator AS _extract_quantityDenominator#6358]
Input [3]: [plant#4986, filteredUnitOfMeasureConversions#5010, quantityNumerator#5011]
(1188) Generate
Input [2]: [plant#4986, _extract_quantityDenominator#6358]
Arguments: explode(_extract_quantityDenominator#6358), [plant#4986], true, [quantityDenominator#5012]
(1189) Project
Output [1]: [plant#4986]
Input [2]: [plant#4986, quantityDenominator#5012]
(1190) HashAggregate
Input [1]: [plant#4986]
Keys [1]: [plant#4986]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4986]
(1191) Exchange
Input [1]: [plant#4986]
Arguments: hashpartitioning(plant#4986, 37), ENSURE_REQUIREMENTS, [plan_id=7755]
(1192) HashAggregate
Input [1]: [plant#4986]
Keys [1]: [plant#4986]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#4986]
(1193) BroadcastHashJoin
Left keys [1]: [plantUuid#4982]
Right keys [1]: [plant#4986]
Join type: Inner
Join condition: None
(1194) Project
Output [3]: [plantUuid#4982, storageLocId#4983, storageLocUuid#4984]
Input [4]: [plantUuid#4982, storageLocId#4983, storageLocUuid#4984, plant#4986]
(1195) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4954.internalRefUUID, ), isnull(plant#4954.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#4982, ), isnull(plantUuid#4982)]
Join type: Inner
Join condition: None
(1196) Generate
Input [9]: [systemId#4951, internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, stockQuantities#4956, plantUuid#4982, storageLocId#4983, storageLocUuid#4984]
Arguments: explode(filter(stockQuantities#4956, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#4984) AND (lambda x#1330.storageLocation.Id = storageLocId#4983)), lambda x#1330, false))), [systemId#4951, internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, plantUuid#4982], false, [stockQuantity#5015]
(1197) ObjectHashAggregate
Input [7]: [systemId#4951, internalUUID#4952, product#4953, plant#4954, calculationDateTime#4955, plantUuid#4982, stockQuantity#5015]
Keys [5]: [plantUuid#4982, internalUUID#4952, plant#4954, product#4953, systemId#4951]
Functions [2]: [partial_first(calculationDateTime#4955, false), partial_collect_list(stockQuantity#5015, 0, 0)]
Aggregate Attributes [3]: [first#7331, valueSet#7332, buf#7333]
Results [8]: [plantUuid#4982, internalUUID#4952, plant#4954, product#4953, systemId#4951, first#7334, valueSet#7335, buf#7336]
(1198) ObjectHashAggregate
Input [8]: [plantUuid#4982, internalUUID#4952, plant#4954, product#4953, systemId#4951, first#7334, valueSet#7335, buf#7336]
Keys [5]: [plantUuid#4982, internalUUID#4952, plant#4954, product#4953, systemId#4951]
Functions [2]: [first(calculationDateTime#4955, false), collect_list(stockQuantity#5015, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#4955)()#1345, collect_list(stockQuantity#5015, 0, 0)#1346]
Results [4]: [product#4953, plant#4954, first(calculationDateTime#4955)()#1345 AS calculationDateTime#5016, collect_list(stockQuantity#5015, 0, 0)#1346 AS stockQuantities#5017]
(1199) Filter
Input [4]: [product#4953, plant#4954, calculationDateTime#5016, stockQuantities#5017]
Condition : ((size(stockQuantities#5017, true) > 0) AND isnotnull(calculationDateTime#5016))
(1200) Generate
Input [4]: [product#4953, plant#4954, calculationDateTime#5016, stockQuantities#5017]
Arguments: explode(stockQuantities#5017), [product#4953, plant#4954, calculationDateTime#5016], false, [stockQuantity#5018]
(1201) Filter
Input [4]: [product#4953, plant#4954, calculationDateTime#5016, stockQuantity#5018]
Condition : (((isnotnull(stockQuantity#5018.specialStockIndicator.code) AND isnotnull(stockQuantity#5018.stockType.code)) AND (stockQuantity#5018.specialStockIndicator.code = )) AND (stockQuantity#5018.stockType.code = 01))
(1202) Project
Output [5]: [plant#4954.internalRefUUID AS plantUuid#5020, product#4953.internalRefUUID AS productUuid#5022, calculationDateTime#5016, stockQuantity#5018.storagelocation.id AS storageLocId#5023, stockQuantity#5018.quantity.measure AS quantity#5025]
Input [4]: [product#4953, plant#4954, calculationDateTime#5016, stockQuantity#5018]
(1203) Exchange
Input [5]: [plantUuid#5020, productUuid#5022, calculationDateTime#5016, storageLocId#5023, quantity#5025]
Arguments: hashpartitioning(plantUuid#5020, productUuid#5022, 37), ENSURE_REQUIREMENTS, [plan_id=7792]
(1204) Sort
Input [5]: [plantUuid#5020, productUuid#5022, calculationDateTime#5016, storageLocId#5023, quantity#5025]
Arguments: [plantUuid#5020 ASC NULLS FIRST, productUuid#5022 ASC NULLS FIRST], false, 0
(1205) Scan parquet
Output [3]: [product#5028, plant#5029, orderDateTime#5030]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1206) Filter
Input [3]: [product#5028, plant#5029, orderDateTime#5030]
Condition : ((isnotnull(orderDateTime#5030) AND isnotnull(plant#5029)) AND isnotnull(product#5028))
(1207) Exchange
Input [3]: [product#5028, plant#5029, orderDateTime#5030]
Arguments: hashpartitioning(product#5028, plant#5029, 37), REPARTITION_BY_NUM, [plan_id=7116]
(1208) Exchange
Input [3]: [product#5028, plant#5029, orderDateTime#5030]
Arguments: hashpartitioning(coalesce(product#5028, ), isnull(product#5028), coalesce(plant#5029, ), isnull(plant#5029), 37), ENSURE_REQUIREMENTS, [plan_id=7772]
(1209) Sort
Input [3]: [product#5028, plant#5029, orderDateTime#5030]
Arguments: [coalesce(product#5028, ) ASC NULLS FIRST, isnull(product#5028) ASC NULLS FIRST, coalesce(plant#5029, ) ASC NULLS FIRST, isnull(plant#5029) ASC NULLS FIRST], false, 0
(1210) Scan parquet
Output [4]: [plant#5034, product#5035, productionAspect#5037, systemId#5032]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(1211) Project
Output [4]: [plant#5034.internalRefUUID AS _extract_internalRefUUID#6602, product#5035.internalRefUUID AS _extract_internalRefUUID#6605, productionAspect#5037.productMovementPlants.unitOfIssue.code AS _extract_code#6603, productionAspect#5037.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6604]
Input [4]: [plant#5034, product#5035, productionAspect#5037, systemId#5032]
(1212) Exchange
Input [4]: [_extract_internalRefUUID#6602, _extract_internalRefUUID#6605, _extract_code#6603, _extract_internalRefUUID#6604]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6734]
(1213) Project
Output [4]: [_extract_code#6603, _extract_internalRefUUID#6604, _extract_internalRefUUID#6605, _extract_internalRefUUID#6602]
Input [4]: [_extract_internalRefUUID#6602, _extract_internalRefUUID#6605, _extract_code#6603, _extract_internalRefUUID#6604]
(1214) Exchange
Input [4]: [_extract_code#6603, _extract_internalRefUUID#6604, _extract_internalRefUUID#6605, _extract_internalRefUUID#6602]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6605, ), isnull(_extract_internalRefUUID#6605), coalesce(_extract_internalRefUUID#6602, ), isnull(_extract_internalRefUUID#6602), 37), ENSURE_REQUIREMENTS, [plan_id=7773]
(1215) Sort
Input [4]: [_extract_code#6603, _extract_internalRefUUID#6604, _extract_internalRefUUID#6605, _extract_internalRefUUID#6602]
Arguments: [coalesce(_extract_internalRefUUID#6605, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6605) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6602, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6602) ASC NULLS FIRST], false, 0
(1216) SortMergeJoin
Left keys [4]: [coalesce(product#5028, ), isnull(product#5028), coalesce(plant#5029, ), isnull(plant#5029)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6605, ), isnull(_extract_internalRefUUID#6605), coalesce(_extract_internalRefUUID#6602, ), isnull(_extract_internalRefUUID#6602)]
Join type: LeftOuter
Join condition: None
(1217) Project
Output [5]: [product#5028, plant#5029, orderDateTime#5030, _extract_code#6603, _extract_internalRefUUID#6604]
Input [7]: [product#5028, plant#5029, orderDateTime#5030, _extract_code#6603, _extract_internalRefUUID#6604, _extract_internalRefUUID#6605, _extract_internalRefUUID#6602]
(1218) Exchange
Input [5]: [product#5028, plant#5029, orderDateTime#5030, _extract_code#6603, _extract_internalRefUUID#6604]
Arguments: hashpartitioning(product#5028, 37), ENSURE_REQUIREMENTS, [plan_id=7780]
(1219) Sort
Input [5]: [product#5028, plant#5029, orderDateTime#5030, _extract_code#6603, _extract_internalRefUUID#6604]
Arguments: [product#5028 ASC NULLS FIRST], false, 0
(1220) Scan parquet
Output [4]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049, systemId#5042]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1221) Filter
Input [4]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049, systemId#5042]
Condition : isnotnull(internalUUID#5043)
(1222) Project
Output [3]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049]
Input [4]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049, systemId#5042]
(1223) Exchange
Input [3]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6741]
(1224) Exchange
Input [3]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049]
Arguments: hashpartitioning(internalUUID#5043, 37), ENSURE_REQUIREMENTS, [plan_id=7781]
(1225) Sort
Input [3]: [internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049]
Arguments: [internalUUID#5043 ASC NULLS FIRST], false, 0
(1226) SortMergeJoin
Left keys [1]: [product#5028]
Right keys [1]: [internalUUID#5043]
Join type: LeftOuter
Join condition: None
(1227) Project
Output [4]: [product#5028, plant#5029, orderDateTime#5030, filter(unitOfMeasureConversions#5049, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6603) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6604)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#5047.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5047.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#5053]
Input [8]: [product#5028, plant#5029, orderDateTime#5030, _extract_code#6603, _extract_internalRefUUID#6604, internalUUID#5043, baseUnitOfMeasure#5047, unitOfMeasureConversions#5049]
(1228) Generate
Input [4]: [product#5028, plant#5029, orderDateTime#5030, filteredUnitOfMeasureConversions#5053]
Arguments: explode(filteredUnitOfMeasureConversions#5053.quantityNumerator), [product#5028, plant#5029, orderDateTime#5030, filteredUnitOfMeasureConversions#5053], true, [quantityNumerator#5054]
(1229) Project
Output [4]: [product#5028, plant#5029, orderDateTime#5030, filteredUnitOfMeasureConversions#5053.quantityDenominator AS _extract_quantityDenominator#6365]
Input [5]: [product#5028, plant#5029, orderDateTime#5030, filteredUnitOfMeasureConversions#5053, quantityNumerator#5054]
(1230) Generate
Input [4]: [product#5028, plant#5029, orderDateTime#5030, _extract_quantityDenominator#6365]
Arguments: explode(_extract_quantityDenominator#6365), [product#5028, plant#5029, orderDateTime#5030], true, [quantityDenominator#5055]
(1231) Project
Output [3]: [product#5028, plant#5029, orderDateTime#5030]
Input [4]: [product#5028, plant#5029, orderDateTime#5030, quantityDenominator#5055]
(1232) Exchange
Input [3]: [product#5028, plant#5029, orderDateTime#5030]
Arguments: hashpartitioning(plant#5029, product#5028, 37), ENSURE_REQUIREMENTS, [plan_id=7793]
(1233) Sort
Input [3]: [product#5028, plant#5029, orderDateTime#5030]
Arguments: [plant#5029 ASC NULLS FIRST, product#5028 ASC NULLS FIRST], false, 0
(1234) SortMergeJoin
Left keys [2]: [plantUuid#5020, productUuid#5022]
Right keys [2]: [plant#5029, product#5028]
Join type: Inner
Join condition: (calculationDateTime#5016 <= orderDateTime#5030)
(1235) Project
Output [5]: [plantUuid#5020 AS plant#5058, productUuid#5022 AS product#5059, storageLocId#5023, calculationDateTime#5016, quantity#5025]
Input [8]: [plantUuid#5020, productUuid#5022, calculationDateTime#5016, storageLocId#5023, quantity#5025, product#5028, plant#5029, orderDateTime#5030]
(1236) Exchange
Input [5]: [plant#5058, product#5059, storageLocId#5023, calculationDateTime#5016, quantity#5025]
Arguments: hashpartitioning(coalesce(plant#5058, ), isnull(plant#5058), coalesce(product#5059, ), isnull(product#5059), coalesce(storageLocId#5023, ), isnull(storageLocId#5023), coalesce(calculationDateTime#5016, 1970-01-01 00:00:00), isnull(calculationDateTime#5016), 37), ENSURE_REQUIREMENTS, [plan_id=7866]
(1237) Sort
Input [5]: [plant#5058, product#5059, storageLocId#5023, calculationDateTime#5016, quantity#5025]
Arguments: [coalesce(plant#5058, ) ASC NULLS FIRST, isnull(plant#5058) ASC NULLS FIRST, coalesce(product#5059, ) ASC NULLS FIRST, isnull(product#5059) ASC NULLS FIRST, coalesce(storageLocId#5023, ) ASC NULLS FIRST, isnull(storageLocId#5023) ASC NULLS FIRST, coalesce(calculationDateTime#5016, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#5016) ASC NULLS FIRST], false, 0
(1238) Scan parquet
Output [6]: [internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065, systemId#5060]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>>
(1239) Filter
Input [6]: [internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065, systemId#5060]
Condition : (isnotnull(plant#5063.internalRefUUID) AND isnotnull(product#5062.internalRefUUID))
(1240) Project
Output [6]: [systemId#5060, internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065]
Input [6]: [internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065, systemId#5060]
(1241) Exchange
Input [6]: [systemId#5060, internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6753]
(1242) BroadcastExchange
Input [6]: [systemId#5060, internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065]
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=7826]
(1243) Scan parquet
Output [2]: [marketUnit#5066, distributionCenters#5072]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,10000_OP_PERF), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(1244) Filter
Input [2]: [marketUnit#5066, distributionCenters#5072]
Condition : (((marketUnit#5066 <=> 10000_OP_PERF) AND (size(distributionCenters#5072, true) > 0)) AND isnotnull(distributionCenters#5072))
(1245) Project
Output [1]: [distributionCenters#5072]
Input [2]: [marketUnit#5066, distributionCenters#5072]
(1246) Exchange
Input [1]: [distributionCenters#5072]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6757]
(1247) Generate
Input [1]: [distributionCenters#5072]
Arguments: explode(distributionCenters#5072), false, [distributionCenters#5088]
(1248) Filter
Input [1]: [distributionCenters#5088]
Condition : (((size(distributionCenters#5088.storageLocations, true) > 0) AND isnotnull(distributionCenters#5088.storageLocations)) AND isnotnull(distributionCenters#5088.internalRefUUID))
(1249) Project
Output [2]: [distributionCenters#5088.internalRefUUID AS _extract_internalRefUUID#6372, distributionCenters#5088.storageLocations AS _extract_storageLocations#6373]
Input [1]: [distributionCenters#5088]
(1250) Generate
Input [2]: [_extract_internalRefUUID#6372, _extract_storageLocations#6373]
Arguments: explode(_extract_storageLocations#6373), [_extract_internalRefUUID#6372], false, [storageLocations#5089]
(1251) Project
Output [3]: [_extract_internalRefUUID#6372 AS plantUuid#5091, storageLocations#5089.id AS storageLocId#5092, storageLocations#5089.internalRefUUID AS storageLocUuid#5093]
Input [2]: [_extract_internalRefUUID#6372, storageLocations#5089]
(1252) BroadcastExchange
Input [3]: [plantUuid#5091, storageLocId#5092, storageLocUuid#5093]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=7822]
(1253) Scan parquet
Output [2]: [product#5094, plant#5095]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(1254) Filter
Input [2]: [product#5094, plant#5095]
Condition : isnotnull(plant#5095)
(1255) Exchange
Input [2]: [product#5094, plant#5095]
Arguments: hashpartitioning(product#5094, plant#5095, 37), REPARTITION_BY_NUM, [plan_id=7127]
(1256) Exchange
Input [2]: [product#5094, plant#5095]
Arguments: hashpartitioning(coalesce(product#5094, ), isnull(product#5094), coalesce(plant#5095, ), isnull(plant#5095), 37), ENSURE_REQUIREMENTS, [plan_id=7799]
(1257) Sort
Input [2]: [product#5094, plant#5095]
Arguments: [coalesce(product#5094, ) ASC NULLS FIRST, isnull(product#5094) ASC NULLS FIRST, coalesce(plant#5095, ) ASC NULLS FIRST, isnull(plant#5095) ASC NULLS FIRST], false, 0
(1258) Scan parquet
Output [4]: [plant#5100, product#5101, productionAspect#5103, systemId#5098]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(1259) Project
Output [4]: [plant#5100.internalRefUUID AS _extract_internalRefUUID#6609, product#5101.internalRefUUID AS _extract_internalRefUUID#6608, productionAspect#5103.productMovementPlants.unitOfIssue.code AS _extract_code#6606, productionAspect#5103.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6607]
Input [4]: [plant#5100, product#5101, productionAspect#5103, systemId#5098]
(1260) Exchange
Input [4]: [_extract_internalRefUUID#6609, _extract_internalRefUUID#6608, _extract_code#6606, _extract_internalRefUUID#6607]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6769]
(1261) Project
Output [4]: [_extract_code#6606, _extract_internalRefUUID#6607, _extract_internalRefUUID#6608, _extract_internalRefUUID#6609]
Input [4]: [_extract_internalRefUUID#6609, _extract_internalRefUUID#6608, _extract_code#6606, _extract_internalRefUUID#6607]
(1262) Exchange
Input [4]: [_extract_code#6606, _extract_internalRefUUID#6607, _extract_internalRefUUID#6608, _extract_internalRefUUID#6609]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6608, ), isnull(_extract_internalRefUUID#6608), coalesce(_extract_internalRefUUID#6609, ), isnull(_extract_internalRefUUID#6609), 37), ENSURE_REQUIREMENTS, [plan_id=7800]
(1263) Sort
Input [4]: [_extract_code#6606, _extract_internalRefUUID#6607, _extract_internalRefUUID#6608, _extract_internalRefUUID#6609]
Arguments: [coalesce(_extract_internalRefUUID#6608, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6608) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6609, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6609) ASC NULLS FIRST], false, 0
(1264) SortMergeJoin
Left keys [4]: [coalesce(product#5094, ), isnull(product#5094), coalesce(plant#5095, ), isnull(plant#5095)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6608, ), isnull(_extract_internalRefUUID#6608), coalesce(_extract_internalRefUUID#6609, ), isnull(_extract_internalRefUUID#6609)]
Join type: LeftOuter
Join condition: None
(1265) Project
Output [4]: [product#5094, plant#5095, _extract_code#6606, _extract_internalRefUUID#6607]
Input [6]: [product#5094, plant#5095, _extract_code#6606, _extract_internalRefUUID#6607, _extract_internalRefUUID#6608, _extract_internalRefUUID#6609]
(1266) Exchange
Input [4]: [product#5094, plant#5095, _extract_code#6606, _extract_internalRefUUID#6607]
Arguments: hashpartitioning(product#5094, 37), ENSURE_REQUIREMENTS, [plan_id=7807]
(1267) Sort
Input [4]: [product#5094, plant#5095, _extract_code#6606, _extract_internalRefUUID#6607]
Arguments: [product#5094 ASC NULLS FIRST], false, 0
(1268) Scan parquet
Output [4]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115, systemId#5108]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1269) Filter
Input [4]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115, systemId#5108]
Condition : isnotnull(internalUUID#5109)
(1270) Project
Output [3]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115]
Input [4]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115, systemId#5108]
(1271) Exchange
Input [3]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6776]
(1272) Exchange
Input [3]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115]
Arguments: hashpartitioning(internalUUID#5109, 37), ENSURE_REQUIREMENTS, [plan_id=7808]
(1273) Sort
Input [3]: [internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115]
Arguments: [internalUUID#5109 ASC NULLS FIRST], false, 0
(1274) SortMergeJoin
Left keys [1]: [product#5094]
Right keys [1]: [internalUUID#5109]
Join type: LeftOuter
Join condition: None
(1275) Project
Output [2]: [plant#5095, filter(unitOfMeasureConversions#5115, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6606) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6607)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#5113.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5113.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#5119]
Input [7]: [product#5094, plant#5095, _extract_code#6606, _extract_internalRefUUID#6607, internalUUID#5109, baseUnitOfMeasure#5113, unitOfMeasureConversions#5115]
(1276) Generate
Input [2]: [plant#5095, filteredUnitOfMeasureConversions#5119]
Arguments: explode(filteredUnitOfMeasureConversions#5119.quantityNumerator), [plant#5095, filteredUnitOfMeasureConversions#5119], true, [quantityNumerator#5120]
(1277) Project
Output [2]: [plant#5095, filteredUnitOfMeasureConversions#5119.quantityDenominator AS _extract_quantityDenominator#6374]
Input [3]: [plant#5095, filteredUnitOfMeasureConversions#5119, quantityNumerator#5120]
(1278) Generate
Input [2]: [plant#5095, _extract_quantityDenominator#6374]
Arguments: explode(_extract_quantityDenominator#6374), [plant#5095], true, [quantityDenominator#5121]
(1279) Project
Output [1]: [plant#5095]
Input [2]: [plant#5095, quantityDenominator#5121]
(1280) HashAggregate
Input [1]: [plant#5095]
Keys [1]: [plant#5095]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#5095]
(1281) Exchange
Input [1]: [plant#5095]
Arguments: hashpartitioning(plant#5095, 37), ENSURE_REQUIREMENTS, [plan_id=7819]
(1282) HashAggregate
Input [1]: [plant#5095]
Keys [1]: [plant#5095]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#5095]
(1283) BroadcastHashJoin
Left keys [1]: [plantUuid#5091]
Right keys [1]: [plant#5095]
Join type: Inner
Join condition: None
(1284) Project
Output [3]: [plantUuid#5091, storageLocId#5092, storageLocUuid#5093]
Input [4]: [plantUuid#5091, storageLocId#5092, storageLocUuid#5093, plant#5095]
(1285) BroadcastHashJoin
Left keys [2]: [coalesce(plant#5063.internalRefUUID, ), isnull(plant#5063.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#5091, ), isnull(plantUuid#5091)]
Join type: Inner
Join condition: None
(1286) Generate
Input [9]: [systemId#5060, internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, stockQuantities#5065, plantUuid#5091, storageLocId#5092, storageLocUuid#5093]
Arguments: explode(filter(stockQuantities#5065, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#5093) AND (lambda x#1330.storageLocation.Id = storageLocId#5092)), lambda x#1330, false))), [systemId#5060, internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, plantUuid#5091], false, [stockQuantity#5124]
(1287) ObjectHashAggregate
Input [7]: [systemId#5060, internalUUID#5061, product#5062, plant#5063, calculationDateTime#5064, plantUuid#5091, stockQuantity#5124]
Keys [5]: [plantUuid#5091, internalUUID#5061, plant#5063, product#5062, systemId#5060]
Functions [2]: [partial_first(calculationDateTime#5064, false), partial_collect_list(stockQuantity#5124, 0, 0)]
Aggregate Attributes [3]: [first#7339, valueSet#7340, buf#7341]
Results [8]: [plantUuid#5091, internalUUID#5061, plant#5063, product#5062, systemId#5060, first#7342, valueSet#7343, buf#7344]
(1288) ObjectHashAggregate
Input [8]: [plantUuid#5091, internalUUID#5061, plant#5063, product#5062, systemId#5060, first#7342, valueSet#7343, buf#7344]
Keys [5]: [plantUuid#5091, internalUUID#5061, plant#5063, product#5062, systemId#5060]
Functions [2]: [first(calculationDateTime#5064, false), collect_list(stockQuantity#5124, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#5064)()#1345, collect_list(stockQuantity#5124, 0, 0)#1346]
Results [4]: [product#5062, plant#5063, first(calculationDateTime#5064)()#1345 AS calculationDateTime#5125, collect_list(stockQuantity#5124, 0, 0)#1346 AS stockQuantities#5126]
(1289) Filter
Input [4]: [product#5062, plant#5063, calculationDateTime#5125, stockQuantities#5126]
Condition : ((size(stockQuantities#5126, true) > 0) AND isnotnull(calculationDateTime#5125))
(1290) Generate
Input [4]: [product#5062, plant#5063, calculationDateTime#5125, stockQuantities#5126]
Arguments: explode(stockQuantities#5126), [product#5062, plant#5063, calculationDateTime#5125], false, [stockQuantity#5127]
(1291) Filter
Input [4]: [product#5062, plant#5063, calculationDateTime#5125, stockQuantity#5127]
Condition : (((isnotnull(stockQuantity#5127.specialStockIndicator.code) AND isnotnull(stockQuantity#5127.stockType.code)) AND (stockQuantity#5127.specialStockIndicator.code = )) AND (stockQuantity#5127.stockType.code = 01))
(1292) Project
Output [4]: [plant#5063.internalRefUUID AS plantUuid#5129, product#5062.internalRefUUID AS productUuid#5131, calculationDateTime#5125, stockQuantity#5127.storagelocation.id AS storageLocId#5132]
Input [4]: [product#5062, plant#5063, calculationDateTime#5125, stockQuantity#5127]
(1293) Exchange
Input [4]: [plantUuid#5129, productUuid#5131, calculationDateTime#5125, storageLocId#5132]
Arguments: hashpartitioning(plantUuid#5129, productUuid#5131, 37), ENSURE_REQUIREMENTS, [plan_id=7856]
(1294) Sort
Input [4]: [plantUuid#5129, productUuid#5131, calculationDateTime#5125, storageLocId#5132]
Arguments: [plantUuid#5129 ASC NULLS FIRST, productUuid#5131 ASC NULLS FIRST], false, 0
(1295) Scan parquet
Output [3]: [product#5137, plant#5138, orderDateTime#5139]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(1296) Filter
Input [3]: [product#5137, plant#5138, orderDateTime#5139]
Condition : ((isnotnull(orderDateTime#5139) AND isnotnull(plant#5138)) AND isnotnull(product#5137))
(1297) Exchange
Input [3]: [product#5137, plant#5138, orderDateTime#5139]
Arguments: hashpartitioning(product#5137, plant#5138, 37), REPARTITION_BY_NUM, [plan_id=7148]
(1298) Exchange
Input [3]: [product#5137, plant#5138, orderDateTime#5139]
Arguments: hashpartitioning(coalesce(product#5137, ), isnull(product#5137), coalesce(plant#5138, ), isnull(plant#5138), 37), ENSURE_REQUIREMENTS, [plan_id=7836]
(1299) Sort
Input [3]: [product#5137, plant#5138, orderDateTime#5139]
Arguments: [coalesce(product#5137, ) ASC NULLS FIRST, isnull(product#5137) ASC NULLS FIRST, coalesce(plant#5138, ) ASC NULLS FIRST, isnull(plant#5138) ASC NULLS FIRST], false, 0
(1300) Scan parquet
Output [4]: [plant#5143, product#5144, productionAspect#5146, systemId#5141]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>>
(1301) Project
Output [4]: [plant#5143.internalRefUUID AS _extract_internalRefUUID#6613, product#5144.internalRefUUID AS _extract_internalRefUUID#6612, productionAspect#5146.productMovementPlants.unitOfIssue.code AS _extract_code#6610, productionAspect#5146.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#6611]
Input [4]: [plant#5143, product#5144, productionAspect#5146, systemId#5141]
(1302) Exchange
Input [4]: [_extract_internalRefUUID#6613, _extract_internalRefUUID#6612, _extract_code#6610, _extract_internalRefUUID#6611]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6801]
(1303) Project
Output [4]: [_extract_code#6610, _extract_internalRefUUID#6611, _extract_internalRefUUID#6612, _extract_internalRefUUID#6613]
Input [4]: [_extract_internalRefUUID#6613, _extract_internalRefUUID#6612, _extract_code#6610, _extract_internalRefUUID#6611]
(1304) Exchange
Input [4]: [_extract_code#6610, _extract_internalRefUUID#6611, _extract_internalRefUUID#6612, _extract_internalRefUUID#6613]
Arguments: hashpartitioning(coalesce(_extract_internalRefUUID#6612, ), isnull(_extract_internalRefUUID#6612), coalesce(_extract_internalRefUUID#6613, ), isnull(_extract_internalRefUUID#6613), 37), ENSURE_REQUIREMENTS, [plan_id=7837]
(1305) Sort
Input [4]: [_extract_code#6610, _extract_internalRefUUID#6611, _extract_internalRefUUID#6612, _extract_internalRefUUID#6613]
Arguments: [coalesce(_extract_internalRefUUID#6612, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6612) ASC NULLS FIRST, coalesce(_extract_internalRefUUID#6613, ) ASC NULLS FIRST, isnull(_extract_internalRefUUID#6613) ASC NULLS FIRST], false, 0
(1306) SortMergeJoin
Left keys [4]: [coalesce(product#5137, ), isnull(product#5137), coalesce(plant#5138, ), isnull(plant#5138)]
Right keys [4]: [coalesce(_extract_internalRefUUID#6612, ), isnull(_extract_internalRefUUID#6612), coalesce(_extract_internalRefUUID#6613, ), isnull(_extract_internalRefUUID#6613)]
Join type: LeftOuter
Join condition: None
(1307) Project
Output [5]: [product#5137, plant#5138, orderDateTime#5139, _extract_code#6610, _extract_internalRefUUID#6611]
Input [7]: [product#5137, plant#5138, orderDateTime#5139, _extract_code#6610, _extract_internalRefUUID#6611, _extract_internalRefUUID#6612, _extract_internalRefUUID#6613]
(1308) Exchange
Input [5]: [product#5137, plant#5138, orderDateTime#5139, _extract_code#6610, _extract_internalRefUUID#6611]
Arguments: hashpartitioning(product#5137, 37), ENSURE_REQUIREMENTS, [plan_id=7844]
(1309) Sort
Input [5]: [product#5137, plant#5138, orderDateTime#5139, _extract_code#6610, _extract_internalRefUUID#6611]
Arguments: [product#5137 ASC NULLS FIRST], false, 0
(1310) Scan parquet
Output [4]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158, systemId#5151]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1311) Filter
Input [4]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158, systemId#5151]
Condition : isnotnull(internalUUID#5152)
(1312) Project
Output [3]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158]
Input [4]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158, systemId#5151]
(1313) Exchange
Input [3]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6808]
(1314) Exchange
Input [3]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158]
Arguments: hashpartitioning(internalUUID#5152, 37), ENSURE_REQUIREMENTS, [plan_id=7845]
(1315) Sort
Input [3]: [internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158]
Arguments: [internalUUID#5152 ASC NULLS FIRST], false, 0
(1316) SortMergeJoin
Left keys [1]: [product#5137]
Right keys [1]: [internalUUID#5152]
Join type: LeftOuter
Join condition: None
(1317) Project
Output [4]: [product#5137, plant#5138, orderDateTime#5139, filter(unitOfMeasureConversions#5158, lambdafunction((((lambda u#1206.measurementUnit1.code = _extract_code#6610) AND (lambda u#1206.measurementUnit1.internalRefUUID = _extract_internalRefUUID#6611)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#5156.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5156.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#5162]
Input [8]: [product#5137, plant#5138, orderDateTime#5139, _extract_code#6610, _extract_internalRefUUID#6611, internalUUID#5152, baseUnitOfMeasure#5156, unitOfMeasureConversions#5158]
(1318) Generate
Input [4]: [product#5137, plant#5138, orderDateTime#5139, filteredUnitOfMeasureConversions#5162]
Arguments: explode(filteredUnitOfMeasureConversions#5162.quantityNumerator), [product#5137, plant#5138, orderDateTime#5139, filteredUnitOfMeasureConversions#5162], true, [quantityNumerator#5163]
(1319) Project
Output [4]: [product#5137, plant#5138, orderDateTime#5139, filteredUnitOfMeasureConversions#5162.quantityDenominator AS _extract_quantityDenominator#6381]
Input [5]: [product#5137, plant#5138, orderDateTime#5139, filteredUnitOfMeasureConversions#5162, quantityNumerator#5163]
(1320) Generate
Input [4]: [product#5137, plant#5138, orderDateTime#5139, _extract_quantityDenominator#6381]
Arguments: explode(_extract_quantityDenominator#6381), [product#5137, plant#5138, orderDateTime#5139], true, [quantityDenominator#5164]
(1321) Project
Output [3]: [product#5137, plant#5138, orderDateTime#5139]
Input [4]: [product#5137, plant#5138, orderDateTime#5139, quantityDenominator#5164]
(1322) Exchange
Input [3]: [product#5137, plant#5138, orderDateTime#5139]
Arguments: hashpartitioning(plant#5138, product#5137, 37), ENSURE_REQUIREMENTS, [plan_id=7857]
(1323) Sort
Input [3]: [product#5137, plant#5138, orderDateTime#5139]
Arguments: [plant#5138 ASC NULLS FIRST, product#5137 ASC NULLS FIRST], false, 0
(1324) SortMergeJoin
Left keys [2]: [plantUuid#5129, productUuid#5131]
Right keys [2]: [plant#5138, product#5137]
Join type: Inner
Join condition: (calculationDateTime#5125 <= orderDateTime#5139)
(1325) Project
Output [4]: [plantUuid#5129 AS plant#5167, productUuid#5131 AS product#5168, storageLocId#5132, calculationDateTime#5125]
Input [7]: [plantUuid#5129, productUuid#5131, calculationDateTime#5125, storageLocId#5132, product#5137, plant#5138, orderDateTime#5139]
(1326) HashAggregate
Input [4]: [plant#5167, product#5168, storageLocId#5132, calculationDateTime#5125]
Keys [3]: [plant#5167, product#5168, storageLocId#5132]
Functions [1]: [partial_max(calculationDateTime#5125)]
Aggregate Attributes [1]: [max#7337]
Results [4]: [plant#5167, product#5168, storageLocId#5132, max#7338]
(1327) HashAggregate
Input [4]: [plant#5167, product#5168, storageLocId#5132, max#7338]
Keys [3]: [plant#5167, product#5168, storageLocId#5132]
Functions [1]: [max(calculationDateTime#5125)]
Aggregate Attributes [1]: [max(calculationDateTime#5125)#1408]
Results [4]: [plant#5167, product#5168, storageLocId#5132, max(calculationDateTime#5125)#1408 AS max_calc_datetime#5169]
(1328) Exchange
Input [4]: [plant#5167, product#5168, storageLocId#5132, max_calc_datetime#5169]
Arguments: hashpartitioning(coalesce(plant#5167, ), isnull(plant#5167), coalesce(product#5168, ), isnull(product#5168), coalesce(storageLocId#5132, ), isnull(storageLocId#5132), coalesce(max_calc_datetime#5169, 1970-01-01 00:00:00), isnull(max_calc_datetime#5169), 37), ENSURE_REQUIREMENTS, [plan_id=7867]
(1329) Sort
Input [4]: [plant#5167, product#5168, storageLocId#5132, max_calc_datetime#5169]
Arguments: [coalesce(plant#5167, ) ASC NULLS FIRST, isnull(plant#5167) ASC NULLS FIRST, coalesce(product#5168, ) ASC NULLS FIRST, isnull(product#5168) ASC NULLS FIRST, coalesce(storageLocId#5132, ) ASC NULLS FIRST, isnull(storageLocId#5132) ASC NULLS FIRST, coalesce(max_calc_datetime#5169, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#5169) ASC NULLS FIRST], false, 0
(1330) SortMergeJoin
Left keys [8]: [coalesce(plant#5058, ), isnull(plant#5058), coalesce(product#5059, ), isnull(product#5059), coalesce(storageLocId#5023, ), isnull(storageLocId#5023), coalesce(calculationDateTime#5016, 1970-01-01 00:00:00), isnull(calculationDateTime#5016)]
Right keys [8]: [coalesce(plant#5167, ), isnull(plant#5167), coalesce(product#5168, ), isnull(product#5168), coalesce(storageLocId#5132, ), isnull(storageLocId#5132), coalesce(max_calc_datetime#5169, 1970-01-01 00:00:00), isnull(max_calc_datetime#5169)]
Join type: Inner
Join condition: None
(1331) Project
Output [4]: [plant#5058, product#5059, calculationDateTime#5016, quantity#5025]
Input [9]: [plant#5058, product#5059, storageLocId#5023, calculationDateTime#5016, quantity#5025, plant#5167, product#5168, storageLocId#5132, max_calc_datetime#5169]
(1332) HashAggregate
Input [4]: [plant#5058, product#5059, calculationDateTime#5016, quantity#5025]
Keys [2]: [product#5059, plant#5058]
Functions [2]: [partial_min(calculationDateTime#5016), partial_sum(quantity#5025)]
Aggregate Attributes [2]: [min#7327, sum#7328]
Results [4]: [product#5059, plant#5058, min#7329, sum#7330]
(1333) Exchange
Input [4]: [product#5059, plant#5058, min#7329, sum#7330]
Arguments: hashpartitioning(product#5059, plant#5058, 37), ENSURE_REQUIREMENTS, [plan_id=7874]
(1334) HashAggregate
Input [4]: [product#5059, plant#5058, min#7329, sum#7330]
Keys [2]: [product#5059, plant#5058]
Functions [2]: [min(calculationDateTime#5016), sum(quantity#5025)]
Aggregate Attributes [2]: [min(calculationDateTime#5016)#1534, sum(quantity#5025)#1533]
Results [4]: [product#5059, plant#5058, min(calculationDateTime#5016)#1534 AS minCalculationDateTime#5171, round(sum(quantity#5025)#1533, 0) AS roundedQuantitySum#5172]
(1335) Sort
Input [4]: [product#5059, plant#5058, minCalculationDateTime#5171, roundedQuantitySum#5172]
Arguments: [product#5059 ASC NULLS FIRST, plant#5058 ASC NULLS FIRST], false, 0
(1336) SortMergeJoin
Left keys [2]: [product#4921, plant#4922]
Right keys [2]: [product#5059, plant#5058]
Join type: LeftOuter
Join condition: None
(1337) Project
Output [7]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, CASE WHEN isnotnull(minCalculationDateTime#5171) THEN minCalculationDateTime#5171 ELSE orderDateTime#4923 END AS stockDatetime#5173, CASE WHEN isnotnull(roundedQuantitySum#5172) THEN array(roundedQuantitySum#5172) ELSE [0.0] END AS stockBatchQuantities#5174]
Input [9]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, product#5059, plant#5058, minCalculationDateTime#5171, roundedQuantitySum#5172]
(1338) Scan parquet
Output [9]: [product#5176, plant#5177, demandChannel#5178, demandStream#5179, considerVariance#5180, demandTimeBuckets#5181, demandPointInTimeStart#5182, demandPointInTimeEnd#5183, demandPointInTime#5184]
Batched: true
Location: InMemoryFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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>>>
(1339) BroadcastExchange
Input [9]: [product#5176, plant#5177, demandChannel#5178, demandStream#5179, considerVariance#5180, demandTimeBuckets#5181, demandPointInTimeStart#5182, demandPointInTimeEnd#5183, demandPointInTime#5184]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=7884]
(1340) BroadcastHashJoin
Left keys [4]: [coalesce(plant#4922, ), isnull(plant#4922), coalesce(product#4921, ), isnull(product#4921)]
Right keys [4]: [coalesce(plant#5177, ), isnull(plant#5177), coalesce(product#5176, ), isnull(product#5176)]
Join type: LeftOuter
Join condition: None
(1341) Project
Output [8]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, CASE WHEN isnotnull(product#5176) THEN struct(demandChannel, demandChannel#5178, demandStream, demandStream#5179, considerVariance, considerVariance#5180, demandTimeBuckets, demandTimeBuckets#5181, demandPointInTimeStart, demandPointInTimeStart#5182, demandPointInTimeEnd, demandPointInTimeEnd#5183, demandPointInTime, demandPointInTime#5184) END AS rawDemands#5185]
Input [16]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, product#5176, plant#5177, demandChannel#5178, demandStream#5179, considerVariance#5180, demandTimeBuckets#5181, demandPointInTimeStart#5182, demandPointInTimeEnd#5183, demandPointInTime#5184]
(1342) ObjectHashAggregate
Input [8]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, rawDemands#5185]
Keys [8]: [product#4921, plant#4922, orderDateTime#4923, knownfloatingpointnormalized(if (isnull(productPlant#4934)) null else named_struct(systemId, productPlant#4934.systemId, internalUUID, productPlant#4934.internalUUID, plant, productPlant#4934.plant, product, productPlant#4934.product, blockedForReplenishmentStartingFrom, productPlant#4934.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#4934.productionAspect)) null else named_struct(productMovementPlants, productPlant#4934.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#4934.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#4934.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#4934.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#4934.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#4934.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#4934.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#4934.salesPlant, listing, productPlant#4934.listing, sourceOfSupplyCategory, productPlant#4934.sourceOfSupplyCategory)) AS productPlant#4934, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#4950)) AS outboundUnit#4950, stockDatetime#5173, knownfloatingpointnormalized(transform(stockBatchQuantities#5174, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#7324)), lambda arg#7324, false))) AS stockBatchQuantities#5174, [7226582400000000] AS [7226582400000000]#7323]
Functions [1]: [partial_collect_list(rawDemands#5185, 0, 0)]
Aggregate Attributes [1]: [buf#7325]
Results [9]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, [7226582400000000]#7323, buf#7326]
(1343) ObjectHashAggregate
Input [9]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, [7226582400000000]#7323, buf#7326]
Keys [8]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, [7226582400000000]#7323]
Functions [1]: [collect_list(rawDemands#5185, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#5185, 0, 0)#1602]
Results [8]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, collect_list(rawDemands#5185, 0, 0)#1602 AS rawDemands#5186]
(1344) Scan parquet
Output [3]: [internalUUID#5188, address#5194, systemId#5187]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.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>>>
(1345) Project
Output [2]: [internalUUID#5188, address#5194.timeZone.code AS timezonecode#5199]
Input [3]: [internalUUID#5188, address#5194, systemId#5187]
(1346) Exchange
Input [2]: [internalUUID#5188, timezonecode#5199]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6832]
(1347) BroadcastExchange
Input [2]: [internalUUID#5188, timezonecode#5199]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=7890]
(1348) BroadcastHashJoin
Left keys [2]: [coalesce(plant#4922, ), isnull(plant#4922)]
Right keys [2]: [coalesce(internalUUID#5188, ), isnull(internalUUID#5188)]
Join type: LeftOuter
Join condition: None
(1349) Project
Output [10]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#5175, rawDemands#5186, CASE WHEN isnotnull(timezonecode#5199) THEN timezonecode#5199 ELSE UTC END AS timezonecode#5200]
Input [10]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, rawDemands#5186, internalUUID#5188, timezonecode#5199]
(1350) DeserializeToObject
Input [10]: [product#4921, plant#4922, orderDateTime#4923, productPlant#4934, outboundUnit#4950, stockDatetime#5173, stockBatchQuantities#5174, stockBatchShelfLifeEndDatetimes#5175, rawDemands#5186, timezonecode#5200]
Arguments: createexternalrow(invoke(product#4921.toString()), invoke(plant#4922.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#4923)), if (isnull(productPlant#4934)) null else createexternalrow(invoke(productPlant#4934.systemId.toString()), invoke(productPlant#4934.internalUUID.toString()), if (isnull(productPlant#4934.plant)) null else createexternalrow(invoke(productPlant#4934.plant.internalRefUUID.toString()), invoke(productPlant#4934.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#4934.product)) null else createexternalrow(invoke(productPlant#4934.product.internalRefUUID.toString()), invoke(productPlant#4934.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#4934.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#4934.productionAspect)) null else createexternalrow(if (isnull(productPlant#4934.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#4934.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#4934.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#4934.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#4934.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#4934.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#4934.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#4934.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#4934.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#4934.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#4934.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#4934.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#4934.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#4934.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#4934.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#4934.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#4934.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#4934.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#4934.salesPlant)) null else createexternalrow(if (isnull(productPlant#4934.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#4934.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#4934.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#4934.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#4934.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#4934.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#4934.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#4950)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#5173)), mapobjects(lambdavariable(MapObject, DoubleType, true, -12), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -12))), stockBatchQuantities#5174, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -13), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -13))), stockBatchShelfLifeEndDatetimes#5175, 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#5186, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#5200.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#2697: org.apache.spark.sql.Row
(1351) MapElements
Input [1]: [obj#2697]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000802111db0@1fa786b, obj#2702: org.apache.spark.sql.Row
(1352) SerializeFromObject
Input [1]: [obj#2702]
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#5201, 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#5202]
(1353) Exchange
Input [2]: [product#5201, plant#5202]
Arguments: hashpartitioning(coalesce(plant#5202, ), isnull(plant#5202), coalesce(product#5201, ), isnull(product#5201), 37), ENSURE_REQUIREMENTS, [plan_id=7899]
(1354) Sort
Input [2]: [product#5201, plant#5202]
Arguments: [coalesce(plant#5202, ) ASC NULLS FIRST, isnull(plant#5202) ASC NULLS FIRST, coalesce(product#5201, ) ASC NULLS FIRST, isnull(product#5201) ASC NULLS FIRST], false, 0
(1355) SortMergeJoin
Left keys [4]: [coalesce(plant#4667, ), isnull(plant#4667), coalesce(product#4666, ), isnull(product#4666)]
Right keys [4]: [coalesce(plant#5202, ), isnull(plant#5202), coalesce(product#5201, ), isnull(product#5201)]
Join type: LeftOuter
Join condition: None
(1356) Project
Output [3]: [product#4666, plant#4667, stockDatetime#4918]
Input [5]: [product#4666, plant#4667, stockDatetime#4918, product#5201, plant#5202]
(1357) Scan parquet
Output [6]: [internalUUID#5206, id#5207, supplier#5209, isMarkedForDeletion#5212, items#5213, systemId#5205]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://7da5304c-1f57-47fa-b75a-0f0b4349c280.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,supplier:struct<internalRefUUID:string,id:string>,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(1358) Filter
Input [6]: [internalUUID#5206, id#5207, supplier#5209, isMarkedForDeletion#5212, items#5213, systemId#5205]
Condition : (((isnotnull(isMarkedForDeletion#5212) AND NOT isMarkedForDeletion#5212) AND (size(items#5213, true) > 0)) AND isnotnull(items#5213))
(1359) Project
Output [4]: [internalUUID#5206, id#5207, supplier#5209, items#5213]
Input [6]: [internalUUID#5206, id#5207, supplier#5209, isMarkedForDeletion#5212, items#5213, systemId#5205]
(1360) Exchange
Input [4]: [internalUUID#5206, id#5207, supplier#5209, items#5213]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=6843]
(1361) Generate
Input [4]: [internalUUID#5206, id#5207, supplier#5209, items#5213]
Arguments: explode(items#5213), [internalUUID#5206, id#5207, supplier#5209], false, [item#5214]
(1362) Filter
Input [4]: [internalUUID#5206, id#5207, supplier#5209, item#5214]
Condition : ((((isnotnull(item#5214.deletionIndicator) AND isnotnull(item#5214.completeIndicator)) AND isnotnull(item#5214.returnIndicator)) AND ((NOT item#5214.deletionIndicator AND NOT item#5214.completeIndicator) AND NOT item#5214.returnIndicator)) AND isnotnull(item#5214.product.internalRefUUID))
(1363) Project
Output [9]: [id#5207, internalUUID#5206, supplier#5209.internalRefUUID AS supplierUuid#5215, item#5214.product.internalRefUUID AS product#5217, item#5214.quantityUnit.code AS quantityUom#5219, item#5214.quantityUnit.internalRefUUID AS quantityUomUuid#5220, item#5214.quantityNumerator AS quantityNumerator#5221, item#5214.quantityDenominator AS quantityDenominator#5222, item#5214.scheduleLines AS scheduleLines#5223]
Input [4]: [internalUUID#5206, id#5207, supplier#5209, item#5214]
(1364) BroadcastExchange
Input [9]: [id#5207, internalUUID#5206, supplierUuid#5215, product#5217, quantityUom#5219, quantityUomUuid#5220, quantityNumerator#5221, quantityDenominator#5222, scheduleLines#5223]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, string, true], ), isnull(input[3, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true])),false), [plan_id=7905]
(1365) BroadcastHashJoin
Left keys [4]: [coalesce(product#4666, ), isnull(product#4666), coalesce(plant#4667, ), isnull(plant#4667)]
Right keys [4]: [coalesce(product#5217, ), isnull(product#5217), coalesce(supplierUuid#5215, ), isnull(supplierUuid#5215)]
Join type: Inner
Join condition: None
(1366) Project
Output [3]: [product#5217, plant#4667, filter(transform(filter(transform(scheduleLines#5223, lambdafunction(struct(openQty, (greatest((lambda x_6#4646.quantity - coalesce(lambda x_6#4646.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_6#4646.productAvailabilityDateTime, lambda x_6#4646.deliveryAt)), lambda x_6#4646, false)), lambdafunction((lambda x_7#4647.availabilityDatetime < stockDatetime#4918), lambda x_7#4647, false)), lambdafunction(struct(documentId, id#5207, documentUuid, internalUUID#5206, openQty, lambda x_8#4648.openQty, openQtyInBaseUnit, ((lambda x_8#4648.openQty * quantityNumerator#5221) / quantityDenominator#5222), qtyUom, quantityUom#5219, qtyUomUuid, quantityUomUuid#5220, availabilityDatetime, lambda x_8#4648.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_8#4648, false)), lambdafunction(NOT (lambda x_9#4649.openQty = 0.0), lambda x_9#4649, false)) AS openGoodsMovements#4645]
Input [12]: [product#4666, plant#4667, stockDatetime#4918, id#5207, internalUUID#5206, supplierUuid#5215, product#5217, quantityUom#5219, quantityUomUuid#5220, quantityNumerator#5221, quantityDenominator#5222, scheduleLines#5223]
(1367) ObjectHashAggregate
Input [3]: [product#5217, plant#4667, openGoodsMovements#4645]
Keys [2]: [product#5217, plant#4667]
Functions [1]: [partial_collect_list(openGoodsMovements#4645, 0, 0)]
Aggregate Attributes [1]: [buf#7305]
Results [3]: [product#5217, plant#4667, buf#7306]
(1368) Exchange
Input [3]: [product#5217, plant#4667, buf#7306]
Arguments: hashpartitioning(product#5217, plant#4667, 37), ENSURE_REQUIREMENTS, [plan_id=7910]
(1369) ObjectHashAggregate
Input [3]: [product#5217, plant#4667, buf#7306]
Keys [2]: [product#5217, plant#4667]
Functions [1]: [collect_list(openGoodsMovements#4645, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#4645, 0, 0)#4665]
Results [3]: [product#5217, plant#4667, flatten(collect_list(openGoodsMovements#4645, 0, 0)#4665) AS openGoodsMovements#4650]
(1370) Filter
Input [3]: [product#5217, plant#4667, openGoodsMovements#4650]
Condition : (size(openGoodsMovements#4650, false) > 0)
(1371) Union
(1372) ObjectHashAggregate
Input [3]: [product#3025, plant#3024, openGoodsMovements#3125]
Keys [2]: [product#3025, plant#3024]
Functions [1]: [partial_collect_list(openGoodsMovements#3125, 0, 0)]
Aggregate Attributes [1]: [buf#7303]
Results [3]: [product#3025, plant#3024, buf#7304]
(1373) Exchange
Input [3]: [product#3025, plant#3024, buf#7304]
Arguments: hashpartitioning(product#3025, plant#3024, 37), ENSURE_REQUIREMENTS, [plan_id=7916]
(1374) ObjectHashAggregate
Input [3]: [product#3025, plant#3024, buf#7304]
Keys [2]: [product#3025, plant#3024]
Functions [1]: [collect_list(openGoodsMovements#3125, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#3125, 0, 0)#5270]
Results [3]: [product#3025, plant#3024, flatten(collect_list(openGoodsMovements#3125, 0, 0)#5270) AS openGoodsMovements#5266]
(1375) Project
Output [5]: [product#3025, plant#3024, openGoodsMovements#5266.openQtyInBaseUnit AS _extract_openQtyInBaseUnit#6533, openGoodsMovements#5266.availabilityDatetime AS _extract_availabilityDatetime#6534, openGoodsMovements#5266.shelfLifeEndDatetime AS _extract_shelfLifeEndDatetime#6535]
Input [3]: [product#3025, plant#3024, openGoodsMovements#5266]
(1376) Sort
Input [5]: [product#3025, plant#3024, _extract_openQtyInBaseUnit#6533, _extract_availabilityDatetime#6534, _extract_shelfLifeEndDatetime#6535]
Arguments: [product#3025 ASC NULLS FIRST, plant#3024 ASC NULLS FIRST], false, 0
(1377) SortMergeJoin
Left keys [2]: [product#1127, plant#1128]
Right keys [2]: [product#3025, plant#3024]
Join type: LeftOuter
Join condition: None
(1378) Project
Output [16]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1571, dayBucketDemands#2709, pointInTimeDemands#2710, coalesce(_extract_openQtyInBaseUnit#6533, []) AS openGoodsMovementQuantities#5850, coalesce(_extract_availabilityDatetime#6534, []) AS openGoodsMovementAvailabilityDatetimes#5851, coalesce(_extract_shelfLifeEndDatetime#6535, []) AS openGoodsMovementShelfLifeEndDatetimes#5852, [[0,ShelfLife.LIFOPreference,0.42],[0,StockExtrapolation.ConsiderUnfulfilledDemands,1]] AS configuration#5953, [ListingPeriod] AS timeDependentSettingsName#6092, [-2208988800000000] AS timeDependentSettingsStartDatetime#6093, [7226582400000000] AS timeDependentSettingsEndDatetime#6094, [1.0] AS timeDependentSettingsValue#6095]
Input [12]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, dayBucketDemands#2709, pointInTimeDemands#2710, product#3025, plant#3024, _extract_openQtyInBaseUnit#6533, _extract_availabilityDatetime#6534, _extract_shelfLifeEndDatetime#6535]
(1379) AdaptiveSparkPlan
Output [16]: [product#1127, plant#1128, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, stockBatchShelfLifeEndDatetimes#1571, dayBucketDemands#2709, pointInTimeDemands#2710, openGoodsMovementQuantities#5850, openGoodsMovementAvailabilityDatetimes#5851, openGoodsMovementShelfLifeEndDatetimes#5852, configuration#5953, timeDependentSettingsName#6092, timeDependentSettingsStartDatetime#6093, timeDependentSettingsEndDatetime#6094, timeDependentSettingsValue#6095]
Arguments: isFinalPlan=false