== Physical Plan ==
VeloxColumnarToRow (75)
+- ^ SortExecTransformer (73)
   +- ^ InputIteratorTransformer (72)
      +- ColumnarExchange (70)
         +- VeloxResizeBatches (69)
            +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (67)
               :- ^ 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 (18)
               :                                :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (17)
               :                                :     :- ^ ProjectExecTransformer (10)
               :                                :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (9)
               :                                :     :     :- ^ FilterExecTransformer (2)
               :                                :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.inventory (1)
               :                                :     :     +- ^ InputIteratorTransformer (8)
               :                                :     :        +- ColumnarBroadcastExchange (6)
               :                                :     :           +- ^ FilterExecTransformer (4)
               :                                :     :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.item (3)
               :                                :     +- ^ InputIteratorTransformer (16)
               :                                :        +- ColumnarBroadcastExchange (14)
               :                                :           +- ^ FilterExecTransformer (12)
               :                                :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.warehouse (11)
               :                                +- ^ InputIteratorTransformer (21)
               :                                   +- ReusedExchange (19)
               +- ^ InputIteratorTransformer (66)
                  +- ColumnarBroadcastExchange (64)
                     +- ^ ProjectExecTransformer (62)
                        +- ^ FilterExecTransformer (61)
                           +- ^ ProjectExecTransformer (60)
                              +- ^ RegularHashAggregateExecTransformer (59)
                                 +- ^ InputIteratorTransformer (58)
                                    +- ColumnarExchange (56)
                                       +- VeloxResizeBatches (55)
                                          +- ^ ProjectExecTransformer (53)
                                             +- ^ FlushableHashAggregateExecTransformer (52)
                                                +- ^ ProjectExecTransformer (51)
                                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (50)
                                                      :- ^ ProjectExecTransformer (46)
                                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (45)
                                                      :     :- ^ ProjectExecTransformer (41)
                                                      :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (40)
                                                      :     :     :- ^ FilterExecTransformer (36)
                                                      :     :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.inventory (35)
                                                      :     :     +- ^ InputIteratorTransformer (39)
                                                      :     :        +- ReusedExchange (37)
                                                      :     +- ^ InputIteratorTransformer (44)
                                                      :        +- ReusedExchange (42)
                                                      +- ^ InputIteratorTransformer (49)
                                                         +- ReusedExchange (47)


(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) FileSourceScanExecTransformer parquet spark_catalog.default.item
Output [1]: [i_item_sk#6]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int>

(4) FilterExecTransformer
Input [1]: [i_item_sk#6]
Arguments: isnotnull(i_item_sk#6)

(5) WholeStageCodegenTransformer (2)
Input [1]: [i_item_sk#6]
Arguments: false

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

(7) InputAdapter
Input [1]: [i_item_sk#6]

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

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

(10) ProjectExecTransformer
Output [4]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#6]
Input [5]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#6]

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

(12) FilterExecTransformer
Input [2]: [w_warehouse_sk#7, w_warehouse_name#8]
Arguments: isnotnull(w_warehouse_sk#7)

(13) WholeStageCodegenTransformer (3)
Input [2]: [w_warehouse_sk#7, w_warehouse_name#8]
Arguments: false

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

(15) InputAdapter
Input [2]: [w_warehouse_sk#7, w_warehouse_name#8]

(16) InputIteratorTransformer
Input [2]: [w_warehouse_sk#7, w_warehouse_name#8]

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

(18) ProjectExecTransformer
Output [5]: [inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#6, w_warehouse_sk#7, w_warehouse_name#8]
Input [6]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#6, w_warehouse_sk#7, w_warehouse_name#8]

(19) ReusedExchange [Reuses operator id: 80]
Output [2]: [d_date_sk#9, d_moy#10]

(20) InputAdapter
Input [2]: [d_date_sk#9, d_moy#10]

(21) InputIteratorTransformer
Input [2]: [d_date_sk#9, d_moy#10]

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

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

(24) FlushableHashAggregateExecTransformer
Input [6]: [inv_quantity_on_hand#3, i_item_sk#6, w_warehouse_sk#7, w_warehouse_name#8, d_moy#10, _pre_1#11]
Keys [4]: [w_warehouse_name#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10]
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#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, n#17, avg#18, m2#19, sum#20, count#21]

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

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

(27) VeloxResizeBatches
Input [10]: [hash_partition_key#22, w_warehouse_name#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, 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#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, n#17, avg#18, m2#19, sum#20, count#21]
Arguments: hashpartitioning(w_warehouse_name#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, 1), ENSURE_REQUIREMENTS, [w_warehouse_name#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, n#17, avg#18, m2#19, sum#20, count#21], [plan_id=3], [shuffle_writer_type=hash]

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

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

(31) RegularHashAggregateExecTransformer
Input [9]: [w_warehouse_name#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, n#17, avg#18, m2#19, sum#20, count#21]
Keys [4]: [w_warehouse_name#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10]
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#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, 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#7, i_item_sk#6, d_moy#10, 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#8, w_warehouse_sk#7, i_item_sk#6, d_moy#10, 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#7, i_item_sk#6, d_moy#10, stdev#25, mean#26]
Arguments: CASE WHEN (mean#26 = 0.0) THEN false ELSE ((stdev#25 / mean#26) > 1.0) END

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

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

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

(37) ReusedExchange [Reuses operator id: 6]
Output [1]: [i_item_sk#33]

(38) InputAdapter
Input [1]: [i_item_sk#33]

(39) InputIteratorTransformer
Input [1]: [i_item_sk#33]

(40) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_item_sk#28]
Right keys [1]: [i_item_sk#33]
Join type: Inner
Join condition: None

(41) ProjectExecTransformer
Output [4]: [inv_warehouse_sk#29, inv_quantity_on_hand#30, inv_date_sk#31, i_item_sk#33]
Input [5]: [inv_item_sk#28, inv_warehouse_sk#29, inv_quantity_on_hand#30, inv_date_sk#31, i_item_sk#33]

(42) ReusedExchange [Reuses operator id: 14]
Output [2]: [w_warehouse_sk#34, w_warehouse_name#35]

(43) InputAdapter
Input [2]: [w_warehouse_sk#34, w_warehouse_name#35]

(44) InputIteratorTransformer
Input [2]: [w_warehouse_sk#34, w_warehouse_name#35]

(45) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_warehouse_sk#29]
Right keys [1]: [w_warehouse_sk#34]
Join type: Inner
Join condition: None

(46) ProjectExecTransformer
Output [5]: [inv_quantity_on_hand#30, inv_date_sk#31, i_item_sk#33, w_warehouse_sk#34, w_warehouse_name#35]
Input [6]: [inv_warehouse_sk#29, inv_quantity_on_hand#30, inv_date_sk#31, i_item_sk#33, w_warehouse_sk#34, w_warehouse_name#35]

(47) ReusedExchange [Reuses operator id: 85]
Output [2]: [d_date_sk#36, d_moy#37]

(48) InputAdapter
Input [2]: [d_date_sk#36, d_moy#37]

(49) InputIteratorTransformer
Input [2]: [d_date_sk#36, d_moy#37]

(50) BroadcastHashJoinExecTransformer
Left keys [1]: [inv_date_sk#31]
Right keys [1]: [d_date_sk#36]
Join type: Inner
Join condition: None

(51) ProjectExecTransformer
Output [6]: [inv_quantity_on_hand#30, i_item_sk#33, w_warehouse_sk#34, w_warehouse_name#35, d_moy#37, cast(inv_quantity_on_hand#30 as double) AS _pre_2#38]
Input [7]: [inv_quantity_on_hand#30, inv_date_sk#31, i_item_sk#33, w_warehouse_sk#34, w_warehouse_name#35, d_date_sk#36, d_moy#37]

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

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

(54) WholeStageCodegenTransformer (10)
Input [10]: [hash_partition_key#49, w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, n#44, avg#45, m2#46, sum#47, count#48]
Arguments: false

(55) VeloxResizeBatches
Input [10]: [hash_partition_key#49, w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, n#44, avg#45, m2#46, sum#47, count#48]
Arguments: 1024, 2147483647, 10485760

(56) ColumnarExchange
Input [10]: [hash_partition_key#49, w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, n#44, avg#45, m2#46, sum#47, count#48]
Arguments: hashpartitioning(w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, 1), ENSURE_REQUIREMENTS, [w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, n#44, avg#45, m2#46, sum#47, count#48], [plan_id=4], [shuffle_writer_type=hash]

(57) InputAdapter
Input [9]: [w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, n#44, avg#45, m2#46, sum#47, count#48]

(58) InputIteratorTransformer
Input [9]: [w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, n#44, avg#45, m2#46, sum#47, count#48]

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

(60) ProjectExecTransformer
Output [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, stddev_samp(cast(inv_quantity_on_hand#30 as double))#23 AS stdev#50, avg(inv_quantity_on_hand#30)#24 AS mean#51]
Input [6]: [w_warehouse_name#35, w_warehouse_sk#34, i_item_sk#33, d_moy#37, stddev_samp(cast(inv_quantity_on_hand#30 as double))#23, avg(inv_quantity_on_hand#30)#24]

(61) FilterExecTransformer
Input [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, stdev#50, mean#51]
Arguments: CASE WHEN (mean#51 = 0.0) THEN false ELSE ((stdev#50 / mean#51) > 1.0) END

(62) ProjectExecTransformer
Output [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, CASE WHEN (mean#51 = 0.0) THEN null ELSE (stdev#50 / mean#51) END AS cov#52]
Input [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, stdev#50, mean#51]

(63) WholeStageCodegenTransformer (11)
Input [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: false

(64) ColumnarBroadcastExchange
Input [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: HashedRelationBroadcastMode(List((shiftleft(cast(input[1, int, true] as bigint), 32) | (cast(input[0, int, true] as bigint) & 4294967295))),false), [plan_id=5]

(65) InputAdapter
Input [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]

(66) InputIteratorTransformer
Input [5]: [w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]

(67) BroadcastHashJoinExecTransformer
Left keys [2]: [i_item_sk#6, w_warehouse_sk#7]
Right keys [2]: [i_item_sk#33, w_warehouse_sk#34]
Join type: Inner
Join condition: None

(68) WholeStageCodegenTransformer (12)
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: false

(69) VeloxResizeBatches
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: 1024, 2147483647, 10485760

(70) ColumnarExchange
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: rangepartitioning(w_warehouse_sk#7 ASC NULLS FIRST, i_item_sk#6 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#26 ASC NULLS FIRST, cov#27 ASC NULLS FIRST, d_moy#37 ASC NULLS FIRST, mean#51 ASC NULLS FIRST, cov#52 ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=6], [shuffle_writer_type=hash]

(71) InputAdapter
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]

(72) InputIteratorTransformer
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]

(73) SortExecTransformer
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: [w_warehouse_sk#7 ASC NULLS FIRST, i_item_sk#6 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#26 ASC NULLS FIRST, cov#27 ASC NULLS FIRST, d_moy#37 ASC NULLS FIRST, mean#51 ASC NULLS FIRST, cov#52 ASC NULLS FIRST], true, 0

(74) WholeStageCodegenTransformer (13)
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]
Arguments: false

(75) VeloxColumnarToRow
Input [10]: [w_warehouse_sk#7, i_item_sk#6, d_moy#10, mean#26, cov#27, w_warehouse_sk#34, i_item_sk#33, d_moy#37, mean#51, cov#52]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = inv_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (80)
+- ^ ProjectExecTransformer (78)
   +- ^ FilterExecTransformer (77)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (76)


(76) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#9, d_year#53, d_moy#10]
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>

(77) FilterExecTransformer
Input [3]: [d_date_sk#9, d_year#53, d_moy#10]
Arguments: ((((isnotnull(d_year#53) AND isnotnull(d_moy#10)) AND (d_year#53 = 2001)) AND (d_moy#10 = 1)) AND isnotnull(d_date_sk#9))

(78) ProjectExecTransformer
Output [2]: [d_date_sk#9, d_moy#10]
Input [3]: [d_date_sk#9, d_year#53, d_moy#10]

(79) WholeStageCodegenTransformer (1)
Input [2]: [d_date_sk#9, d_moy#10]
Arguments: false

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

Subquery:2 Hosting operator id = 35 Hosting Expression = inv_date_sk#31 IN dynamicpruning#32
ColumnarBroadcastExchange (85)
+- ^ ProjectExecTransformer (83)
   +- ^ FilterExecTransformer (82)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (81)


(81) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#36, d_year#54, d_moy#37]
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>

(82) FilterExecTransformer
Input [3]: [d_date_sk#36, d_year#54, d_moy#37]
Arguments: ((((isnotnull(d_year#54) AND isnotnull(d_moy#37)) AND (d_year#54 = 2001)) AND (d_moy#37 = 2)) AND isnotnull(d_date_sk#36))

(83) ProjectExecTransformer
Output [2]: [d_date_sk#36, d_moy#37]
Input [3]: [d_date_sk#36, d_year#54, d_moy#37]

(84) WholeStageCodegenTransformer (6)
Input [2]: [d_date_sk#36, d_moy#37]
Arguments: false

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


