== Physical Plan ==
VeloxColumnarToRow (80)
+- TakeOrderedAndProjectExecTransformer (79)
   +- ^ ProjectExecTransformer (77)
      +- ^ RegularHashAggregateExecTransformer (76)
         +- ^ InputIteratorTransformer (75)
            +- ColumnarExchange (73)
               +- VeloxResizeBatches (72)
                  +- ^ ProjectExecTransformer (70)
                     +- ^ FlushableHashAggregateExecTransformer (69)
                        +- ^ ProjectExecTransformer (68)
                           +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (67)
                              :- ^ InputIteratorTransformer (54)
                              :  +- ColumnarExchange (52)
                              :     +- VeloxResizeBatches (51)
                              :        +- ^ ProjectExecTransformer (49)
                              :           +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (48)
                              :              :- ^ InputIteratorTransformer (35)
                              :              :  +- ColumnarExchange (33)
                              :              :     +- VeloxResizeBatches (32)
                              :              :        +- ^ ProjectExecTransformer (30)
                              :              :           +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (29)
                              :              :              :- ^ InputIteratorTransformer (20)
                              :              :              :  +- ColumnarExchange (18)
                              :              :              :     +- VeloxResizeBatches (17)
                              :              :              :        +- ^ ProjectExecTransformer (15)
                              :              :              :           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (14)
                              :              :              :              :- ^ ProjectExecTransformer (7)
                              :              :              :              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (6)
                              :              :              :              :     :- ^ FilterExecTransformer (2)
                              :              :              :              :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
                              :              :              :              :     +- ^ InputIteratorTransformer (5)
                              :              :              :              :        +- ReusedExchange (3)
                              :              :              :              +- ^ InputIteratorTransformer (13)
                              :              :              :                 +- ColumnarBroadcastExchange (11)
                              :              :              :                    +- ^ FilterExecTransformer (9)
                              :              :              :                       +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (8)
                              :              :              +- ^ InputIteratorTransformer (28)
                              :              :                 +- ColumnarExchange (26)
                              :              :                    +- VeloxResizeBatches (25)
                              :              :                       +- ^ ProjectExecTransformer (23)
                              :              :                          +- ^ FilterExecTransformer (22)
                              :              :                             +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (21)
                              :              +- ^ InputIteratorTransformer (47)
                              :                 +- ColumnarExchange (45)
                              :                    +- VeloxResizeBatches (44)
                              :                       +- ^ ProjectExecTransformer (42)
                              :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (41)
                              :                             :- ^ FilterExecTransformer (37)
                              :                             :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_returns (36)
                              :                             +- ^ InputIteratorTransformer (40)
                              :                                +- ReusedExchange (38)
                              +- ^ InputIteratorTransformer (66)
                                 +- ColumnarExchange (64)
                                    +- VeloxResizeBatches (63)
                                       +- ^ ProjectExecTransformer (61)
                                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (60)
                                             :- ^ FilterExecTransformer (56)
                                             :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (55)
                                             +- ^ InputIteratorTransformer (59)
                                                +- ReusedExchange (57)


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

(2) FilterExecTransformer
Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_quantity#5, ss_sold_date_sk#6]
Arguments: (((isnotnull(ss_customer_sk#2) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_ticket_number#4)) AND isnotnull(ss_store_sk#3))

(3) ReusedExchange [Reuses operator id: 85]
Output [1]: [d_date_sk#8]

(4) InputAdapter
Input [1]: [d_date_sk#8]

(5) InputIteratorTransformer
Input [1]: [d_date_sk#8]

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

(7) ProjectExecTransformer
Output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_quantity#5]
Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_quantity#5, ss_sold_date_sk#6, d_date_sk#8]

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

(9) FilterExecTransformer
Input [2]: [s_store_sk#9, s_state#10]
Arguments: isnotnull(s_store_sk#9)

(10) WholeStageCodegenTransformer (3)
Input [2]: [s_store_sk#9, s_state#10]
Arguments: false

(11) ColumnarBroadcastExchange
Input [2]: [s_store_sk#9, s_state#10]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(12) InputAdapter
Input [2]: [s_store_sk#9, s_state#10]

(13) InputIteratorTransformer
Input [2]: [s_store_sk#9, s_state#10]

(14) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#3]
Right keys [1]: [s_store_sk#9]
Join type: Inner
Join condition: None

(15) ProjectExecTransformer
Output [6]: [hash(ss_item_sk#1, 42) AS hash_partition_key#11, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10]
Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_quantity#5, s_store_sk#9, s_state#10]

(16) WholeStageCodegenTransformer (4)
Input [6]: [hash_partition_key#11, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10]
Arguments: false

(17) VeloxResizeBatches
Input [6]: [hash_partition_key#11, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10]
Arguments: 1024, 2147483647, 10485760

(18) ColumnarExchange
Input [6]: [hash_partition_key#11, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10]
Arguments: hashpartitioning(ss_item_sk#1, 1), ENSURE_REQUIREMENTS, [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10], [plan_id=2], [shuffle_writer_type=hash]

(19) InputAdapter
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10]

(20) InputIteratorTransformer
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10]

(21) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [3]: [i_item_sk#12, i_item_id#13, i_item_desc#14]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_id:string,i_item_desc:string>

(22) FilterExecTransformer
Input [3]: [i_item_sk#12, i_item_id#13, i_item_desc#14]
Arguments: isnotnull(i_item_sk#12)

(23) ProjectExecTransformer
Output [4]: [hash(i_item_sk#12, 42) AS hash_partition_key#15, i_item_sk#12, i_item_id#13, i_item_desc#14]
Input [3]: [i_item_sk#12, i_item_id#13, i_item_desc#14]

(24) WholeStageCodegenTransformer (5)
Input [4]: [hash_partition_key#15, i_item_sk#12, i_item_id#13, i_item_desc#14]
Arguments: false

(25) VeloxResizeBatches
Input [4]: [hash_partition_key#15, i_item_sk#12, i_item_id#13, i_item_desc#14]
Arguments: 1024, 2147483647, 10485760

(26) ColumnarExchange
Input [4]: [hash_partition_key#15, i_item_sk#12, i_item_id#13, i_item_desc#14]
Arguments: hashpartitioning(i_item_sk#12, 1), ENSURE_REQUIREMENTS, [i_item_sk#12, i_item_id#13, i_item_desc#14], [plan_id=3], [shuffle_writer_type=hash]

(27) InputAdapter
Input [3]: [i_item_sk#12, i_item_id#13, i_item_desc#14]

(28) InputIteratorTransformer
Input [3]: [i_item_sk#12, i_item_id#13, i_item_desc#14]

(29) ShuffledHashJoinExecTransformer
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [i_item_sk#12]
Join type: Inner
Join condition: None

(30) ProjectExecTransformer
Output [8]: [hash(ss_customer_sk#2, ss_item_sk#1, ss_ticket_number#4, 42) AS hash_partition_key#16, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14]
Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_sk#12, i_item_id#13, i_item_desc#14]

(31) WholeStageCodegenTransformer (6)
Input [8]: [hash_partition_key#16, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14]
Arguments: false

(32) VeloxResizeBatches
Input [8]: [hash_partition_key#16, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14]
Arguments: 1024, 2147483647, 10485760

(33) ColumnarExchange
Input [8]: [hash_partition_key#16, ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14]
Arguments: hashpartitioning(ss_customer_sk#2, ss_item_sk#1, ss_ticket_number#4, 1), ENSURE_REQUIREMENTS, [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14], [plan_id=4], [shuffle_writer_type=hash]

(34) InputAdapter
Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14]

(35) InputIteratorTransformer
Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14]

(36) FileSourceScanExecTransformer parquet spark_catalog.default.store_returns
Output [5]: [sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20, sr_returned_date_sk#21]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(sr_returned_date_sk#21), dynamicpruningexpression(sr_returned_date_sk#21 IN dynamicpruning#22)]
PushedFilters: [IsNotNull(sr_customer_sk), IsNotNull(sr_item_sk), IsNotNull(sr_ticket_number)]
ReadSchema: struct<sr_item_sk:int,sr_customer_sk:int,sr_ticket_number:int,sr_return_quantity:int>

(37) FilterExecTransformer
Input [5]: [sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20, sr_returned_date_sk#21]
Arguments: ((isnotnull(sr_customer_sk#18) AND isnotnull(sr_item_sk#17)) AND isnotnull(sr_ticket_number#19))

(38) ReusedExchange [Reuses operator id: 90]
Output [1]: [d_date_sk#23]

(39) InputAdapter
Input [1]: [d_date_sk#23]

(40) InputIteratorTransformer
Input [1]: [d_date_sk#23]

(41) BroadcastHashJoinExecTransformer
Left keys [1]: [sr_returned_date_sk#21]
Right keys [1]: [d_date_sk#23]
Join type: Inner
Join condition: None

(42) ProjectExecTransformer
Output [5]: [hash(sr_customer_sk#18, sr_item_sk#17, sr_ticket_number#19, 42) AS hash_partition_key#24, sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]
Input [6]: [sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20, sr_returned_date_sk#21, d_date_sk#23]

(43) WholeStageCodegenTransformer (9)
Input [5]: [hash_partition_key#24, sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]
Arguments: false

(44) VeloxResizeBatches
Input [5]: [hash_partition_key#24, sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]
Arguments: 1024, 2147483647, 10485760

(45) ColumnarExchange
Input [5]: [hash_partition_key#24, sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]
Arguments: hashpartitioning(sr_customer_sk#18, sr_item_sk#17, sr_ticket_number#19, 1), ENSURE_REQUIREMENTS, [sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20], [plan_id=5], [shuffle_writer_type=hash]

(46) InputAdapter
Input [4]: [sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]

(47) InputIteratorTransformer
Input [4]: [sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]

(48) ShuffledHashJoinExecTransformer
Left keys [3]: [ss_customer_sk#2, ss_item_sk#1, ss_ticket_number#4]
Right keys [3]: [sr_customer_sk#18, sr_item_sk#17, sr_ticket_number#19]
Join type: Inner
Join condition: None

(49) ProjectExecTransformer
Output [8]: [hash(sr_customer_sk#18, sr_item_sk#17, 42) AS hash_partition_key#25, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20]
Input [11]: [ss_item_sk#1, ss_customer_sk#2, ss_ticket_number#4, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_ticket_number#19, sr_return_quantity#20]

(50) WholeStageCodegenTransformer (10)
Input [8]: [hash_partition_key#25, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20]
Arguments: false

(51) VeloxResizeBatches
Input [8]: [hash_partition_key#25, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20]
Arguments: 1024, 2147483647, 10485760

(52) ColumnarExchange
Input [8]: [hash_partition_key#25, ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20]
Arguments: hashpartitioning(sr_customer_sk#18, sr_item_sk#17, 1), ENSURE_REQUIREMENTS, [ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20], [plan_id=6], [shuffle_writer_type=hash]

(53) InputAdapter
Input [7]: [ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20]

(54) InputIteratorTransformer
Input [7]: [ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20]

(55) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [4]: [cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28, cs_sold_date_sk#29]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#29), dynamicpruningexpression(cs_sold_date_sk#29 IN dynamicpruning#22)]
PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_item_sk:int,cs_quantity:int>

(56) FilterExecTransformer
Input [4]: [cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28, cs_sold_date_sk#29]
Arguments: (isnotnull(cs_bill_customer_sk#26) AND isnotnull(cs_item_sk#27))

(57) ReusedExchange [Reuses operator id: 90]
Output [1]: [d_date_sk#30]

(58) InputAdapter
Input [1]: [d_date_sk#30]

(59) InputIteratorTransformer
Input [1]: [d_date_sk#30]

(60) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#29]
Right keys [1]: [d_date_sk#30]
Join type: Inner
Join condition: None

(61) ProjectExecTransformer
Output [4]: [hash(cs_bill_customer_sk#26, cs_item_sk#27, 42) AS hash_partition_key#31, cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]
Input [5]: [cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28, cs_sold_date_sk#29, d_date_sk#30]

(62) WholeStageCodegenTransformer (13)
Input [4]: [hash_partition_key#31, cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]
Arguments: false

(63) VeloxResizeBatches
Input [4]: [hash_partition_key#31, cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]
Arguments: 1024, 2147483647, 10485760

(64) ColumnarExchange
Input [4]: [hash_partition_key#31, cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]
Arguments: hashpartitioning(cs_bill_customer_sk#26, cs_item_sk#27, 1), ENSURE_REQUIREMENTS, [cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28], [plan_id=7], [shuffle_writer_type=hash]

(65) InputAdapter
Input [3]: [cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]

(66) InputIteratorTransformer
Input [3]: [cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]

(67) ShuffledHashJoinExecTransformer
Left keys [2]: [sr_customer_sk#18, sr_item_sk#17]
Right keys [2]: [cs_bill_customer_sk#26, cs_item_sk#27]
Join type: Inner
Join condition: None

(68) ProjectExecTransformer
Output [9]: [ss_quantity#5, sr_return_quantity#20, cs_quantity#28, s_state#10, i_item_id#13, i_item_desc#14, cast(ss_quantity#5 as double) AS _pre_1#32, cast(sr_return_quantity#20 as double) AS _pre_2#33, cast(cs_quantity#28 as double) AS _pre_3#34]
Input [10]: [ss_quantity#5, s_state#10, i_item_id#13, i_item_desc#14, sr_item_sk#17, sr_customer_sk#18, sr_return_quantity#20, cs_bill_customer_sk#26, cs_item_sk#27, cs_quantity#28]

(69) FlushableHashAggregateExecTransformer
Input [9]: [ss_quantity#5, sr_return_quantity#20, cs_quantity#28, s_state#10, i_item_id#13, i_item_desc#14, _pre_1#32, _pre_2#33, _pre_3#34]
Keys [3]: [i_item_id#13, i_item_desc#14, s_state#10]
Functions [9]: [partial_count(ss_quantity#5), partial_avg(ss_quantity#5), partial_stddev_samp(_pre_1#32), partial_count(sr_return_quantity#20), partial_avg(sr_return_quantity#20), partial_stddev_samp(_pre_2#33), partial_count(cs_quantity#28), partial_avg(cs_quantity#28), partial_stddev_samp(_pre_3#34)]
Aggregate Attributes [18]: [count#35, sum#36, count#37, n#38, avg#39, m2#40, count#41, sum#42, count#43, n#44, avg#45, m2#46, count#47, sum#48, count#49, n#50, avg#51, m2#52]
Results [21]: [i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]

(70) ProjectExecTransformer
Output [22]: [hash(i_item_id#13, i_item_desc#14, s_state#10, 42) AS hash_partition_key#71, i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]
Input [21]: [i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]

(71) WholeStageCodegenTransformer (14)
Input [22]: [hash_partition_key#71, i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]
Arguments: false

(72) VeloxResizeBatches
Input [22]: [hash_partition_key#71, i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]
Arguments: 1024, 2147483647, 10485760

(73) ColumnarExchange
Input [22]: [hash_partition_key#71, i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]
Arguments: hashpartitioning(i_item_id#13, i_item_desc#14, s_state#10, 1), ENSURE_REQUIREMENTS, [i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70], [plan_id=8], [shuffle_writer_type=hash]

(74) InputAdapter
Input [21]: [i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]

(75) InputIteratorTransformer
Input [21]: [i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]

(76) RegularHashAggregateExecTransformer
Input [21]: [i_item_id#13, i_item_desc#14, s_state#10, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64, count#65, sum#66, count#67, n#68, avg#69, m2#70]
Keys [3]: [i_item_id#13, i_item_desc#14, s_state#10]
Functions [9]: [count(ss_quantity#5), avg(ss_quantity#5), stddev_samp(cast(ss_quantity#5 as double)), count(sr_return_quantity#20), avg(sr_return_quantity#20), stddev_samp(cast(sr_return_quantity#20 as double)), count(cs_quantity#28), avg(cs_quantity#28), stddev_samp(cast(cs_quantity#28 as double))]
Aggregate Attributes [9]: [count(ss_quantity#5)#72, avg(ss_quantity#5)#73, stddev_samp(cast(ss_quantity#5 as double))#74, count(sr_return_quantity#20)#75, avg(sr_return_quantity#20)#76, stddev_samp(cast(sr_return_quantity#20 as double))#77, count(cs_quantity#28)#78, avg(cs_quantity#28)#79, stddev_samp(cast(cs_quantity#28 as double))#80]
Results [12]: [i_item_id#13, i_item_desc#14, s_state#10, count(ss_quantity#5)#72, avg(ss_quantity#5)#73, stddev_samp(cast(ss_quantity#5 as double))#74, count(sr_return_quantity#20)#75, avg(sr_return_quantity#20)#76, stddev_samp(cast(sr_return_quantity#20 as double))#77, count(cs_quantity#28)#78, avg(cs_quantity#28)#79, stddev_samp(cast(cs_quantity#28 as double))#80]

(77) ProjectExecTransformer
Output [15]: [i_item_id#13, i_item_desc#14, s_state#10, count(ss_quantity#5)#72 AS store_sales_quantitycount#81, avg(ss_quantity#5)#73 AS store_sales_quantityave#82, stddev_samp(cast(ss_quantity#5 as double))#74 AS store_sales_quantitystdev#83, (stddev_samp(cast(ss_quantity#5 as double))#74 / avg(ss_quantity#5)#73) AS store_sales_quantitycov#84, count(sr_return_quantity#20)#75 AS as_store_returns_quantitycount#85, avg(sr_return_quantity#20)#76 AS as_store_returns_quantityave#86, stddev_samp(cast(sr_return_quantity#20 as double))#77 AS as_store_returns_quantitystdev#87, (stddev_samp(cast(sr_return_quantity#20 as double))#77 / avg(sr_return_quantity#20)#76) AS store_returns_quantitycov#88, count(cs_quantity#28)#78 AS catalog_sales_quantitycount#89, avg(cs_quantity#28)#79 AS catalog_sales_quantityave#90, (stddev_samp(cast(cs_quantity#28 as double))#80 / avg(cs_quantity#28)#79) AS catalog_sales_quantitystdev#91, (stddev_samp(cast(cs_quantity#28 as double))#80 / avg(cs_quantity#28)#79) AS catalog_sales_quantitycov#92]
Input [12]: [i_item_id#13, i_item_desc#14, s_state#10, count(ss_quantity#5)#72, avg(ss_quantity#5)#73, stddev_samp(cast(ss_quantity#5 as double))#74, count(sr_return_quantity#20)#75, avg(sr_return_quantity#20)#76, stddev_samp(cast(sr_return_quantity#20 as double))#77, count(cs_quantity#28)#78, avg(cs_quantity#28)#79, stddev_samp(cast(cs_quantity#28 as double))#80]

(78) WholeStageCodegenTransformer (15)
Input [15]: [i_item_id#13, i_item_desc#14, s_state#10, store_sales_quantitycount#81, store_sales_quantityave#82, store_sales_quantitystdev#83, store_sales_quantitycov#84, as_store_returns_quantitycount#85, as_store_returns_quantityave#86, as_store_returns_quantitystdev#87, store_returns_quantitycov#88, catalog_sales_quantitycount#89, catalog_sales_quantityave#90, catalog_sales_quantitystdev#91, catalog_sales_quantitycov#92]
Arguments: false

(79) TakeOrderedAndProjectExecTransformer
Input [15]: [i_item_id#13, i_item_desc#14, s_state#10, store_sales_quantitycount#81, store_sales_quantityave#82, store_sales_quantitystdev#83, store_sales_quantitycov#84, as_store_returns_quantitycount#85, as_store_returns_quantityave#86, as_store_returns_quantitystdev#87, store_returns_quantitycov#88, catalog_sales_quantitycount#89, catalog_sales_quantityave#90, catalog_sales_quantitystdev#91, catalog_sales_quantitycov#92]
Arguments: 100, [i_item_id#13 ASC NULLS FIRST, i_item_desc#14 ASC NULLS FIRST, s_state#10 ASC NULLS FIRST], [i_item_id#13, i_item_desc#14, s_state#10, store_sales_quantitycount#81, store_sales_quantityave#82, store_sales_quantitystdev#83, store_sales_quantitycov#84, as_store_returns_quantitycount#85, as_store_returns_quantityave#86, as_store_returns_quantitystdev#87, store_returns_quantitycov#88, catalog_sales_quantitycount#89, catalog_sales_quantityave#90, catalog_sales_quantitystdev#91, catalog_sales_quantitycov#92], 0

(80) VeloxColumnarToRow
Input [15]: [i_item_id#13, i_item_desc#14, s_state#10, store_sales_quantitycount#81, store_sales_quantityave#82, store_sales_quantitystdev#83, store_sales_quantitycov#84, as_store_returns_quantitycount#85, as_store_returns_quantityave#86, as_store_returns_quantitystdev#87, store_returns_quantitycov#88, catalog_sales_quantitycount#89, catalog_sales_quantityave#90, catalog_sales_quantitystdev#91, catalog_sales_quantitycov#92]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#6 IN dynamicpruning#7
ColumnarBroadcastExchange (85)
+- ^ ProjectExecTransformer (83)
   +- ^ FilterExecTransformer (82)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (81)


(81) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#8, d_quarter_name#93]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_quarter_name), EqualTo(d_quarter_name,2001Q1), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_quarter_name:string>

(82) FilterExecTransformer
Input [2]: [d_date_sk#8, d_quarter_name#93]
Arguments: ((isnotnull(d_quarter_name#93) AND (d_quarter_name#93 = 2001Q1)) AND isnotnull(d_date_sk#8))

(83) ProjectExecTransformer
Output [1]: [d_date_sk#8]
Input [2]: [d_date_sk#8, d_quarter_name#93]

(84) WholeStageCodegenTransformer (1)
Input [1]: [d_date_sk#8]
Arguments: false

(85) ColumnarBroadcastExchange
Input [1]: [d_date_sk#8]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=9]

Subquery:2 Hosting operator id = 36 Hosting Expression = sr_returned_date_sk#21 IN dynamicpruning#22
ColumnarBroadcastExchange (90)
+- ^ ProjectExecTransformer (88)
   +- ^ FilterExecTransformer (87)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (86)


(86) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#23, d_quarter_name#94]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [In(d_quarter_name, [2001Q1,2001Q2,2001Q3]), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_quarter_name:string>

(87) FilterExecTransformer
Input [2]: [d_date_sk#23, d_quarter_name#94]
Arguments: (d_quarter_name#94 IN (2001Q1,2001Q2,2001Q3) AND isnotnull(d_date_sk#23))

(88) ProjectExecTransformer
Output [1]: [d_date_sk#23]
Input [2]: [d_date_sk#23, d_quarter_name#94]

(89) WholeStageCodegenTransformer (7)
Input [1]: [d_date_sk#23]
Arguments: false

(90) ColumnarBroadcastExchange
Input [1]: [d_date_sk#23]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=10]

Subquery:3 Hosting operator id = 55 Hosting Expression = cs_sold_date_sk#29 IN dynamicpruning#22


