== Physical Plan ==
AdaptiveSparkPlan (414)
+- == Final Plan ==
   NativeSort (265)
   +- InputAdapter (264)
      +- AQEShuffleRead (263)
         +- ShuffleQueryStage (262), Statistics(X)
            +- NativeShuffleExchange (261)
               +- NativeProject (260)
                  +- NativeSortMergeJoin Inner (259)
                     :- NativeProject (218)
                     :  +- NativeSortMergeJoin Inner (217)
                     :     :- NativeSortMergeJoin Inner (176)
                     :     :  :- NativeProject (133)
                     :     :  :  +- NativeSortMergeJoin Inner (132)
                     :     :  :     :- NativeSortMergeJoin Inner (89)
                     :     :  :     :  :- NativeSort (46)
                     :     :  :     :  :  +- InputAdapter (45)
                     :     :  :     :  :     +- AQEShuffleRead (44)
                     :     :  :     :  :        +- ShuffleQueryStage (43), Statistics(X)
                     :     :  :     :  :           +- NativeShuffleExchange (42)
                     :     :  :     :  :              +- NativeProject (41)
                     :     :  :     :  :                 +- NativeHashAggregate (40)
                     :     :  :     :  :                    +- InputAdapter (39)
                     :     :  :     :  :                       +- AQEShuffleRead (38)
                     :     :  :     :  :                          +- ShuffleQueryStage (37), Statistics(X)
                     :     :  :     :  :                             +- NativeShuffleExchange (36)
                     :     :  :     :  :                                +- NativeHashAggregate (35)
                     :     :  :     :  :                                   +- NativeProject (34)
                     :     :  :     :  :                                      +- NativeProject (33)
                     :     :  :     :  :                                         +- NativeSortMergeJoin Inner (32)
                     :     :  :     :  :                                            :- NativeSort (23)
                     :     :  :     :  :                                            :  +- InputAdapter (22)
                     :     :  :     :  :                                            :     +- AQEShuffleRead (21)
                     :     :  :     :  :                                            :        +- ShuffleQueryStage (20), Statistics(X)
                     :     :  :     :  :                                            :           +- NativeShuffleExchange (19)
                     :     :  :     :  :                                            :              +- NativeProject (18)
                     :     :  :     :  :                                            :                 +- NativeSortMergeJoin Inner (17)
                     :     :  :     :  :                                            :                    :- NativeSort (8)
                     :     :  :     :  :                                            :                    :  +- InputAdapter (7)
                     :     :  :     :  :                                            :                    :     +- AQEShuffleRead (6)
                     :     :  :     :  :                                            :                    :        +- ShuffleQueryStage (5), Statistics(X)
                     :     :  :     :  :                                            :                    :           +- NativeShuffleExchange (4)
                     :     :  :     :  :                                            :                    :              +- NativeFilter (3)
                     :     :  :     :  :                                            :                    :                 +- InputAdapter (2)
                     :     :  :     :  :                                            :                    :                    +- NativeParquetScan  (1)
                     :     :  :     :  :                                            :                    +- NativeSort (16)
                     :     :  :     :  :                                            :                       +- InputAdapter (15)
                     :     :  :     :  :                                            :                          +- AQEShuffleRead (14)
                     :     :  :     :  :                                            :                             +- ShuffleQueryStage (13), Statistics(X)
                     :     :  :     :  :                                            :                                +- NativeShuffleExchange (12)
                     :     :  :     :  :                                            :                                   +- NativeFilter (11)
                     :     :  :     :  :                                            :                                      +- InputAdapter (10)
                     :     :  :     :  :                                            :                                         +- NativeParquetScan  (9)
                     :     :  :     :  :                                            +- NativeSort (31)
                     :     :  :     :  :                                               +- InputAdapter (30)
                     :     :  :     :  :                                                  +- AQEShuffleRead (29)
                     :     :  :     :  :                                                     +- ShuffleQueryStage (28), Statistics(X)
                     :     :  :     :  :                                                        +- NativeShuffleExchange (27)
                     :     :  :     :  :                                                           +- NativeFilter (26)
                     :     :  :     :  :                                                              +- InputAdapter (25)
                     :     :  :     :  :                                                                 +- NativeParquetScan  (24)
                     :     :  :     :  +- NativeSort (88)
                     :     :  :     :     +- InputAdapter (87)
                     :     :  :     :        +- AQEShuffleRead (86)
                     :     :  :     :           +- ShuffleQueryStage (85), Statistics(X)
                     :     :  :     :              +- NativeShuffleExchange (84)
                     :     :  :     :                 +- NativeProject (83)
                     :     :  :     :                    +- NativeHashAggregate (82)
                     :     :  :     :                       +- InputAdapter (81)
                     :     :  :     :                          +- AQEShuffleRead (80)
                     :     :  :     :                             +- ShuffleQueryStage (79), Statistics(X)
                     :     :  :     :                                +- NativeShuffleExchange (78)
                     :     :  :     :                                   +- NativeHashAggregate (77)
                     :     :  :     :                                      +- NativeProject (76)
                     :     :  :     :                                         +- NativeProject (75)
                     :     :  :     :                                            +- NativeSortMergeJoin Inner (74)
                     :     :  :     :                                               :- NativeSort (67)
                     :     :  :     :                                               :  +- InputAdapter (66)
                     :     :  :     :                                               :     +- AQEShuffleRead (65)
                     :     :  :     :                                               :        +- ShuffleQueryStage (64), Statistics(X)
                     :     :  :     :                                               :           +- NativeShuffleExchange (63)
                     :     :  :     :                                               :              +- NativeProject (62)
                     :     :  :     :                                               :                 +- NativeSortMergeJoin Inner (61)
                     :     :  :     :                                               :                    :- NativeSort (52)
                     :     :  :     :                                               :                    :  +- InputAdapter (51)
                     :     :  :     :                                               :                    :     +- InputAdapter (50)
                     :     :  :     :                                               :                    :        +- AQEShuffleRead (49)
                     :     :  :     :                                               :                    :           +- ShuffleQueryStage (48), Statistics(X)
                     :     :  :     :                                               :                    :              +- ReusedExchange (47)
                     :     :  :     :                                               :                    +- NativeSort (60)
                     :     :  :     :                                               :                       +- InputAdapter (59)
                     :     :  :     :                                               :                          +- AQEShuffleRead (58)
                     :     :  :     :                                               :                             +- ShuffleQueryStage (57), Statistics(X)
                     :     :  :     :                                               :                                +- NativeShuffleExchange (56)
                     :     :  :     :                                               :                                   +- NativeFilter (55)
                     :     :  :     :                                               :                                      +- InputAdapter (54)
                     :     :  :     :                                               :                                         +- NativeParquetScan  (53)
                     :     :  :     :                                               +- NativeSort (73)
                     :     :  :     :                                                  +- InputAdapter (72)
                     :     :  :     :                                                     +- InputAdapter (71)
                     :     :  :     :                                                        +- AQEShuffleRead (70)
                     :     :  :     :                                                           +- ShuffleQueryStage (69), Statistics(X)
                     :     :  :     :                                                              +- ReusedExchange (68)
                     :     :  :     +- NativeSort (131)
                     :     :  :        +- InputAdapter (130)
                     :     :  :           +- AQEShuffleRead (129)
                     :     :  :              +- ShuffleQueryStage (128), Statistics(X)
                     :     :  :                 +- NativeShuffleExchange (127)
                     :     :  :                    +- NativeProject (126)
                     :     :  :                       +- NativeHashAggregate (125)
                     :     :  :                          +- InputAdapter (124)
                     :     :  :                             +- AQEShuffleRead (123)
                     :     :  :                                +- ShuffleQueryStage (122), Statistics(X)
                     :     :  :                                   +- NativeShuffleExchange (121)
                     :     :  :                                      +- NativeHashAggregate (120)
                     :     :  :                                         +- NativeProject (119)
                     :     :  :                                            +- NativeProject (118)
                     :     :  :                                               +- NativeSortMergeJoin Inner (117)
                     :     :  :                                                  :- NativeSort (110)
                     :     :  :                                                  :  +- InputAdapter (109)
                     :     :  :                                                  :     +- AQEShuffleRead (108)
                     :     :  :                                                  :        +- ShuffleQueryStage (107), Statistics(X)
                     :     :  :                                                  :           +- NativeShuffleExchange (106)
                     :     :  :                                                  :              +- NativeProject (105)
                     :     :  :                                                  :                 +- NativeSortMergeJoin Inner (104)
                     :     :  :                                                  :                    :- NativeSort (95)
                     :     :  :                                                  :                    :  +- InputAdapter (94)
                     :     :  :                                                  :                    :     +- InputAdapter (93)
                     :     :  :                                                  :                    :        +- AQEShuffleRead (92)
                     :     :  :                                                  :                    :           +- ShuffleQueryStage (91), Statistics(X)
                     :     :  :                                                  :                    :              +- ReusedExchange (90)
                     :     :  :                                                  :                    +- NativeSort (103)
                     :     :  :                                                  :                       +- InputAdapter (102)
                     :     :  :                                                  :                          +- AQEShuffleRead (101)
                     :     :  :                                                  :                             +- ShuffleQueryStage (100), Statistics(X)
                     :     :  :                                                  :                                +- NativeShuffleExchange (99)
                     :     :  :                                                  :                                   +- NativeFilter (98)
                     :     :  :                                                  :                                      +- InputAdapter (97)
                     :     :  :                                                  :                                         +- NativeParquetScan  (96)
                     :     :  :                                                  +- NativeSort (116)
                     :     :  :                                                     +- InputAdapter (115)
                     :     :  :                                                        +- InputAdapter (114)
                     :     :  :                                                           +- AQEShuffleRead (113)
                     :     :  :                                                              +- ShuffleQueryStage (112), Statistics(X)
                     :     :  :                                                                 +- ReusedExchange (111)
                     :     :  +- NativeSort (175)
                     :     :     +- InputAdapter (174)
                     :     :        +- AQEShuffleRead (173)
                     :     :           +- ShuffleQueryStage (172), Statistics(X)
                     :     :              +- NativeShuffleExchange (171)
                     :     :                 +- NativeProject (170)
                     :     :                    +- NativeHashAggregate (169)
                     :     :                       +- InputAdapter (168)
                     :     :                          +- AQEShuffleRead (167)
                     :     :                             +- ShuffleQueryStage (166), Statistics(X)
                     :     :                                +- NativeShuffleExchange (165)
                     :     :                                   +- NativeHashAggregate (164)
                     :     :                                      +- NativeProject (163)
                     :     :                                         +- NativeProject (162)
                     :     :                                            +- NativeSortMergeJoin Inner (161)
                     :     :                                               :- NativeSort (154)
                     :     :                                               :  +- InputAdapter (153)
                     :     :                                               :     +- AQEShuffleRead (152)
                     :     :                                               :        +- ShuffleQueryStage (151), Statistics(X)
                     :     :                                               :           +- NativeShuffleExchange (150)
                     :     :                                               :              +- NativeProject (149)
                     :     :                                               :                 +- NativeSortMergeJoin Inner (148)
                     :     :                                               :                    :- NativeSort (141)
                     :     :                                               :                    :  +- InputAdapter (140)
                     :     :                                               :                    :     +- AQEShuffleRead (139)
                     :     :                                               :                    :        +- ShuffleQueryStage (138), Statistics(X)
                     :     :                                               :                    :           +- NativeShuffleExchange (137)
                     :     :                                               :                    :              +- NativeFilter (136)
                     :     :                                               :                    :                 +- InputAdapter (135)
                     :     :                                               :                    :                    +- NativeParquetScan  (134)
                     :     :                                               :                    +- NativeSort (147)
                     :     :                                               :                       +- InputAdapter (146)
                     :     :                                               :                          +- InputAdapter (145)
                     :     :                                               :                             +- AQEShuffleRead (144)
                     :     :                                               :                                +- ShuffleQueryStage (143), Statistics(X)
                     :     :                                               :                                   +- ReusedExchange (142)
                     :     :                                               +- NativeSort (160)
                     :     :                                                  +- InputAdapter (159)
                     :     :                                                     +- InputAdapter (158)
                     :     :                                                        +- AQEShuffleRead (157)
                     :     :                                                           +- ShuffleQueryStage (156), Statistics(X)
                     :     :                                                              +- ReusedExchange (155)
                     :     +- NativeSort (216)
                     :        +- InputAdapter (215)
                     :           +- AQEShuffleRead (214)
                     :              +- ShuffleQueryStage (213), Statistics(X)
                     :                 +- NativeShuffleExchange (212)
                     :                    +- NativeProject (211)
                     :                       +- NativeHashAggregate (210)
                     :                          +- InputAdapter (209)
                     :                             +- AQEShuffleRead (208)
                     :                                +- ShuffleQueryStage (207), Statistics(X)
                     :                                   +- NativeShuffleExchange (206)
                     :                                      +- NativeHashAggregate (205)
                     :                                         +- NativeProject (204)
                     :                                            +- NativeProject (203)
                     :                                               +- NativeSortMergeJoin Inner (202)
                     :                                                  :- NativeSort (195)
                     :                                                  :  +- InputAdapter (194)
                     :                                                  :     +- AQEShuffleRead (193)
                     :                                                  :        +- ShuffleQueryStage (192), Statistics(X)
                     :                                                  :           +- NativeShuffleExchange (191)
                     :                                                  :              +- NativeProject (190)
                     :                                                  :                 +- NativeSortMergeJoin Inner (189)
                     :                                                  :                    :- NativeSort (182)
                     :                                                  :                    :  +- InputAdapter (181)
                     :                                                  :                    :     +- InputAdapter (180)
                     :                                                  :                    :        +- AQEShuffleRead (179)
                     :                                                  :                    :           +- ShuffleQueryStage (178), Statistics(X)
                     :                                                  :                    :              +- ReusedExchange (177)
                     :                                                  :                    +- NativeSort (188)
                     :                                                  :                       +- InputAdapter (187)
                     :                                                  :                          +- InputAdapter (186)
                     :                                                  :                             +- AQEShuffleRead (185)
                     :                                                  :                                +- ShuffleQueryStage (184), Statistics(X)
                     :                                                  :                                   +- ReusedExchange (183)
                     :                                                  +- NativeSort (201)
                     :                                                     +- InputAdapter (200)
                     :                                                        +- InputAdapter (199)
                     :                                                           +- AQEShuffleRead (198)
                     :                                                              +- ShuffleQueryStage (197), Statistics(X)
                     :                                                                 +- ReusedExchange (196)
                     +- NativeSort (258)
                        +- InputAdapter (257)
                           +- AQEShuffleRead (256)
                              +- ShuffleQueryStage (255), Statistics(X)
                                 +- NativeShuffleExchange (254)
                                    +- NativeProject (253)
                                       +- NativeHashAggregate (252)
                                          +- InputAdapter (251)
                                             +- AQEShuffleRead (250)
                                                +- ShuffleQueryStage (249), Statistics(X)
                                                   +- NativeShuffleExchange (248)
                                                      +- NativeHashAggregate (247)
                                                         +- NativeProject (246)
                                                            +- NativeProject (245)
                                                               +- NativeSortMergeJoin Inner (244)
                                                                  :- NativeSort (237)
                                                                  :  +- InputAdapter (236)
                                                                  :     +- AQEShuffleRead (235)
                                                                  :        +- ShuffleQueryStage (234), Statistics(X)
                                                                  :           +- NativeShuffleExchange (233)
                                                                  :              +- NativeProject (232)
                                                                  :                 +- NativeSortMergeJoin Inner (231)
                                                                  :                    :- NativeSort (224)
                                                                  :                    :  +- InputAdapter (223)
                                                                  :                    :     +- InputAdapter (222)
                                                                  :                    :        +- AQEShuffleRead (221)
                                                                  :                    :           +- ShuffleQueryStage (220), Statistics(X)
                                                                  :                    :              +- ReusedExchange (219)
                                                                  :                    +- NativeSort (230)
                                                                  :                       +- InputAdapter (229)
                                                                  :                          +- InputAdapter (228)
                                                                  :                             +- AQEShuffleRead (227)
                                                                  :                                +- ShuffleQueryStage (226), Statistics(X)
                                                                  :                                   +- ReusedExchange (225)
                                                                  +- NativeSort (243)
                                                                     +- InputAdapter (242)
                                                                        +- InputAdapter (241)
                                                                           +- AQEShuffleRead (240)
                                                                              +- ShuffleQueryStage (239), Statistics(X)
                                                                                 +- ReusedExchange (238)
+- == Initial Plan ==
   Sort (413)
   +- Exchange (412)
      +- Project (411)
         +- SortMergeJoin Inner (410)
            :- Project (386)
            :  +- SortMergeJoin Inner (385)
            :     :- SortMergeJoin Inner (361)
            :     :  :- Project (337)
            :     :  :  +- SortMergeJoin Inner (336)
            :     :  :     :- SortMergeJoin Inner (312)
            :     :  :     :  :- Sort (288)
            :     :  :     :  :  +- Exchange (287)
            :     :  :     :  :     +- HashAggregate (286)
            :     :  :     :  :        +- Exchange (285)
            :     :  :     :  :           +- HashAggregate (284)
            :     :  :     :  :              +- Project (283)
            :     :  :     :  :                 +- SortMergeJoin Inner (282)
            :     :  :     :  :                    :- Sort (277)
            :     :  :     :  :                    :  +- Exchange (276)
            :     :  :     :  :                    :     +- Project (275)
            :     :  :     :  :                    :        +- SortMergeJoin Inner (274)
            :     :  :     :  :                    :           :- Sort (269)
            :     :  :     :  :                    :           :  +- Exchange (268)
            :     :  :     :  :                    :           :     +- Filter (267)
            :     :  :     :  :                    :           :        +- Scan parquet (266)
            :     :  :     :  :                    :           +- Sort (273)
            :     :  :     :  :                    :              +- Exchange (272)
            :     :  :     :  :                    :                 +- Filter (271)
            :     :  :     :  :                    :                    +- Scan parquet (270)
            :     :  :     :  :                    +- Sort (281)
            :     :  :     :  :                       +- Exchange (280)
            :     :  :     :  :                          +- Filter (279)
            :     :  :     :  :                             +- Scan parquet (278)
            :     :  :     :  +- Sort (311)
            :     :  :     :     +- Exchange (310)
            :     :  :     :        +- HashAggregate (309)
            :     :  :     :           +- Exchange (308)
            :     :  :     :              +- HashAggregate (307)
            :     :  :     :                 +- Project (306)
            :     :  :     :                    +- SortMergeJoin Inner (305)
            :     :  :     :                       :- Sort (300)
            :     :  :     :                       :  +- Exchange (299)
            :     :  :     :                       :     +- Project (298)
            :     :  :     :                       :        +- SortMergeJoin Inner (297)
            :     :  :     :                       :           :- Sort (292)
            :     :  :     :                       :           :  +- Exchange (291)
            :     :  :     :                       :           :     +- Filter (290)
            :     :  :     :                       :           :        +- Scan parquet (289)
            :     :  :     :                       :           +- Sort (296)
            :     :  :     :                       :              +- Exchange (295)
            :     :  :     :                       :                 +- Filter (294)
            :     :  :     :                       :                    +- Scan parquet (293)
            :     :  :     :                       +- Sort (304)
            :     :  :     :                          +- Exchange (303)
            :     :  :     :                             +- Filter (302)
            :     :  :     :                                +- Scan parquet (301)
            :     :  :     +- Sort (335)
            :     :  :        +- Exchange (334)
            :     :  :           +- HashAggregate (333)
            :     :  :              +- Exchange (332)
            :     :  :                 +- HashAggregate (331)
            :     :  :                    +- Project (330)
            :     :  :                       +- SortMergeJoin Inner (329)
            :     :  :                          :- Sort (324)
            :     :  :                          :  +- Exchange (323)
            :     :  :                          :     +- Project (322)
            :     :  :                          :        +- SortMergeJoin Inner (321)
            :     :  :                          :           :- Sort (316)
            :     :  :                          :           :  +- Exchange (315)
            :     :  :                          :           :     +- Filter (314)
            :     :  :                          :           :        +- Scan parquet (313)
            :     :  :                          :           +- Sort (320)
            :     :  :                          :              +- Exchange (319)
            :     :  :                          :                 +- Filter (318)
            :     :  :                          :                    +- Scan parquet (317)
            :     :  :                          +- Sort (328)
            :     :  :                             +- Exchange (327)
            :     :  :                                +- Filter (326)
            :     :  :                                   +- Scan parquet (325)
            :     :  +- Sort (360)
            :     :     +- Exchange (359)
            :     :        +- HashAggregate (358)
            :     :           +- Exchange (357)
            :     :              +- HashAggregate (356)
            :     :                 +- Project (355)
            :     :                    +- SortMergeJoin Inner (354)
            :     :                       :- Sort (349)
            :     :                       :  +- Exchange (348)
            :     :                       :     +- Project (347)
            :     :                       :        +- SortMergeJoin Inner (346)
            :     :                       :           :- Sort (341)
            :     :                       :           :  +- Exchange (340)
            :     :                       :           :     +- Filter (339)
            :     :                       :           :        +- Scan parquet (338)
            :     :                       :           +- Sort (345)
            :     :                       :              +- Exchange (344)
            :     :                       :                 +- Filter (343)
            :     :                       :                    +- Scan parquet (342)
            :     :                       +- Sort (353)
            :     :                          +- Exchange (352)
            :     :                             +- Filter (351)
            :     :                                +- Scan parquet (350)
            :     +- Sort (384)
            :        +- Exchange (383)
            :           +- HashAggregate (382)
            :              +- Exchange (381)
            :                 +- HashAggregate (380)
            :                    +- Project (379)
            :                       +- SortMergeJoin Inner (378)
            :                          :- Sort (373)
            :                          :  +- Exchange (372)
            :                          :     +- Project (371)
            :                          :        +- SortMergeJoin Inner (370)
            :                          :           :- Sort (365)
            :                          :           :  +- Exchange (364)
            :                          :           :     +- Filter (363)
            :                          :           :        +- Scan parquet (362)
            :                          :           +- Sort (369)
            :                          :              +- Exchange (368)
            :                          :                 +- Filter (367)
            :                          :                    +- Scan parquet (366)
            :                          +- Sort (377)
            :                             +- Exchange (376)
            :                                +- Filter (375)
            :                                   +- Scan parquet (374)
            +- Sort (409)
               +- Exchange (408)
                  +- HashAggregate (407)
                     +- Exchange (406)
                        +- HashAggregate (405)
                           +- Project (404)
                              +- SortMergeJoin Inner (403)
                                 :- Sort (398)
                                 :  +- Exchange (397)
                                 :     +- Project (396)
                                 :        +- SortMergeJoin Inner (395)
                                 :           :- Sort (390)
                                 :           :  +- Exchange (389)
                                 :           :     +- Filter (388)
                                 :           :        +- Scan parquet (387)
                                 :           +- Sort (394)
                                 :              +- Exchange (393)
                                 :                 +- Filter (392)
                                 :                    +- Scan parquet (391)
                                 +- Sort (402)
                                    +- Exchange (401)
                                       +- Filter (400)
                                          +- Scan parquet (399)


(266) Scan parquet
Output [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(2) InputAdapter
Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Arguments: [#1, #2, #3]

(3) NativeFilter
Input [3]: [#1#1, #2#2, #3#3]
Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#2))

(4) NativeShuffleExchange
Input [3]: [#1#1, #2#2, #3#3]
Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=1]

(5) ShuffleQueryStage
Output [3]: [#1#1, #2#2, #3#3]
Arguments: X

(6) AQEShuffleRead
Input [3]: [#1#1, #2#2, #3#3]
Arguments: coalesced

(7) InputAdapter
Input [3]: [#1#1, #2#2, #3#3]

(8) NativeSort
Input [3]: [#1#1, #2#2, #3#3]
Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false

(270) Scan parquet
Output [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(10) InputAdapter
Input [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Arguments: [#4, #5, #6]

(11) NativeFilter
Input [3]: [#4#4, #5#5, #6#6]
Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 1)) AND (d_year#5 = 2000)) AND isnotnull(d_date_sk#4))

(12) NativeShuffleExchange
Input [3]: [#4#4, #5#5, #6#6]
Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=2]

(13) ShuffleQueryStage
Output [3]: [#4#4, #5#5, #6#6]
Arguments: X

(14) AQEShuffleRead
Input [3]: [#4#4, #5#5, #6#6]
Arguments: coalesced

(15) InputAdapter
Input [3]: [#4#4, #5#5, #6#6]

(16) NativeSort
Input [3]: [#4#4, #5#5, #6#6]
Arguments: [d_date_sk#4 ASC NULLS FIRST], false

(17) NativeSortMergeJoin
Left keys [1]: [ss_sold_date_sk#1]
Right keys [1]: [d_date_sk#4]
Join type: Inner
Join condition: None

(18) NativeProject
Output [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6]

(19) NativeShuffleExchange
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Arguments: hashpartitioning(ss_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(20) ShuffleQueryStage
Output [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Arguments: X

(21) AQEShuffleRead
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Arguments: coalesced

(22) InputAdapter
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]

(23) NativeSort
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Arguments: [ss_addr_sk#2 ASC NULLS FIRST], false

(278) Scan parquet
Output [2]: [ca_address_sk#7, ca_county#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(25) InputAdapter
Input [2]: [ca_address_sk#7, ca_county#8]
Arguments: [#7, #8]

(26) NativeFilter
Input [2]: [#7#7, #8#8]
Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_county#8))

(27) NativeShuffleExchange
Input [2]: [#7#7, #8#8]
Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=4]

(28) ShuffleQueryStage
Output [2]: [#7#7, #8#8]
Arguments: X

(29) AQEShuffleRead
Input [2]: [#7#7, #8#8]
Arguments: coalesced

(30) InputAdapter
Input [2]: [#7#7, #8#8]

(31) NativeSort
Input [2]: [#7#7, #8#8]
Arguments: [ca_address_sk#7 ASC NULLS FIRST], false

(32) NativeSortMergeJoin
Left keys [1]: [ss_addr_sk#2]
Right keys [1]: [ca_address_sk#7]
Join type: Inner
Join condition: None

(33) NativeProject
Output [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8]
Input [6]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6, #7#7, #8#8]

(34) NativeProject
Output [4]: [ca_county#8 AS ca_county#8, d_qoy#6 AS d_qoy#6, d_year#5 AS d_year#5, UnscaledValue(ss_ext_sales_price#3) AS _c3#9]
Input [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8]

(35) NativeHashAggregate
Input [4]: [ca_county#8, d_qoy#6, d_year#5, _c3#9]
Keys [3]: [ca_county#8, d_qoy#6, d_year#5]
Functions [1]: [partial_sum(_c3#9)]
Aggregate Attributes [1]: [sum#10]
Results [4]: [ca_county#8, d_qoy#6, d_year#5, #11]

(36) NativeShuffleExchange
Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11]
Arguments: hashpartitioning(ca_county#8, d_qoy#6, d_year#5, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(37) ShuffleQueryStage
Output [4]: [ca_county#8, d_qoy#6, d_year#5, #11]
Arguments: X

(38) AQEShuffleRead
Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11]
Arguments: coalesced

(39) InputAdapter
Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11]

(40) NativeHashAggregate
Input [4]: [ca_county#8, d_qoy#6, d_year#5, #11]
Keys [3]: [ca_county#8, d_qoy#6, d_year#5]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#12]
Results [4]: [ca_county#8, d_qoy#6, d_year#5, sum(UnscaledValue(ss_ext_sales_price#3))#12]

(41) NativeProject
Output [3]: [ca_county#8, d_year#5, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#12,17,2) AS store_sales#13]
Input [4]: [ca_county#8, d_qoy#6, d_year#5, sum(UnscaledValue(ss_ext_sales_price#3))#12]

(42) NativeShuffleExchange
Input [3]: [ca_county#8, d_year#5, store_sales#13]
Arguments: hashpartitioning(ca_county#8, 100), ENSURE_REQUIREMENTS, [plan_id=6]

(43) ShuffleQueryStage
Output [3]: [ca_county#8, d_year#5, store_sales#13]
Arguments: X

(44) AQEShuffleRead
Input [3]: [ca_county#8, d_year#5, store_sales#13]
Arguments: coalesced

(45) InputAdapter
Input [3]: [ca_county#8, d_year#5, store_sales#13]

(46) NativeSort
Input [3]: [ca_county#8, d_year#5, store_sales#13]
Arguments: [ca_county#8 ASC NULLS FIRST], false

(47) ReusedExchange [Reuses operator id: 4]
Output [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]

(48) ShuffleQueryStage
Output [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Arguments: X

(49) AQEShuffleRead
Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Arguments: coalesced

(50) InputAdapter
Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Arguments: [#14, #15, #16]

(51) InputAdapter
Input [3]: [#14#14, #15#15, #16#16]

(52) NativeSort
Input [3]: [#14#14, #15#15, #16#16]
Arguments: [ss_sold_date_sk#14 ASC NULLS FIRST], false

(293) Scan parquet
Output [3]: [d_date_sk#17, d_year#18, d_qoy#19]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(54) InputAdapter
Input [3]: [d_date_sk#17, d_year#18, d_qoy#19]
Arguments: [#17, #18, #19]

(55) NativeFilter
Input [3]: [#17#17, #18#18, #19#19]
Condition : ((((isnotnull(d_qoy#19) AND isnotnull(d_year#18)) AND (d_qoy#19 = 2)) AND (d_year#18 = 2000)) AND isnotnull(d_date_sk#17))

(56) NativeShuffleExchange
Input [3]: [#17#17, #18#18, #19#19]
Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=7]

(57) ShuffleQueryStage
Output [3]: [#17#17, #18#18, #19#19]
Arguments: X

(58) AQEShuffleRead
Input [3]: [#17#17, #18#18, #19#19]
Arguments: coalesced

(59) InputAdapter
Input [3]: [#17#17, #18#18, #19#19]

(60) NativeSort
Input [3]: [#17#17, #18#18, #19#19]
Arguments: [d_date_sk#17 ASC NULLS FIRST], false

(61) NativeSortMergeJoin
Left keys [1]: [ss_sold_date_sk#14]
Right keys [1]: [d_date_sk#17]
Join type: Inner
Join condition: None

(62) NativeProject
Output [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Input [6]: [#14#14, #15#15, #16#16, #17#17, #18#18, #19#19]

(63) NativeShuffleExchange
Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Arguments: hashpartitioning(ss_addr_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=8]

(64) ShuffleQueryStage
Output [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Arguments: X

(65) AQEShuffleRead
Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Arguments: coalesced

(66) InputAdapter
Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]

(67) NativeSort
Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Arguments: [ss_addr_sk#15 ASC NULLS FIRST], false

(68) ReusedExchange [Reuses operator id: 27]
Output [2]: [ca_address_sk#20, ca_county#21]

(69) ShuffleQueryStage
Output [2]: [ca_address_sk#20, ca_county#21]
Arguments: X

(70) AQEShuffleRead
Input [2]: [ca_address_sk#20, ca_county#21]
Arguments: coalesced

(71) InputAdapter
Input [2]: [ca_address_sk#20, ca_county#21]
Arguments: [#20, #21]

(72) InputAdapter
Input [2]: [#20#20, #21#21]

(73) NativeSort
Input [2]: [#20#20, #21#21]
Arguments: [ca_address_sk#20 ASC NULLS FIRST], false

(74) NativeSortMergeJoin
Left keys [1]: [ss_addr_sk#15]
Right keys [1]: [ca_address_sk#20]
Join type: Inner
Join condition: None

(75) NativeProject
Output [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21]
Input [6]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19, #20#20, #21#21]

(76) NativeProject
Output [4]: [ca_county#21 AS ca_county#21, d_qoy#19 AS d_qoy#19, d_year#18 AS d_year#18, UnscaledValue(ss_ext_sales_price#16) AS _c3#22]
Input [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21]

(77) NativeHashAggregate
Input [4]: [ca_county#21, d_qoy#19, d_year#18, _c3#22]
Keys [3]: [ca_county#21, d_qoy#19, d_year#18]
Functions [1]: [partial_sum(_c3#22)]
Aggregate Attributes [1]: [sum#23]
Results [4]: [ca_county#21, d_qoy#19, d_year#18, #11]

(78) NativeShuffleExchange
Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11]
Arguments: hashpartitioning(ca_county#21, d_qoy#19, d_year#18, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(79) ShuffleQueryStage
Output [4]: [ca_county#21, d_qoy#19, d_year#18, #11]
Arguments: X

(80) AQEShuffleRead
Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11]
Arguments: coalesced

(81) InputAdapter
Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11]

(82) NativeHashAggregate
Input [4]: [ca_county#21, d_qoy#19, d_year#18, #11]
Keys [3]: [ca_county#21, d_qoy#19, d_year#18]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#16))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#16))#12]
Results [4]: [ca_county#21, d_qoy#19, d_year#18, sum(UnscaledValue(ss_ext_sales_price#16))#12]

(83) NativeProject
Output [2]: [ca_county#21, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#16))#12,17,2) AS store_sales#24]
Input [4]: [ca_county#21, d_qoy#19, d_year#18, sum(UnscaledValue(ss_ext_sales_price#16))#12]

(84) NativeShuffleExchange
Input [2]: [ca_county#21, store_sales#24]
Arguments: hashpartitioning(ca_county#21, 100), ENSURE_REQUIREMENTS, [plan_id=10]

(85) ShuffleQueryStage
Output [2]: [ca_county#21, store_sales#24]
Arguments: X

(86) AQEShuffleRead
Input [2]: [ca_county#21, store_sales#24]
Arguments: coalesced

(87) InputAdapter
Input [2]: [ca_county#21, store_sales#24]

(88) NativeSort
Input [2]: [ca_county#21, store_sales#24]
Arguments: [ca_county#21 ASC NULLS FIRST], false

(89) NativeSortMergeJoin
Left keys [1]: [ca_county#8]
Right keys [1]: [ca_county#21]
Join type: Inner
Join condition: None

(90) ReusedExchange [Reuses operator id: 4]
Output [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]

(91) ShuffleQueryStage
Output [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Arguments: X

(92) AQEShuffleRead
Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Arguments: coalesced

(93) InputAdapter
Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Arguments: [#25, #26, #27]

(94) InputAdapter
Input [3]: [#25#25, #26#26, #27#27]

(95) NativeSort
Input [3]: [#25#25, #26#26, #27#27]
Arguments: [ss_sold_date_sk#25 ASC NULLS FIRST], false

(317) Scan parquet
Output [3]: [d_date_sk#28, d_year#29, d_qoy#30]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(97) InputAdapter
Input [3]: [d_date_sk#28, d_year#29, d_qoy#30]
Arguments: [#28, #29, #30]

(98) NativeFilter
Input [3]: [#28#28, #29#29, #30#30]
Condition : ((((isnotnull(d_qoy#30) AND isnotnull(d_year#29)) AND (d_qoy#30 = 3)) AND (d_year#29 = 2000)) AND isnotnull(d_date_sk#28))

(99) NativeShuffleExchange
Input [3]: [#28#28, #29#29, #30#30]
Arguments: hashpartitioning(d_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=11]

(100) ShuffleQueryStage
Output [3]: [#28#28, #29#29, #30#30]
Arguments: X

(101) AQEShuffleRead
Input [3]: [#28#28, #29#29, #30#30]
Arguments: coalesced

(102) InputAdapter
Input [3]: [#28#28, #29#29, #30#30]

(103) NativeSort
Input [3]: [#28#28, #29#29, #30#30]
Arguments: [d_date_sk#28 ASC NULLS FIRST], false

(104) NativeSortMergeJoin
Left keys [1]: [ss_sold_date_sk#25]
Right keys [1]: [d_date_sk#28]
Join type: Inner
Join condition: None

(105) NativeProject
Output [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Input [6]: [#25#25, #26#26, #27#27, #28#28, #29#29, #30#30]

(106) NativeShuffleExchange
Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Arguments: hashpartitioning(ss_addr_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(107) ShuffleQueryStage
Output [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Arguments: X

(108) AQEShuffleRead
Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Arguments: coalesced

(109) InputAdapter
Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]

(110) NativeSort
Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Arguments: [ss_addr_sk#26 ASC NULLS FIRST], false

(111) ReusedExchange [Reuses operator id: 27]
Output [2]: [ca_address_sk#31, ca_county#32]

(112) ShuffleQueryStage
Output [2]: [ca_address_sk#31, ca_county#32]
Arguments: X

(113) AQEShuffleRead
Input [2]: [ca_address_sk#31, ca_county#32]
Arguments: coalesced

(114) InputAdapter
Input [2]: [ca_address_sk#31, ca_county#32]
Arguments: [#31, #32]

(115) InputAdapter
Input [2]: [#31#31, #32#32]

(116) NativeSort
Input [2]: [#31#31, #32#32]
Arguments: [ca_address_sk#31 ASC NULLS FIRST], false

(117) NativeSortMergeJoin
Left keys [1]: [ss_addr_sk#26]
Right keys [1]: [ca_address_sk#31]
Join type: Inner
Join condition: None

(118) NativeProject
Output [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32]
Input [6]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30, #31#31, #32#32]

(119) NativeProject
Output [4]: [ca_county#32 AS ca_county#32, d_qoy#30 AS d_qoy#30, d_year#29 AS d_year#29, UnscaledValue(ss_ext_sales_price#27) AS _c3#33]
Input [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32]

(120) NativeHashAggregate
Input [4]: [ca_county#32, d_qoy#30, d_year#29, _c3#33]
Keys [3]: [ca_county#32, d_qoy#30, d_year#29]
Functions [1]: [partial_sum(_c3#33)]
Aggregate Attributes [1]: [sum#34]
Results [4]: [ca_county#32, d_qoy#30, d_year#29, #11]

(121) NativeShuffleExchange
Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11]
Arguments: hashpartitioning(ca_county#32, d_qoy#30, d_year#29, 100), ENSURE_REQUIREMENTS, [plan_id=13]

(122) ShuffleQueryStage
Output [4]: [ca_county#32, d_qoy#30, d_year#29, #11]
Arguments: X

(123) AQEShuffleRead
Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11]
Arguments: coalesced

(124) InputAdapter
Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11]

(125) NativeHashAggregate
Input [4]: [ca_county#32, d_qoy#30, d_year#29, #11]
Keys [3]: [ca_county#32, d_qoy#30, d_year#29]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#27))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#27))#12]
Results [4]: [ca_county#32, d_qoy#30, d_year#29, sum(UnscaledValue(ss_ext_sales_price#27))#12]

(126) NativeProject
Output [2]: [ca_county#32, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#27))#12,17,2) AS store_sales#35]
Input [4]: [ca_county#32, d_qoy#30, d_year#29, sum(UnscaledValue(ss_ext_sales_price#27))#12]

(127) NativeShuffleExchange
Input [2]: [ca_county#32, store_sales#35]
Arguments: hashpartitioning(ca_county#32, 100), ENSURE_REQUIREMENTS, [plan_id=14]

(128) ShuffleQueryStage
Output [2]: [ca_county#32, store_sales#35]
Arguments: X

(129) AQEShuffleRead
Input [2]: [ca_county#32, store_sales#35]
Arguments: coalesced

(130) InputAdapter
Input [2]: [ca_county#32, store_sales#35]

(131) NativeSort
Input [2]: [ca_county#32, store_sales#35]
Arguments: [ca_county#32 ASC NULLS FIRST], false

(132) NativeSortMergeJoin
Left keys [1]: [ca_county#21]
Right keys [1]: [ca_county#32]
Join type: Inner
Join condition: None

(133) NativeProject
Output [5]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35]
Input [7]: [ca_county#8, d_year#5, store_sales#13, ca_county#21, store_sales#24, ca_county#32, store_sales#35]

(338) Scan parquet
Output [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_sold_date_sk:int,ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(135) InputAdapter
Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38]
Arguments: [#36, #37, #38]

(136) NativeFilter
Input [3]: [#36#36, #37#37, #38#38]
Condition : (isnotnull(ws_sold_date_sk#36) AND isnotnull(ws_bill_addr_sk#37))

(137) NativeShuffleExchange
Input [3]: [#36#36, #37#37, #38#38]
Arguments: hashpartitioning(ws_sold_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=15]

(138) ShuffleQueryStage
Output [3]: [#36#36, #37#37, #38#38]
Arguments: X

(139) AQEShuffleRead
Input [3]: [#36#36, #37#37, #38#38]
Arguments: coalesced

(140) InputAdapter
Input [3]: [#36#36, #37#37, #38#38]

(141) NativeSort
Input [3]: [#36#36, #37#37, #38#38]
Arguments: [ws_sold_date_sk#36 ASC NULLS FIRST], false

(142) ReusedExchange [Reuses operator id: 12]
Output [3]: [d_date_sk#39, d_year#40, d_qoy#41]

(143) ShuffleQueryStage
Output [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Arguments: X

(144) AQEShuffleRead
Input [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Arguments: coalesced

(145) InputAdapter
Input [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Arguments: [#39, #40, #41]

(146) InputAdapter
Input [3]: [#39#39, #40#40, #41#41]

(147) NativeSort
Input [3]: [#39#39, #40#40, #41#41]
Arguments: [d_date_sk#39 ASC NULLS FIRST], false

(148) NativeSortMergeJoin
Left keys [1]: [ws_sold_date_sk#36]
Right keys [1]: [d_date_sk#39]
Join type: Inner
Join condition: None

(149) NativeProject
Output [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Input [6]: [#36#36, #37#37, #38#38, #39#39, #40#40, #41#41]

(150) NativeShuffleExchange
Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Arguments: hashpartitioning(ws_bill_addr_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=16]

(151) ShuffleQueryStage
Output [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Arguments: X

(152) AQEShuffleRead
Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Arguments: coalesced

(153) InputAdapter
Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]

(154) NativeSort
Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Arguments: [ws_bill_addr_sk#37 ASC NULLS FIRST], false

(155) ReusedExchange [Reuses operator id: 27]
Output [2]: [ca_address_sk#42, ca_county#43]

(156) ShuffleQueryStage
Output [2]: [ca_address_sk#42, ca_county#43]
Arguments: X

(157) AQEShuffleRead
Input [2]: [ca_address_sk#42, ca_county#43]
Arguments: coalesced

(158) InputAdapter
Input [2]: [ca_address_sk#42, ca_county#43]
Arguments: [#42, #43]

(159) InputAdapter
Input [2]: [#42#42, #43#43]

(160) NativeSort
Input [2]: [#42#42, #43#43]
Arguments: [ca_address_sk#42 ASC NULLS FIRST], false

(161) NativeSortMergeJoin
Left keys [1]: [ws_bill_addr_sk#37]
Right keys [1]: [ca_address_sk#42]
Join type: Inner
Join condition: None

(162) NativeProject
Output [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43]
Input [6]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41, #42#42, #43#43]

(163) NativeProject
Output [4]: [ca_county#43 AS ca_county#43, d_qoy#41 AS d_qoy#41, d_year#40 AS d_year#40, UnscaledValue(ws_ext_sales_price#38) AS _c3#44]
Input [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43]

(164) NativeHashAggregate
Input [4]: [ca_county#43, d_qoy#41, d_year#40, _c3#44]
Keys [3]: [ca_county#43, d_qoy#41, d_year#40]
Functions [1]: [partial_sum(_c3#44)]
Aggregate Attributes [1]: [sum#45]
Results [4]: [ca_county#43, d_qoy#41, d_year#40, #11]

(165) NativeShuffleExchange
Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11]
Arguments: hashpartitioning(ca_county#43, d_qoy#41, d_year#40, 100), ENSURE_REQUIREMENTS, [plan_id=17]

(166) ShuffleQueryStage
Output [4]: [ca_county#43, d_qoy#41, d_year#40, #11]
Arguments: X

(167) AQEShuffleRead
Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11]
Arguments: coalesced

(168) InputAdapter
Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11]

(169) NativeHashAggregate
Input [4]: [ca_county#43, d_qoy#41, d_year#40, #11]
Keys [3]: [ca_county#43, d_qoy#41, d_year#40]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#38))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#38))#46]
Results [4]: [ca_county#43, d_qoy#41, d_year#40, sum(UnscaledValue(ws_ext_sales_price#38))#46]

(170) NativeProject
Output [2]: [ca_county#43, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#38))#46,17,2) AS web_sales#47]
Input [4]: [ca_county#43, d_qoy#41, d_year#40, sum(UnscaledValue(ws_ext_sales_price#38))#46]

(171) NativeShuffleExchange
Input [2]: [ca_county#43, web_sales#47]
Arguments: hashpartitioning(ca_county#43, 100), ENSURE_REQUIREMENTS, [plan_id=18]

(172) ShuffleQueryStage
Output [2]: [ca_county#43, web_sales#47]
Arguments: X

(173) AQEShuffleRead
Input [2]: [ca_county#43, web_sales#47]
Arguments: coalesced

(174) InputAdapter
Input [2]: [ca_county#43, web_sales#47]

(175) NativeSort
Input [2]: [ca_county#43, web_sales#47]
Arguments: [ca_county#43 ASC NULLS FIRST], false

(176) NativeSortMergeJoin
Left keys [1]: [ca_county#8]
Right keys [1]: [ca_county#43]
Join type: Inner
Join condition: None

(177) ReusedExchange [Reuses operator id: 137]
Output [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]

(178) ShuffleQueryStage
Output [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Arguments: X

(179) AQEShuffleRead
Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Arguments: coalesced

(180) InputAdapter
Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Arguments: [#48, #49, #50]

(181) InputAdapter
Input [3]: [#48#48, #49#49, #50#50]

(182) NativeSort
Input [3]: [#48#48, #49#49, #50#50]
Arguments: [ws_sold_date_sk#48 ASC NULLS FIRST], false

(183) ReusedExchange [Reuses operator id: 56]
Output [3]: [d_date_sk#51, d_year#52, d_qoy#53]

(184) ShuffleQueryStage
Output [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Arguments: X

(185) AQEShuffleRead
Input [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Arguments: coalesced

(186) InputAdapter
Input [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Arguments: [#51, #52, #53]

(187) InputAdapter
Input [3]: [#51#51, #52#52, #53#53]

(188) NativeSort
Input [3]: [#51#51, #52#52, #53#53]
Arguments: [d_date_sk#51 ASC NULLS FIRST], false

(189) NativeSortMergeJoin
Left keys [1]: [ws_sold_date_sk#48]
Right keys [1]: [d_date_sk#51]
Join type: Inner
Join condition: None

(190) NativeProject
Output [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Input [6]: [#48#48, #49#49, #50#50, #51#51, #52#52, #53#53]

(191) NativeShuffleExchange
Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Arguments: hashpartitioning(ws_bill_addr_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=19]

(192) ShuffleQueryStage
Output [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Arguments: X

(193) AQEShuffleRead
Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Arguments: coalesced

(194) InputAdapter
Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]

(195) NativeSort
Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Arguments: [ws_bill_addr_sk#49 ASC NULLS FIRST], false

(196) ReusedExchange [Reuses operator id: 27]
Output [2]: [ca_address_sk#54, ca_county#55]

(197) ShuffleQueryStage
Output [2]: [ca_address_sk#54, ca_county#55]
Arguments: X

(198) AQEShuffleRead
Input [2]: [ca_address_sk#54, ca_county#55]
Arguments: coalesced

(199) InputAdapter
Input [2]: [ca_address_sk#54, ca_county#55]
Arguments: [#54, #55]

(200) InputAdapter
Input [2]: [#54#54, #55#55]

(201) NativeSort
Input [2]: [#54#54, #55#55]
Arguments: [ca_address_sk#54 ASC NULLS FIRST], false

(202) NativeSortMergeJoin
Left keys [1]: [ws_bill_addr_sk#49]
Right keys [1]: [ca_address_sk#54]
Join type: Inner
Join condition: None

(203) NativeProject
Output [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55]
Input [6]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53, #54#54, #55#55]

(204) NativeProject
Output [4]: [ca_county#55 AS ca_county#55, d_qoy#53 AS d_qoy#53, d_year#52 AS d_year#52, UnscaledValue(ws_ext_sales_price#50) AS _c3#56]
Input [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55]

(205) NativeHashAggregate
Input [4]: [ca_county#55, d_qoy#53, d_year#52, _c3#56]
Keys [3]: [ca_county#55, d_qoy#53, d_year#52]
Functions [1]: [partial_sum(_c3#56)]
Aggregate Attributes [1]: [sum#57]
Results [4]: [ca_county#55, d_qoy#53, d_year#52, #11]

(206) NativeShuffleExchange
Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11]
Arguments: hashpartitioning(ca_county#55, d_qoy#53, d_year#52, 100), ENSURE_REQUIREMENTS, [plan_id=20]

(207) ShuffleQueryStage
Output [4]: [ca_county#55, d_qoy#53, d_year#52, #11]
Arguments: X

(208) AQEShuffleRead
Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11]
Arguments: coalesced

(209) InputAdapter
Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11]

(210) NativeHashAggregate
Input [4]: [ca_county#55, d_qoy#53, d_year#52, #11]
Keys [3]: [ca_county#55, d_qoy#53, d_year#52]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#50))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#50))#46]
Results [4]: [ca_county#55, d_qoy#53, d_year#52, sum(UnscaledValue(ws_ext_sales_price#50))#46]

(211) NativeProject
Output [2]: [ca_county#55, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#50))#46,17,2) AS web_sales#58]
Input [4]: [ca_county#55, d_qoy#53, d_year#52, sum(UnscaledValue(ws_ext_sales_price#50))#46]

(212) NativeShuffleExchange
Input [2]: [ca_county#55, web_sales#58]
Arguments: hashpartitioning(ca_county#55, 100), ENSURE_REQUIREMENTS, [plan_id=21]

(213) ShuffleQueryStage
Output [2]: [ca_county#55, web_sales#58]
Arguments: X

(214) AQEShuffleRead
Input [2]: [ca_county#55, web_sales#58]
Arguments: coalesced

(215) InputAdapter
Input [2]: [ca_county#55, web_sales#58]

(216) NativeSort
Input [2]: [ca_county#55, web_sales#58]
Arguments: [ca_county#55 ASC NULLS FIRST], false

(217) NativeSortMergeJoin
Left keys [1]: [ca_county#43]
Right keys [1]: [ca_county#55]
Join type: Inner
Join condition: (CASE WHEN (web_sales#47 > 0.00) THEN (web_sales#58 / web_sales#47) END > CASE WHEN (store_sales#13 > 0.00) THEN (store_sales#24 / store_sales#13) END)

(218) NativeProject
Output [8]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58]
Input [9]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, ca_county#55, web_sales#58]

(219) ReusedExchange [Reuses operator id: 137]
Output [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]

(220) ShuffleQueryStage
Output [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Arguments: X

(221) AQEShuffleRead
Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Arguments: coalesced

(222) InputAdapter
Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Arguments: [#59, #60, #61]

(223) InputAdapter
Input [3]: [#59#59, #60#60, #61#61]

(224) NativeSort
Input [3]: [#59#59, #60#60, #61#61]
Arguments: [ws_sold_date_sk#59 ASC NULLS FIRST], false

(225) ReusedExchange [Reuses operator id: 99]
Output [3]: [d_date_sk#62, d_year#63, d_qoy#64]

(226) ShuffleQueryStage
Output [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Arguments: X

(227) AQEShuffleRead
Input [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Arguments: coalesced

(228) InputAdapter
Input [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Arguments: [#62, #63, #64]

(229) InputAdapter
Input [3]: [#62#62, #63#63, #64#64]

(230) NativeSort
Input [3]: [#62#62, #63#63, #64#64]
Arguments: [d_date_sk#62 ASC NULLS FIRST], false

(231) NativeSortMergeJoin
Left keys [1]: [ws_sold_date_sk#59]
Right keys [1]: [d_date_sk#62]
Join type: Inner
Join condition: None

(232) NativeProject
Output [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Input [6]: [#59#59, #60#60, #61#61, #62#62, #63#63, #64#64]

(233) NativeShuffleExchange
Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Arguments: hashpartitioning(ws_bill_addr_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=22]

(234) ShuffleQueryStage
Output [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Arguments: X

(235) AQEShuffleRead
Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Arguments: coalesced

(236) InputAdapter
Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]

(237) NativeSort
Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Arguments: [ws_bill_addr_sk#60 ASC NULLS FIRST], false

(238) ReusedExchange [Reuses operator id: 27]
Output [2]: [ca_address_sk#65, ca_county#66]

(239) ShuffleQueryStage
Output [2]: [ca_address_sk#65, ca_county#66]
Arguments: X

(240) AQEShuffleRead
Input [2]: [ca_address_sk#65, ca_county#66]
Arguments: coalesced

(241) InputAdapter
Input [2]: [ca_address_sk#65, ca_county#66]
Arguments: [#65, #66]

(242) InputAdapter
Input [2]: [#65#65, #66#66]

(243) NativeSort
Input [2]: [#65#65, #66#66]
Arguments: [ca_address_sk#65 ASC NULLS FIRST], false

(244) NativeSortMergeJoin
Left keys [1]: [ws_bill_addr_sk#60]
Right keys [1]: [ca_address_sk#65]
Join type: Inner
Join condition: None

(245) NativeProject
Output [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66]
Input [6]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64, #65#65, #66#66]

(246) NativeProject
Output [4]: [ca_county#66 AS ca_county#66, d_qoy#64 AS d_qoy#64, d_year#63 AS d_year#63, UnscaledValue(ws_ext_sales_price#61) AS _c3#67]
Input [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66]

(247) NativeHashAggregate
Input [4]: [ca_county#66, d_qoy#64, d_year#63, _c3#67]
Keys [3]: [ca_county#66, d_qoy#64, d_year#63]
Functions [1]: [partial_sum(_c3#67)]
Aggregate Attributes [1]: [sum#68]
Results [4]: [ca_county#66, d_qoy#64, d_year#63, #11]

(248) NativeShuffleExchange
Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11]
Arguments: hashpartitioning(ca_county#66, d_qoy#64, d_year#63, 100), ENSURE_REQUIREMENTS, [plan_id=23]

(249) ShuffleQueryStage
Output [4]: [ca_county#66, d_qoy#64, d_year#63, #11]
Arguments: X

(250) AQEShuffleRead
Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11]
Arguments: coalesced

(251) InputAdapter
Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11]

(252) NativeHashAggregate
Input [4]: [ca_county#66, d_qoy#64, d_year#63, #11]
Keys [3]: [ca_county#66, d_qoy#64, d_year#63]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#61))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#61))#46]
Results [4]: [ca_county#66, d_qoy#64, d_year#63, sum(UnscaledValue(ws_ext_sales_price#61))#46]

(253) NativeProject
Output [2]: [ca_county#66, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#61))#46,17,2) AS web_sales#69]
Input [4]: [ca_county#66, d_qoy#64, d_year#63, sum(UnscaledValue(ws_ext_sales_price#61))#46]

(254) NativeShuffleExchange
Input [2]: [ca_county#66, web_sales#69]
Arguments: hashpartitioning(ca_county#66, 100), ENSURE_REQUIREMENTS, [plan_id=24]

(255) ShuffleQueryStage
Output [2]: [ca_county#66, web_sales#69]
Arguments: X

(256) AQEShuffleRead
Input [2]: [ca_county#66, web_sales#69]
Arguments: coalesced

(257) InputAdapter
Input [2]: [ca_county#66, web_sales#69]

(258) NativeSort
Input [2]: [ca_county#66, web_sales#69]
Arguments: [ca_county#66 ASC NULLS FIRST], false

(259) NativeSortMergeJoin
Left keys [1]: [ca_county#43]
Right keys [1]: [ca_county#66]
Join type: Inner
Join condition: (CASE WHEN (web_sales#58 > 0.00) THEN (web_sales#69 / web_sales#58) END > CASE WHEN (store_sales#24 > 0.00) THEN (store_sales#35 / store_sales#24) END)

(260) NativeProject
Output [6]: [ca_county#8, d_year#5, (web_sales#58 / web_sales#47) AS web_q1_q2_increase#70, (store_sales#24 / store_sales#13) AS store_q1_q2_increase#71, (web_sales#69 / web_sales#58) AS web_q2_q3_increase#72, (store_sales#35 / store_sales#24) AS store_q2_q3_increase#73]
Input [10]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58, ca_county#66, web_sales#69]

(261) NativeShuffleExchange
Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: rangepartitioning(ca_county#8 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=25]

(262) ShuffleQueryStage
Output [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: X

(263) AQEShuffleRead
Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: coalesced

(264) InputAdapter
Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]

(265) NativeSort
Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: [ca_county#8 ASC NULLS FIRST], true

(266) Scan parquet
Output [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(267) Filter
Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Condition : (isnotnull(ss_sold_date_sk#1) AND isnotnull(ss_addr_sk#2))

(268) Exchange
Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=26]

(269) Sort
Input [3]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3]
Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0

(270) Scan parquet
Output [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(271) Filter
Input [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 1)) AND (d_year#5 = 2000)) AND isnotnull(d_date_sk#4))

(272) Exchange
Input [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Arguments: hashpartitioning(d_date_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=27]

(273) Sort
Input [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Arguments: [d_date_sk#4 ASC NULLS FIRST], false, 0

(274) SortMergeJoin
Left keys [1]: [ss_sold_date_sk#1]
Right keys [1]: [d_date_sk#4]
Join type: Inner
Join condition: None

(275) Project
Output [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Input [6]: [ss_sold_date_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, d_date_sk#4, d_year#5, d_qoy#6]

(276) Exchange
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Arguments: hashpartitioning(ss_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=28]

(277) Sort
Input [4]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6]
Arguments: [ss_addr_sk#2 ASC NULLS FIRST], false, 0

(278) Scan parquet
Output [2]: [ca_address_sk#7, ca_county#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(279) Filter
Input [2]: [ca_address_sk#7, ca_county#8]
Condition : (isnotnull(ca_address_sk#7) AND isnotnull(ca_county#8))

(280) Exchange
Input [2]: [ca_address_sk#7, ca_county#8]
Arguments: hashpartitioning(ca_address_sk#7, 100), ENSURE_REQUIREMENTS, [plan_id=29]

(281) Sort
Input [2]: [ca_address_sk#7, ca_county#8]
Arguments: [ca_address_sk#7 ASC NULLS FIRST], false, 0

(282) SortMergeJoin
Left keys [1]: [ss_addr_sk#2]
Right keys [1]: [ca_address_sk#7]
Join type: Inner
Join condition: None

(283) Project
Output [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8]
Input [6]: [ss_addr_sk#2, ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_address_sk#7, ca_county#8]

(284) HashAggregate
Input [4]: [ss_ext_sales_price#3, d_year#5, d_qoy#6, ca_county#8]
Keys [3]: [ca_county#8, d_qoy#6, d_year#5]
Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#3))]
Aggregate Attributes [1]: [sum#10]
Results [4]: [ca_county#8, d_qoy#6, d_year#5, sum#74]

(285) Exchange
Input [4]: [ca_county#8, d_qoy#6, d_year#5, sum#74]
Arguments: hashpartitioning(ca_county#8, d_qoy#6, d_year#5, 100), ENSURE_REQUIREMENTS, [plan_id=30]

(286) HashAggregate
Input [4]: [ca_county#8, d_qoy#6, d_year#5, sum#74]
Keys [3]: [ca_county#8, d_qoy#6, d_year#5]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#3))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#3))#12]
Results [3]: [ca_county#8, d_year#5, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#3))#12,17,2) AS store_sales#13]

(287) Exchange
Input [3]: [ca_county#8, d_year#5, store_sales#13]
Arguments: hashpartitioning(ca_county#8, 100), ENSURE_REQUIREMENTS, [plan_id=31]

(288) Sort
Input [3]: [ca_county#8, d_year#5, store_sales#13]
Arguments: [ca_county#8 ASC NULLS FIRST], false, 0

(289) Scan parquet
Output [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(290) Filter
Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Condition : (isnotnull(ss_sold_date_sk#14) AND isnotnull(ss_addr_sk#15))

(291) Exchange
Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Arguments: hashpartitioning(ss_sold_date_sk#14, 100), ENSURE_REQUIREMENTS, [plan_id=32]

(292) Sort
Input [3]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16]
Arguments: [ss_sold_date_sk#14 ASC NULLS FIRST], false, 0

(293) Scan parquet
Output [3]: [d_date_sk#17, d_year#18, d_qoy#19]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(294) Filter
Input [3]: [d_date_sk#17, d_year#18, d_qoy#19]
Condition : ((((isnotnull(d_qoy#19) AND isnotnull(d_year#18)) AND (d_qoy#19 = 2)) AND (d_year#18 = 2000)) AND isnotnull(d_date_sk#17))

(295) Exchange
Input [3]: [d_date_sk#17, d_year#18, d_qoy#19]
Arguments: hashpartitioning(d_date_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=33]

(296) Sort
Input [3]: [d_date_sk#17, d_year#18, d_qoy#19]
Arguments: [d_date_sk#17 ASC NULLS FIRST], false, 0

(297) SortMergeJoin
Left keys [1]: [ss_sold_date_sk#14]
Right keys [1]: [d_date_sk#17]
Join type: Inner
Join condition: None

(298) Project
Output [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Input [6]: [ss_sold_date_sk#14, ss_addr_sk#15, ss_ext_sales_price#16, d_date_sk#17, d_year#18, d_qoy#19]

(299) Exchange
Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Arguments: hashpartitioning(ss_addr_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=34]

(300) Sort
Input [4]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19]
Arguments: [ss_addr_sk#15 ASC NULLS FIRST], false, 0

(301) Scan parquet
Output [2]: [ca_address_sk#20, ca_county#21]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(302) Filter
Input [2]: [ca_address_sk#20, ca_county#21]
Condition : (isnotnull(ca_address_sk#20) AND isnotnull(ca_county#21))

(303) Exchange
Input [2]: [ca_address_sk#20, ca_county#21]
Arguments: hashpartitioning(ca_address_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=35]

(304) Sort
Input [2]: [ca_address_sk#20, ca_county#21]
Arguments: [ca_address_sk#20 ASC NULLS FIRST], false, 0

(305) SortMergeJoin
Left keys [1]: [ss_addr_sk#15]
Right keys [1]: [ca_address_sk#20]
Join type: Inner
Join condition: None

(306) Project
Output [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21]
Input [6]: [ss_addr_sk#15, ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_address_sk#20, ca_county#21]

(307) HashAggregate
Input [4]: [ss_ext_sales_price#16, d_year#18, d_qoy#19, ca_county#21]
Keys [3]: [ca_county#21, d_qoy#19, d_year#18]
Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#16))]
Aggregate Attributes [1]: [sum#23]
Results [4]: [ca_county#21, d_qoy#19, d_year#18, sum#75]

(308) Exchange
Input [4]: [ca_county#21, d_qoy#19, d_year#18, sum#75]
Arguments: hashpartitioning(ca_county#21, d_qoy#19, d_year#18, 100), ENSURE_REQUIREMENTS, [plan_id=36]

(309) HashAggregate
Input [4]: [ca_county#21, d_qoy#19, d_year#18, sum#75]
Keys [3]: [ca_county#21, d_qoy#19, d_year#18]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#16))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#16))#12]
Results [2]: [ca_county#21, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#16))#12,17,2) AS store_sales#24]

(310) Exchange
Input [2]: [ca_county#21, store_sales#24]
Arguments: hashpartitioning(ca_county#21, 100), ENSURE_REQUIREMENTS, [plan_id=37]

(311) Sort
Input [2]: [ca_county#21, store_sales#24]
Arguments: [ca_county#21 ASC NULLS FIRST], false, 0

(312) SortMergeJoin
Left keys [1]: [ca_county#8]
Right keys [1]: [ca_county#21]
Join type: Inner
Join condition: None

(313) Scan parquet
Output [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_sold_date_sk), IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_sold_date_sk:int,ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(314) Filter
Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Condition : (isnotnull(ss_sold_date_sk#25) AND isnotnull(ss_addr_sk#26))

(315) Exchange
Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Arguments: hashpartitioning(ss_sold_date_sk#25, 100), ENSURE_REQUIREMENTS, [plan_id=38]

(316) Sort
Input [3]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27]
Arguments: [ss_sold_date_sk#25 ASC NULLS FIRST], false, 0

(317) Scan parquet
Output [3]: [d_date_sk#28, d_year#29, d_qoy#30]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(318) Filter
Input [3]: [d_date_sk#28, d_year#29, d_qoy#30]
Condition : ((((isnotnull(d_qoy#30) AND isnotnull(d_year#29)) AND (d_qoy#30 = 3)) AND (d_year#29 = 2000)) AND isnotnull(d_date_sk#28))

(319) Exchange
Input [3]: [d_date_sk#28, d_year#29, d_qoy#30]
Arguments: hashpartitioning(d_date_sk#28, 100), ENSURE_REQUIREMENTS, [plan_id=39]

(320) Sort
Input [3]: [d_date_sk#28, d_year#29, d_qoy#30]
Arguments: [d_date_sk#28 ASC NULLS FIRST], false, 0

(321) SortMergeJoin
Left keys [1]: [ss_sold_date_sk#25]
Right keys [1]: [d_date_sk#28]
Join type: Inner
Join condition: None

(322) Project
Output [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Input [6]: [ss_sold_date_sk#25, ss_addr_sk#26, ss_ext_sales_price#27, d_date_sk#28, d_year#29, d_qoy#30]

(323) Exchange
Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Arguments: hashpartitioning(ss_addr_sk#26, 100), ENSURE_REQUIREMENTS, [plan_id=40]

(324) Sort
Input [4]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30]
Arguments: [ss_addr_sk#26 ASC NULLS FIRST], false, 0

(325) Scan parquet
Output [2]: [ca_address_sk#31, ca_county#32]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(326) Filter
Input [2]: [ca_address_sk#31, ca_county#32]
Condition : (isnotnull(ca_address_sk#31) AND isnotnull(ca_county#32))

(327) Exchange
Input [2]: [ca_address_sk#31, ca_county#32]
Arguments: hashpartitioning(ca_address_sk#31, 100), ENSURE_REQUIREMENTS, [plan_id=41]

(328) Sort
Input [2]: [ca_address_sk#31, ca_county#32]
Arguments: [ca_address_sk#31 ASC NULLS FIRST], false, 0

(329) SortMergeJoin
Left keys [1]: [ss_addr_sk#26]
Right keys [1]: [ca_address_sk#31]
Join type: Inner
Join condition: None

(330) Project
Output [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32]
Input [6]: [ss_addr_sk#26, ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_address_sk#31, ca_county#32]

(331) HashAggregate
Input [4]: [ss_ext_sales_price#27, d_year#29, d_qoy#30, ca_county#32]
Keys [3]: [ca_county#32, d_qoy#30, d_year#29]
Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#27))]
Aggregate Attributes [1]: [sum#34]
Results [4]: [ca_county#32, d_qoy#30, d_year#29, sum#76]

(332) Exchange
Input [4]: [ca_county#32, d_qoy#30, d_year#29, sum#76]
Arguments: hashpartitioning(ca_county#32, d_qoy#30, d_year#29, 100), ENSURE_REQUIREMENTS, [plan_id=42]

(333) HashAggregate
Input [4]: [ca_county#32, d_qoy#30, d_year#29, sum#76]
Keys [3]: [ca_county#32, d_qoy#30, d_year#29]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#27))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#27))#12]
Results [2]: [ca_county#32, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#27))#12,17,2) AS store_sales#35]

(334) Exchange
Input [2]: [ca_county#32, store_sales#35]
Arguments: hashpartitioning(ca_county#32, 100), ENSURE_REQUIREMENTS, [plan_id=43]

(335) Sort
Input [2]: [ca_county#32, store_sales#35]
Arguments: [ca_county#32 ASC NULLS FIRST], false, 0

(336) SortMergeJoin
Left keys [1]: [ca_county#21]
Right keys [1]: [ca_county#32]
Join type: Inner
Join condition: None

(337) Project
Output [5]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35]
Input [7]: [ca_county#8, d_year#5, store_sales#13, ca_county#21, store_sales#24, ca_county#32, store_sales#35]

(338) Scan parquet
Output [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_sold_date_sk:int,ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(339) Filter
Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38]
Condition : (isnotnull(ws_sold_date_sk#36) AND isnotnull(ws_bill_addr_sk#37))

(340) Exchange
Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38]
Arguments: hashpartitioning(ws_sold_date_sk#36, 100), ENSURE_REQUIREMENTS, [plan_id=44]

(341) Sort
Input [3]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38]
Arguments: [ws_sold_date_sk#36 ASC NULLS FIRST], false, 0

(342) Scan parquet
Output [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(343) Filter
Input [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Condition : ((((isnotnull(d_qoy#41) AND isnotnull(d_year#40)) AND (d_qoy#41 = 1)) AND (d_year#40 = 2000)) AND isnotnull(d_date_sk#39))

(344) Exchange
Input [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Arguments: hashpartitioning(d_date_sk#39, 100), ENSURE_REQUIREMENTS, [plan_id=45]

(345) Sort
Input [3]: [d_date_sk#39, d_year#40, d_qoy#41]
Arguments: [d_date_sk#39 ASC NULLS FIRST], false, 0

(346) SortMergeJoin
Left keys [1]: [ws_sold_date_sk#36]
Right keys [1]: [d_date_sk#39]
Join type: Inner
Join condition: None

(347) Project
Output [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Input [6]: [ws_sold_date_sk#36, ws_bill_addr_sk#37, ws_ext_sales_price#38, d_date_sk#39, d_year#40, d_qoy#41]

(348) Exchange
Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Arguments: hashpartitioning(ws_bill_addr_sk#37, 100), ENSURE_REQUIREMENTS, [plan_id=46]

(349) Sort
Input [4]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41]
Arguments: [ws_bill_addr_sk#37 ASC NULLS FIRST], false, 0

(350) Scan parquet
Output [2]: [ca_address_sk#42, ca_county#43]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(351) Filter
Input [2]: [ca_address_sk#42, ca_county#43]
Condition : (isnotnull(ca_address_sk#42) AND isnotnull(ca_county#43))

(352) Exchange
Input [2]: [ca_address_sk#42, ca_county#43]
Arguments: hashpartitioning(ca_address_sk#42, 100), ENSURE_REQUIREMENTS, [plan_id=47]

(353) Sort
Input [2]: [ca_address_sk#42, ca_county#43]
Arguments: [ca_address_sk#42 ASC NULLS FIRST], false, 0

(354) SortMergeJoin
Left keys [1]: [ws_bill_addr_sk#37]
Right keys [1]: [ca_address_sk#42]
Join type: Inner
Join condition: None

(355) Project
Output [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43]
Input [6]: [ws_bill_addr_sk#37, ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_address_sk#42, ca_county#43]

(356) HashAggregate
Input [4]: [ws_ext_sales_price#38, d_year#40, d_qoy#41, ca_county#43]
Keys [3]: [ca_county#43, d_qoy#41, d_year#40]
Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#38))]
Aggregate Attributes [1]: [sum#45]
Results [4]: [ca_county#43, d_qoy#41, d_year#40, sum#77]

(357) Exchange
Input [4]: [ca_county#43, d_qoy#41, d_year#40, sum#77]
Arguments: hashpartitioning(ca_county#43, d_qoy#41, d_year#40, 100), ENSURE_REQUIREMENTS, [plan_id=48]

(358) HashAggregate
Input [4]: [ca_county#43, d_qoy#41, d_year#40, sum#77]
Keys [3]: [ca_county#43, d_qoy#41, d_year#40]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#38))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#38))#46]
Results [2]: [ca_county#43, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#38))#46,17,2) AS web_sales#47]

(359) Exchange
Input [2]: [ca_county#43, web_sales#47]
Arguments: hashpartitioning(ca_county#43, 100), ENSURE_REQUIREMENTS, [plan_id=49]

(360) Sort
Input [2]: [ca_county#43, web_sales#47]
Arguments: [ca_county#43 ASC NULLS FIRST], false, 0

(361) SortMergeJoin
Left keys [1]: [ca_county#8]
Right keys [1]: [ca_county#43]
Join type: Inner
Join condition: None

(362) Scan parquet
Output [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_sold_date_sk:int,ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(363) Filter
Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Condition : (isnotnull(ws_sold_date_sk#48) AND isnotnull(ws_bill_addr_sk#49))

(364) Exchange
Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Arguments: hashpartitioning(ws_sold_date_sk#48, 100), ENSURE_REQUIREMENTS, [plan_id=50]

(365) Sort
Input [3]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50]
Arguments: [ws_sold_date_sk#48 ASC NULLS FIRST], false, 0

(366) Scan parquet
Output [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(367) Filter
Input [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Condition : ((((isnotnull(d_qoy#53) AND isnotnull(d_year#52)) AND (d_qoy#53 = 2)) AND (d_year#52 = 2000)) AND isnotnull(d_date_sk#51))

(368) Exchange
Input [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Arguments: hashpartitioning(d_date_sk#51, 100), ENSURE_REQUIREMENTS, [plan_id=51]

(369) Sort
Input [3]: [d_date_sk#51, d_year#52, d_qoy#53]
Arguments: [d_date_sk#51 ASC NULLS FIRST], false, 0

(370) SortMergeJoin
Left keys [1]: [ws_sold_date_sk#48]
Right keys [1]: [d_date_sk#51]
Join type: Inner
Join condition: None

(371) Project
Output [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Input [6]: [ws_sold_date_sk#48, ws_bill_addr_sk#49, ws_ext_sales_price#50, d_date_sk#51, d_year#52, d_qoy#53]

(372) Exchange
Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Arguments: hashpartitioning(ws_bill_addr_sk#49, 100), ENSURE_REQUIREMENTS, [plan_id=52]

(373) Sort
Input [4]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53]
Arguments: [ws_bill_addr_sk#49 ASC NULLS FIRST], false, 0

(374) Scan parquet
Output [2]: [ca_address_sk#54, ca_county#55]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(375) Filter
Input [2]: [ca_address_sk#54, ca_county#55]
Condition : (isnotnull(ca_address_sk#54) AND isnotnull(ca_county#55))

(376) Exchange
Input [2]: [ca_address_sk#54, ca_county#55]
Arguments: hashpartitioning(ca_address_sk#54, 100), ENSURE_REQUIREMENTS, [plan_id=53]

(377) Sort
Input [2]: [ca_address_sk#54, ca_county#55]
Arguments: [ca_address_sk#54 ASC NULLS FIRST], false, 0

(378) SortMergeJoin
Left keys [1]: [ws_bill_addr_sk#49]
Right keys [1]: [ca_address_sk#54]
Join type: Inner
Join condition: None

(379) Project
Output [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55]
Input [6]: [ws_bill_addr_sk#49, ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_address_sk#54, ca_county#55]

(380) HashAggregate
Input [4]: [ws_ext_sales_price#50, d_year#52, d_qoy#53, ca_county#55]
Keys [3]: [ca_county#55, d_qoy#53, d_year#52]
Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#50))]
Aggregate Attributes [1]: [sum#57]
Results [4]: [ca_county#55, d_qoy#53, d_year#52, sum#78]

(381) Exchange
Input [4]: [ca_county#55, d_qoy#53, d_year#52, sum#78]
Arguments: hashpartitioning(ca_county#55, d_qoy#53, d_year#52, 100), ENSURE_REQUIREMENTS, [plan_id=54]

(382) HashAggregate
Input [4]: [ca_county#55, d_qoy#53, d_year#52, sum#78]
Keys [3]: [ca_county#55, d_qoy#53, d_year#52]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#50))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#50))#46]
Results [2]: [ca_county#55, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#50))#46,17,2) AS web_sales#58]

(383) Exchange
Input [2]: [ca_county#55, web_sales#58]
Arguments: hashpartitioning(ca_county#55, 100), ENSURE_REQUIREMENTS, [plan_id=55]

(384) Sort
Input [2]: [ca_county#55, web_sales#58]
Arguments: [ca_county#55 ASC NULLS FIRST], false, 0

(385) SortMergeJoin
Left keys [1]: [ca_county#43]
Right keys [1]: [ca_county#55]
Join type: Inner
Join condition: (CASE WHEN (web_sales#47 > 0.00) THEN (web_sales#58 / web_sales#47) END > CASE WHEN (store_sales#13 > 0.00) THEN (store_sales#24 / store_sales#13) END)

(386) Project
Output [8]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58]
Input [9]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, ca_county#55, web_sales#58]

(387) Scan parquet
Output [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_sold_date_sk), IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_sold_date_sk:int,ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(388) Filter
Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Condition : (isnotnull(ws_sold_date_sk#59) AND isnotnull(ws_bill_addr_sk#60))

(389) Exchange
Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Arguments: hashpartitioning(ws_sold_date_sk#59, 100), ENSURE_REQUIREMENTS, [plan_id=56]

(390) Sort
Input [3]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61]
Arguments: [ws_sold_date_sk#59 ASC NULLS FIRST], false, 0

(391) Scan parquet
Output [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(392) Filter
Input [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Condition : ((((isnotnull(d_qoy#64) AND isnotnull(d_year#63)) AND (d_qoy#64 = 3)) AND (d_year#63 = 2000)) AND isnotnull(d_date_sk#62))

(393) Exchange
Input [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Arguments: hashpartitioning(d_date_sk#62, 100), ENSURE_REQUIREMENTS, [plan_id=57]

(394) Sort
Input [3]: [d_date_sk#62, d_year#63, d_qoy#64]
Arguments: [d_date_sk#62 ASC NULLS FIRST], false, 0

(395) SortMergeJoin
Left keys [1]: [ws_sold_date_sk#59]
Right keys [1]: [d_date_sk#62]
Join type: Inner
Join condition: None

(396) Project
Output [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Input [6]: [ws_sold_date_sk#59, ws_bill_addr_sk#60, ws_ext_sales_price#61, d_date_sk#62, d_year#63, d_qoy#64]

(397) Exchange
Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Arguments: hashpartitioning(ws_bill_addr_sk#60, 100), ENSURE_REQUIREMENTS, [plan_id=58]

(398) Sort
Input [4]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64]
Arguments: [ws_bill_addr_sk#60 ASC NULLS FIRST], false, 0

(399) Scan parquet
Output [2]: [ca_address_sk#65, ca_county#66]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_county)]
ReadSchema: struct<ca_address_sk:int,ca_county:string>

(400) Filter
Input [2]: [ca_address_sk#65, ca_county#66]
Condition : (isnotnull(ca_address_sk#65) AND isnotnull(ca_county#66))

(401) Exchange
Input [2]: [ca_address_sk#65, ca_county#66]
Arguments: hashpartitioning(ca_address_sk#65, 100), ENSURE_REQUIREMENTS, [plan_id=59]

(402) Sort
Input [2]: [ca_address_sk#65, ca_county#66]
Arguments: [ca_address_sk#65 ASC NULLS FIRST], false, 0

(403) SortMergeJoin
Left keys [1]: [ws_bill_addr_sk#60]
Right keys [1]: [ca_address_sk#65]
Join type: Inner
Join condition: None

(404) Project
Output [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66]
Input [6]: [ws_bill_addr_sk#60, ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_address_sk#65, ca_county#66]

(405) HashAggregate
Input [4]: [ws_ext_sales_price#61, d_year#63, d_qoy#64, ca_county#66]
Keys [3]: [ca_county#66, d_qoy#64, d_year#63]
Functions [1]: [partial_sum(UnscaledValue(ws_ext_sales_price#61))]
Aggregate Attributes [1]: [sum#68]
Results [4]: [ca_county#66, d_qoy#64, d_year#63, sum#79]

(406) Exchange
Input [4]: [ca_county#66, d_qoy#64, d_year#63, sum#79]
Arguments: hashpartitioning(ca_county#66, d_qoy#64, d_year#63, 100), ENSURE_REQUIREMENTS, [plan_id=60]

(407) HashAggregate
Input [4]: [ca_county#66, d_qoy#64, d_year#63, sum#79]
Keys [3]: [ca_county#66, d_qoy#64, d_year#63]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#61))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#61))#46]
Results [2]: [ca_county#66, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#61))#46,17,2) AS web_sales#69]

(408) Exchange
Input [2]: [ca_county#66, web_sales#69]
Arguments: hashpartitioning(ca_county#66, 100), ENSURE_REQUIREMENTS, [plan_id=61]

(409) Sort
Input [2]: [ca_county#66, web_sales#69]
Arguments: [ca_county#66 ASC NULLS FIRST], false, 0

(410) SortMergeJoin
Left keys [1]: [ca_county#43]
Right keys [1]: [ca_county#66]
Join type: Inner
Join condition: (CASE WHEN (web_sales#58 > 0.00) THEN (web_sales#69 / web_sales#58) END > CASE WHEN (store_sales#24 > 0.00) THEN (store_sales#35 / store_sales#24) END)

(411) Project
Output [6]: [ca_county#8, d_year#5, (web_sales#58 / web_sales#47) AS web_q1_q2_increase#70, (store_sales#24 / store_sales#13) AS store_q1_q2_increase#71, (web_sales#69 / web_sales#58) AS web_q2_q3_increase#72, (store_sales#35 / store_sales#24) AS store_q2_q3_increase#73]
Input [10]: [ca_county#8, d_year#5, store_sales#13, store_sales#24, store_sales#35, ca_county#43, web_sales#47, web_sales#58, ca_county#66, web_sales#69]

(412) Exchange
Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: rangepartitioning(ca_county#8 ASC NULLS FIRST, 100), ENSURE_REQUIREMENTS, [plan_id=62]

(413) Sort
Input [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: [ca_county#8 ASC NULLS FIRST], true, 0

(414) AdaptiveSparkPlan
Output [6]: [ca_county#8, d_year#5, web_q1_q2_increase#70, store_q1_q2_increase#71, web_q2_q3_increase#72, store_q2_q3_increase#73]
Arguments: isFinalPlan=true

