== Physical Plan ==
* ColumnarToRow (47)
+- CometSort (46)
   +- CometColumnarExchange (45)
      +- CometBroadcastHashJoin (44)
         :- CometProject (23)
         :  +- CometFilter (22)
         :     +- CometHashAggregate (21)
         :        +- CometExchange (20)
         :           +- CometHashAggregate (19)
         :              +- CometProject (18)
         :                 +- CometBroadcastHashJoin (17)
         :                    :- CometProject (12)
         :                    :  +- CometBroadcastHashJoin (11)
         :                    :     :- CometProject (7)
         :                    :     :  +- CometBroadcastHashJoin (6)
         :                    :     :     :- CometFilter (2)
         :                    :     :     :  +- CometNativeScan: `spark_catalog`.`default`.`inventory` (1)
         :                    :     :     +- CometBroadcastExchange (5)
         :                    :     :        +- CometFilter (4)
         :                    :     :           +- CometNativeScan: `spark_catalog`.`default`.`item` (3)
         :                    :     +- CometBroadcastExchange (10)
         :                    :        +- CometFilter (9)
         :                    :           +- CometNativeScan: `spark_catalog`.`default`.`warehouse` (8)
         :                    +- CometBroadcastExchange (16)
         :                       +- CometProject (15)
         :                          +- CometFilter (14)
         :                             +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (13)
         +- CometBroadcastExchange (43)
            +- CometProject (42)
               +- CometFilter (41)
                  +- CometHashAggregate (40)
                     +- CometExchange (39)
                        +- CometHashAggregate (38)
                           +- CometProject (37)
                              +- CometBroadcastHashJoin (36)
                                 :- CometProject (31)
                                 :  +- CometBroadcastHashJoin (30)
                                 :     :- CometProject (28)
                                 :     :  +- CometBroadcastHashJoin (27)
                                 :     :     :- CometFilter (25)
                                 :     :     :  +- CometNativeScan: `spark_catalog`.`default`.`inventory` (24)
                                 :     :     +- ReusedExchange (26)
                                 :     +- ReusedExchange (29)
                                 +- CometBroadcastExchange (35)
                                    +- CometProject (34)
                                       +- CometFilter (33)
                                          +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (32)


(1) CometNativeScan: `spark_catalog`.`default`.`inventory`
Output [4]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4]
Arguments: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4]

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

(3) CometNativeScan: `spark_catalog`.`default`.`item`
Output [1]: [i_item_sk#5]
Arguments: [i_item_sk#5]

(4) CometFilter
Input [1]: [i_item_sk#5]
Condition : isnotnull(i_item_sk#5)

(5) CometBroadcastExchange
Input [1]: [i_item_sk#5]
Arguments: [i_item_sk#5]

(6) CometBroadcastHashJoin
Left output [4]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4]
Right output [1]: [i_item_sk#5]
Arguments: [inv_item_sk#1], [i_item_sk#5], Inner, BuildRight

(7) CometProject
Input [5]: [inv_item_sk#1, inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5]
Arguments: [inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5], [inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5]

(8) CometNativeScan: `spark_catalog`.`default`.`warehouse`
Output [2]: [w_warehouse_sk#6, w_warehouse_name#7]
Arguments: [w_warehouse_sk#6, w_warehouse_name#7]

(9) CometFilter
Input [2]: [w_warehouse_sk#6, w_warehouse_name#7]
Condition : isnotnull(w_warehouse_sk#6)

(10) CometBroadcastExchange
Input [2]: [w_warehouse_sk#6, w_warehouse_name#7]
Arguments: [w_warehouse_sk#6, w_warehouse_name#7]

(11) CometBroadcastHashJoin
Left output [4]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5]
Right output [2]: [w_warehouse_sk#6, w_warehouse_name#7]
Arguments: [inv_warehouse_sk#2], [w_warehouse_sk#6], Inner, BuildRight

(12) CometProject
Input [6]: [inv_warehouse_sk#2, inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7]
Arguments: [inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7], [inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7]

(13) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [3]: [d_date_sk#8, d_year#9, d_moy#10]
Arguments: [d_date_sk#8, d_year#9, d_moy#10]

(14) CometFilter
Input [3]: [d_date_sk#8, d_year#9, d_moy#10]
Condition : ((((isnotnull(d_year#9) AND isnotnull(d_moy#10)) AND (d_year#9 = 2001)) AND (d_moy#10 = 1)) AND isnotnull(d_date_sk#8))

(15) CometProject
Input [3]: [d_date_sk#8, d_year#9, d_moy#10]
Arguments: [d_date_sk#8, d_moy#10], [d_date_sk#8, d_moy#10]

(16) CometBroadcastExchange
Input [2]: [d_date_sk#8, d_moy#10]
Arguments: [d_date_sk#8, d_moy#10]

(17) CometBroadcastHashJoin
Left output [5]: [inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7]
Right output [2]: [d_date_sk#8, d_moy#10]
Arguments: [inv_date_sk#4], [d_date_sk#8], Inner, BuildRight

(18) CometProject
Input [7]: [inv_quantity_on_hand#3, inv_date_sk#4, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_date_sk#8, d_moy#10]
Arguments: [inv_quantity_on_hand#3, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10], [inv_quantity_on_hand#3, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10]

(19) CometHashAggregate
Input [5]: [inv_quantity_on_hand#3, i_item_sk#5, w_warehouse_sk#6, w_warehouse_name#7, d_moy#10]
Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10]
Functions [2]: [partial_stddev_samp(cast(inv_quantity_on_hand#3 as double)), partial_avg(inv_quantity_on_hand#3)]

(20) CometExchange
Input [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#11, avg#12, m2#13, sum#14, count#15]
Arguments: hashpartitioning(w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(21) CometHashAggregate
Input [9]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10, n#11, avg#12, m2#13, sum#14, count#15]
Keys [4]: [w_warehouse_name#7, w_warehouse_sk#6, i_item_sk#5, d_moy#10]
Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#3 as double)), avg(inv_quantity_on_hand#3)]

(22) CometFilter
Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#16, mean#17]
Condition : (CASE WHEN (knownfloatingpointnormalized(normalizenanandzero(mean#17)) = 0.0) THEN false ELSE (knownfloatingpointnormalized(normalizenanandzero((stdev#16 / knownfloatingpointnormalized(normalizenanandzero(mean#17))))) > 1.0) END AND CASE WHEN (knownfloatingpointnormalized(normalizenanandzero(mean#17)) = 0.0) THEN false ELSE (knownfloatingpointnormalized(normalizenanandzero((stdev#16 / knownfloatingpointnormalized(normalizenanandzero(mean#17))))) > 1.5) END)

(23) CometProject
Input [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, stdev#16, mean#17]
Arguments: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, cov#18], [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, CASE WHEN (knownfloatingpointnormalized(normalizenanandzero(mean#17)) = 0.0) THEN null ELSE (stdev#16 / knownfloatingpointnormalized(normalizenanandzero(mean#17))) END AS cov#18]

(24) CometNativeScan: `spark_catalog`.`default`.`inventory`
Output [4]: [inv_item_sk#19, inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22]
Arguments: [inv_item_sk#19, inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22]

(25) CometFilter
Input [4]: [inv_item_sk#19, inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22]
Condition : (isnotnull(inv_item_sk#19) AND isnotnull(inv_warehouse_sk#20))

(26) ReusedExchange [Reuses operator id: 5]
Output [1]: [i_item_sk#23]

(27) CometBroadcastHashJoin
Left output [4]: [inv_item_sk#19, inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22]
Right output [1]: [i_item_sk#23]
Arguments: [inv_item_sk#19], [i_item_sk#23], Inner, BuildRight

(28) CometProject
Input [5]: [inv_item_sk#19, inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23]
Arguments: [inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23], [inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23]

(29) ReusedExchange [Reuses operator id: 10]
Output [2]: [w_warehouse_sk#24, w_warehouse_name#25]

(30) CometBroadcastHashJoin
Left output [4]: [inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23]
Right output [2]: [w_warehouse_sk#24, w_warehouse_name#25]
Arguments: [inv_warehouse_sk#20], [w_warehouse_sk#24], Inner, BuildRight

(31) CometProject
Input [6]: [inv_warehouse_sk#20, inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25]
Arguments: [inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25], [inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25]

(32) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [3]: [d_date_sk#26, d_year#27, d_moy#28]
Arguments: [d_date_sk#26, d_year#27, d_moy#28]

(33) CometFilter
Input [3]: [d_date_sk#26, d_year#27, d_moy#28]
Condition : ((((isnotnull(d_year#27) AND isnotnull(d_moy#28)) AND (d_year#27 = 2001)) AND (d_moy#28 = 2)) AND isnotnull(d_date_sk#26))

(34) CometProject
Input [3]: [d_date_sk#26, d_year#27, d_moy#28]
Arguments: [d_date_sk#26, d_moy#28], [d_date_sk#26, d_moy#28]

(35) CometBroadcastExchange
Input [2]: [d_date_sk#26, d_moy#28]
Arguments: [d_date_sk#26, d_moy#28]

(36) CometBroadcastHashJoin
Left output [5]: [inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25]
Right output [2]: [d_date_sk#26, d_moy#28]
Arguments: [inv_date_sk#22], [d_date_sk#26], Inner, BuildRight

(37) CometProject
Input [7]: [inv_quantity_on_hand#21, inv_date_sk#22, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25, d_date_sk#26, d_moy#28]
Arguments: [inv_quantity_on_hand#21, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25, d_moy#28], [inv_quantity_on_hand#21, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25, d_moy#28]

(38) CometHashAggregate
Input [5]: [inv_quantity_on_hand#21, i_item_sk#23, w_warehouse_sk#24, w_warehouse_name#25, d_moy#28]
Keys [4]: [w_warehouse_name#25, w_warehouse_sk#24, i_item_sk#23, d_moy#28]
Functions [2]: [partial_stddev_samp(cast(inv_quantity_on_hand#21 as double)), partial_avg(inv_quantity_on_hand#21)]

(39) CometExchange
Input [9]: [w_warehouse_name#25, w_warehouse_sk#24, i_item_sk#23, d_moy#28, n#29, avg#30, m2#31, sum#32, count#33]
Arguments: hashpartitioning(w_warehouse_name#25, w_warehouse_sk#24, i_item_sk#23, d_moy#28, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(40) CometHashAggregate
Input [9]: [w_warehouse_name#25, w_warehouse_sk#24, i_item_sk#23, d_moy#28, n#29, avg#30, m2#31, sum#32, count#33]
Keys [4]: [w_warehouse_name#25, w_warehouse_sk#24, i_item_sk#23, d_moy#28]
Functions [2]: [stddev_samp(cast(inv_quantity_on_hand#21 as double)), avg(inv_quantity_on_hand#21)]

(41) CometFilter
Input [5]: [w_warehouse_sk#24, i_item_sk#23, d_moy#28, stdev#16, mean#17]
Condition : CASE WHEN (knownfloatingpointnormalized(normalizenanandzero(mean#17)) = 0.0) THEN false ELSE (knownfloatingpointnormalized(normalizenanandzero((stdev#16 / knownfloatingpointnormalized(normalizenanandzero(mean#17))))) > 1.0) END

(42) CometProject
Input [5]: [w_warehouse_sk#24, i_item_sk#23, d_moy#28, stdev#16, mean#17]
Arguments: [w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35], [w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#17 AS mean#34, CASE WHEN (knownfloatingpointnormalized(normalizenanandzero(mean#17)) = 0.0) THEN null ELSE (stdev#16 / knownfloatingpointnormalized(normalizenanandzero(mean#17))) END AS cov#35]

(43) CometBroadcastExchange
Input [5]: [w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35]
Arguments: [w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35]

(44) CometBroadcastHashJoin
Left output [5]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, cov#18]
Right output [5]: [w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35]
Arguments: [i_item_sk#5, w_warehouse_sk#6], [i_item_sk#23, w_warehouse_sk#24], Inner, BuildRight

(45) CometColumnarExchange
Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, cov#18, w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35]
Arguments: rangepartitioning(w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#17 ASC NULLS FIRST, cov#18 ASC NULLS FIRST, d_moy#28 ASC NULLS FIRST, mean#34 ASC NULLS FIRST, cov#35 ASC NULLS FIRST, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=3]

(46) CometSort
Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, cov#18, w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35]
Arguments: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, cov#18, w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35], [w_warehouse_sk#6 ASC NULLS FIRST, i_item_sk#5 ASC NULLS FIRST, d_moy#10 ASC NULLS FIRST, mean#17 ASC NULLS FIRST, cov#18 ASC NULLS FIRST, d_moy#28 ASC NULLS FIRST, mean#34 ASC NULLS FIRST, cov#35 ASC NULLS FIRST]

(47) ColumnarToRow [codegen id : 1]
Input [10]: [w_warehouse_sk#6, i_item_sk#5, d_moy#10, mean#17, cov#18, w_warehouse_sk#24, i_item_sk#23, d_moy#28, mean#34, cov#35]

