== Physical Plan ==
* ColumnarToRow (38)
+- CometTakeOrderedAndProject (37)
   +- CometFilter (36)
      +- CometHashAggregate (35)
         +- CometExchange (34)
            +- CometHashAggregate (33)
               +- CometProject (32)
                  +- CometBroadcastHashJoin (31)
                     :- CometProject (18)
                     :  +- CometBroadcastHashJoin (17)
                     :     :- CometProject (12)
                     :     :  +- CometBroadcastHashJoin (11)
                     :     :     :- CometProject (7)
                     :     :     :  +- CometBroadcastHashJoin (6)
                     :     :     :     :- CometFilter (2)
                     :     :     :     :  +- CometNativeScan: `spark_catalog`.`default`.`customer_address` (1)
                     :     :     :     +- CometBroadcastExchange (5)
                     :     :     :        +- CometFilter (4)
                     :     :     :           +- CometNativeScan: `spark_catalog`.`default`.`customer` (3)
                     :     :     +- CometBroadcastExchange (10)
                     :     :        +- CometFilter (9)
                     :     :           +- CometNativeScan: `spark_catalog`.`default`.`store_sales` (8)
                     :     +- CometBroadcastExchange (16)
                     :        +- CometProject (15)
                     :           +- CometFilter (14)
                     :              +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (13)
                     +- CometBroadcastExchange (30)
                        +- CometProject (29)
                           +- CometBroadcastHashJoin (28)
                              :- CometFilter (20)
                              :  +- CometNativeScan: `spark_catalog`.`default`.`item` (19)
                              +- CometBroadcastExchange (27)
                                 +- CometFilter (26)
                                    +- CometHashAggregate (25)
                                       +- CometExchange (24)
                                          +- CometHashAggregate (23)
                                             +- CometFilter (22)
                                                +- CometNativeScan: `spark_catalog`.`default`.`item` (21)


(1) CometNativeScan: `spark_catalog`.`default`.`customer_address`
Output [2]: [ca_address_sk#1, ca_state#2]
Arguments: [ca_address_sk#1, ca_state#2]

(2) CometFilter
Input [2]: [ca_address_sk#1, ca_state#2]
Condition : isnotnull(ca_address_sk#1)

(3) CometNativeScan: `spark_catalog`.`default`.`customer`
Output [2]: [c_customer_sk#3, c_current_addr_sk#4]
Arguments: [c_customer_sk#3, c_current_addr_sk#4]

(4) CometFilter
Input [2]: [c_customer_sk#3, c_current_addr_sk#4]
Condition : (isnotnull(c_current_addr_sk#4) AND isnotnull(c_customer_sk#3))

(5) CometBroadcastExchange
Input [2]: [c_customer_sk#3, c_current_addr_sk#4]
Arguments: [c_customer_sk#3, c_current_addr_sk#4]

(6) CometBroadcastHashJoin
Left output [2]: [ca_address_sk#1, ca_state#2]
Right output [2]: [c_customer_sk#3, c_current_addr_sk#4]
Arguments: [ca_address_sk#1], [c_current_addr_sk#4], Inner, BuildRight

(7) CometProject
Input [4]: [ca_address_sk#1, ca_state#2, c_customer_sk#3, c_current_addr_sk#4]
Arguments: [ca_state#2, c_customer_sk#3], [ca_state#2, c_customer_sk#3]

(8) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]

(9) CometFilter
Input [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Condition : (isnotnull(ss_customer_sk#6) AND isnotnull(ss_item_sk#5))

(10) CometBroadcastExchange
Input [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]

(11) CometBroadcastHashJoin
Left output [2]: [ca_state#2, c_customer_sk#3]
Right output [3]: [ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [c_customer_sk#3], [ss_customer_sk#6], Inner, BuildRight

(12) CometProject
Input [5]: [ca_state#2, c_customer_sk#3, ss_item_sk#5, ss_customer_sk#6, ss_sold_date_sk#7]
Arguments: [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7], [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7]

(13) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [2]: [d_date_sk#8, d_month_seq#9]
Arguments: [d_date_sk#8, d_month_seq#9]

(14) CometFilter
Input [2]: [d_date_sk#8, d_month_seq#9]
Condition : ((isnotnull(d_month_seq#9) AND (d_month_seq#9 = Subquery scalar-subquery#10, [id=#11])) AND isnotnull(d_date_sk#8))

(15) CometProject
Input [2]: [d_date_sk#8, d_month_seq#9]
Arguments: [d_date_sk#8], [d_date_sk#8]

(16) CometBroadcastExchange
Input [1]: [d_date_sk#8]
Arguments: [d_date_sk#8]

(17) CometBroadcastHashJoin
Left output [3]: [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7]
Right output [1]: [d_date_sk#8]
Arguments: [ss_sold_date_sk#7], [d_date_sk#8], Inner, BuildRight

(18) CometProject
Input [4]: [ca_state#2, ss_item_sk#5, ss_sold_date_sk#7, d_date_sk#8]
Arguments: [ca_state#2, ss_item_sk#5], [ca_state#2, ss_item_sk#5]

(19) CometNativeScan: `spark_catalog`.`default`.`item`
Output [3]: [i_item_sk#12, i_current_price#13, i_category#14]
Arguments: [i_item_sk#12, i_current_price#13, i_category#14]

(20) CometFilter
Input [3]: [i_item_sk#12, i_current_price#13, i_category#14]
Condition : ((isnotnull(i_current_price#13) AND isnotnull(i_category#14)) AND isnotnull(i_item_sk#12))

(21) CometNativeScan: `spark_catalog`.`default`.`item`
Output [2]: [i_current_price#15, i_category#16]
Arguments: [i_current_price#15, i_category#16]

(22) CometFilter
Input [2]: [i_current_price#15, i_category#16]
Condition : isnotnull(i_category#16)

(23) CometHashAggregate
Input [2]: [i_current_price#15, i_category#16]
Keys [1]: [i_category#16]
Functions [1]: [partial_avg(UnscaledValue(i_current_price#15))]

(24) CometExchange
Input [3]: [i_category#16, sum#17, count#18]
Arguments: hashpartitioning(i_category#16, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(25) CometHashAggregate
Input [3]: [i_category#16, sum#17, count#18]
Keys [1]: [i_category#16]
Functions [1]: [avg(UnscaledValue(i_current_price#15))]

(26) CometFilter
Input [2]: [avg(i_current_price)#19, i_category#16]
Condition : isnotnull(avg(i_current_price)#19)

(27) CometBroadcastExchange
Input [2]: [avg(i_current_price)#19, i_category#16]
Arguments: [avg(i_current_price)#19, i_category#16]

(28) CometBroadcastHashJoin
Left output [3]: [i_item_sk#12, i_current_price#13, i_category#14]
Right output [2]: [avg(i_current_price)#19, i_category#16]
Arguments: [i_category#14], [i_category#16], Inner, (cast(i_current_price#13 as decimal(14,7)) > (1.2 * avg(i_current_price)#19)), BuildRight

(29) CometProject
Input [5]: [i_item_sk#12, i_current_price#13, i_category#14, avg(i_current_price)#19, i_category#16]
Arguments: [i_item_sk#12], [i_item_sk#12]

(30) CometBroadcastExchange
Input [1]: [i_item_sk#12]
Arguments: [i_item_sk#12]

(31) CometBroadcastHashJoin
Left output [2]: [ca_state#2, ss_item_sk#5]
Right output [1]: [i_item_sk#12]
Arguments: [ss_item_sk#5], [i_item_sk#12], Inner, BuildRight

(32) CometProject
Input [3]: [ca_state#2, ss_item_sk#5, i_item_sk#12]
Arguments: [ca_state#2], [ca_state#2]

(33) CometHashAggregate
Input [1]: [ca_state#2]
Keys [1]: [ca_state#2]
Functions [1]: [partial_count(1)]

(34) CometExchange
Input [2]: [ca_state#2, count#20]
Arguments: hashpartitioning(ca_state#2, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(35) CometHashAggregate
Input [2]: [ca_state#2, count#20]
Keys [1]: [ca_state#2]
Functions [1]: [count(1)]

(36) CometFilter
Input [3]: [state#21, cnt#22, ca_state#2]
Condition : (cnt#22 >= 10)

(37) CometTakeOrderedAndProject
Input [3]: [state#21, cnt#22, ca_state#2]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[cnt#22 ASC NULLS FIRST,ca_state#2 ASC NULLS FIRST], output=[state#21,cnt#22]), [state#21, cnt#22], 100, [cnt#22 ASC NULLS FIRST, ca_state#2 ASC NULLS FIRST], [state#21, cnt#22]

(38) ColumnarToRow [codegen id : 1]
Input [2]: [state#21, cnt#22]

===== Subqueries =====

Subquery:1 Hosting operator id = 14 Hosting Expression = Subquery scalar-subquery#10, [id=#11]
* ColumnarToRow (45)
+- CometHashAggregate (44)
   +- CometExchange (43)
      +- CometHashAggregate (42)
         +- CometProject (41)
            +- CometFilter (40)
               +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (39)


(39) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [3]: [d_month_seq#23, d_year#24, d_moy#25]
Arguments: [d_month_seq#23, d_year#24, d_moy#25]

(40) CometFilter
Input [3]: [d_month_seq#23, d_year#24, d_moy#25]
Condition : (((isnotnull(d_year#24) AND isnotnull(d_moy#25)) AND (d_year#24 = 2000)) AND (d_moy#25 = 1))

(41) CometProject
Input [3]: [d_month_seq#23, d_year#24, d_moy#25]
Arguments: [d_month_seq#23], [d_month_seq#23]

(42) CometHashAggregate
Input [1]: [d_month_seq#23]
Keys [1]: [d_month_seq#23]
Functions: []

(43) CometExchange
Input [1]: [d_month_seq#23]
Arguments: hashpartitioning(d_month_seq#23, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(44) CometHashAggregate
Input [1]: [d_month_seq#23]
Keys [1]: [d_month_seq#23]
Functions: []

(45) ColumnarToRow [codegen id : 1]
Input [1]: [d_month_seq#23]


