== Physical Plan ==
AdaptiveSparkPlan (134)
+- == Final Plan ==
   * HashAggregate (86)
   +- ShuffleQueryStage (85), Statistics(X)
      +- Exchange (84)
         +- * HashAggregate (83)
            +- * Project (82)
               +- * SortMergeJoin Inner (81)
                  :- NativeSort (72)
                  :  +- InputAdapter (71)
                  :     +- AQEShuffleRead (70)
                  :        +- ShuffleQueryStage (69), Statistics(X)
                  :           +- NativeShuffleExchange (68)
                  :              +- ConvertToNative (67)
                  :                 +- * Project (66)
                  :                    +- * SortMergeJoin Inner (65)
                  :                       :- NativeSort (56)
                  :                       :  +- InputAdapter (55)
                  :                       :     +- AQEShuffleRead (54)
                  :                       :        +- ShuffleQueryStage (53), Statistics(X)
                  :                       :           +- NativeShuffleExchange (52)
                  :                       :              +- NativeProject (51)
                  :                       :                 +- NativeSortMergeJoin Inner (50)
                  :                       :                    :- NativeSort (40)
                  :                       :                    :  +- InputAdapter (39)
                  :                       :                    :     +- AQEShuffleRead (38)
                  :                       :                    :        +- ShuffleQueryStage (37), Statistics(X)
                  :                       :                    :           +- NativeShuffleExchange (36)
                  :                       :                    :              +- ConvertToNative (35)
                  :                       :                    :                 +- * Project (34)
                  :                       :                    :                    +- * SortMergeJoin 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 (49)
                  :                       :                       +- InputAdapter (48)
                  :                       :                          +- AQEShuffleRead (47)
                  :                       :                             +- ShuffleQueryStage (46), Statistics(X)
                  :                       :                                +- NativeShuffleExchange (45)
                  :                       :                                   +- NativeProject (44)
                  :                       :                                      +- NativeFilter (43)
                  :                       :                                         +- InputAdapter (42)
                  :                       :                                            +- NativeParquetScan  (41)
                  :                       +- NativeSort (64)
                  :                          +- InputAdapter (63)
                  :                             +- AQEShuffleRead (62)
                  :                                +- ShuffleQueryStage (61), Statistics(X)
                  :                                   +- NativeShuffleExchange (60)
                  :                                      +- NativeFilter (59)
                  :                                         +- InputAdapter (58)
                  :                                            +- NativeParquetScan  (57)
                  +- NativeSort (80)
                     +- InputAdapter (79)
                        +- AQEShuffleRead (78)
                           +- ShuffleQueryStage (77), Statistics(X)
                              +- NativeShuffleExchange (76)
                                 +- NativeFilter (75)
                                    +- InputAdapter (74)
                                       +- NativeParquetScan  (73)
+- == 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) SortMergeJoin [codegen id : X]
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) Project [codegen id : X]
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) ConvertToNative
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]

(36) 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]

(37) 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

(38) 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

(39) 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]

(40) 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>

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

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

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

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

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

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

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

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

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

(51) 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]

(52) 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]

(53) 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

(54) 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

(55) 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]

(56) 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>

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

(59) 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))))

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

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

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

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

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

(65) SortMergeJoin [codegen id : X]
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)))

(66) Project [codegen id : X]
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]

(67) ConvertToNative
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]

(68) 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]

(69) 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

(70) 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

(71) 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]

(72) 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>

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

(75) 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)))

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

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

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

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

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

(81) SortMergeJoin [codegen id : X]
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)))

(82) Project [codegen id : X]
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]

(83) HashAggregate [codegen id : X]
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#22, count#23, sum#24, count#25, sum#26, count#27, sum#28]
Results [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]

(84) Exchange
Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=11]

(85) ShuffleQueryStage
Output [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]
Arguments: X

(86) HashAggregate [codegen id : X]
Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]
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)#36, avg(UnscaledValue(ss_ext_sales_price#8))#37, avg(UnscaledValue(ss_ext_wholesale_cost#9))#38, sum(UnscaledValue(ss_ext_wholesale_cost#9))#39]
Results [4]: [avg(ss_quantity#6)#36 AS avg(ss_quantity)#40, cast((avg(UnscaledValue(ss_ext_sales_price#8))#37 / 100.0) as decimal(11,6)) AS avg(ss_ext_sales_price)#41, cast((avg(UnscaledValue(ss_ext_wholesale_cost#9))#38 / 100.0) as decimal(11,6)) AS avg(ss_ext_wholesale_cost)#42, MakeDecimal(sum(UnscaledValue(ss_ext_wholesale_cost#9))#39,17,2) AS sum(ss_ext_wholesale_cost)#43]

(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#22, count#23, sum#24, count#25, sum#26, count#27, sum#28]
Results [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]

(132) Exchange
Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=22]

(133) HashAggregate
Input [7]: [sum#29, count#30, sum#31, count#32, sum#33, count#34, sum#35]
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)#36, avg(UnscaledValue(ss_ext_sales_price#8))#37, avg(UnscaledValue(ss_ext_wholesale_cost#9))#38, sum(UnscaledValue(ss_ext_wholesale_cost#9))#39]
Results [4]: [avg(ss_quantity#6)#36 AS avg(ss_quantity)#40, cast((avg(UnscaledValue(ss_ext_sales_price#8))#37 / 100.0) as decimal(11,6)) AS avg(ss_ext_sales_price)#41, cast((avg(UnscaledValue(ss_ext_wholesale_cost#9))#38 / 100.0) as decimal(11,6)) AS avg(ss_ext_wholesale_cost)#42, MakeDecimal(sum(UnscaledValue(ss_ext_wholesale_cost#9))#39,17,2) AS sum(ss_ext_wholesale_cost)#43]

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

