== Physical Plan ==
VeloxColumnarToRow (14)
+- ^ ProjectExecTransformer (12)
   +- ^ RegularHashAggregateExecTransformer (11)
      +- ^ RegularHashAggregateExecTransformer (10)
         +- ^ RegularHashAggregateExecTransformer (9)
            +- ^ InputIteratorTransformer (8)
               +- ColumnarExchange (6)
                  +- VeloxResizeBatches (5)
                     +- ^ ProjectExecTransformer (3)
                        +- ^ FlushableHashAggregateExecTransformer (2)
                           +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [9]: [ss_sold_time_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_sold_date_sk#9]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
ReadSchema: struct<ss_sold_time_sk:int,ss_item_sk:int,ss_customer_sk:int,ss_cdemo_sk:int,ss_hdemo_sk:int,ss_addr_sk:int,ss_store_sk:int,ss_promo_sk:int>

(2) FlushableHashAggregateExecTransformer
Input [9]: [ss_sold_time_sk#1, ss_item_sk#2, ss_customer_sk#3, ss_cdemo_sk#4, ss_hdemo_sk#5, ss_addr_sk#6, ss_store_sk#7, ss_promo_sk#8, ss_sold_date_sk#9]
Keys [1]: [ss_sold_date_sk#9]
Functions [11]: [partial_count(1), partial_count(ss_sold_date_sk#9), partial_max(ss_sold_date_sk#9), partial_max(ss_sold_time_sk#1), partial_max(ss_item_sk#2), partial_max(ss_customer_sk#3), partial_max(ss_cdemo_sk#4), partial_max(ss_hdemo_sk#5), partial_max(ss_addr_sk#6), partial_max(ss_store_sk#7), partial_max(ss_promo_sk#8)]
Aggregate Attributes [11]: [count(1)#10, count(ss_sold_date_sk#9)#11, max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14, max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17, max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20]
Results [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]

(3) ProjectExecTransformer
Output [13]: [hash(ss_sold_date_sk#9, 42) AS hash_partition_key#32, ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]

(4) WholeStageCodegenTransformer (1)
Input [13]: [hash_partition_key#32, ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]
Arguments: false

(5) VeloxResizeBatches
Input [13]: [hash_partition_key#32, ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]
Arguments: 1024, 2147483647, 10485760

(6) ColumnarExchange
Input [13]: [hash_partition_key#32, ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]
Arguments: hashpartitioning(ss_sold_date_sk#9, 1), ENSURE_REQUIREMENTS, [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31], [plan_id=1], [shuffle_writer_type=hash]

(7) InputAdapter
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]

(8) InputIteratorTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]

(9) RegularHashAggregateExecTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]
Keys [1]: [ss_sold_date_sk#9]
Functions [11]: [merge_count(1), merge_count(ss_sold_date_sk#9), merge_max(ss_sold_date_sk#9), merge_max(ss_sold_time_sk#1), merge_max(ss_item_sk#2), merge_max(ss_customer_sk#3), merge_max(ss_cdemo_sk#4), merge_max(ss_hdemo_sk#5), merge_max(ss_addr_sk#6), merge_max(ss_store_sk#7), merge_max(ss_promo_sk#8)]
Aggregate Attributes [11]: [count(1)#10, count(ss_sold_date_sk#9)#11, max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14, max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17, max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20]
Results [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]

(10) RegularHashAggregateExecTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31]
Keys: []
Functions [12]: [merge_count(1), merge_count(ss_sold_date_sk#9), merge_max(ss_sold_date_sk#9), merge_max(ss_sold_time_sk#1), merge_max(ss_item_sk#2), merge_max(ss_customer_sk#3), merge_max(ss_cdemo_sk#4), merge_max(ss_hdemo_sk#5), merge_max(ss_addr_sk#6), merge_max(ss_store_sk#7), merge_max(ss_promo_sk#8), partial_count(distinct ss_sold_date_sk#9)]
Aggregate Attributes [12]: [count(1)#10, count(ss_sold_date_sk#9)#11, max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14, max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17, max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20, count(ss_sold_date_sk#9)#33]
Results [12]: [count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31, count#34]

(11) RegularHashAggregateExecTransformer
Input [12]: [count#21, count#22, max#23, max#24, max#25, max#26, max#27, max#28, max#29, max#30, max#31, count#34]
Keys: []
Functions [12]: [count(1), count(ss_sold_date_sk#9), max(ss_sold_date_sk#9), max(ss_sold_time_sk#1), max(ss_item_sk#2), max(ss_customer_sk#3), max(ss_cdemo_sk#4), max(ss_hdemo_sk#5), max(ss_addr_sk#6), max(ss_store_sk#7), max(ss_promo_sk#8), count(distinct ss_sold_date_sk#9)]
Aggregate Attributes [12]: [count(1)#10, count(ss_sold_date_sk#9)#11, max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14, max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17, max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20, count(ss_sold_date_sk#9)#33]
Results [12]: [count(1)#10, count(ss_sold_date_sk#9)#11, max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14, max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17, max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20, count(ss_sold_date_sk#9)#33]

(12) ProjectExecTransformer
Output [12]: [count(1)#10 AS total#35, count(ss_sold_date_sk#9)#11 AS not_null_total#36, count(ss_sold_date_sk#9)#33 AS unique_days#37, max(ss_sold_date_sk#9)#12 AS max_ss_sold_date_sk#38, max(ss_sold_time_sk#1)#13 AS max_ss_sold_time_sk#39, max(ss_item_sk#2)#14 AS max_ss_item_sk#40, max(ss_customer_sk#3)#15 AS max_ss_customer_sk#41, max(ss_cdemo_sk#4)#16 AS max_ss_cdemo_sk#42, max(ss_hdemo_sk#5)#17 AS max_ss_hdemo_sk#43, max(ss_addr_sk#6)#18 AS max_ss_addr_sk#44, max(ss_store_sk#7)#19 AS max_ss_store_sk#45, max(ss_promo_sk#8)#20 AS max_ss_promo_sk#46]
Input [12]: [count(1)#10, count(ss_sold_date_sk#9)#11, max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14, max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17, max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20, count(ss_sold_date_sk#9)#33]

(13) WholeStageCodegenTransformer (2)
Input [12]: [total#35, not_null_total#36, unique_days#37, max_ss_sold_date_sk#38, max_ss_sold_time_sk#39, max_ss_item_sk#40, max_ss_customer_sk#41, max_ss_cdemo_sk#42, max_ss_hdemo_sk#43, max_ss_addr_sk#44, max_ss_store_sk#45, max_ss_promo_sk#46]
Arguments: false

(14) VeloxColumnarToRow
Input [12]: [total#35, not_null_total#36, unique_days#37, max_ss_sold_date_sk#38, max_ss_sold_time_sk#39, max_ss_item_sk#40, max_ss_customer_sk#41, max_ss_cdemo_sk#42, max_ss_hdemo_sk#43, max_ss_addr_sk#44, max_ss_store_sk#45, max_ss_promo_sk#46]

