== Physical Plan ==
VeloxColumnarToRow (61)
+- TakeOrderedAndProjectExecTransformer (60)
   +- ^ ProjectExecTransformer (58)
      +- ^ RegularHashAggregateExecTransformer (57)
         +- ^ InputIteratorTransformer (56)
            +- ColumnarExchange (54)
               +- VeloxResizeBatches (53)
                  +- ^ ProjectExecTransformer (51)
                     +- ^ FlushableHashAggregateExecTransformer (50)
                        +- ^ ProjectExecTransformer (49)
                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (48)
                              :- ^ ProjectExecTransformer (41)
                              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (40)
                              :     :- ^ ProjectExecTransformer (33)
                              :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (32)
                              :     :     :- ^ ProjectExecTransformer (28)
                              :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (27)
                              :     :     :     :- ^ ProjectExecTransformer (23)
                              :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (22)
                              :     :     :     :     :- ^ ProjectExecTransformer (18)
                              :     :     :     :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (17)
                              :     :     :     :     :     :- ^ 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.store_returns (3)
                              :     :     :     :     :     +- ^ InputIteratorTransformer (16)
                              :     :     :     :     :        +- ColumnarBroadcastExchange (14)
                              :     :     :     :     :           +- ^ FilterExecTransformer (12)
                              :     :     :     :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales (11)
                              :     :     :     :     +- ^ InputIteratorTransformer (21)
                              :     :     :     :        +- ReusedExchange (19)
                              :     :     :     +- ^ InputIteratorTransformer (26)
                              :     :     :        +- ReusedExchange (24)
                              :     :     +- ^ InputIteratorTransformer (31)
                              :     :        +- ReusedExchange (29)
                              :     +- ^ InputIteratorTransformer (39)
                              :        +- ColumnarBroadcastExchange (37)
                              :           +- ^ FilterExecTransformer (35)
                              :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (34)
                              +- ^ InputIteratorTransformer (47)
                                 +- ColumnarBroadcastExchange (45)
                                    +- ^ FilterExecTransformer (43)
                                       +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (42)


(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) FileSourceScanExecTransformer parquet spark_catalog.default.store_returns
Output [5]: [sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(sr_returned_date_sk#12), dynamicpruningexpression(sr_returned_date_sk#12 IN dynamicpruning#13)]
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>

(4) FilterExecTransformer
Input [5]: [sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]
Arguments: ((isnotnull(sr_customer_sk#9) AND isnotnull(sr_item_sk#8)) AND isnotnull(sr_ticket_number#10))

(5) WholeStageCodegenTransformer (3)
Input [5]: [sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]
Arguments: false

(6) ColumnarBroadcastExchange
Input [5]: [sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]
Arguments: HashedRelationBroadcastMode(List(input[1, int, false], input[0, int, false], input[2, int, false]),false), [plan_id=1]

(7) InputAdapter
Input [5]: [sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]

(8) InputIteratorTransformer
Input [5]: [sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]

(9) BroadcastHashJoinExecTransformer
Left keys [3]: [ss_customer_sk#2, ss_item_sk#1, ss_ticket_number#4]
Right keys [3]: [sr_customer_sk#9, sr_item_sk#8, sr_ticket_number#10]
Join type: Inner
Join condition: None

(10) ProjectExecTransformer
Output [8]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, ss_sold_date_sk#6, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11, sr_returned_date_sk#12]
Input [11]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_quantity#5, ss_sold_date_sk#6, sr_item_sk#8, sr_customer_sk#9, sr_ticket_number#10, sr_return_quantity#11, sr_returned_date_sk#12]

(11) FileSourceScanExecTransformer parquet spark_catalog.default.catalog_sales
Output [4]: [cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#17), dynamicpruningexpression(cs_sold_date_sk#17 IN dynamicpruning#13)]
PushedFilters: [IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_item_sk:int,cs_quantity:int>

(12) FilterExecTransformer
Input [4]: [cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]
Arguments: (isnotnull(cs_bill_customer_sk#14) AND isnotnull(cs_item_sk#15))

(13) WholeStageCodegenTransformer (5)
Input [4]: [cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]
Arguments: false

(14) ColumnarBroadcastExchange
Input [4]: [cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]
Arguments: HashedRelationBroadcastMode(List((shiftleft(cast(input[0, int, false] as bigint), 32) | (cast(input[1, int, false] as bigint) & 4294967295))),false), [plan_id=2]

(15) InputAdapter
Input [4]: [cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]

(16) InputIteratorTransformer
Input [4]: [cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]

(17) BroadcastHashJoinExecTransformer
Left keys [2]: [sr_customer_sk#9, sr_item_sk#8]
Right keys [2]: [cs_bill_customer_sk#14, cs_item_sk#15]
Join type: Inner
Join condition: None

(18) ProjectExecTransformer
Output [8]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, ss_sold_date_sk#6, sr_return_quantity#11, sr_returned_date_sk#12, cs_quantity#16, cs_sold_date_sk#17]
Input [12]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, ss_sold_date_sk#6, sr_item_sk#8, sr_customer_sk#9, sr_return_quantity#11, sr_returned_date_sk#12, cs_bill_customer_sk#14, cs_item_sk#15, cs_quantity#16, cs_sold_date_sk#17]

(19) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#18]

(20) InputAdapter
Input [1]: [d_date_sk#18]

(21) InputIteratorTransformer
Input [1]: [d_date_sk#18]

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

(23) ProjectExecTransformer
Output [7]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, sr_return_quantity#11, sr_returned_date_sk#12, cs_quantity#16, cs_sold_date_sk#17]
Input [9]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, ss_sold_date_sk#6, sr_return_quantity#11, sr_returned_date_sk#12, cs_quantity#16, cs_sold_date_sk#17, d_date_sk#18]

(24) ReusedExchange [Reuses operator id: 71]
Output [1]: [d_date_sk#19]

(25) InputAdapter
Input [1]: [d_date_sk#19]

(26) InputIteratorTransformer
Input [1]: [d_date_sk#19]

(27) BroadcastHashJoinExecTransformer
Left keys [1]: [sr_returned_date_sk#12]
Right keys [1]: [d_date_sk#19]
Join type: Inner
Join condition: None

(28) ProjectExecTransformer
Output [6]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, sr_return_quantity#11, cs_quantity#16, cs_sold_date_sk#17]
Input [8]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, sr_return_quantity#11, sr_returned_date_sk#12, cs_quantity#16, cs_sold_date_sk#17, d_date_sk#19]

(29) ReusedExchange [Reuses operator id: 71]
Output [1]: [d_date_sk#20]

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

(31) InputIteratorTransformer
Input [1]: [d_date_sk#20]

(32) BroadcastHashJoinExecTransformer
Left keys [1]: [cs_sold_date_sk#17]
Right keys [1]: [d_date_sk#20]
Join type: Inner
Join condition: None

(33) ProjectExecTransformer
Output [5]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, sr_return_quantity#11, cs_quantity#16]
Input [7]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, sr_return_quantity#11, cs_quantity#16, cs_sold_date_sk#17, d_date_sk#20]

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

(35) FilterExecTransformer
Input [2]: [s_store_sk#21, s_state#22]
Arguments: isnotnull(s_store_sk#21)

(36) WholeStageCodegenTransformer (9)
Input [2]: [s_store_sk#21, s_state#22]
Arguments: false

(37) ColumnarBroadcastExchange
Input [2]: [s_store_sk#21, s_state#22]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=3]

(38) InputAdapter
Input [2]: [s_store_sk#21, s_state#22]

(39) InputIteratorTransformer
Input [2]: [s_store_sk#21, s_state#22]

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

(41) ProjectExecTransformer
Output [5]: [ss_item_sk#1, ss_quantity#5, sr_return_quantity#11, cs_quantity#16, s_state#22]
Input [7]: [ss_item_sk#1, ss_store_sk#3, ss_quantity#5, sr_return_quantity#11, cs_quantity#16, s_store_sk#21, s_state#22]

(42) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25]
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>

(43) FilterExecTransformer
Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25]
Arguments: isnotnull(i_item_sk#23)

(44) WholeStageCodegenTransformer (10)
Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25]
Arguments: false

(45) ColumnarBroadcastExchange
Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=4]

(46) InputAdapter
Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25]

(47) InputIteratorTransformer
Input [3]: [i_item_sk#23, i_item_id#24, i_item_desc#25]

(48) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_item_sk#1]
Right keys [1]: [i_item_sk#23]
Join type: Inner
Join condition: None

(49) ProjectExecTransformer
Output [9]: [ss_quantity#5, sr_return_quantity#11, cs_quantity#16, s_state#22, i_item_id#24, i_item_desc#25, cast(ss_quantity#5 as double) AS _pre_1#26, cast(sr_return_quantity#11 as double) AS _pre_2#27, cast(cs_quantity#16 as double) AS _pre_3#28]
Input [8]: [ss_item_sk#1, ss_quantity#5, sr_return_quantity#11, cs_quantity#16, s_state#22, i_item_sk#23, i_item_id#24, i_item_desc#25]

(50) FlushableHashAggregateExecTransformer
Input [9]: [ss_quantity#5, sr_return_quantity#11, cs_quantity#16, s_state#22, i_item_id#24, i_item_desc#25, _pre_1#26, _pre_2#27, _pre_3#28]
Keys [3]: [i_item_id#24, i_item_desc#25, s_state#22]
Functions [9]: [partial_count(ss_quantity#5), partial_avg(ss_quantity#5), partial_stddev_samp(_pre_1#26), partial_count(sr_return_quantity#11), partial_avg(sr_return_quantity#11), partial_stddev_samp(_pre_2#27), partial_count(cs_quantity#16), partial_avg(cs_quantity#16), partial_stddev_samp(_pre_3#28)]
Aggregate Attributes [18]: [count#29, sum#30, count#31, n#32, avg#33, m2#34, count#35, sum#36, count#37, n#38, avg#39, m2#40, count#41, sum#42, count#43, n#44, avg#45, m2#46]
Results [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]

(51) ProjectExecTransformer
Output [22]: [hash(i_item_id#24, i_item_desc#25, s_state#22, 42) AS hash_partition_key#65, i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]
Input [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]

(52) WholeStageCodegenTransformer (11)
Input [22]: [hash_partition_key#65, i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]
Arguments: false

(53) VeloxResizeBatches
Input [22]: [hash_partition_key#65, i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]
Arguments: 1024, 2147483647, 10485760

(54) ColumnarExchange
Input [22]: [hash_partition_key#65, i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]
Arguments: hashpartitioning(i_item_id#24, i_item_desc#25, s_state#22, 1), ENSURE_REQUIREMENTS, [i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64], [plan_id=5], [shuffle_writer_type=hash]

(55) InputAdapter
Input [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]

(56) InputIteratorTransformer
Input [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]

(57) RegularHashAggregateExecTransformer
Input [21]: [i_item_id#24, i_item_desc#25, s_state#22, count#47, sum#48, count#49, n#50, avg#51, m2#52, count#53, sum#54, count#55, n#56, avg#57, m2#58, count#59, sum#60, count#61, n#62, avg#63, m2#64]
Keys [3]: [i_item_id#24, i_item_desc#25, s_state#22]
Functions [9]: [count(ss_quantity#5), avg(ss_quantity#5), stddev_samp(cast(ss_quantity#5 as double)), count(sr_return_quantity#11), avg(sr_return_quantity#11), stddev_samp(cast(sr_return_quantity#11 as double)), count(cs_quantity#16), avg(cs_quantity#16), stddev_samp(cast(cs_quantity#16 as double))]
Aggregate Attributes [9]: [count(ss_quantity#5)#66, avg(ss_quantity#5)#67, stddev_samp(cast(ss_quantity#5 as double))#68, count(sr_return_quantity#11)#69, avg(sr_return_quantity#11)#70, stddev_samp(cast(sr_return_quantity#11 as double))#71, count(cs_quantity#16)#72, avg(cs_quantity#16)#73, stddev_samp(cast(cs_quantity#16 as double))#74]
Results [12]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#5)#66, avg(ss_quantity#5)#67, stddev_samp(cast(ss_quantity#5 as double))#68, count(sr_return_quantity#11)#69, avg(sr_return_quantity#11)#70, stddev_samp(cast(sr_return_quantity#11 as double))#71, count(cs_quantity#16)#72, avg(cs_quantity#16)#73, stddev_samp(cast(cs_quantity#16 as double))#74]

(58) ProjectExecTransformer
Output [15]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#5)#66 AS store_sales_quantitycount#75, avg(ss_quantity#5)#67 AS store_sales_quantityave#76, stddev_samp(cast(ss_quantity#5 as double))#68 AS store_sales_quantitystdev#77, (stddev_samp(cast(ss_quantity#5 as double))#68 / avg(ss_quantity#5)#67) AS store_sales_quantitycov#78, count(sr_return_quantity#11)#69 AS as_store_returns_quantitycount#79, avg(sr_return_quantity#11)#70 AS as_store_returns_quantityave#80, stddev_samp(cast(sr_return_quantity#11 as double))#71 AS as_store_returns_quantitystdev#81, (stddev_samp(cast(sr_return_quantity#11 as double))#71 / avg(sr_return_quantity#11)#70) AS store_returns_quantitycov#82, count(cs_quantity#16)#72 AS catalog_sales_quantitycount#83, avg(cs_quantity#16)#73 AS catalog_sales_quantityave#84, (stddev_samp(cast(cs_quantity#16 as double))#74 / avg(cs_quantity#16)#73) AS catalog_sales_quantitystdev#85, (stddev_samp(cast(cs_quantity#16 as double))#74 / avg(cs_quantity#16)#73) AS catalog_sales_quantitycov#86]
Input [12]: [i_item_id#24, i_item_desc#25, s_state#22, count(ss_quantity#5)#66, avg(ss_quantity#5)#67, stddev_samp(cast(ss_quantity#5 as double))#68, count(sr_return_quantity#11)#69, avg(sr_return_quantity#11)#70, stddev_samp(cast(sr_return_quantity#11 as double))#71, count(cs_quantity#16)#72, avg(cs_quantity#16)#73, stddev_samp(cast(cs_quantity#16 as double))#74]

(59) WholeStageCodegenTransformer (12)
Input [15]: [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#75, store_sales_quantityave#76, store_sales_quantitystdev#77, store_sales_quantitycov#78, as_store_returns_quantitycount#79, as_store_returns_quantityave#80, as_store_returns_quantitystdev#81, store_returns_quantitycov#82, catalog_sales_quantitycount#83, catalog_sales_quantityave#84, catalog_sales_quantitystdev#85, catalog_sales_quantitycov#86]
Arguments: false

(60) TakeOrderedAndProjectExecTransformer
Input [15]: [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#75, store_sales_quantityave#76, store_sales_quantitystdev#77, store_sales_quantitycov#78, as_store_returns_quantitycount#79, as_store_returns_quantityave#80, as_store_returns_quantitystdev#81, store_returns_quantitycov#82, catalog_sales_quantitycount#83, catalog_sales_quantityave#84, catalog_sales_quantitystdev#85, catalog_sales_quantitycov#86]
Arguments: 100, [i_item_id#24 ASC NULLS FIRST, i_item_desc#25 ASC NULLS FIRST, s_state#22 ASC NULLS FIRST], [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#75, store_sales_quantityave#76, store_sales_quantitystdev#77, store_sales_quantitycov#78, as_store_returns_quantitycount#79, as_store_returns_quantityave#80, as_store_returns_quantitystdev#81, store_returns_quantitycov#82, catalog_sales_quantitycount#83, catalog_sales_quantityave#84, catalog_sales_quantitystdev#85, catalog_sales_quantitycov#86], 0

(61) VeloxColumnarToRow
Input [15]: [i_item_id#24, i_item_desc#25, s_state#22, store_sales_quantitycount#75, store_sales_quantityave#76, store_sales_quantitystdev#77, store_sales_quantitycov#78, as_store_returns_quantitycount#79, as_store_returns_quantityave#80, as_store_returns_quantitystdev#81, store_returns_quantitycov#82, catalog_sales_quantitycount#83, catalog_sales_quantityave#84, catalog_sales_quantitystdev#85, catalog_sales_quantitycov#86]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#6 IN dynamicpruning#7
ColumnarBroadcastExchange (66)
+- ^ ProjectExecTransformer (64)
   +- ^ FilterExecTransformer (63)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (62)


(62) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#18, d_quarter_name#87]
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>

(63) FilterExecTransformer
Input [2]: [d_date_sk#18, d_quarter_name#87]
Arguments: ((isnotnull(d_quarter_name#87) AND (d_quarter_name#87 = 2001Q1)) AND isnotnull(d_date_sk#18))

(64) ProjectExecTransformer
Output [1]: [d_date_sk#18]
Input [2]: [d_date_sk#18, d_quarter_name#87]

(65) WholeStageCodegenTransformer (1)
Input [1]: [d_date_sk#18]
Arguments: false

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

Subquery:2 Hosting operator id = 3 Hosting Expression = sr_returned_date_sk#12 IN dynamicpruning#13
ColumnarBroadcastExchange (71)
+- ^ ProjectExecTransformer (69)
   +- ^ FilterExecTransformer (68)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (67)


(67) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#19, d_quarter_name#88]
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>

(68) FilterExecTransformer
Input [2]: [d_date_sk#19, d_quarter_name#88]
Arguments: (d_quarter_name#88 IN (2001Q1,2001Q2,2001Q3) AND isnotnull(d_date_sk#19))

(69) ProjectExecTransformer
Output [1]: [d_date_sk#19]
Input [2]: [d_date_sk#19, d_quarter_name#88]

(70) WholeStageCodegenTransformer (2)
Input [1]: [d_date_sk#19]
Arguments: false

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

Subquery:3 Hosting operator id = 11 Hosting Expression = cs_sold_date_sk#17 IN dynamicpruning#13


