== Physical Plan ==
AdaptiveSparkPlan (178)
+- == Final Plan ==
   NativeProject (112)
   +- NativeHashAggregate (111)
      +- ShuffleQueryStage (110), Statistics(X)
         +- NativeShuffleExchange (109)
            +- NativeHashAggregate (108)
               +- NativeHashAggregate (107)
                  +- InputAdapter (106)
                     +- AQEShuffleRead (105)
                        +- ShuffleQueryStage (104), Statistics(X)
                           +- NativeShuffleExchange (103)
                              +- NativeHashAggregate (102)
                                 +- NativeProject (101)
                                    +- NativeProject (100)
                                       +- NativeSortMergeJoin Inner (99)
                                          :- NativeSort (89)
                                          :  +- InputAdapter (88)
                                          :     +- AQEShuffleRead (87)
                                          :        +- ShuffleQueryStage (86), Statistics(X)
                                          :           +- NativeShuffleExchange (85)
                                          :              +- NativeProject (84)
                                          :                 +- NativeSortMergeJoin Inner (83)
                                          :                    :- NativeSort (73)
                                          :                    :  +- InputAdapter (72)
                                          :                    :     +- AQEShuffleRead (71)
                                          :                    :        +- ShuffleQueryStage (70), Statistics(X)
                                          :                    :           +- NativeShuffleExchange (69)
                                          :                    :              +- NativeProject (68)
                                          :                    :                 +- NativeSortMergeJoin Inner (67)
                                          :                    :                    :- NativeSort (57)
                                          :                    :                    :  +- InputAdapter (56)
                                          :                    :                    :     +- AQEShuffleRead (55)
                                          :                    :                    :        +- ShuffleQueryStage (54), Statistics(X)
                                          :                    :                    :           +- NativeShuffleExchange (53)
                                          :                    :                    :              +- NativeSortMergeJoin LeftSemi (52)
                                          :                    :                    :                 :- NativeSortMergeJoin LeftSemi (26)
                                          :                    :                    :                 :  :- NativeSort (8)
                                          :                    :                    :                 :  :  +- InputAdapter (7)
                                          :                    :                    :                 :  :     +- AQEShuffleRead (6)
                                          :                    :                    :                 :  :        +- ShuffleQueryStage (5), Statistics(X)
                                          :                    :                    :                 :  :           +- NativeShuffleExchange (4)
                                          :                    :                    :                 :  :              +- NativeFilter (3)
                                          :                    :                    :                 :  :                 +- InputAdapter (2)
                                          :                    :                    :                 :  :                    +- NativeParquetScan  (1)
                                          :                    :                    :                 :  +- ConvertToNative (25)
                                          :                    :                    :                 :     +- * Project (24)
                                          :                    :                    :                 :        +- * SortMergeJoin Inner (23)
                                          :                    :                    :                 :           :- NativeSort (16)
                                          :                    :                    :                 :           :  +- InputAdapter (15)
                                          :                    :                    :                 :           :     +- AQEShuffleRead (14)
                                          :                    :                    :                 :           :        +- ShuffleQueryStage (13), Statistics(X)
                                          :                    :                    :                 :           :           +- NativeShuffleExchange (12)
                                          :                    :                    :                 :           :              +- NativeFilter (11)
                                          :                    :                    :                 :           :                 +- InputAdapter (10)
                                          :                    :                    :                 :           :                    +- NativeParquetScan  (9)
                                          :                    :                    :                 :           +- NativeSort (22)
                                          :                    :                    :                 :              +- InputAdapter (21)
                                          :                    :                    :                 :                 +- InputAdapter (20)
                                          :                    :                    :                 :                    +- AQEShuffleRead (19)
                                          :                    :                    :                 :                       +- ShuffleQueryStage (18), Statistics(X)
                                          :                    :                    :                 :                          +- ReusedExchange (17)
                                          :                    :                    :                 +- NativeProject (51)
                                          :                    :                    :                    +- NativeSortMergeJoin Inner (50)
                                          :                    :                    :                       :- NativeSort (34)
                                          :                    :                    :                       :  +- InputAdapter (33)
                                          :                    :                    :                       :     +- AQEShuffleRead (32)
                                          :                    :                    :                       :        +- ShuffleQueryStage (31), Statistics(X)
                                          :                    :                    :                       :           +- NativeShuffleExchange (30)
                                          :                    :                    :                       :              +- NativeFilter (29)
                                          :                    :                    :                       :                 +- InputAdapter (28)
                                          :                    :                    :                       :                    +- NativeParquetScan  (27)
                                          :                    :                    :                       +- ConvertToNative (49)
                                          :                    :                    :                          +- * Project (48)
                                          :                    :                    :                             +- * SortMergeJoin Inner (47)
                                          :                    :                    :                                :- NativeSort (40)
                                          :                    :                    :                                :  +- InputAdapter (39)
                                          :                    :                    :                                :     +- InputAdapter (38)
                                          :                    :                    :                                :        +- AQEShuffleRead (37)
                                          :                    :                    :                                :           +- ShuffleQueryStage (36), Statistics(X)
                                          :                    :                    :                                :              +- ReusedExchange (35)
                                          :                    :                    :                                +- NativeSort (46)
                                          :                    :                    :                                   +- InputAdapter (45)
                                          :                    :                    :                                      +- InputAdapter (44)
                                          :                    :                    :                                         +- AQEShuffleRead (43)
                                          :                    :                    :                                            +- ShuffleQueryStage (42), Statistics(X)
                                          :                    :                    :                                               +- ReusedExchange (41)
                                          :                    :                    +- NativeSort (66)
                                          :                    :                       +- InputAdapter (65)
                                          :                    :                          +- AQEShuffleRead (64)
                                          :                    :                             +- ShuffleQueryStage (63), Statistics(X)
                                          :                    :                                +- NativeShuffleExchange (62)
                                          :                    :                                   +- NativeProject (61)
                                          :                    :                                      +- NativeFilter (60)
                                          :                    :                                         +- InputAdapter (59)
                                          :                    :                                            +- NativeParquetScan  (58)
                                          :                    +- NativeSort (82)
                                          :                       +- InputAdapter (81)
                                          :                          +- AQEShuffleRead (80)
                                          :                             +- ShuffleQueryStage (79), Statistics(X)
                                          :                                +- NativeShuffleExchange (78)
                                          :                                   +- NativeProject (77)
                                          :                                      +- NativeFilter (76)
                                          :                                         +- InputAdapter (75)
                                          :                                            +- NativeParquetScan  (74)
                                          +- NativeSort (98)
                                             +- InputAdapter (97)
                                                +- AQEShuffleRead (96)
                                                   +- ShuffleQueryStage (95), Statistics(X)
                                                      +- NativeShuffleExchange (94)
                                                         +- NativeProject (93)
                                                            +- NativeFilter (92)
                                                               +- InputAdapter (91)
                                                                  +- NativeParquetScan  (90)
+- == Initial Plan ==
   HashAggregate (177)
   +- Exchange (176)
      +- HashAggregate (175)
         +- HashAggregate (174)
            +- Exchange (173)
               +- HashAggregate (172)
                  +- Project (171)
                     +- SortMergeJoin Inner (170)
                        :- Sort (164)
                        :  +- Exchange (163)
                        :     +- Project (162)
                        :        +- SortMergeJoin Inner (161)
                        :           :- Sort (155)
                        :           :  +- Exchange (154)
                        :           :     +- Project (153)
                        :           :        +- SortMergeJoin Inner (152)
                        :           :           :- Sort (146)
                        :           :           :  +- Exchange (145)
                        :           :           :     +- SortMergeJoin LeftSemi (144)
                        :           :           :        :- SortMergeJoin LeftSemi (127)
                        :           :           :        :  :- Sort (116)
                        :           :           :        :  :  +- Exchange (115)
                        :           :           :        :  :     +- Filter (114)
                        :           :           :        :  :        +- Scan parquet (113)
                        :           :           :        :  +- Project (126)
                        :           :           :        :     +- SortMergeJoin Inner (125)
                        :           :           :        :        :- Sort (120)
                        :           :           :        :        :  +- Exchange (119)
                        :           :           :        :        :     +- Filter (118)
                        :           :           :        :        :        +- Scan parquet (117)
                        :           :           :        :        +- Sort (124)
                        :           :           :        :           +- Exchange (123)
                        :           :           :        :              +- Filter (122)
                        :           :           :        :                 +- Scan parquet (121)
                        :           :           :        +- Project (143)
                        :           :           :           +- SortMergeJoin Inner (142)
                        :           :           :              :- Sort (131)
                        :           :           :              :  +- Exchange (130)
                        :           :           :              :     +- Filter (129)
                        :           :           :              :        +- Scan parquet (128)
                        :           :           :              +- Project (141)
                        :           :           :                 +- SortMergeJoin Inner (140)
                        :           :           :                    :- Sort (135)
                        :           :           :                    :  +- Exchange (134)
                        :           :           :                    :     +- Filter (133)
                        :           :           :                    :        +- Scan parquet (132)
                        :           :           :                    +- Sort (139)
                        :           :           :                       +- Exchange (138)
                        :           :           :                          +- Filter (137)
                        :           :           :                             +- Scan parquet (136)
                        :           :           +- Sort (151)
                        :           :              +- Exchange (150)
                        :           :                 +- Project (149)
                        :           :                    +- Filter (148)
                        :           :                       +- Scan parquet (147)
                        :           +- Sort (160)
                        :              +- Exchange (159)
                        :                 +- Project (158)
                        :                    +- Filter (157)
                        :                       +- Scan parquet (156)
                        +- Sort (169)
                           +- Exchange (168)
                              +- Project (167)
                                 +- Filter (166)
                                    +- Scan parquet (165)


(113) Scan parquet
Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_ship_date_sk), IsNotNull(ws_ship_addr_sk), IsNotNull(ws_web_site_sk)]
ReadSchema: struct<ws_ship_date_sk:int,ws_ship_addr_sk:int,ws_web_site_sk:int,ws_order_number:int,ws_ext_ship_cost:decimal(7,2),ws_net_profit:decimal(7,2)>

(2) InputAdapter
Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [#1, #2, #3, #4, #5, #6]

(3) NativeFilter
Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6]
Condition : ((isnotnull(ws_ship_date_sk#1) AND isnotnull(ws_ship_addr_sk#2)) AND isnotnull(ws_web_site_sk#3))

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

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

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

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

(8) NativeSort
Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6]
Arguments: [ws_order_number#4 ASC NULLS FIRST], false

(117) Scan parquet
Output [2]: [ws_warehouse_sk#7, ws_order_number#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)]
ReadSchema: struct<ws_warehouse_sk:int,ws_order_number:int>

(10) InputAdapter
Input [2]: [ws_warehouse_sk#7, ws_order_number#8]
Arguments: [#7, #8]

(11) NativeFilter
Input [2]: [#7#7, #8#8]
Condition : (isnotnull(ws_order_number#8) AND isnotnull(ws_warehouse_sk#7))

(12) NativeShuffleExchange
Input [2]: [#7#7, #8#8]
Arguments: hashpartitioning(ws_order_number#8, 100), ENSURE_REQUIREMENTS, [plan_id=2]

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

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

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

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

(17) ReusedExchange [Reuses operator id: 12]
Output [2]: [ws_warehouse_sk#9, ws_order_number#10]

(18) ShuffleQueryStage
Output [2]: [ws_warehouse_sk#9, ws_order_number#10]
Arguments: X

(19) AQEShuffleRead
Input [2]: [ws_warehouse_sk#9, ws_order_number#10]
Arguments: coalesced

(20) InputAdapter
Input [2]: [ws_warehouse_sk#9, ws_order_number#10]
Arguments: [#9, #10]

(21) InputAdapter
Input [2]: [#9#9, #10#10]

(22) NativeSort
Input [2]: [#9#9, #10#10]
Arguments: [ws_order_number#10 ASC NULLS FIRST], false

(23) SortMergeJoin [codegen id : X]
Left keys [1]: [ws_order_number#8]
Right keys [1]: [ws_order_number#10]
Join type: Inner
Join condition: NOT (ws_warehouse_sk#7 = ws_warehouse_sk#9)

(24) Project [codegen id : X]
Output [1]: [ws_order_number#8]
Input [4]: [#7#7, #8#8, #9#9, #10#10]

(25) ConvertToNative
Input [1]: [ws_order_number#8]

(26) NativeSortMergeJoin
Left keys [1]: [ws_order_number#4]
Right keys [1]: [ws_order_number#8]
Join type: LeftSemi
Join condition: None

(128) Scan parquet
Output [1]: [wr_order_number#11]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(wr_order_number)]
ReadSchema: struct<wr_order_number:int>

(28) InputAdapter
Input [1]: [wr_order_number#11]
Arguments: [#11]

(29) NativeFilter
Input [1]: [#11#11]
Condition : isnotnull(wr_order_number#11)

(30) NativeShuffleExchange
Input [1]: [#11#11]
Arguments: hashpartitioning(wr_order_number#11, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(31) ShuffleQueryStage
Output [1]: [#11#11]
Arguments: X

(32) AQEShuffleRead
Input [1]: [#11#11]
Arguments: coalesced

(33) InputAdapter
Input [1]: [#11#11]

(34) NativeSort
Input [1]: [#11#11]
Arguments: [wr_order_number#11 ASC NULLS FIRST], false

(35) ReusedExchange [Reuses operator id: 12]
Output [2]: [ws_warehouse_sk#12, ws_order_number#13]

(36) ShuffleQueryStage
Output [2]: [ws_warehouse_sk#12, ws_order_number#13]
Arguments: X

(37) AQEShuffleRead
Input [2]: [ws_warehouse_sk#12, ws_order_number#13]
Arguments: coalesced

(38) InputAdapter
Input [2]: [ws_warehouse_sk#12, ws_order_number#13]
Arguments: [#12, #13]

(39) InputAdapter
Input [2]: [#12#12, #13#13]

(40) NativeSort
Input [2]: [#12#12, #13#13]
Arguments: [ws_order_number#13 ASC NULLS FIRST], false

(41) ReusedExchange [Reuses operator id: 12]
Output [2]: [ws_warehouse_sk#14, ws_order_number#15]

(42) ShuffleQueryStage
Output [2]: [ws_warehouse_sk#14, ws_order_number#15]
Arguments: X

(43) AQEShuffleRead
Input [2]: [ws_warehouse_sk#14, ws_order_number#15]
Arguments: coalesced

(44) InputAdapter
Input [2]: [ws_warehouse_sk#14, ws_order_number#15]
Arguments: [#14, #15]

(45) InputAdapter
Input [2]: [#14#14, #15#15]

(46) NativeSort
Input [2]: [#14#14, #15#15]
Arguments: [ws_order_number#15 ASC NULLS FIRST], false

(47) SortMergeJoin [codegen id : X]
Left keys [1]: [ws_order_number#13]
Right keys [1]: [ws_order_number#15]
Join type: Inner
Join condition: NOT (ws_warehouse_sk#12 = ws_warehouse_sk#14)

(48) Project [codegen id : X]
Output [1]: [ws_order_number#13]
Input [4]: [#12#12, #13#13, #14#14, #15#15]

(49) ConvertToNative
Input [1]: [ws_order_number#13]

(50) NativeSortMergeJoin
Left keys [1]: [wr_order_number#11]
Right keys [1]: [ws_order_number#13]
Join type: Inner
Join condition: None

(51) NativeProject
Output [1]: [wr_order_number#11]
Input [2]: [#11#11, ws_order_number#13]

(52) NativeSortMergeJoin
Left keys [1]: [ws_order_number#4]
Right keys [1]: [wr_order_number#11]
Join type: LeftSemi
Join condition: None

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

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

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

(56) InputAdapter
Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6]

(57) NativeSort
Input [6]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6]
Arguments: [ws_ship_date_sk#1 ASC NULLS FIRST], false

(147) Scan parquet
Output [2]: [d_date_sk#16, d_date#17]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-01), LessThanOrEqual(d_date,1999-04-02), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(59) InputAdapter
Input [2]: [d_date_sk#16, d_date#17]
Arguments: [#16, #17]

(60) NativeFilter
Input [2]: [#16#16, #17#17]
Condition : (((isnotnull(d_date#17) AND (d_date#17 >= 1999-02-01)) AND (d_date#17 <= 1999-04-02)) AND isnotnull(d_date_sk#16))

(61) NativeProject
Output [1]: [d_date_sk#16]
Input [2]: [#16#16, #17#17]

(62) NativeShuffleExchange
Input [1]: [d_date_sk#16]
Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(63) ShuffleQueryStage
Output [1]: [d_date_sk#16]
Arguments: X

(64) AQEShuffleRead
Input [1]: [d_date_sk#16]
Arguments: coalesced

(65) InputAdapter
Input [1]: [d_date_sk#16]

(66) NativeSort
Input [1]: [d_date_sk#16]
Arguments: [d_date_sk#16 ASC NULLS FIRST], false

(67) NativeSortMergeJoin
Left keys [1]: [ws_ship_date_sk#1]
Right keys [1]: [d_date_sk#16]
Join type: Inner
Join condition: None

(68) NativeProject
Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Input [7]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, d_date_sk#16]

(69) NativeShuffleExchange
Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: hashpartitioning(ws_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=6]

(70) ShuffleQueryStage
Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: X

(71) AQEShuffleRead
Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: coalesced

(72) InputAdapter
Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]

(73) NativeSort
Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [ws_ship_addr_sk#2 ASC NULLS FIRST], false

(156) Scan parquet
Output [2]: [ca_address_sk#18, ca_state#19]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,IL), IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(75) InputAdapter
Input [2]: [ca_address_sk#18, ca_state#19]
Arguments: [#18, #19]

(76) NativeFilter
Input [2]: [#18#18, #19#19]
Condition : ((isnotnull(ca_state#19) AND (ca_state#19 = IL)) AND isnotnull(ca_address_sk#18))

(77) NativeProject
Output [1]: [ca_address_sk#18]
Input [2]: [#18#18, #19#19]

(78) NativeShuffleExchange
Input [1]: [ca_address_sk#18]
Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=7]

(79) ShuffleQueryStage
Output [1]: [ca_address_sk#18]
Arguments: X

(80) AQEShuffleRead
Input [1]: [ca_address_sk#18]
Arguments: coalesced

(81) InputAdapter
Input [1]: [ca_address_sk#18]

(82) NativeSort
Input [1]: [ca_address_sk#18]
Arguments: [ca_address_sk#18 ASC NULLS FIRST], false

(83) NativeSortMergeJoin
Left keys [1]: [ws_ship_addr_sk#2]
Right keys [1]: [ca_address_sk#18]
Join type: Inner
Join condition: None

(84) NativeProject
Output [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Input [6]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, ca_address_sk#18]

(85) NativeShuffleExchange
Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=8]

(86) ShuffleQueryStage
Output [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: X

(87) AQEShuffleRead
Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: coalesced

(88) InputAdapter
Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]

(89) NativeSort
Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false

(165) Scan parquet
Output [2]: [web_site_sk#20, web_company_name#21]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(web_company_name), EqualTo(web_company_name,pri), IsNotNull(web_site_sk)]
ReadSchema: struct<web_site_sk:int,web_company_name:string>

(91) InputAdapter
Input [2]: [web_site_sk#20, web_company_name#21]
Arguments: [#20, #21]

(92) NativeFilter
Input [2]: [#20#20, #21#21]
Condition : ((isnotnull(web_company_name#21) AND (web_company_name#21 = pri)) AND isnotnull(web_site_sk#20))

(93) NativeProject
Output [1]: [web_site_sk#20]
Input [2]: [#20#20, #21#21]

(94) NativeShuffleExchange
Input [1]: [web_site_sk#20]
Arguments: hashpartitioning(web_site_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(95) ShuffleQueryStage
Output [1]: [web_site_sk#20]
Arguments: X

(96) AQEShuffleRead
Input [1]: [web_site_sk#20]
Arguments: coalesced

(97) InputAdapter
Input [1]: [web_site_sk#20]

(98) NativeSort
Input [1]: [web_site_sk#20]
Arguments: [web_site_sk#20 ASC NULLS FIRST], false

(99) NativeSortMergeJoin
Left keys [1]: [ws_web_site_sk#3]
Right keys [1]: [web_site_sk#20]
Join type: Inner
Join condition: None

(100) NativeProject
Output [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Input [5]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, web_site_sk#20]

(101) NativeProject
Output [3]: [ws_order_number#4 AS ws_order_number#4, UnscaledValue(ws_ext_ship_cost#5) AS _c1#22, UnscaledValue(ws_net_profit#6) AS _c2#23]
Input [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]

(102) NativeHashAggregate
Input [3]: [ws_order_number#4, _c1#22, _c2#23]
Keys [1]: [ws_order_number#4]
Functions [2]: [partial_sum(_c1#22), partial_sum(_c2#23)]
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25]
Results [3]: [ws_order_number#4, #26, #26]

(103) NativeShuffleExchange
Input [3]: [ws_order_number#4, #26, #26]
Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=10]

(104) ShuffleQueryStage
Output [3]: [ws_order_number#4, #26, #26]
Arguments: X

(105) AQEShuffleRead
Input [3]: [ws_order_number#4, #26, #26]
Arguments: coalesced

(106) InputAdapter
Input [3]: [ws_order_number#4, #26, #26]

(107) NativeHashAggregate
Input [3]: [ws_order_number#4, #26, #26]
Keys [1]: [ws_order_number#4]
Functions [2]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6))]
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25]
Results [3]: [ws_order_number#4, #26, #26]

(108) NativeHashAggregate
Input [3]: [ws_order_number#4, #26, #26]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct ws_order_number#4)]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27]
Results [3]: [#26, #26, #26]

(109) NativeShuffleExchange
Input [3]: [#26, #26, #26]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11]

(110) ShuffleQueryStage
Output [3]: [#26, #26, #26]
Arguments: X

(111) NativeHashAggregate
Input [3]: [#26, #26, #26]
Keys: []
Functions [3]: [sum(UnscaledValue(ws_ext_ship_cost#5)), sum(UnscaledValue(ws_net_profit#6)), count(distinct ws_order_number#4)]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27]
Results [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27]

(112) NativeProject
Output [3]: [count(ws_order_number#4)#27 AS order count #28, MakeDecimal(sum(UnscaledValue(ws_ext_ship_cost#5))#24,17,2) AS total shipping cost #29, MakeDecimal(sum(UnscaledValue(ws_net_profit#6))#25,17,2) AS total net profit #30]
Input [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27]

(113) Scan parquet
Output [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_ship_date_sk), IsNotNull(ws_ship_addr_sk), IsNotNull(ws_web_site_sk)]
ReadSchema: struct<ws_ship_date_sk:int,ws_ship_addr_sk:int,ws_web_site_sk:int,ws_order_number:int,ws_ext_ship_cost:decimal(7,2),ws_net_profit:decimal(7,2)>

(114) Filter
Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Condition : ((isnotnull(ws_ship_date_sk#1) AND isnotnull(ws_ship_addr_sk#2)) AND isnotnull(ws_web_site_sk#3))

(115) Exchange
Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(116) Sort
Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [ws_order_number#4 ASC NULLS FIRST], false, 0

(117) Scan parquet
Output [2]: [ws_warehouse_sk#7, ws_order_number#8]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)]
ReadSchema: struct<ws_warehouse_sk:int,ws_order_number:int>

(118) Filter
Input [2]: [ws_warehouse_sk#7, ws_order_number#8]
Condition : (isnotnull(ws_order_number#8) AND isnotnull(ws_warehouse_sk#7))

(119) Exchange
Input [2]: [ws_warehouse_sk#7, ws_order_number#8]
Arguments: hashpartitioning(ws_order_number#8, 100), ENSURE_REQUIREMENTS, [plan_id=13]

(120) Sort
Input [2]: [ws_warehouse_sk#7, ws_order_number#8]
Arguments: [ws_order_number#8 ASC NULLS FIRST], false, 0

(121) Scan parquet
Output [2]: [ws_warehouse_sk#9, ws_order_number#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)]
ReadSchema: struct<ws_warehouse_sk:int,ws_order_number:int>

(122) Filter
Input [2]: [ws_warehouse_sk#9, ws_order_number#10]
Condition : (isnotnull(ws_order_number#10) AND isnotnull(ws_warehouse_sk#9))

(123) Exchange
Input [2]: [ws_warehouse_sk#9, ws_order_number#10]
Arguments: hashpartitioning(ws_order_number#10, 100), ENSURE_REQUIREMENTS, [plan_id=14]

(124) Sort
Input [2]: [ws_warehouse_sk#9, ws_order_number#10]
Arguments: [ws_order_number#10 ASC NULLS FIRST], false, 0

(125) SortMergeJoin
Left keys [1]: [ws_order_number#8]
Right keys [1]: [ws_order_number#10]
Join type: Inner
Join condition: NOT (ws_warehouse_sk#7 = ws_warehouse_sk#9)

(126) Project
Output [1]: [ws_order_number#8]
Input [4]: [ws_warehouse_sk#7, ws_order_number#8, ws_warehouse_sk#9, ws_order_number#10]

(127) SortMergeJoin
Left keys [1]: [ws_order_number#4]
Right keys [1]: [ws_order_number#8]
Join type: LeftSemi
Join condition: None

(128) Scan parquet
Output [1]: [wr_order_number#11]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(wr_order_number)]
ReadSchema: struct<wr_order_number:int>

(129) Filter
Input [1]: [wr_order_number#11]
Condition : isnotnull(wr_order_number#11)

(130) Exchange
Input [1]: [wr_order_number#11]
Arguments: hashpartitioning(wr_order_number#11, 100), ENSURE_REQUIREMENTS, [plan_id=15]

(131) Sort
Input [1]: [wr_order_number#11]
Arguments: [wr_order_number#11 ASC NULLS FIRST], false, 0

(132) Scan parquet
Output [2]: [ws_warehouse_sk#12, ws_order_number#13]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)]
ReadSchema: struct<ws_warehouse_sk:int,ws_order_number:int>

(133) Filter
Input [2]: [ws_warehouse_sk#12, ws_order_number#13]
Condition : (isnotnull(ws_order_number#13) AND isnotnull(ws_warehouse_sk#12))

(134) Exchange
Input [2]: [ws_warehouse_sk#12, ws_order_number#13]
Arguments: hashpartitioning(ws_order_number#13, 100), ENSURE_REQUIREMENTS, [plan_id=16]

(135) Sort
Input [2]: [ws_warehouse_sk#12, ws_order_number#13]
Arguments: [ws_order_number#13 ASC NULLS FIRST], false, 0

(136) Scan parquet
Output [2]: [ws_warehouse_sk#14, ws_order_number#15]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ws_order_number), IsNotNull(ws_warehouse_sk)]
ReadSchema: struct<ws_warehouse_sk:int,ws_order_number:int>

(137) Filter
Input [2]: [ws_warehouse_sk#14, ws_order_number#15]
Condition : (isnotnull(ws_order_number#15) AND isnotnull(ws_warehouse_sk#14))

(138) Exchange
Input [2]: [ws_warehouse_sk#14, ws_order_number#15]
Arguments: hashpartitioning(ws_order_number#15, 100), ENSURE_REQUIREMENTS, [plan_id=17]

(139) Sort
Input [2]: [ws_warehouse_sk#14, ws_order_number#15]
Arguments: [ws_order_number#15 ASC NULLS FIRST], false, 0

(140) SortMergeJoin
Left keys [1]: [ws_order_number#13]
Right keys [1]: [ws_order_number#15]
Join type: Inner
Join condition: NOT (ws_warehouse_sk#12 = ws_warehouse_sk#14)

(141) Project
Output [1]: [ws_order_number#13]
Input [4]: [ws_warehouse_sk#12, ws_order_number#13, ws_warehouse_sk#14, ws_order_number#15]

(142) SortMergeJoin
Left keys [1]: [wr_order_number#11]
Right keys [1]: [ws_order_number#13]
Join type: Inner
Join condition: None

(143) Project
Output [1]: [wr_order_number#11]
Input [2]: [wr_order_number#11, ws_order_number#13]

(144) SortMergeJoin
Left keys [1]: [ws_order_number#4]
Right keys [1]: [wr_order_number#11]
Join type: LeftSemi
Join condition: None

(145) Exchange
Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: hashpartitioning(ws_ship_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=18]

(146) Sort
Input [6]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [ws_ship_date_sk#1 ASC NULLS FIRST], false, 0

(147) Scan parquet
Output [2]: [d_date_sk#16, d_date#17]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_date), GreaterThanOrEqual(d_date,1999-02-01), LessThanOrEqual(d_date,1999-04-02), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date>

(148) Filter
Input [2]: [d_date_sk#16, d_date#17]
Condition : (((isnotnull(d_date#17) AND (d_date#17 >= 1999-02-01)) AND (d_date#17 <= 1999-04-02)) AND isnotnull(d_date_sk#16))

(149) Project
Output [1]: [d_date_sk#16]
Input [2]: [d_date_sk#16, d_date#17]

(150) Exchange
Input [1]: [d_date_sk#16]
Arguments: hashpartitioning(d_date_sk#16, 100), ENSURE_REQUIREMENTS, [plan_id=19]

(151) Sort
Input [1]: [d_date_sk#16]
Arguments: [d_date_sk#16 ASC NULLS FIRST], false, 0

(152) SortMergeJoin
Left keys [1]: [ws_ship_date_sk#1]
Right keys [1]: [d_date_sk#16]
Join type: Inner
Join condition: None

(153) Project
Output [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Input [7]: [ws_ship_date_sk#1, ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, d_date_sk#16]

(154) Exchange
Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: hashpartitioning(ws_ship_addr_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=20]

(155) Sort
Input [5]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [ws_ship_addr_sk#2 ASC NULLS FIRST], false, 0

(156) Scan parquet
Output [2]: [ca_address_sk#18, ca_state#19]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,IL), IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(157) Filter
Input [2]: [ca_address_sk#18, ca_state#19]
Condition : ((isnotnull(ca_state#19) AND (ca_state#19 = IL)) AND isnotnull(ca_address_sk#18))

(158) Project
Output [1]: [ca_address_sk#18]
Input [2]: [ca_address_sk#18, ca_state#19]

(159) Exchange
Input [1]: [ca_address_sk#18]
Arguments: hashpartitioning(ca_address_sk#18, 100), ENSURE_REQUIREMENTS, [plan_id=21]

(160) Sort
Input [1]: [ca_address_sk#18]
Arguments: [ca_address_sk#18 ASC NULLS FIRST], false, 0

(161) SortMergeJoin
Left keys [1]: [ws_ship_addr_sk#2]
Right keys [1]: [ca_address_sk#18]
Join type: Inner
Join condition: None

(162) Project
Output [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Input [6]: [ws_ship_addr_sk#2, ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, ca_address_sk#18]

(163) Exchange
Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: hashpartitioning(ws_web_site_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=22]

(164) Sort
Input [4]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Arguments: [ws_web_site_sk#3 ASC NULLS FIRST], false, 0

(165) Scan parquet
Output [2]: [web_site_sk#20, web_company_name#21]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(web_company_name), EqualTo(web_company_name,pri), IsNotNull(web_site_sk)]
ReadSchema: struct<web_site_sk:int,web_company_name:string>

(166) Filter
Input [2]: [web_site_sk#20, web_company_name#21]
Condition : ((isnotnull(web_company_name#21) AND (web_company_name#21 = pri)) AND isnotnull(web_site_sk#20))

(167) Project
Output [1]: [web_site_sk#20]
Input [2]: [web_site_sk#20, web_company_name#21]

(168) Exchange
Input [1]: [web_site_sk#20]
Arguments: hashpartitioning(web_site_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=23]

(169) Sort
Input [1]: [web_site_sk#20]
Arguments: [web_site_sk#20 ASC NULLS FIRST], false, 0

(170) SortMergeJoin
Left keys [1]: [ws_web_site_sk#3]
Right keys [1]: [web_site_sk#20]
Join type: Inner
Join condition: None

(171) Project
Output [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Input [5]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6, web_site_sk#20]

(172) HashAggregate
Input [3]: [ws_order_number#4, ws_ext_ship_cost#5, ws_net_profit#6]
Keys [1]: [ws_order_number#4]
Functions [2]: [partial_sum(UnscaledValue(ws_ext_ship_cost#5)), partial_sum(UnscaledValue(ws_net_profit#6))]
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25]
Results [3]: [ws_order_number#4, sum#31, sum#32]

(173) Exchange
Input [3]: [ws_order_number#4, sum#31, sum#32]
Arguments: hashpartitioning(ws_order_number#4, 100), ENSURE_REQUIREMENTS, [plan_id=24]

(174) HashAggregate
Input [3]: [ws_order_number#4, sum#31, sum#32]
Keys [1]: [ws_order_number#4]
Functions [2]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6))]
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25]
Results [3]: [ws_order_number#4, sum#31, sum#32]

(175) HashAggregate
Input [3]: [ws_order_number#4, sum#31, sum#32]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct ws_order_number#4)]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27]
Results [3]: [sum#31, sum#32, count#33]

(176) Exchange
Input [3]: [sum#31, sum#32, count#33]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=25]

(177) HashAggregate
Input [3]: [sum#31, sum#32, count#33]
Keys: []
Functions [3]: [sum(UnscaledValue(ws_ext_ship_cost#5)), sum(UnscaledValue(ws_net_profit#6)), count(distinct ws_order_number#4)]
Aggregate Attributes [3]: [sum(UnscaledValue(ws_ext_ship_cost#5))#24, sum(UnscaledValue(ws_net_profit#6))#25, count(ws_order_number#4)#27]
Results [3]: [count(ws_order_number#4)#27 AS order count #28, MakeDecimal(sum(UnscaledValue(ws_ext_ship_cost#5))#24,17,2) AS total shipping cost #29, MakeDecimal(sum(UnscaledValue(ws_net_profit#6))#25,17,2) AS total net profit #30]

(178) AdaptiveSparkPlan
Output [3]: [order count #28, total shipping cost #29, total net profit #30]
Arguments: isFinalPlan=true

