== Physical Plan ==
VeloxColumnarToRow (81)
+- ^ SortExecTransformer (79)
   +- ^ InputIteratorTransformer (78)
      +- ColumnarExchange (76)
         +- VeloxResizeBatches (75)
            +- ^ ShuffledHashJoinExecTransformer Inner BuildRight (73)
               :- ^ InputIteratorTransformer (39)
               :  +- ColumnarExchange (37)
               :     +- VeloxResizeBatches (36)
               :        +- ^ ProjectExecTransformer (34)
               :           +- ^ FilterExecTransformer (33)
               :              +- ^ ProjectExecTransformer (32)
               :                 +- ^ RegularHashAggregateExecTransformer (31)
               :                    +- ^ InputIteratorTransformer (30)
               :                       +- ColumnarExchange (28)
               :                          +- VeloxResizeBatches (27)
               :                             +- ^ ProjectExecTransformer (25)
               :                                +- ^ FlushableHashAggregateExecTransformer (24)
               :                                   +- ^ ProjectExecTransformer (23)
               :                                      +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (22)
               :                                         :- ^ ProjectExecTransformer (15)
               :                                         :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (14)
               :                                         :     :- ^ ProjectExecTransformer (7)
               :                                         :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (6)
               :                                         :     :     :- ^ FilterExecTransformer (2)
               :                                         :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.inventory (1)
               :                                         :     :     +- ^ InputIteratorTransformer (5)
               :                                         :     :        +- ReusedExchange (3)
               :                                         :     +- ^ InputIteratorTransformer (13)
               :                                         :        +- ColumnarBroadcastExchange (11)
               :                                         :           +- ^ FilterExecTransformer (9)
               :                                         :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (8)
               :                                         +- ^ InputIteratorTransformer (21)
               :                                            +- ColumnarBroadcastExchange (19)
               :                                               +- ^ FilterExecTransformer (17)
               :                                                  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.warehouse (16)
               +- ^ InputIteratorTransformer (72)
                  +- ColumnarExchange (70)
                     +- VeloxResizeBatches (69)
                        +- ^ ProjectExecTransformer (67)
                           +- ^ FilterExecTransformer (66)
                              +- ^ ProjectExecTransformer (65)
                                 +- ^ RegularHashAggregateExecTransformer (64)
                                    +- ^ InputIteratorTransformer (63)
                                       +- ColumnarExchange (61)
                                          +- VeloxResizeBatches (60)
                                             +- ^ ProjectExecTransformer (58)
                                                +- ^ FlushableHashAggregateExecTransformer (57)
                                                   +- ^ ProjectExecTransformer (56)
                                                      +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (55)
                                                         :- ^ ProjectExecTransformer (51)
                                                         :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (50)
                                                         :     :- ^ ProjectExecTransformer (46)
                                                         :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (45)
                                                         :     :     :- ^ FilterExecTransformer (41)
                                                         :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.inventory (40)
                                                         :     :     +- ^ InputIteratorTransformer (44)
                                                         :     :        +- ReusedExchange (42)
                                                         :     +- ^ InputIteratorTransformer (49)
                                                         :        +- ReusedExchange (47)
                                                         +- ^ InputIteratorTransformer (54)
                                                            +- ReusedExchange (52)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.inventory
Output [4]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(inv_date_sk#4), dynamicpruningexpression(inv_date_sk#4 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk)]
ReadSchema: struct<inv_item_sk:int,inv_warehouse_sk:int,inv_quantity_on_hand:int>

(2) FilterExecTransformer
Input [4]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4]
Arguments: (isnotnull(inv_item_sk#1) AND isnotnull(inv_warehouse_sk#2))

(3) ReusedExchange [Reuses operator id: 86]
Output [2]: [d_date_sk#6, d_moy#7]

(4) InputAdapter
Input [2]: [d_date_sk#6, d_moy#7]

(5) InputIteratorTransformer
Input [2]: [d_date_sk#6, d_moy#7]

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

(7) ProjectExecTransformer
Output [4]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, d_moy#7]
Input [6]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, d_date_sk#6, d_moy#7]

(8) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [1]: [i_item_sk#8]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int>

(9) FilterExecTransformer
Input [1]: [i_item_sk#8]
Arguments: isnotnull(i_item_sk#8)

(10) WholeStageCodegenTransformer (3)
Input [1]: [i_item_sk#8]
Arguments: false

(11) ColumnarBroadcastExchange
Input [1]: [i_item_sk#8]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(12) InputAdapter
Input [1]: [i_item_sk#8]

(13) InputIteratorTransformer
Input [1]: [i_item_sk#8]

(14) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_item_sk#1]
Right keys [1]: [i_item_sk#8]
Join type: Inner
Join condition: None

(15) ProjectExecTransformer
Output [4]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, d_moy#7, i_item_sk#8]
Input [5]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, d_moy#7, i_item_sk#8]

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

(17) FilterExecTransformer
Input [2]: [w_warehouse_sk#9, w_warehouse_name#10]
Arguments: isnotnull(w_warehouse_sk#9)

(18) WholeStageCodegenTransformer (4)
Input [2]: [w_warehouse_sk#9, w_warehouse_name#10]
Arguments: false

(19) ColumnarBroadcastExchange
Input [2]: [w_warehouse_sk#9, w_warehouse_name#10]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=2]

(20) InputAdapter
Input [2]: [w_warehouse_sk#9, w_warehouse_name#10]

(21) InputIteratorTransformer
Input [2]: [w_warehouse_sk#9, w_warehouse_name#10]

(22) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_warehouse_sk#2]
Right keys [1]: [w_warehouse_sk#9]
Join type: Inner
Join condition: None

(23) ProjectExecTransformer
Output [6]: [inv_quantity_on_hand#3, i_item_sk#8, w_warehouse_sk#9, w_warehouse_name#10, d_moy#7, cast(inv_quantity_on_hand#3 as double) AS _pre_1#11]
Input [6]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, d_moy#7, i_item_sk#8, w_warehouse_sk#9, w_warehouse_name#10]

(24) FlushableHashAggregateExecTransformer
Input [6]: [inv_quantity_on_hand#3, i_item_sk#8, w_warehouse_sk#9, w_warehouse_name#10, d_moy#7, _pre_1#11]
Keys [4]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7]
Functions [2]: [partial_stddev_samp(_pre_1#11), partial_avg(inv_quantity_on_hand#3)]
Aggregate Attributes [5]: [n#12, avg#13, m2#14, sum#15, count#16]
Results [9]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]

(25) ProjectExecTransformer
Output [10]: [hash(w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, 42) AS hash_partition_key#22, w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]
Input [9]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]

(26) WholeStageCodegenTransformer (5)
Input [10]: [hash_partition_key#22, w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]
Arguments: false

(27) VeloxResizeBatches
Input [10]: [hash_partition_key#22, w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]
Arguments: 1024, 2147483647, 10485760

(28) ColumnarExchange
Input [10]: [hash_partition_key#22, w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]
Arguments: hashpartitioning(w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, 1), ENSURE_REQUIREMENTS, [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21], [plan_id=3], [shuffle_writer_type=hash]

(29) InputAdapter
Input [9]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]

(30) InputIteratorTransformer
Input [9]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]

(31) RegularHashAggregateExecTransformer
Input [9]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, n#17, avg#18, m2#19, sum#20, count#21]
Keys [4]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7]
Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#3 as double)), avg(inv_quantity_on_hand#3)]
Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#3 as double))#23, avg(inv_quantity_on_hand#3)#24]
Results [6]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, stddev_samp(cast(inv_quantity_on_hand#3 as double))#23, avg(inv_quantity_on_hand#3)#24]

(32) ProjectExecTransformer
Output [5]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, stddev_samp(cast(inv_quantity_on_hand#3 as double))#23 AS stdev#25, avg(inv_quantity_on_hand#3)#24 AS mean#26]
Input [6]: [w_warehouse_name#10, w_warehouse_sk#9, i_item_sk#8, d_moy#7, stddev_samp(cast(inv_quantity_on_hand#3 as double))#23, avg(inv_quantity_on_hand#3)#24]

(33) FilterExecTransformer
Input [5]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, stdev#25, mean#26]
Arguments: (CASE WHEN (mean#26 = 0.0) THEN false ELSE ((stdev#25 / mean#26) > 1.0) END AND CASE WHEN (mean#26 = 0.0) THEN false ELSE ((stdev#25 / mean#26) > 1.5) END)

(34) ProjectExecTransformer
Output [6]: [hash(i_item_sk#8, w_warehouse_sk#9, 42) AS hash_partition_key#27, w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, CASE WHEN (mean#26 = 0.0) THEN null ELSE (stdev#25 / mean#26) END AS cov#28]
Input [5]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, stdev#25, mean#26]

(35) WholeStageCodegenTransformer (6)
Input [6]: [hash_partition_key#27, w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28]
Arguments: false

(36) VeloxResizeBatches
Input [6]: [hash_partition_key#27, w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28]
Arguments: 1024, 2147483647, 10485760

(37) ColumnarExchange
Input [6]: [hash_partition_key#27, w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28]
Arguments: hashpartitioning(i_item_sk#8, w_warehouse_sk#9, 1), ENSURE_REQUIREMENTS, [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28], [plan_id=4], [shuffle_writer_type=hash]

(38) InputAdapter
Input [5]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28]

(39) InputIteratorTransformer
Input [5]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28]

(40) FileSourceScanExecTransformer parquet spark_catalog.default.inventory
Output [4]: [inv_item_sk#29, inv_warehouse_sk#30, inv_quantity_on_hand#31, inv_date_sk#32]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(inv_date_sk#32), dynamicpruningexpression(inv_date_sk#32 IN dynamicpruning#33)]
PushedFilters: [IsNotNull(inv_item_sk), IsNotNull(inv_warehouse_sk)]
ReadSchema: struct<inv_item_sk:int,inv_warehouse_sk:int,inv_quantity_on_hand:int>

(41) FilterExecTransformer
Input [4]: [inv_item_sk#29, inv_warehouse_sk#30, inv_quantity_on_hand#31, inv_date_sk#32]
Arguments: (isnotnull(inv_item_sk#29) AND isnotnull(inv_warehouse_sk#30))

(42) ReusedExchange [Reuses operator id: 91]
Output [2]: [d_date_sk#34, d_moy#35]

(43) InputAdapter
Input [2]: [d_date_sk#34, d_moy#35]

(44) InputIteratorTransformer
Input [2]: [d_date_sk#34, d_moy#35]

(45) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_date_sk#32]
Right keys [1]: [d_date_sk#34]
Join type: Inner
Join condition: None

(46) ProjectExecTransformer
Output [4]: [inv_item_sk#29, inv_warehouse_sk#30, inv_quantity_on_hand#31, d_moy#35]
Input [6]: [inv_item_sk#29, inv_warehouse_sk#30, inv_quantity_on_hand#31, inv_date_sk#32, d_date_sk#34, d_moy#35]

(47) ReusedExchange [Reuses operator id: 11]
Output [1]: [i_item_sk#36]

(48) InputAdapter
Input [1]: [i_item_sk#36]

(49) InputIteratorTransformer
Input [1]: [i_item_sk#36]

(50) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_item_sk#29]
Right keys [1]: [i_item_sk#36]
Join type: Inner
Join condition: None

(51) ProjectExecTransformer
Output [4]: [inv_warehouse_sk#30, inv_quantity_on_hand#31, d_moy#35, i_item_sk#36]
Input [5]: [inv_item_sk#29, inv_warehouse_sk#30, inv_quantity_on_hand#31, d_moy#35, i_item_sk#36]

(52) ReusedExchange [Reuses operator id: 19]
Output [2]: [w_warehouse_sk#37, w_warehouse_name#38]

(53) InputAdapter
Input [2]: [w_warehouse_sk#37, w_warehouse_name#38]

(54) InputIteratorTransformer
Input [2]: [w_warehouse_sk#37, w_warehouse_name#38]

(55) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_warehouse_sk#30]
Right keys [1]: [w_warehouse_sk#37]
Join type: Inner
Join condition: None

(56) ProjectExecTransformer
Output [6]: [inv_quantity_on_hand#31, i_item_sk#36, w_warehouse_sk#37, w_warehouse_name#38, d_moy#35, cast(inv_quantity_on_hand#31 as double) AS _pre_2#39]
Input [6]: [inv_warehouse_sk#30, inv_quantity_on_hand#31, d_moy#35, i_item_sk#36, w_warehouse_sk#37, w_warehouse_name#38]

(57) FlushableHashAggregateExecTransformer
Input [6]: [inv_quantity_on_hand#31, i_item_sk#36, w_warehouse_sk#37, w_warehouse_name#38, d_moy#35, _pre_2#39]
Keys [4]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35]
Functions [2]: [partial_stddev_samp(_pre_2#39), partial_avg(inv_quantity_on_hand#31)]
Aggregate Attributes [5]: [n#40, avg#41, m2#42, sum#43, count#44]
Results [9]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]

(58) ProjectExecTransformer
Output [10]: [hash(w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, 42) AS hash_partition_key#50, w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]
Input [9]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]

(59) WholeStageCodegenTransformer (11)
Input [10]: [hash_partition_key#50, w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]
Arguments: false

(60) VeloxResizeBatches
Input [10]: [hash_partition_key#50, w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]
Arguments: 1024, 2147483647, 10485760

(61) ColumnarExchange
Input [10]: [hash_partition_key#50, w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]
Arguments: hashpartitioning(w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, 1), ENSURE_REQUIREMENTS, [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49], [plan_id=5], [shuffle_writer_type=hash]

(62) InputAdapter
Input [9]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]

(63) InputIteratorTransformer
Input [9]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]

(64) RegularHashAggregateExecTransformer
Input [9]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, n#45, avg#46, m2#47, sum#48, count#49]
Keys [4]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35]
Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#31 as double)), avg(inv_quantity_on_hand#31)]
Aggregate Attributes [2]: [stddev_samp(cast(inv_quantity_on_hand#31 as double))#23, avg(inv_quantity_on_hand#31)#24]
Results [6]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, stddev_samp(cast(inv_quantity_on_hand#31 as double))#23, avg(inv_quantity_on_hand#31)#24]

(65) ProjectExecTransformer
Output [5]: [w_warehouse_sk#37, i_item_sk#36, d_moy#35, stddev_samp(cast(inv_quantity_on_hand#31 as double))#23 AS stdev#51, avg(inv_quantity_on_hand#31)#24 AS mean#52]
Input [6]: [w_warehouse_name#38, w_warehouse_sk#37, i_item_sk#36, d_moy#35, stddev_samp(cast(inv_quantity_on_hand#31 as double))#23, avg(inv_quantity_on_hand#31)#24]

(66) FilterExecTransformer
Input [5]: [w_warehouse_sk#37, i_item_sk#36, d_moy#35, stdev#51, mean#52]
Arguments: CASE WHEN (mean#52 = 0.0) THEN false ELSE ((stdev#51 / mean#52) > 1.0) END

(67) ProjectExecTransformer
Output [6]: [hash(i_item_sk#36, w_warehouse_sk#37, 42) AS hash_partition_key#53, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, CASE WHEN (mean#52 = 0.0) THEN null ELSE (stdev#51 / mean#52) END AS cov#54]
Input [5]: [w_warehouse_sk#37, i_item_sk#36, d_moy#35, stdev#51, mean#52]

(68) WholeStageCodegenTransformer (12)
Input [6]: [hash_partition_key#53, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: false

(69) VeloxResizeBatches
Input [6]: [hash_partition_key#53, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: 1024, 2147483647, 10485760

(70) ColumnarExchange
Input [6]: [hash_partition_key#53, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: hashpartitioning(i_item_sk#36, w_warehouse_sk#37, 1), ENSURE_REQUIREMENTS, [w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54], [plan_id=6], [shuffle_writer_type=hash]

(71) InputAdapter
Input [5]: [w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]

(72) InputIteratorTransformer
Input [5]: [w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]

(73) ShuffledHashJoinExecTransformer
Left keys [2]: [i_item_sk#8, w_warehouse_sk#9]
Right keys [2]: [i_item_sk#36, w_warehouse_sk#37]
Join type: Inner
Join condition: None

(74) WholeStageCodegenTransformer (13)
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: false

(75) VeloxResizeBatches
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: 1024, 2147483647, 10485760

(76) ColumnarExchange
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: rangepartitioning(w_warehouse_sk#9 ASC NULLS FIRST, i_item_sk#8 ASC NULLS FIRST, d_moy#7 ASC NULLS FIRST, mean#26 ASC NULLS FIRST, cov#28 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST, mean#52 ASC NULLS FIRST, cov#54 ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=7], [shuffle_writer_type=hash]

(77) InputAdapter
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]

(78) InputIteratorTransformer
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]

(79) SortExecTransformer
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: [w_warehouse_sk#9 ASC NULLS FIRST, i_item_sk#8 ASC NULLS FIRST, d_moy#7 ASC NULLS FIRST, mean#26 ASC NULLS FIRST, cov#28 ASC NULLS FIRST, d_moy#35 ASC NULLS FIRST, mean#52 ASC NULLS FIRST, cov#54 ASC NULLS FIRST], true, 0

(80) WholeStageCodegenTransformer (14)
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]
Arguments: false

(81) VeloxColumnarToRow
Input [10]: [w_warehouse_sk#9, i_item_sk#8, d_moy#7, mean#26, cov#28, w_warehouse_sk#37, i_item_sk#36, d_moy#35, mean#52, cov#54]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = inv_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (86)
+- ^ ProjectExecTransformer (84)
   +- ^ FilterExecTransformer (83)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (82)


(82) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#6, d_year#55, d_moy#7]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,1), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(83) FilterExecTransformer
Input [3]: [d_date_sk#6, d_year#55, d_moy#7]
Arguments: ((((isnotnull(d_year#55) AND isnotnull(d_moy#7)) AND (d_year#55 = 2001)) AND (d_moy#7 = 1)) AND isnotnull(d_date_sk#6))

(84) ProjectExecTransformer
Output [2]: [d_date_sk#6, d_moy#7]
Input [3]: [d_date_sk#6, d_year#55, d_moy#7]

(85) WholeStageCodegenTransformer (1)
Input [2]: [d_date_sk#6, d_moy#7]
Arguments: false

(86) ColumnarBroadcastExchange
Input [2]: [d_date_sk#6, d_moy#7]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=8]

Subquery:2 Hosting operator id = 40 Hosting Expression = inv_date_sk#32 IN dynamicpruning#33
ColumnarBroadcastExchange (91)
+- ^ ProjectExecTransformer (89)
   +- ^ FilterExecTransformer (88)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (87)


(87) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#34, d_year#56, d_moy#35]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>

(88) FilterExecTransformer
Input [3]: [d_date_sk#34, d_year#56, d_moy#35]
Arguments: ((((isnotnull(d_year#56) AND isnotnull(d_moy#35)) AND (d_year#56 = 2001)) AND (d_moy#35 = 2)) AND isnotnull(d_date_sk#34))

(89) ProjectExecTransformer
Output [2]: [d_date_sk#34, d_moy#35]
Input [3]: [d_date_sk#34, d_year#56, d_moy#35]

(90) WholeStageCodegenTransformer (7)
Input [2]: [d_date_sk#34, d_moy#35]
Arguments: false

(91) ColumnarBroadcastExchange
Input [2]: [d_date_sk#34, d_moy#35]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=9]


