== Physical Plan ==
AdaptiveSparkPlan (134)
+- == Final Plan ==
   NativeProject (86)
   +- NativeHashAggregate (85)
      +- ShuffleQueryStage (84), Statistics(X)
         +- NativeShuffleExchange (83)
            +- NativeHashAggregate (82)
               +- NativeProject (81)
                  +- NativeProject (80)
                     +- NativeSortMergeJoin Inner (79)
                        :- NativeSort (70)
                        :  +- InputAdapter (69)
                        :     +- AQEShuffleRead (68)
                        :        +- ShuffleQueryStage (67), Statistics(X)
                        :           +- NativeShuffleExchange (66)
                        :              +- NativeProject (65)
                        :                 +- NativeSortMergeJoin Inner (64)
                        :                    :- NativeSort (55)
                        :                    :  +- InputAdapter (54)
                        :                    :     +- AQEShuffleRead (53)
                        :                    :        +- ShuffleQueryStage (52), Statistics(X)
                        :                    :           +- NativeShuffleExchange (51)
                        :                    :              +- NativeProject (50)
                        :                    :                 +- NativeSortMergeJoin Inner (49)
                        :                    :                    :- NativeSort (39)
                        :                    :                    :  +- InputAdapter (38)
                        :                    :                    :     +- AQEShuffleRead (37)
                        :                    :                    :        +- ShuffleQueryStage (36), Statistics(X)
                        :                    :                    :           +- NativeShuffleExchange (35)
                        :                    :                    :              +- NativeProject (34)
                        :                    :                    :                 +- NativeSortMergeJoin Inner (33)
                        :                    :                    :                    :- 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 (32)
                        :                    :                    :                       +- InputAdapter (31)
                        :                    :                    :                          +- AQEShuffleRead (30)
                        :                    :                    :                             +- ShuffleQueryStage (29), Statistics(X)
                        :                    :                    :                                +- NativeShuffleExchange (28)
                        :                    :                    :                                   +- NativeProject (27)
                        :                    :                    :                                      +- NativeFilter (26)
                        :                    :                    :                                         +- InputAdapter (25)
                        :                    :                    :                                            +- NativeParquetScan  (24)
                        :                    :                    +- NativeSort (48)
                        :                    :                       +- InputAdapter (47)
                        :                    :                          +- AQEShuffleRead (46)
                        :                    :                             +- ShuffleQueryStage (45), Statistics(X)
                        :                    :                                +- NativeShuffleExchange (44)
                        :                    :                                   +- NativeProject (43)
                        :                    :                                      +- NativeFilter (42)
                        :                    :                                         +- InputAdapter (41)
                        :                    :                                            +- NativeParquetScan  (40)
                        :                    +- NativeSort (63)
                        :                       +- InputAdapter (62)
                        :                          +- AQEShuffleRead (61)
                        :                             +- ShuffleQueryStage (60), Statistics(X)
                        :                                +- NativeShuffleExchange (59)
                        :                                   +- NativeFilter (58)
                        :                                      +- InputAdapter (57)
                        :                                         +- NativeParquetScan  (56)
                        +- NativeSort (78)
                           +- InputAdapter (77)
                              +- AQEShuffleRead (76)
                                 +- ShuffleQueryStage (75), Statistics(X)
                                    +- NativeShuffleExchange (74)
                                       +- NativeFilter (73)
                                          +- InputAdapter (72)
                                             +- NativeParquetScan  (71)
+- == Initial Plan ==
   HashAggregate (133)
   +- Exchange (132)
      +- HashAggregate (131)
         +- Project (130)
            +- SortMergeJoin Inner (129)
               :- Sort (124)
               :  +- Exchange (123)
               :     +- Project (122)
               :        +- SortMergeJoin Inner (121)
               :           :- Sort (116)
               :           :  +- Exchange (115)
               :           :     +- Project (114)
               :           :        +- SortMergeJoin Inner (113)
               :           :           :- Sort (107)
               :           :           :  +- Exchange (106)
               :           :           :     +- Project (105)
               :           :           :        +- SortMergeJoin Inner (104)
               :           :           :           :- Sort (98)
               :           :           :           :  +- Exchange (97)
               :           :           :           :     +- Project (96)
               :           :           :           :        +- SortMergeJoin Inner (95)
               :           :           :           :           :- Sort (90)
               :           :           :           :           :  +- Exchange (89)
               :           :           :           :           :     +- Filter (88)
               :           :           :           :           :        +- Scan parquet (87)
               :           :           :           :           +- Sort (94)
               :           :           :           :              +- Exchange (93)
               :           :           :           :                 +- Filter (92)
               :           :           :           :                    +- Scan parquet (91)
               :           :           :           +- Sort (103)
               :           :           :              +- Exchange (102)
               :           :           :                 +- Project (101)
               :           :           :                    +- Filter (100)
               :           :           :                       +- Scan parquet (99)
               :           :           +- Sort (112)
               :           :              +- Exchange (111)
               :           :                 +- Project (110)
               :           :                    +- Filter (109)
               :           :                       +- Scan parquet (108)
               :           +- Sort (120)
               :              +- Exchange (119)
               :                 +- Filter (118)
               :                    +- Scan parquet (117)
               +- Sort (128)
                  +- Exchange (127)
                     +- Filter (126)
                        +- Scan parquet (125)


(87) Scan parquet
Output [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_hdemo_sk), Or(Or(And(GreaterThanOrEqual(ss_net_profit,100.00),LessThanOrEqual(ss_net_profit,200.00)),And(GreaterThanOrEqual(ss_net_profit,150.00),LessThanOrEqual(ss_net_profit,300.00))),And(GreaterThanOrEqual(ss_net_profit,50.00),LessThanOrEqual(ss_net_profit,250.00))), Or(Or(And(GreaterThanOrEqual(ss_sales_price,100.00),LessThanOrEqual(ss_sales_price,150.00)),And(GreaterThanOrEqual(ss_sales_price,50.00),LessThanOrEqual(ss_sales_price,100.00))),And(GreaterThanOrEqual(ss_sales_price,150.00),LessThanOrEqual(ss_sales_price,200.00)))]
ReadSchema: struct<ss_sold_date_sk:int,ss_cdemo_sk:int,ss_hdemo_sk:int,ss_addr_sk:int,ss_store_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2),ss_ext_sales_price:decimal(7,2),ss_ext_wholesale_cost:decimal(7,2),ss_net_profit:decimal(7,2)>

(2) InputAdapter
Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: [#1, #2, #3, #4, #5, #6, #7, #8, #9, #10]

(3) NativeFilter
Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10]
Condition : ((((((isnotnull(ss_store_sk#5) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_cdemo_sk#2)) AND isnotnull(ss_hdemo_sk#3)) AND ((((ss_net_profit#10 >= 100.00) AND (ss_net_profit#10 <= 200.00)) OR ((ss_net_profit#10 >= 150.00) AND (ss_net_profit#10 <= 300.00))) OR ((ss_net_profit#10 >= 50.00) AND (ss_net_profit#10 <= 250.00)))) AND ((((ss_sales_price#7 >= 100.00) AND (ss_sales_price#7 <= 150.00)) OR ((ss_sales_price#7 >= 50.00) AND (ss_sales_price#7 <= 100.00))) OR ((ss_sales_price#7 >= 150.00) AND (ss_sales_price#7 <= 200.00))))

(4) NativeShuffleExchange
Input [10]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10]
Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=1]

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

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

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

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

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

(10) InputAdapter
Input [1]: [s_store_sk#11]
Arguments: [#11]

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

(12) NativeShuffleExchange
Input [1]: [#11#11]
Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=2]

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

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

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

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

(17) NativeSortMergeJoin
Left keys [1]: [ss_store_sk#5]
Right keys [1]: [s_store_sk#11]
Join type: Inner
Join condition: None

(18) NativeProject
Output [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Input [11]: [#1#1, #2#2, #3#3, #4#4, #5#5, #6#6, #7#7, #8#8, #9#9, #10#10, #11#11]

(19) NativeShuffleExchange
Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=3]

(20) ShuffleQueryStage
Output [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: X

(21) AQEShuffleRead
Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: coalesced

(22) InputAdapter
Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]

(23) NativeSort
Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false

(99) Scan parquet
Output [3]: [ca_address_sk#12, ca_state#13, ca_country#14]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [OH,TX]),In(ca_state, [KY,NM,OR])),In(ca_state, [MS,TX,VA]))]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_country:string>

(25) InputAdapter
Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14]
Arguments: [#12, #13, #14]

(26) NativeFilter
Input [3]: [#12#12, #13#13, #14#14]
Condition : (((isnotnull(ca_country#14) AND (ca_country#14 = United States)) AND isnotnull(ca_address_sk#12)) AND ((ca_state#13 IN (TX,OH) OR ca_state#13 IN (OR,NM,KY)) OR ca_state#13 IN (VA,TX,MS)))

(27) NativeProject
Output [2]: [ca_address_sk#12, ca_state#13]
Input [3]: [#12#12, #13#13, #14#14]

(28) NativeShuffleExchange
Input [2]: [ca_address_sk#12, ca_state#13]
Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=4]

(29) ShuffleQueryStage
Output [2]: [ca_address_sk#12, ca_state#13]
Arguments: X

(30) AQEShuffleRead
Input [2]: [ca_address_sk#12, ca_state#13]
Arguments: coalesced

(31) InputAdapter
Input [2]: [ca_address_sk#12, ca_state#13]

(32) NativeSort
Input [2]: [ca_address_sk#12, ca_state#13]
Arguments: [ca_address_sk#12 ASC NULLS FIRST], false

(33) NativeSortMergeJoin
Left keys [1]: [ss_addr_sk#4]
Right keys [1]: [ca_address_sk#12]
Join type: Inner
Join condition: ((((ca_state#13 IN (TX,OH) AND (ss_net_profit#10 >= 100.00)) AND (ss_net_profit#10 <= 200.00)) OR ((ca_state#13 IN (OR,NM,KY) AND (ss_net_profit#10 >= 150.00)) AND (ss_net_profit#10 <= 300.00))) OR ((ca_state#13 IN (VA,TX,MS) AND (ss_net_profit#10 >= 50.00)) AND (ss_net_profit#10 <= 250.00)))

(34) NativeProject
Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Input [11]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10, ca_address_sk#12, ca_state#13]

(35) NativeShuffleExchange
Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=5]

(36) ShuffleQueryStage
Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: X

(37) AQEShuffleRead
Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: coalesced

(38) InputAdapter
Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]

(39) NativeSort
Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false

(108) Scan parquet
Output [2]: [d_date_sk#15, d_year#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(41) InputAdapter
Input [2]: [d_date_sk#15, d_year#16]
Arguments: [#15, #16]

(42) NativeFilter
Input [2]: [#15#15, #16#16]
Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15))

(43) NativeProject
Output [1]: [d_date_sk#15]
Input [2]: [#15#15, #16#16]

(44) NativeShuffleExchange
Input [1]: [d_date_sk#15]
Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=6]

(45) ShuffleQueryStage
Output [1]: [d_date_sk#15]
Arguments: X

(46) AQEShuffleRead
Input [1]: [d_date_sk#15]
Arguments: coalesced

(47) InputAdapter
Input [1]: [d_date_sk#15]

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

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

(50) NativeProject
Output [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Input [8]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, d_date_sk#15]

(51) NativeShuffleExchange
Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: hashpartitioning(ss_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=7]

(52) ShuffleQueryStage
Output [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: X

(53) AQEShuffleRead
Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: coalesced

(54) InputAdapter
Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]

(55) NativeSort
Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: [ss_cdemo_sk#2 ASC NULLS FIRST], false

(117) Scan parquet
Output [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(cd_demo_sk), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Advanced Degree)),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College))),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,2 yr Degree)))]
ReadSchema: struct<cd_demo_sk:int,cd_marital_status:string,cd_education_status:string>

(57) InputAdapter
Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]
Arguments: [#17, #18, #19]

(58) NativeFilter
Input [3]: [#17#17, #18#18, #19#19]
Condition : (isnotnull(cd_demo_sk#17) AND ((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) OR ((cd_marital_status#18 = S) AND (cd_education_status#19 = College))) OR ((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree))))

(59) NativeShuffleExchange
Input [3]: [#17#17, #18#18, #19#19]
Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=8]

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

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

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

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

(64) NativeSortMergeJoin
Left keys [1]: [ss_cdemo_sk#2]
Right keys [1]: [cd_demo_sk#17]
Join type: Inner
Join condition: ((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) OR ((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00))) OR ((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00)))

(65) NativeProject
Output [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Input [9]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, #17#17, #18#18, #19#19]

(66) NativeShuffleExchange
Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=9]

(67) ShuffleQueryStage
Output [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Arguments: X

(68) AQEShuffleRead
Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Arguments: coalesced

(69) InputAdapter
Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]

(70) NativeSort
Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false

(125) Scan parquet
Output [2]: [hd_demo_sk#20, hd_dep_count#21]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(hd_demo_sk), Or(EqualTo(hd_dep_count,3),EqualTo(hd_dep_count,1))]
ReadSchema: struct<hd_demo_sk:int,hd_dep_count:int>

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

(73) NativeFilter
Input [2]: [#20#20, #21#21]
Condition : (isnotnull(hd_demo_sk#20) AND ((hd_dep_count#21 = 3) OR (hd_dep_count#21 = 1)))

(74) NativeShuffleExchange
Input [2]: [#20#20, #21#21]
Arguments: hashpartitioning(hd_demo_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=10]

(75) ShuffleQueryStage
Output [2]: [#20#20, #21#21]
Arguments: X

(76) AQEShuffleRead
Input [2]: [#20#20, #21#21]
Arguments: coalesced

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

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

(79) NativeSortMergeJoin
Left keys [1]: [ss_hdemo_sk#3]
Right keys [1]: [hd_demo_sk#20]
Join type: Inner
Join condition: (((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) AND (hd_dep_count#21 = 3)) OR (((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00)) AND (hd_dep_count#21 = 1))) OR (((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00)) AND (hd_dep_count#21 = 1)))

(80) NativeProject
Output [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Input [9]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19, #20#20, #21#21]

(81) NativeProject
Output [3]: [ss_quantity#6 AS _c0#22, UnscaledValue(ss_ext_sales_price#8) AS _c1#23, UnscaledValue(ss_ext_wholesale_cost#9) AS _c2#24]
Input [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]

(82) NativeHashAggregate
Input [3]: [_c0#22, _c1#23, _c2#24]
Keys: []
Functions [4]: [partial_avg(_c0#22), partial_avg(_c1#23), partial_avg(_c2#24), partial_sum(_c2#24)]
Aggregate Attributes [7]: [sum#25, count#26, sum#27, count#28, sum#29, count#30, sum#31]
Results [7]: [#32, #33, #32, #33, #32, #33, #33]

(83) NativeShuffleExchange
Input [7]: [#32, #33, #32, #33, #32, #33, #33]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11]

(84) ShuffleQueryStage
Output [7]: [#32, #33, #32, #33, #32, #33, #33]
Arguments: X

(85) NativeHashAggregate
Input [7]: [#32, #33, #32, #33, #32, #33, #33]
Keys: []
Functions [4]: [avg(ss_quantity#6), avg(UnscaledValue(ss_ext_sales_price#8)), avg(UnscaledValue(ss_ext_wholesale_cost#9)), sum(UnscaledValue(ss_ext_wholesale_cost#9))]
Aggregate Attributes [4]: [avg(ss_quantity#6)#34, avg(UnscaledValue(ss_ext_sales_price#8))#35, avg(UnscaledValue(ss_ext_wholesale_cost#9))#36, sum(UnscaledValue(ss_ext_wholesale_cost#9))#37]
Results [4]: [avg(ss_quantity#6)#34, avg(UnscaledValue(ss_ext_sales_price#8))#35, avg(UnscaledValue(ss_ext_wholesale_cost#9))#36, sum(UnscaledValue(ss_ext_wholesale_cost#9))#37]

(86) NativeProject
Output [4]: [avg(ss_quantity#6)#34 AS avg(ss_quantity)#38, cast((avg(UnscaledValue(ss_ext_sales_price#8))#35 / 100.0) as decimal(11,6)) AS avg(ss_ext_sales_price)#39, cast((avg(UnscaledValue(ss_ext_wholesale_cost#9))#36 / 100.0) as decimal(11,6)) AS avg(ss_ext_wholesale_cost)#40, MakeDecimal(sum(UnscaledValue(ss_ext_wholesale_cost#9))#37,17,2) AS sum(ss_ext_wholesale_cost)#41]
Input [4]: [avg(ss_quantity#6)#34, avg(UnscaledValue(ss_ext_sales_price#8))#35, avg(UnscaledValue(ss_ext_wholesale_cost#9))#36, sum(UnscaledValue(ss_ext_wholesale_cost#9))#37]

(87) Scan parquet
Output [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_addr_sk), IsNotNull(ss_sold_date_sk), IsNotNull(ss_cdemo_sk), IsNotNull(ss_hdemo_sk), Or(Or(And(GreaterThanOrEqual(ss_net_profit,100.00),LessThanOrEqual(ss_net_profit,200.00)),And(GreaterThanOrEqual(ss_net_profit,150.00),LessThanOrEqual(ss_net_profit,300.00))),And(GreaterThanOrEqual(ss_net_profit,50.00),LessThanOrEqual(ss_net_profit,250.00))), Or(Or(And(GreaterThanOrEqual(ss_sales_price,100.00),LessThanOrEqual(ss_sales_price,150.00)),And(GreaterThanOrEqual(ss_sales_price,50.00),LessThanOrEqual(ss_sales_price,100.00))),And(GreaterThanOrEqual(ss_sales_price,150.00),LessThanOrEqual(ss_sales_price,200.00)))]
ReadSchema: struct<ss_sold_date_sk:int,ss_cdemo_sk:int,ss_hdemo_sk:int,ss_addr_sk:int,ss_store_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2),ss_ext_sales_price:decimal(7,2),ss_ext_wholesale_cost:decimal(7,2),ss_net_profit:decimal(7,2)>

(88) Filter
Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Condition : ((((((isnotnull(ss_store_sk#5) AND isnotnull(ss_addr_sk#4)) AND isnotnull(ss_sold_date_sk#1)) AND isnotnull(ss_cdemo_sk#2)) AND isnotnull(ss_hdemo_sk#3)) AND ((((ss_net_profit#10 >= 100.00) AND (ss_net_profit#10 <= 200.00)) OR ((ss_net_profit#10 >= 150.00) AND (ss_net_profit#10 <= 300.00))) OR ((ss_net_profit#10 >= 50.00) AND (ss_net_profit#10 <= 250.00)))) AND ((((ss_sales_price#7 >= 100.00) AND (ss_sales_price#7 <= 150.00)) OR ((ss_sales_price#7 >= 50.00) AND (ss_sales_price#7 <= 100.00))) OR ((ss_sales_price#7 >= 150.00) AND (ss_sales_price#7 <= 200.00))))

(89) Exchange
Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: hashpartitioning(ss_store_sk#5, 100), ENSURE_REQUIREMENTS, [plan_id=12]

(90) Sort
Input [10]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: [ss_store_sk#5 ASC NULLS FIRST], false, 0

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

(92) Filter
Input [1]: [s_store_sk#11]
Condition : isnotnull(s_store_sk#11)

(93) Exchange
Input [1]: [s_store_sk#11]
Arguments: hashpartitioning(s_store_sk#11, 100), ENSURE_REQUIREMENTS, [plan_id=13]

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

(95) SortMergeJoin
Left keys [1]: [ss_store_sk#5]
Right keys [1]: [s_store_sk#11]
Join type: Inner
Join condition: None

(96) Project
Output [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Input [11]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_store_sk#5, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10, s_store_sk#11]

(97) Exchange
Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: hashpartitioning(ss_addr_sk#4, 100), ENSURE_REQUIREMENTS, [plan_id=14]

(98) Sort
Input [9]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10]
Arguments: [ss_addr_sk#4 ASC NULLS FIRST], false, 0

(99) Scan parquet
Output [3]: [ca_address_sk#12, ca_state#13, ca_country#14]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(ca_country), EqualTo(ca_country,United States), IsNotNull(ca_address_sk), Or(Or(In(ca_state, [OH,TX]),In(ca_state, [KY,NM,OR])),In(ca_state, [MS,TX,VA]))]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_country:string>

(100) Filter
Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14]
Condition : (((isnotnull(ca_country#14) AND (ca_country#14 = United States)) AND isnotnull(ca_address_sk#12)) AND ((ca_state#13 IN (TX,OH) OR ca_state#13 IN (OR,NM,KY)) OR ca_state#13 IN (VA,TX,MS)))

(101) Project
Output [2]: [ca_address_sk#12, ca_state#13]
Input [3]: [ca_address_sk#12, ca_state#13, ca_country#14]

(102) Exchange
Input [2]: [ca_address_sk#12, ca_state#13]
Arguments: hashpartitioning(ca_address_sk#12, 100), ENSURE_REQUIREMENTS, [plan_id=15]

(103) Sort
Input [2]: [ca_address_sk#12, ca_state#13]
Arguments: [ca_address_sk#12 ASC NULLS FIRST], false, 0

(104) SortMergeJoin
Left keys [1]: [ss_addr_sk#4]
Right keys [1]: [ca_address_sk#12]
Join type: Inner
Join condition: ((((ca_state#13 IN (TX,OH) AND (ss_net_profit#10 >= 100.00)) AND (ss_net_profit#10 <= 200.00)) OR ((ca_state#13 IN (OR,NM,KY) AND (ss_net_profit#10 >= 150.00)) AND (ss_net_profit#10 <= 300.00))) OR ((ca_state#13 IN (VA,TX,MS) AND (ss_net_profit#10 >= 50.00)) AND (ss_net_profit#10 <= 250.00)))

(105) Project
Output [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Input [11]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_addr_sk#4, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, ss_net_profit#10, ca_address_sk#12, ca_state#13]

(106) Exchange
Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: hashpartitioning(ss_sold_date_sk#1, 100), ENSURE_REQUIREMENTS, [plan_id=16]

(107) Sort
Input [7]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: [ss_sold_date_sk#1 ASC NULLS FIRST], false, 0

(108) Scan parquet
Output [2]: [d_date_sk#15, d_year#16]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(109) Filter
Input [2]: [d_date_sk#15, d_year#16]
Condition : ((isnotnull(d_year#16) AND (d_year#16 = 2001)) AND isnotnull(d_date_sk#15))

(110) Project
Output [1]: [d_date_sk#15]
Input [2]: [d_date_sk#15, d_year#16]

(111) Exchange
Input [1]: [d_date_sk#15]
Arguments: hashpartitioning(d_date_sk#15, 100), ENSURE_REQUIREMENTS, [plan_id=17]

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

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

(114) Project
Output [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Input [8]: [ss_sold_date_sk#1, ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, d_date_sk#15]

(115) Exchange
Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: hashpartitioning(ss_cdemo_sk#2, 100), ENSURE_REQUIREMENTS, [plan_id=18]

(116) Sort
Input [6]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Arguments: [ss_cdemo_sk#2 ASC NULLS FIRST], false, 0

(117) Scan parquet
Output [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(cd_demo_sk), Or(Or(And(EqualTo(cd_marital_status,M),EqualTo(cd_education_status,Advanced Degree)),And(EqualTo(cd_marital_status,S),EqualTo(cd_education_status,College))),And(EqualTo(cd_marital_status,W),EqualTo(cd_education_status,2 yr Degree)))]
ReadSchema: struct<cd_demo_sk:int,cd_marital_status:string,cd_education_status:string>

(118) Filter
Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]
Condition : (isnotnull(cd_demo_sk#17) AND ((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) OR ((cd_marital_status#18 = S) AND (cd_education_status#19 = College))) OR ((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree))))

(119) Exchange
Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]
Arguments: hashpartitioning(cd_demo_sk#17, 100), ENSURE_REQUIREMENTS, [plan_id=19]

(120) Sort
Input [3]: [cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]
Arguments: [cd_demo_sk#17 ASC NULLS FIRST], false, 0

(121) SortMergeJoin
Left keys [1]: [ss_cdemo_sk#2]
Right keys [1]: [cd_demo_sk#17]
Join type: Inner
Join condition: ((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) OR ((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00))) OR ((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00)))

(122) Project
Output [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Input [9]: [ss_cdemo_sk#2, ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_demo_sk#17, cd_marital_status#18, cd_education_status#19]

(123) Exchange
Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Arguments: hashpartitioning(ss_hdemo_sk#3, 100), ENSURE_REQUIREMENTS, [plan_id=20]

(124) Sort
Input [7]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19]
Arguments: [ss_hdemo_sk#3 ASC NULLS FIRST], false, 0

(125) Scan parquet
Output [2]: [hd_demo_sk#20, hd_dep_count#21]
Batched: true
Location: InMemoryFileIndex [file:/<warehouse_dir>]
PushedFilters: [IsNotNull(hd_demo_sk), Or(EqualTo(hd_dep_count,3),EqualTo(hd_dep_count,1))]
ReadSchema: struct<hd_demo_sk:int,hd_dep_count:int>

(126) Filter
Input [2]: [hd_demo_sk#20, hd_dep_count#21]
Condition : (isnotnull(hd_demo_sk#20) AND ((hd_dep_count#21 = 3) OR (hd_dep_count#21 = 1)))

(127) Exchange
Input [2]: [hd_demo_sk#20, hd_dep_count#21]
Arguments: hashpartitioning(hd_demo_sk#20, 100), ENSURE_REQUIREMENTS, [plan_id=21]

(128) Sort
Input [2]: [hd_demo_sk#20, hd_dep_count#21]
Arguments: [hd_demo_sk#20 ASC NULLS FIRST], false, 0

(129) SortMergeJoin
Left keys [1]: [ss_hdemo_sk#3]
Right keys [1]: [hd_demo_sk#20]
Join type: Inner
Join condition: (((((((cd_marital_status#18 = M) AND (cd_education_status#19 = Advanced Degree)) AND (ss_sales_price#7 >= 100.00)) AND (ss_sales_price#7 <= 150.00)) AND (hd_dep_count#21 = 3)) OR (((((cd_marital_status#18 = S) AND (cd_education_status#19 = College)) AND (ss_sales_price#7 >= 50.00)) AND (ss_sales_price#7 <= 100.00)) AND (hd_dep_count#21 = 1))) OR (((((cd_marital_status#18 = W) AND (cd_education_status#19 = 2 yr Degree)) AND (ss_sales_price#7 >= 150.00)) AND (ss_sales_price#7 <= 200.00)) AND (hd_dep_count#21 = 1)))

(130) Project
Output [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Input [9]: [ss_hdemo_sk#3, ss_quantity#6, ss_sales_price#7, ss_ext_sales_price#8, ss_ext_wholesale_cost#9, cd_marital_status#18, cd_education_status#19, hd_demo_sk#20, hd_dep_count#21]

(131) HashAggregate
Input [3]: [ss_quantity#6, ss_ext_sales_price#8, ss_ext_wholesale_cost#9]
Keys: []
Functions [4]: [partial_avg(ss_quantity#6), partial_avg(UnscaledValue(ss_ext_sales_price#8)), partial_avg(UnscaledValue(ss_ext_wholesale_cost#9)), partial_sum(UnscaledValue(ss_ext_wholesale_cost#9))]
Aggregate Attributes [7]: [sum#25, count#26, sum#27, count#28, sum#29, count#30, sum#31]
Results [7]: [sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48]

(132) Exchange
Input [7]: [sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22]

(133) HashAggregate
Input [7]: [sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48]
Keys: []
Functions [4]: [avg(ss_quantity#6), avg(UnscaledValue(ss_ext_sales_price#8)), avg(UnscaledValue(ss_ext_wholesale_cost#9)), sum(UnscaledValue(ss_ext_wholesale_cost#9))]
Aggregate Attributes [4]: [avg(ss_quantity#6)#34, avg(UnscaledValue(ss_ext_sales_price#8))#35, avg(UnscaledValue(ss_ext_wholesale_cost#9))#36, sum(UnscaledValue(ss_ext_wholesale_cost#9))#37]
Results [4]: [avg(ss_quantity#6)#34 AS avg(ss_quantity)#38, cast((avg(UnscaledValue(ss_ext_sales_price#8))#35 / 100.0) as decimal(11,6)) AS avg(ss_ext_sales_price)#39, cast((avg(UnscaledValue(ss_ext_wholesale_cost#9))#36 / 100.0) as decimal(11,6)) AS avg(ss_ext_wholesale_cost)#40, MakeDecimal(sum(UnscaledValue(ss_ext_wholesale_cost#9))#37,17,2) AS sum(ss_ext_wholesale_cost)#41]

(134) AdaptiveSparkPlan
Output [4]: [avg(ss_quantity)#38, avg(ss_ext_sales_price)#39, avg(ss_ext_wholesale_cost)#40, sum(ss_ext_wholesale_cost)#41]
Arguments: isFinalPlan=true

