== Physical Plan ==
VeloxColumnarToRow (78)
+- TakeOrderedAndProjectExecTransformer (77)
   +- ^ ProjectExecTransformer (75)
      +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (74)
         :- ^ ProjectExecTransformer (36)
         :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (35)
         :     :- ^ ProjectExecTransformer (27)
         :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (26)
         :     :     :- ^ ProjectExecTransformer (19)
         :     :     :  +- ^ RegularHashAggregateExecTransformer (18)
         :     :     :     +- ^ InputIteratorTransformer (17)
         :     :     :        +- ColumnarExchange (15)
         :     :     :           +- VeloxResizeBatches (14)
         :     :     :              +- ^ ProjectExecTransformer (12)
         :     :     :                 +- ^ FlushableHashAggregateExecTransformer (11)
         :     :     :                    +- ^ ProjectExecTransformer (10)
         :     :     :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (9)
         :     :     :                          :- ^ FilterExecTransformer (2)
         :     :     :                          :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
         :     :     :                          +- ^ InputIteratorTransformer (8)
         :     :     :                             +- ColumnarBroadcastExchange (6)
         :     :     :                                +- ^ FilterExecTransformer (4)
         :     :     :                                   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (3)
         :     :     +- ^ InputIteratorTransformer (25)
         :     :        +- ColumnarBroadcastExchange (23)
         :     :           +- ^ FilterExecTransformer (21)
         :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (20)
         :     +- ^ InputIteratorTransformer (34)
         :        +- ColumnarBroadcastExchange (32)
         :           +- ^ ProjectExecTransformer (30)
         :              +- ^ FilterExecTransformer (29)
         :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (28)
         +- ^ InputIteratorTransformer (73)
            +- ColumnarBroadcastExchange (71)
               +- ^ ProjectExecTransformer (69)
                  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (68)
                     :- ^ ProjectExecTransformer (60)
                     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (59)
                     :     :- ^ ProjectExecTransformer (52)
                     :     :  +- ^ RegularHashAggregateExecTransformer (51)
                     :     :     +- ^ InputIteratorTransformer (50)
                     :     :        +- ColumnarExchange (48)
                     :     :           +- VeloxResizeBatches (47)
                     :     :              +- ^ ProjectExecTransformer (45)
                     :     :                 +- ^ FlushableHashAggregateExecTransformer (44)
                     :     :                    +- ^ ProjectExecTransformer (43)
                     :     :                       +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (42)
                     :     :                          :- ^ FilterExecTransformer (38)
                     :     :                          :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (37)
                     :     :                          +- ^ InputIteratorTransformer (41)
                     :     :                             +- ReusedExchange (39)
                     :     +- ^ InputIteratorTransformer (58)
                     :        +- ColumnarBroadcastExchange (56)
                     :           +- ^ FilterExecTransformer (54)
                     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (53)
                     +- ^ InputIteratorTransformer (67)
                        +- ColumnarBroadcastExchange (65)
                           +- ^ ProjectExecTransformer (63)
                              +- ^ FilterExecTransformer (62)
                                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (61)


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

(2) FilterExecTransformer
Input [3]: [ss_store_sk#1, ss_sales_price#2, ss_sold_date_sk#3]
Arguments: isnotnull(ss_store_sk#1)

(3) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_date_sk), IsNotNull(d_week_seq)]
ReadSchema: struct<d_date_sk:int,d_week_seq:int,d_day_name:string>

(4) FilterExecTransformer
Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6]
Arguments: (isnotnull(d_date_sk#4) AND isnotnull(d_week_seq#5))

(5) WholeStageCodegenTransformer (1)
Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6]
Arguments: false

(6) ColumnarBroadcastExchange
Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(7) InputAdapter
Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6]

(8) InputIteratorTransformer
Input [3]: [d_date_sk#4, d_week_seq#5, d_day_name#6]

(9) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#3]
Right keys [1]: [d_date_sk#4]
Join type: Inner
Join condition: None

(10) ProjectExecTransformer
Output [9]: [ss_store_sk#1, d_week_seq#5, UnscaledValue(CASE WHEN (d_day_name#6 = Sunday   ) THEN ss_sales_price#2 END) AS _pre_1#7, UnscaledValue(CASE WHEN (d_day_name#6 = Monday   ) THEN ss_sales_price#2 END) AS _pre_2#8, UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday  ) THEN ss_sales_price#2 END) AS _pre_3#9, UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#2 END) AS _pre_4#10, UnscaledValue(CASE WHEN (d_day_name#6 = Thursday ) THEN ss_sales_price#2 END) AS _pre_5#11, UnscaledValue(CASE WHEN (d_day_name#6 = Friday   ) THEN ss_sales_price#2 END) AS _pre_6#12, UnscaledValue(CASE WHEN (d_day_name#6 = Saturday ) THEN ss_sales_price#2 END) AS _pre_7#13]
Input [6]: [ss_store_sk#1, ss_sales_price#2, ss_sold_date_sk#3, d_date_sk#4, d_week_seq#5, d_day_name#6]

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

(12) ProjectExecTransformer
Output [10]: [hash(d_week_seq#5, ss_store_sk#1, 42) AS hash_partition_key#28, d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]
Input [9]: [d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]

(13) WholeStageCodegenTransformer (2)
Input [10]: [hash_partition_key#28, d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]
Arguments: false

(14) VeloxResizeBatches
Input [10]: [hash_partition_key#28, d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]
Arguments: 1024, 2147483647, 10485760

(15) ColumnarExchange
Input [10]: [hash_partition_key#28, d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]
Arguments: hashpartitioning(d_week_seq#5, ss_store_sk#1, 1), ENSURE_REQUIREMENTS, [d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27], [plan_id=2], [shuffle_writer_type=hash]

(16) InputAdapter
Input [9]: [d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]

(17) InputIteratorTransformer
Input [9]: [d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]

(18) RegularHashAggregateExecTransformer
Input [9]: [d_week_seq#5, ss_store_sk#1, sum#21, sum#22, sum#23, sum#24, sum#25, sum#26, sum#27]
Keys [2]: [d_week_seq#5, ss_store_sk#1]
Functions [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday   ) THEN ss_sales_price#2 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday   ) THEN ss_sales_price#2 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday  ) THEN ss_sales_price#2 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#2 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday ) THEN ss_sales_price#2 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday   ) THEN ss_sales_price#2 END)), sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday ) THEN ss_sales_price#2 END))]
Aggregate Attributes [7]: [sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday   ) THEN ss_sales_price#2 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday   ) THEN ss_sales_price#2 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday  ) THEN ss_sales_price#2 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#2 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday ) THEN ss_sales_price#2 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday   ) THEN ss_sales_price#2 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday ) THEN ss_sales_price#2 END))#35]
Results [9]: [d_week_seq#5, ss_store_sk#1, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday   ) THEN ss_sales_price#2 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday   ) THEN ss_sales_price#2 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday  ) THEN ss_sales_price#2 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#2 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday ) THEN ss_sales_price#2 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday   ) THEN ss_sales_price#2 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday ) THEN ss_sales_price#2 END))#35]

(19) ProjectExecTransformer
Output [9]: [d_week_seq#5, ss_store_sk#1, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday   ) THEN ss_sales_price#2 END))#29,17,2) AS sun_sales#36, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday   ) THEN ss_sales_price#2 END))#30,17,2) AS mon_sales#37, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday  ) THEN ss_sales_price#2 END))#31,17,2) AS tue_sales#38, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#2 END))#32,17,2) AS wed_sales#39, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday ) THEN ss_sales_price#2 END))#33,17,2) AS thu_sales#40, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday   ) THEN ss_sales_price#2 END))#34,17,2) AS fri_sales#41, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday ) THEN ss_sales_price#2 END))#35,17,2) AS sat_sales#42]
Input [9]: [d_week_seq#5, ss_store_sk#1, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Sunday   ) THEN ss_sales_price#2 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Monday   ) THEN ss_sales_price#2 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Tuesday  ) THEN ss_sales_price#2 END))#31, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Wednesday) THEN ss_sales_price#2 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Thursday ) THEN ss_sales_price#2 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Friday   ) THEN ss_sales_price#2 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#6 = Saturday ) THEN ss_sales_price#2 END))#35]

(20) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [3]: [s_store_sk#43, s_store_id#44, s_store_name#45]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_id)]
ReadSchema: struct<s_store_sk:int,s_store_id:string,s_store_name:string>

(21) FilterExecTransformer
Input [3]: [s_store_sk#43, s_store_id#44, s_store_name#45]
Arguments: (isnotnull(s_store_sk#43) AND isnotnull(s_store_id#44))

(22) WholeStageCodegenTransformer (3)
Input [3]: [s_store_sk#43, s_store_id#44, s_store_name#45]
Arguments: false

(23) ColumnarBroadcastExchange
Input [3]: [s_store_sk#43, s_store_id#44, s_store_name#45]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=3]

(24) InputAdapter
Input [3]: [s_store_sk#43, s_store_id#44, s_store_name#45]

(25) InputIteratorTransformer
Input [3]: [s_store_sk#43, s_store_id#44, s_store_name#45]

(26) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#1]
Right keys [1]: [s_store_sk#43]
Join type: Inner
Join condition: None

(27) ProjectExecTransformer
Output [10]: [d_week_seq#5, sun_sales#36, mon_sales#37, tue_sales#38, wed_sales#39, thu_sales#40, fri_sales#41, sat_sales#42, s_store_id#44, s_store_name#45]
Input [12]: [d_week_seq#5, ss_store_sk#1, sun_sales#36, mon_sales#37, tue_sales#38, wed_sales#39, thu_sales#40, fri_sales#41, sat_sales#42, s_store_sk#43, s_store_id#44, s_store_name#45]

(28) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_month_seq#46, d_week_seq#47]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1185), LessThanOrEqual(d_month_seq,1196), IsNotNull(d_week_seq)]
ReadSchema: struct<d_month_seq:int,d_week_seq:int>

(29) FilterExecTransformer
Input [2]: [d_month_seq#46, d_week_seq#47]
Arguments: (((isnotnull(d_month_seq#46) AND (d_month_seq#46 >= 1185)) AND (d_month_seq#46 <= 1196)) AND isnotnull(d_week_seq#47))

(30) ProjectExecTransformer
Output [1]: [d_week_seq#47]
Input [2]: [d_month_seq#46, d_week_seq#47]

(31) WholeStageCodegenTransformer (4)
Input [1]: [d_week_seq#47]
Arguments: false

(32) ColumnarBroadcastExchange
Input [1]: [d_week_seq#47]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=4]

(33) InputAdapter
Input [1]: [d_week_seq#47]

(34) InputIteratorTransformer
Input [1]: [d_week_seq#47]

(35) BroadcastHashJoinExecTransformer
Left keys [1]: [d_week_seq#5]
Right keys [1]: [d_week_seq#47]
Join type: Inner
Join condition: None

(36) ProjectExecTransformer
Output [10]: [s_store_name#45 AS s_store_name1#48, d_week_seq#5 AS d_week_seq1#49, s_store_id#44 AS s_store_id1#50, sun_sales#36 AS sun_sales1#51, mon_sales#37 AS mon_sales1#52, tue_sales#38 AS tue_sales1#53, wed_sales#39 AS wed_sales1#54, thu_sales#40 AS thu_sales1#55, fri_sales#41 AS fri_sales1#56, sat_sales#42 AS sat_sales1#57]
Input [11]: [d_week_seq#5, sun_sales#36, mon_sales#37, tue_sales#38, wed_sales#39, thu_sales#40, fri_sales#41, sat_sales#42, s_store_id#44, s_store_name#45, d_week_seq#47]

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

(38) FilterExecTransformer
Input [3]: [ss_store_sk#58, ss_sales_price#59, ss_sold_date_sk#60]
Arguments: isnotnull(ss_store_sk#58)

(39) ReusedExchange [Reuses operator id: 6]
Output [3]: [d_date_sk#61, d_week_seq#62, d_day_name#63]

(40) InputAdapter
Input [3]: [d_date_sk#61, d_week_seq#62, d_day_name#63]

(41) InputIteratorTransformer
Input [3]: [d_date_sk#61, d_week_seq#62, d_day_name#63]

(42) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#60]
Right keys [1]: [d_date_sk#61]
Join type: Inner
Join condition: None

(43) ProjectExecTransformer
Output [8]: [ss_store_sk#58, d_week_seq#62, UnscaledValue(CASE WHEN (d_day_name#63 = Sunday   ) THEN ss_sales_price#59 END) AS _pre_8#64, UnscaledValue(CASE WHEN (d_day_name#63 = Monday   ) THEN ss_sales_price#59 END) AS _pre_9#65, UnscaledValue(CASE WHEN (d_day_name#63 = Wednesday) THEN ss_sales_price#59 END) AS _pre_10#66, UnscaledValue(CASE WHEN (d_day_name#63 = Thursday ) THEN ss_sales_price#59 END) AS _pre_11#67, UnscaledValue(CASE WHEN (d_day_name#63 = Friday   ) THEN ss_sales_price#59 END) AS _pre_12#68, UnscaledValue(CASE WHEN (d_day_name#63 = Saturday ) THEN ss_sales_price#59 END) AS _pre_13#69]
Input [6]: [ss_store_sk#58, ss_sales_price#59, ss_sold_date_sk#60, d_date_sk#61, d_week_seq#62, d_day_name#63]

(44) FlushableHashAggregateExecTransformer
Input [8]: [ss_store_sk#58, d_week_seq#62, _pre_8#64, _pre_9#65, _pre_10#66, _pre_11#67, _pre_12#68, _pre_13#69]
Keys [2]: [d_week_seq#62, ss_store_sk#58]
Functions [6]: [partial_sum(_pre_8#64), partial_sum(_pre_9#65), partial_sum(_pre_10#66), partial_sum(_pre_11#67), partial_sum(_pre_12#68), partial_sum(_pre_13#69)]
Aggregate Attributes [6]: [sum#70, sum#71, sum#72, sum#73, sum#74, sum#75]
Results [8]: [d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]

(45) ProjectExecTransformer
Output [9]: [hash(d_week_seq#62, ss_store_sk#58, 42) AS hash_partition_key#82, d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]
Input [8]: [d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]

(46) WholeStageCodegenTransformer (6)
Input [9]: [hash_partition_key#82, d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]
Arguments: false

(47) VeloxResizeBatches
Input [9]: [hash_partition_key#82, d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]
Arguments: 1024, 2147483647, 10485760

(48) ColumnarExchange
Input [9]: [hash_partition_key#82, d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]
Arguments: hashpartitioning(d_week_seq#62, ss_store_sk#58, 1), ENSURE_REQUIREMENTS, [d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81], [plan_id=5], [shuffle_writer_type=hash]

(49) InputAdapter
Input [8]: [d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]

(50) InputIteratorTransformer
Input [8]: [d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]

(51) RegularHashAggregateExecTransformer
Input [8]: [d_week_seq#62, ss_store_sk#58, sum#76, sum#77, sum#78, sum#79, sum#80, sum#81]
Keys [2]: [d_week_seq#62, ss_store_sk#58]
Functions [6]: [sum(UnscaledValue(CASE WHEN (d_day_name#63 = Sunday   ) THEN ss_sales_price#59 END)), sum(UnscaledValue(CASE WHEN (d_day_name#63 = Monday   ) THEN ss_sales_price#59 END)), sum(UnscaledValue(CASE WHEN (d_day_name#63 = Wednesday) THEN ss_sales_price#59 END)), sum(UnscaledValue(CASE WHEN (d_day_name#63 = Thursday ) THEN ss_sales_price#59 END)), sum(UnscaledValue(CASE WHEN (d_day_name#63 = Friday   ) THEN ss_sales_price#59 END)), sum(UnscaledValue(CASE WHEN (d_day_name#63 = Saturday ) THEN ss_sales_price#59 END))]
Aggregate Attributes [6]: [sum(UnscaledValue(CASE WHEN (d_day_name#63 = Sunday   ) THEN ss_sales_price#59 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Monday   ) THEN ss_sales_price#59 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Wednesday) THEN ss_sales_price#59 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Thursday ) THEN ss_sales_price#59 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Friday   ) THEN ss_sales_price#59 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Saturday ) THEN ss_sales_price#59 END))#35]
Results [8]: [d_week_seq#62, ss_store_sk#58, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Sunday   ) THEN ss_sales_price#59 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Monday   ) THEN ss_sales_price#59 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Wednesday) THEN ss_sales_price#59 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Thursday ) THEN ss_sales_price#59 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Friday   ) THEN ss_sales_price#59 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Saturday ) THEN ss_sales_price#59 END))#35]

(52) ProjectExecTransformer
Output [8]: [d_week_seq#62, ss_store_sk#58, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#63 = Sunday   ) THEN ss_sales_price#59 END))#29,17,2) AS sun_sales#83, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#63 = Monday   ) THEN ss_sales_price#59 END))#30,17,2) AS mon_sales#84, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#63 = Wednesday) THEN ss_sales_price#59 END))#32,17,2) AS wed_sales#85, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#63 = Thursday ) THEN ss_sales_price#59 END))#33,17,2) AS thu_sales#86, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#63 = Friday   ) THEN ss_sales_price#59 END))#34,17,2) AS fri_sales#87, MakeDecimal(sum(UnscaledValue(CASE WHEN (d_day_name#63 = Saturday ) THEN ss_sales_price#59 END))#35,17,2) AS sat_sales#88]
Input [8]: [d_week_seq#62, ss_store_sk#58, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Sunday   ) THEN ss_sales_price#59 END))#29, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Monday   ) THEN ss_sales_price#59 END))#30, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Wednesday) THEN ss_sales_price#59 END))#32, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Thursday ) THEN ss_sales_price#59 END))#33, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Friday   ) THEN ss_sales_price#59 END))#34, sum(UnscaledValue(CASE WHEN (d_day_name#63 = Saturday ) THEN ss_sales_price#59 END))#35]

(53) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [2]: [s_store_sk#89, s_store_id#90]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_store_sk), IsNotNull(s_store_id)]
ReadSchema: struct<s_store_sk:int,s_store_id:string>

(54) FilterExecTransformer
Input [2]: [s_store_sk#89, s_store_id#90]
Arguments: (isnotnull(s_store_sk#89) AND isnotnull(s_store_id#90))

(55) WholeStageCodegenTransformer (7)
Input [2]: [s_store_sk#89, s_store_id#90]
Arguments: false

(56) ColumnarBroadcastExchange
Input [2]: [s_store_sk#89, s_store_id#90]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=6]

(57) InputAdapter
Input [2]: [s_store_sk#89, s_store_id#90]

(58) InputIteratorTransformer
Input [2]: [s_store_sk#89, s_store_id#90]

(59) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#58]
Right keys [1]: [s_store_sk#89]
Join type: Inner
Join condition: None

(60) ProjectExecTransformer
Output [8]: [d_week_seq#62, sun_sales#83, mon_sales#84, wed_sales#85, thu_sales#86, fri_sales#87, sat_sales#88, s_store_id#90]
Input [10]: [d_week_seq#62, ss_store_sk#58, sun_sales#83, mon_sales#84, wed_sales#85, thu_sales#86, fri_sales#87, sat_sales#88, s_store_sk#89, s_store_id#90]

(61) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_month_seq#91, d_week_seq#92]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1197), LessThanOrEqual(d_month_seq,1208), IsNotNull(d_week_seq)]
ReadSchema: struct<d_month_seq:int,d_week_seq:int>

(62) FilterExecTransformer
Input [2]: [d_month_seq#91, d_week_seq#92]
Arguments: (((isnotnull(d_month_seq#91) AND (d_month_seq#91 >= 1197)) AND (d_month_seq#91 <= 1208)) AND isnotnull(d_week_seq#92))

(63) ProjectExecTransformer
Output [1]: [d_week_seq#92]
Input [2]: [d_month_seq#91, d_week_seq#92]

(64) WholeStageCodegenTransformer (8)
Input [1]: [d_week_seq#92]
Arguments: false

(65) ColumnarBroadcastExchange
Input [1]: [d_week_seq#92]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]

(66) InputAdapter
Input [1]: [d_week_seq#92]

(67) InputIteratorTransformer
Input [1]: [d_week_seq#92]

(68) BroadcastHashJoinExecTransformer
Left keys [1]: [d_week_seq#62]
Right keys [1]: [d_week_seq#92]
Join type: Inner
Join condition: None

(69) ProjectExecTransformer
Output [8]: [d_week_seq#62 AS d_week_seq2#93, s_store_id#90 AS s_store_id2#94, sun_sales#83 AS sun_sales2#95, mon_sales#84 AS mon_sales2#96, wed_sales#85 AS wed_sales2#97, thu_sales#86 AS thu_sales2#98, fri_sales#87 AS fri_sales2#99, sat_sales#88 AS sat_sales2#100]
Input [9]: [d_week_seq#62, sun_sales#83, mon_sales#84, wed_sales#85, thu_sales#86, fri_sales#87, sat_sales#88, s_store_id#90, d_week_seq#92]

(70) WholeStageCodegenTransformer (9)
Input [8]: [d_week_seq2#93, s_store_id2#94, sun_sales2#95, mon_sales2#96, wed_sales2#97, thu_sales2#98, fri_sales2#99, sat_sales2#100]
Arguments: false

(71) ColumnarBroadcastExchange
Input [8]: [d_week_seq2#93, s_store_id2#94, sun_sales2#95, mon_sales2#96, wed_sales2#97, thu_sales2#98, fri_sales2#99, sat_sales2#100]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], (input[0, int, true] - 52)),false), [plan_id=8]

(72) InputAdapter
Input [8]: [d_week_seq2#93, s_store_id2#94, sun_sales2#95, mon_sales2#96, wed_sales2#97, thu_sales2#98, fri_sales2#99, sat_sales2#100]

(73) InputIteratorTransformer
Input [8]: [d_week_seq2#93, s_store_id2#94, sun_sales2#95, mon_sales2#96, wed_sales2#97, thu_sales2#98, fri_sales2#99, sat_sales2#100]

(74) BroadcastHashJoinExecTransformer
Left keys [2]: [s_store_id1#50, d_week_seq1#49]
Right keys [2]: [s_store_id2#94, (d_week_seq2#93 - 52)]
Join type: Inner
Join condition: None

(75) ProjectExecTransformer
Output [10]: [s_store_name1#48, s_store_id1#50, d_week_seq1#49, (sun_sales1#51 / sun_sales2#95) AS (sun_sales1 / sun_sales2)#101, (mon_sales1#52 / mon_sales2#96) AS (mon_sales1 / mon_sales2)#102, (tue_sales1#53 / tue_sales1#53) AS (tue_sales1 / tue_sales1)#103, (wed_sales1#54 / wed_sales2#97) AS (wed_sales1 / wed_sales2)#104, (thu_sales1#55 / thu_sales2#98) AS (thu_sales1 / thu_sales2)#105, (fri_sales1#56 / fri_sales2#99) AS (fri_sales1 / fri_sales2)#106, (sat_sales1#57 / sat_sales2#100) AS (sat_sales1 / sat_sales2)#107]
Input [18]: [s_store_name1#48, d_week_seq1#49, s_store_id1#50, sun_sales1#51, mon_sales1#52, tue_sales1#53, wed_sales1#54, thu_sales1#55, fri_sales1#56, sat_sales1#57, d_week_seq2#93, s_store_id2#94, sun_sales2#95, mon_sales2#96, wed_sales2#97, thu_sales2#98, fri_sales2#99, sat_sales2#100]

(76) WholeStageCodegenTransformer (10)
Input [10]: [s_store_name1#48, s_store_id1#50, d_week_seq1#49, (sun_sales1 / sun_sales2)#101, (mon_sales1 / mon_sales2)#102, (tue_sales1 / tue_sales1)#103, (wed_sales1 / wed_sales2)#104, (thu_sales1 / thu_sales2)#105, (fri_sales1 / fri_sales2)#106, (sat_sales1 / sat_sales2)#107]
Arguments: false

(77) TakeOrderedAndProjectExecTransformer
Input [10]: [s_store_name1#48, s_store_id1#50, d_week_seq1#49, (sun_sales1 / sun_sales2)#101, (mon_sales1 / mon_sales2)#102, (tue_sales1 / tue_sales1)#103, (wed_sales1 / wed_sales2)#104, (thu_sales1 / thu_sales2)#105, (fri_sales1 / fri_sales2)#106, (sat_sales1 / sat_sales2)#107]
Arguments: 100, [s_store_name1#48 ASC NULLS FIRST, s_store_id1#50 ASC NULLS FIRST, d_week_seq1#49 ASC NULLS FIRST], [s_store_name1#48, s_store_id1#50, d_week_seq1#49, (sun_sales1 / sun_sales2)#101, (mon_sales1 / mon_sales2)#102, (tue_sales1 / tue_sales1)#103, (wed_sales1 / wed_sales2)#104, (thu_sales1 / thu_sales2)#105, (fri_sales1 / fri_sales2)#106, (sat_sales1 / sat_sales2)#107], 0

(78) VeloxColumnarToRow
Input [10]: [s_store_name1#48, s_store_id1#50, d_week_seq1#49, (sun_sales1 / sun_sales2)#101, (mon_sales1 / mon_sales2)#102, (tue_sales1 / tue_sales1)#103, (wed_sales1 / wed_sales2)#104, (thu_sales1 / thu_sales2)#105, (fri_sales1 / fri_sales2)#106, (sat_sales1 / sat_sales2)#107]

