== Physical Plan ==
VeloxColumnarToRow (32)
+- TakeOrderedAndProjectExecTransformer (31)
   +- ^ ProjectExecTransformer (29)
      +- ^ RegularHashAggregateExecTransformer (28)
         +- ^ InputIteratorTransformer (27)
            +- ColumnarExchange (25)
               +- VeloxResizeBatches (24)
                  +- ^ ProjectExecTransformer (22)
                     +- ^ FlushableHashAggregateExecTransformer (21)
                        +- ^ ProjectExecTransformer (20)
                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (19)
                              :- ^ ProjectExecTransformer (11)
                              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (10)
                              :     :- ^ ProjectExecTransformer (3)
                              :     :  +- ^ FilterExecTransformer (2)
                              :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (1)
                              :     +- ^ InputIteratorTransformer (9)
                              :        +- ColumnarBroadcastExchange (7)
                              :           +- ^ FilterExecTransformer (5)
                              :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (4)
                              +- ^ InputIteratorTransformer (18)
                                 +- ColumnarBroadcastExchange (16)
                                    +- ^ ProjectExecTransformer (14)
                                       +- ^ FilterExecTransformer (13)
                                          +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (12)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#1, d_year#2, d_day_name#3]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_day_name:string>

(2) FilterExecTransformer
Input [3]: [d_date_sk#1, d_year#2, d_day_name#3]
Arguments: ((isnotnull(d_year#2) AND (d_year#2 = 2000)) AND isnotnull(d_date_sk#1))

(3) ProjectExecTransformer
Output [2]: [d_date_sk#1, d_day_name#3]
Input [3]: [d_date_sk#1, d_year#2, d_day_name#3]

(4) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [3]: [ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#6), dynamicpruningexpression(true)]
PushedFilters: [IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_store_sk:int,ss_sales_price:decimal(7,2)>

(5) FilterExecTransformer
Input [3]: [ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]
Arguments: isnotnull(ss_store_sk#4)

(6) WholeStageCodegenTransformer (1)
Input [3]: [ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]
Arguments: false

(7) ColumnarBroadcastExchange
Input [3]: [ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[2, int, true] as bigint)),false), [plan_id=1]

(8) InputAdapter
Input [3]: [ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]

(9) InputIteratorTransformer
Input [3]: [ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]

(10) BroadcastHashJoinExecTransformer
Left keys [1]: [d_date_sk#1]
Right keys [1]: [ss_sold_date_sk#6]
Join type: Inner
Join condition: None

(11) ProjectExecTransformer
Output [3]: [d_day_name#3, ss_store_sk#4, ss_sales_price#5]
Input [5]: [d_date_sk#1, d_day_name#3, ss_store_sk#4, ss_sales_price#5, ss_sold_date_sk#6]

(12) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_gmt_offset), EqualTo(s_gmt_offset,-5.00), IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_store_id:string,s_store_name:string,s_gmt_offset:decimal(5,2)>

(13) FilterExecTransformer
Input [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10]
Arguments: ((isnotnull(s_gmt_offset#10) AND (s_gmt_offset#10 = -5.00)) AND isnotnull(s_store_sk#7))

(14) ProjectExecTransformer
Output [3]: [s_store_sk#7, s_store_id#8, s_store_name#9]
Input [4]: [s_store_sk#7, s_store_id#8, s_store_name#9, s_gmt_offset#10]

(15) WholeStageCodegenTransformer (2)
Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9]
Arguments: false

(16) ColumnarBroadcastExchange
Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=2]

(17) InputAdapter
Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9]

(18) InputIteratorTransformer
Input [3]: [s_store_sk#7, s_store_id#8, s_store_name#9]

(19) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#4]
Right keys [1]: [s_store_sk#7]
Join type: Inner
Join condition: None

(20) ProjectExecTransformer
Output [9]: [s_store_id#8, s_store_name#9, UnscaledValue(CASE WHEN (d_day_name#3 = Sunday   ) THEN ss_sales_price#5 END) AS _pre_1#11, UnscaledValue(CASE WHEN (d_day_name#3 = Monday   ) THEN ss_sales_price#5 END) AS _pre_2#12, UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday  ) THEN ss_sales_price#5 END) AS _pre_3#13, UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#5 END) AS _pre_4#14, UnscaledValue(CASE WHEN (d_day_name#3 = Thursday ) THEN ss_sales_price#5 END) AS _pre_5#15, UnscaledValue(CASE WHEN (d_day_name#3 = Friday   ) THEN ss_sales_price#5 END) AS _pre_6#16, UnscaledValue(CASE WHEN (d_day_name#3 = Saturday ) THEN ss_sales_price#5 END) AS _pre_7#17]
Input [6]: [d_day_name#3, ss_store_sk#4, ss_sales_price#5, s_store_sk#7, s_store_id#8, s_store_name#9]

(21) FlushableHashAggregateExecTransformer
Input [9]: [s_store_id#8, s_store_name#9, _pre_1#11, _pre_2#12, _pre_3#13, _pre_4#14, _pre_5#15, _pre_6#16, _pre_7#17]
Keys [2]: [s_store_name#9, s_store_id#8]
Functions [7]: [partial_sum(_pre_1#11), partial_sum(_pre_2#12), partial_sum(_pre_3#13), partial_sum(_pre_4#14), partial_sum(_pre_5#15), partial_sum(_pre_6#16), partial_sum(_pre_7#17)]
Aggregate Attributes [7]: [sum#18, sum#19, sum#20, sum#21, sum#22, sum#23, sum#24]
Results [9]: [s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]

(22) ProjectExecTransformer
Output [10]: [hash(s_store_name#9, s_store_id#8, 42) AS hash_partition_key#32, s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]
Input [9]: [s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]

(23) WholeStageCodegenTransformer (3)
Input [10]: [hash_partition_key#32, s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]
Arguments: false

(24) VeloxResizeBatches
Input [10]: [hash_partition_key#32, s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]
Arguments: 1024, 2147483647, 10485760

(25) ColumnarExchange
Input [10]: [hash_partition_key#32, s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]
Arguments: hashpartitioning(s_store_name#9, s_store_id#8, 1), ENSURE_REQUIREMENTS, [s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31], [plan_id=3], [shuffle_writer_type=hash]

(26) InputAdapter
Input [9]: [s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]

(27) InputIteratorTransformer
Input [9]: [s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]

(28) RegularHashAggregateExecTransformer
Input [9]: [s_store_name#9, s_store_id#8, sum#25, sum#26, sum#27, sum#28, sum#29, sum#30, sum#31]
Keys [2]: [s_store_name#9, s_store_id#8]
Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday   ) THEN ss_sales_price#5 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday   ) THEN ss_sales_price#5 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday  ) THEN ss_sales_price#5 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#5 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday ) THEN ss_sales_price#5 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday   ) THEN ss_sales_price#5 END)), sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday ) THEN ss_sales_price#5 END))]
Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday   ) THEN ss_sales_price#5 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday   ) THEN ss_sales_price#5 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday  ) THEN ss_sales_price#5 END))#35, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#5 END))#36, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday ) THEN ss_sales_price#5 END))#37, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday   ) THEN ss_sales_price#5 END))#38, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday ) THEN ss_sales_price#5 END))#39]
Results [9]: [s_store_name#9, s_store_id#8, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday   ) THEN ss_sales_price#5 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday   ) THEN ss_sales_price#5 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday  ) THEN ss_sales_price#5 END))#35, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#5 END))#36, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday ) THEN ss_sales_price#5 END))#37, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday   ) THEN ss_sales_price#5 END))#38, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday ) THEN ss_sales_price#5 END))#39]

(29) ProjectExecTransformer
Output [9]: [s_store_name#9, s_store_id#8, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday   ) THEN ss_sales_price#5 END))#33,17,2) AS sun_sales#40, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday   ) THEN ss_sales_price#5 END))#34,17,2) AS mon_sales#41, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday  ) THEN ss_sales_price#5 END))#35,17,2) AS tue_sales#42, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#5 END))#36,17,2) AS wed_sales#43, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday ) THEN ss_sales_price#5 END))#37,17,2) AS thu_sales#44, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday   ) THEN ss_sales_price#5 END))#38,17,2) AS fri_sales#45, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday ) THEN ss_sales_price#5 END))#39,17,2) AS sat_sales#46]
Input [9]: [s_store_name#9, s_store_id#8, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Sunday   ) THEN ss_sales_price#5 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Monday   ) THEN ss_sales_price#5 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Tuesday  ) THEN ss_sales_price#5 END))#35, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Wednesday) THEN ss_sales_price#5 END))#36, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Thursday ) THEN ss_sales_price#5 END))#37, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Friday   ) THEN ss_sales_price#5 END))#38, sum(UnscaledValue(CASE WHEN (d_day_name#3 = Saturday ) THEN ss_sales_price#5 END))#39]

(30) WholeStageCodegenTransformer (4)
Input [9]: [s_store_name#9, s_store_id#8, sun_sales#40, mon_sales#41, tue_sales#42, wed_sales#43, thu_sales#44, fri_sales#45, sat_sales#46]
Arguments: false

(31) TakeOrderedAndProjectExecTransformer
Input [9]: [s_store_name#9, s_store_id#8, sun_sales#40, mon_sales#41, tue_sales#42, wed_sales#43, thu_sales#44, fri_sales#45, sat_sales#46]
Arguments: 100, [s_store_name#9 ASC NULLS FIRST, s_store_id#8 ASC NULLS FIRST, sun_sales#40 ASC NULLS FIRST, mon_sales#41 ASC NULLS FIRST, tue_sales#42 ASC NULLS FIRST, wed_sales#43 ASC NULLS FIRST, thu_sales#44 ASC NULLS FIRST, fri_sales#45 ASC NULLS FIRST, sat_sales#46 ASC NULLS FIRST], [s_store_name#9, s_store_id#8, sun_sales#40, mon_sales#41, tue_sales#42, wed_sales#43, thu_sales#44, fri_sales#45, sat_sales#46], 0

(32) VeloxColumnarToRow
Input [9]: [s_store_name#9, s_store_id#8, sun_sales#40, mon_sales#41, tue_sales#42, wed_sales#43, thu_sales#44, fri_sales#45, sat_sales#46]

