== Physical Plan ==
* ColumnarToRow (72)
+- CometTakeOrderedAndProject (71)
   +- CometHashAggregate (70)
      +- CometExchange (69)
         +- CometHashAggregate (68)
            +- CometExpand (67)
               +- CometUnion (66)
                  :- CometProject (57)
                  :  +- CometFilter (56)
                  :     +- CometHashAggregate (55)
                  :        +- CometExchange (54)
                  :           +- CometHashAggregate (53)
                  :              +- CometProject (52)
                  :                 +- CometBroadcastHashJoin (51)
                  :                    :- CometProject (46)
                  :                    :  +- CometBroadcastHashJoin (45)
                  :                    :     :- CometBroadcastHashJoin (39)
                  :                    :     :  :- CometFilter (2)
                  :                    :     :  :  +- CometNativeScan: `spark_catalog`.`default`.`store_sales` (1)
                  :                    :     :  +- CometBroadcastExchange (38)
                  :                    :     :     +- CometProject (37)
                  :                    :     :        +- CometBroadcastHashJoin (36)
                  :                    :     :           :- CometFilter (4)
                  :                    :     :           :  +- CometNativeScan: `spark_catalog`.`default`.`item` (3)
                  :                    :     :           +- CometBroadcastExchange (35)
                  :                    :     :              +- CometBroadcastHashJoin (34)
                  :                    :     :                 :- CometHashAggregate (32)
                  :                    :     :                 :  +- CometExchange (31)
                  :                    :     :                 :     +- CometHashAggregate (30)
                  :                    :     :                 :        +- CometProject (29)
                  :                    :     :                 :           +- CometBroadcastHashJoin (28)
                  :                    :     :                 :              :- CometProject (26)
                  :                    :     :                 :              :  +- CometBroadcastHashJoin (25)
                  :                    :     :                 :              :     :- CometFilter (6)
                  :                    :     :                 :              :     :  +- CometNativeScan: `spark_catalog`.`default`.`store_sales` (5)
                  :                    :     :                 :              :     +- CometBroadcastExchange (24)
                  :                    :     :                 :              :        +- CometBroadcastHashJoin (23)
                  :                    :     :                 :              :           :- CometFilter (8)
                  :                    :     :                 :              :           :  +- CometNativeScan: `spark_catalog`.`default`.`item` (7)
                  :                    :     :                 :              :           +- CometBroadcastExchange (22)
                  :                    :     :                 :              :              +- CometProject (21)
                  :                    :     :                 :              :                 +- CometBroadcastHashJoin (20)
                  :                    :     :                 :              :                    :- CometProject (15)
                  :                    :     :                 :              :                    :  +- CometBroadcastHashJoin (14)
                  :                    :     :                 :              :                    :     :- CometFilter (10)
                  :                    :     :                 :              :                    :     :  +- CometNativeScan: `spark_catalog`.`default`.`catalog_sales` (9)
                  :                    :     :                 :              :                    :     +- CometBroadcastExchange (13)
                  :                    :     :                 :              :                    :        +- CometFilter (12)
                  :                    :     :                 :              :                    :           +- CometNativeScan: `spark_catalog`.`default`.`item` (11)
                  :                    :     :                 :              :                    +- CometBroadcastExchange (19)
                  :                    :     :                 :              :                       +- CometProject (18)
                  :                    :     :                 :              :                          +- CometFilter (17)
                  :                    :     :                 :              :                             +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (16)
                  :                    :     :                 :              +- ReusedExchange (27)
                  :                    :     :                 +- ReusedExchange (33)
                  :                    :     +- CometBroadcastExchange (44)
                  :                    :        +- CometBroadcastHashJoin (43)
                  :                    :           :- CometFilter (41)
                  :                    :           :  +- CometNativeScan: `spark_catalog`.`default`.`item` (40)
                  :                    :           +- ReusedExchange (42)
                  :                    +- CometBroadcastExchange (50)
                  :                       +- CometProject (49)
                  :                          +- CometFilter (48)
                  :                             +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (47)
                  :- CometProject (61)
                  :  +- CometFilter (60)
                  :     +- CometHashAggregate (59)
                  :        +- ReusedExchange (58)
                  +- CometProject (65)
                     +- CometFilter (64)
                        +- CometHashAggregate (63)
                           +- ReusedExchange (62)


(1) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [4]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4]
Arguments: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4]

(2) CometFilter
Input [4]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4]
Condition : isnotnull(ss_item_sk#1)

(3) CometNativeScan: `spark_catalog`.`default`.`item`
Output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8]
Arguments: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8]

(4) CometFilter
Input [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8]
Condition : ((isnotnull(i_brand_id#6) AND isnotnull(i_class_id#7)) AND isnotnull(i_category_id#8))

(5) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [2]: [ss_item_sk#9, ss_sold_date_sk#10]
Arguments: [ss_item_sk#9, ss_sold_date_sk#10]

(6) CometFilter
Input [2]: [ss_item_sk#9, ss_sold_date_sk#10]
Condition : isnotnull(ss_item_sk#9)

(7) CometNativeScan: `spark_catalog`.`default`.`item`
Output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]
Arguments: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]

(8) CometFilter
Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]
Condition : (((isnotnull(i_item_sk#11) AND isnotnull(i_brand_id#12)) AND isnotnull(i_class_id#13)) AND isnotnull(i_category_id#14))

(9) CometNativeScan: `spark_catalog`.`default`.`catalog_sales`
Output [2]: [cs_item_sk#15, cs_sold_date_sk#16]
Arguments: [cs_item_sk#15, cs_sold_date_sk#16]

(10) CometFilter
Input [2]: [cs_item_sk#15, cs_sold_date_sk#16]
Condition : isnotnull(cs_item_sk#15)

(11) CometNativeScan: `spark_catalog`.`default`.`item`
Output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]
Arguments: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]

(12) CometFilter
Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]
Condition : isnotnull(i_item_sk#17)

(13) CometBroadcastExchange
Input [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]
Arguments: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]

(14) CometBroadcastHashJoin
Left output [2]: [cs_item_sk#15, cs_sold_date_sk#16]
Right output [4]: [i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]
Arguments: [cs_item_sk#15], [i_item_sk#17], Inner, BuildRight

(15) CometProject
Input [6]: [cs_item_sk#15, cs_sold_date_sk#16, i_item_sk#17, i_brand_id#18, i_class_id#19, i_category_id#20]
Arguments: [cs_sold_date_sk#16, i_brand_id#18, i_class_id#19, i_category_id#20], [cs_sold_date_sk#16, i_brand_id#18, i_class_id#19, i_category_id#20]

(16) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [2]: [d_date_sk#21, d_year#22]
Arguments: [d_date_sk#21, d_year#22]

(17) CometFilter
Input [2]: [d_date_sk#21, d_year#22]
Condition : (((isnotnull(d_year#22) AND (d_year#22 >= 1999)) AND (d_year#22 <= 2001)) AND isnotnull(d_date_sk#21))

(18) CometProject
Input [2]: [d_date_sk#21, d_year#22]
Arguments: [d_date_sk#21], [d_date_sk#21]

(19) CometBroadcastExchange
Input [1]: [d_date_sk#21]
Arguments: [d_date_sk#21]

(20) CometBroadcastHashJoin
Left output [4]: [cs_sold_date_sk#16, i_brand_id#18, i_class_id#19, i_category_id#20]
Right output [1]: [d_date_sk#21]
Arguments: [cs_sold_date_sk#16], [d_date_sk#21], Inner, BuildRight

(21) CometProject
Input [5]: [cs_sold_date_sk#16, i_brand_id#18, i_class_id#19, i_category_id#20, d_date_sk#21]
Arguments: [i_brand_id#18, i_class_id#19, i_category_id#20], [i_brand_id#18, i_class_id#19, i_category_id#20]

(22) CometBroadcastExchange
Input [3]: [i_brand_id#18, i_class_id#19, i_category_id#20]
Arguments: [i_brand_id#18, i_class_id#19, i_category_id#20]

(23) CometBroadcastHashJoin
Left output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]
Right output [3]: [i_brand_id#18, i_class_id#19, i_category_id#20]
Arguments: [coalesce(i_brand_id#12, 0), isnull(i_brand_id#12), coalesce(i_class_id#13, 0), isnull(i_class_id#13), coalesce(i_category_id#14, 0), isnull(i_category_id#14)], [coalesce(i_brand_id#18, 0), isnull(i_brand_id#18), coalesce(i_class_id#19, 0), isnull(i_class_id#19), coalesce(i_category_id#20, 0), isnull(i_category_id#20)], LeftSemi, BuildRight

(24) CometBroadcastExchange
Input [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]
Arguments: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]

(25) CometBroadcastHashJoin
Left output [2]: [ss_item_sk#9, ss_sold_date_sk#10]
Right output [4]: [i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]
Arguments: [ss_item_sk#9], [i_item_sk#11], Inner, BuildRight

(26) CometProject
Input [6]: [ss_item_sk#9, ss_sold_date_sk#10, i_item_sk#11, i_brand_id#12, i_class_id#13, i_category_id#14]
Arguments: [ss_sold_date_sk#10, i_brand_id#12, i_class_id#13, i_category_id#14], [ss_sold_date_sk#10, i_brand_id#12, i_class_id#13, i_category_id#14]

(27) ReusedExchange [Reuses operator id: 19]
Output [1]: [d_date_sk#23]

(28) CometBroadcastHashJoin
Left output [4]: [ss_sold_date_sk#10, i_brand_id#12, i_class_id#13, i_category_id#14]
Right output [1]: [d_date_sk#23]
Arguments: [ss_sold_date_sk#10], [d_date_sk#23], Inner, BuildRight

(29) CometProject
Input [5]: [ss_sold_date_sk#10, i_brand_id#12, i_class_id#13, i_category_id#14, d_date_sk#23]
Arguments: [brand_id#24, class_id#25, category_id#26], [i_brand_id#12 AS brand_id#24, i_class_id#13 AS class_id#25, i_category_id#14 AS category_id#26]

(30) CometHashAggregate
Input [3]: [brand_id#24, class_id#25, category_id#26]
Keys [3]: [brand_id#24, class_id#25, category_id#26]
Functions: []

(31) CometExchange
Input [3]: [brand_id#24, class_id#25, category_id#26]
Arguments: hashpartitioning(brand_id#24, class_id#25, category_id#26, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(32) CometHashAggregate
Input [3]: [brand_id#24, class_id#25, category_id#26]
Keys [3]: [brand_id#24, class_id#25, category_id#26]
Functions: []

(33) ReusedExchange [Reuses operator id: 22]
Output [3]: [i_brand_id#27, i_class_id#28, i_category_id#29]

(34) CometBroadcastHashJoin
Left output [3]: [brand_id#24, class_id#25, category_id#26]
Right output [3]: [i_brand_id#27, i_class_id#28, i_category_id#29]
Arguments: [coalesce(brand_id#24, 0), isnull(brand_id#24), coalesce(class_id#25, 0), isnull(class_id#25), coalesce(category_id#26, 0), isnull(category_id#26)], [coalesce(i_brand_id#27, 0), isnull(i_brand_id#27), coalesce(i_class_id#28, 0), isnull(i_class_id#28), coalesce(i_category_id#29, 0), isnull(i_category_id#29)], LeftSemi, BuildRight

(35) CometBroadcastExchange
Input [3]: [brand_id#24, class_id#25, category_id#26]
Arguments: [brand_id#24, class_id#25, category_id#26]

(36) CometBroadcastHashJoin
Left output [4]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8]
Right output [3]: [brand_id#24, class_id#25, category_id#26]
Arguments: [i_brand_id#6, i_class_id#7, i_category_id#8], [brand_id#24, class_id#25, category_id#26], Inner, BuildRight

(37) CometProject
Input [7]: [i_item_sk#5, i_brand_id#6, i_class_id#7, i_category_id#8, brand_id#24, class_id#25, category_id#26]
Arguments: [ss_item_sk#30], [i_item_sk#5 AS ss_item_sk#30]

(38) CometBroadcastExchange
Input [1]: [ss_item_sk#30]
Arguments: [ss_item_sk#30]

(39) CometBroadcastHashJoin
Left output [4]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4]
Right output [1]: [ss_item_sk#30]
Arguments: [ss_item_sk#1], [ss_item_sk#30], LeftSemi, BuildRight

(40) CometNativeScan: `spark_catalog`.`default`.`item`
Output [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]
Arguments: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]

(41) CometFilter
Input [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]
Condition : isnotnull(i_item_sk#31)

(42) ReusedExchange [Reuses operator id: 38]
Output [1]: [ss_item_sk#30]

(43) CometBroadcastHashJoin
Left output [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]
Right output [1]: [ss_item_sk#30]
Arguments: [i_item_sk#31], [ss_item_sk#30], LeftSemi, BuildRight

(44) CometBroadcastExchange
Input [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]
Arguments: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]

(45) CometBroadcastHashJoin
Left output [4]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4]
Right output [4]: [i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]
Arguments: [ss_item_sk#1], [i_item_sk#31], Inner, BuildRight

(46) CometProject
Input [8]: [ss_item_sk#1, ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_item_sk#31, i_brand_id#32, i_class_id#33, i_category_id#34]
Arguments: [ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_brand_id#32, i_class_id#33, i_category_id#34], [ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_brand_id#32, i_class_id#33, i_category_id#34]

(47) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [3]: [d_date_sk#35, d_year#36, d_moy#37]
Arguments: [d_date_sk#35, d_year#36, d_moy#37]

(48) CometFilter
Input [3]: [d_date_sk#35, d_year#36, d_moy#37]
Condition : ((((isnotnull(d_year#36) AND isnotnull(d_moy#37)) AND (d_year#36 = 2001)) AND (d_moy#37 = 11)) AND isnotnull(d_date_sk#35))

(49) CometProject
Input [3]: [d_date_sk#35, d_year#36, d_moy#37]
Arguments: [d_date_sk#35], [d_date_sk#35]

(50) CometBroadcastExchange
Input [1]: [d_date_sk#35]
Arguments: [d_date_sk#35]

(51) CometBroadcastHashJoin
Left output [6]: [ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_brand_id#32, i_class_id#33, i_category_id#34]
Right output [1]: [d_date_sk#35]
Arguments: [ss_sold_date_sk#4], [d_date_sk#35], Inner, BuildRight

(52) CometProject
Input [7]: [ss_quantity#2, ss_list_price#3, ss_sold_date_sk#4, i_brand_id#32, i_class_id#33, i_category_id#34, d_date_sk#35]
Arguments: [ss_quantity#2, ss_list_price#3, i_brand_id#32, i_class_id#33, i_category_id#34], [ss_quantity#2, ss_list_price#3, i_brand_id#32, i_class_id#33, i_category_id#34]

(53) CometHashAggregate
Input [5]: [ss_quantity#2, ss_list_price#3, i_brand_id#32, i_class_id#33, i_category_id#34]
Keys [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]
Functions [2]: [partial_sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3)), partial_count(1)]

(54) CometExchange
Input [6]: [i_brand_id#32, i_class_id#33, i_category_id#34, sum#38, isEmpty#39, count#40]
Arguments: hashpartitioning(i_brand_id#32, i_class_id#33, i_category_id#34, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(55) CometHashAggregate
Input [6]: [i_brand_id#32, i_class_id#33, i_category_id#34, sum#38, isEmpty#39, count#40]
Keys [3]: [i_brand_id#32, i_class_id#33, i_category_id#34]
Functions [2]: [sum((cast(ss_quantity#2 as decimal(10,0)) * ss_list_price#3)), count(1)]

(56) CometFilter
Input [5]: [i_brand_id#32, i_class_id#33, i_category_id#34, sales#41, number_sales#42]
Condition : (isnotnull(sales#41) AND (cast(sales#41 as decimal(32,6)) > cast(Subquery scalar-subquery#43, [id=#44] as decimal(32,6))))

(57) CometProject
Input [5]: [i_brand_id#32, i_class_id#33, i_category_id#34, sales#41, number_sales#42]
Arguments: [sales#41, number_sales#42, channel#45, i_brand_id#46, i_class_id#47, i_category_id#48], [sales#41, number_sales#42, store AS channel#45, i_brand_id#32 AS i_brand_id#46, i_class_id#33 AS i_class_id#47, i_category_id#34 AS i_category_id#48]

(58) ReusedExchange [Reuses operator id: 54]
Output [6]: [i_brand_id#49, i_class_id#50, i_category_id#51, sum#52, isEmpty#53, count#54]

(59) CometHashAggregate
Input [6]: [i_brand_id#49, i_class_id#50, i_category_id#51, sum#52, isEmpty#53, count#54]
Keys [3]: [i_brand_id#49, i_class_id#50, i_category_id#51]
Functions [2]: [sum((cast(cs_quantity#55 as decimal(10,0)) * cs_list_price#56)), count(1)]

(60) CometFilter
Input [5]: [i_brand_id#49, i_class_id#50, i_category_id#51, sales#57, number_sales#58]
Condition : (isnotnull(sales#57) AND (cast(sales#57 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#43, [id=#44] as decimal(32,6))))

(61) CometProject
Input [5]: [i_brand_id#49, i_class_id#50, i_category_id#51, sales#57, number_sales#58]
Arguments: [sales#57, number_sales#58, channel#59, i_brand_id#49, i_class_id#50, i_category_id#51], [sales#57, number_sales#58, catalog AS channel#59, i_brand_id#49, i_class_id#50, i_category_id#51]

(62) ReusedExchange [Reuses operator id: 54]
Output [6]: [i_brand_id#60, i_class_id#61, i_category_id#62, sum#63, isEmpty#64, count#65]

(63) CometHashAggregate
Input [6]: [i_brand_id#60, i_class_id#61, i_category_id#62, sum#63, isEmpty#64, count#65]
Keys [3]: [i_brand_id#60, i_class_id#61, i_category_id#62]
Functions [2]: [sum((cast(ws_quantity#66 as decimal(10,0)) * ws_list_price#67)), count(1)]

(64) CometFilter
Input [5]: [i_brand_id#60, i_class_id#61, i_category_id#62, sales#68, number_sales#69]
Condition : (isnotnull(sales#68) AND (cast(sales#68 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#43, [id=#44] as decimal(32,6))))

(65) CometProject
Input [5]: [i_brand_id#60, i_class_id#61, i_category_id#62, sales#68, number_sales#69]
Arguments: [sales#68, number_sales#69, channel#70, i_brand_id#60, i_class_id#61, i_category_id#62], [sales#68, number_sales#69, web AS channel#70, i_brand_id#60, i_class_id#61, i_category_id#62]

(66) CometUnion
Child 0 Input [6]: [sales#41, number_sales#42, channel#45, i_brand_id#46, i_class_id#47, i_category_id#48]
Child 1 Input [6]: [sales#57, number_sales#58, channel#59, i_brand_id#49, i_class_id#50, i_category_id#51]
Child 2 Input [6]: [sales#68, number_sales#69, channel#70, i_brand_id#60, i_class_id#61, i_category_id#62]

(67) CometExpand
Input [6]: [sales#41, number_sales#42, channel#45, i_brand_id#46, i_class_id#47, i_category_id#48]
Arguments: [[sales#41, number_sales#42, channel#45, i_brand_id#46, i_class_id#47, i_category_id#48, 0], [sales#41, number_sales#42, channel#45, i_brand_id#46, i_class_id#47, null, 1], [sales#41, number_sales#42, channel#45, i_brand_id#46, null, null, 3], [sales#41, number_sales#42, channel#45, null, null, null, 7], [sales#41, number_sales#42, null, null, null, null, 15]], [sales#41, number_sales#42, channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75]

(68) CometHashAggregate
Input [7]: [sales#41, number_sales#42, channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75]
Keys [5]: [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75]
Functions [2]: [partial_sum(sales#41), partial_sum(number_sales#42)]

(69) CometExchange
Input [8]: [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75, sum#76, isEmpty#77, sum#78]
Arguments: hashpartitioning(channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(70) CometHashAggregate
Input [8]: [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75, sum#76, isEmpty#77, sum#78]
Keys [5]: [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, spark_grouping_id#75]
Functions [2]: [sum(sales#41), sum(number_sales#42)]

(71) CometTakeOrderedAndProject
Input [6]: [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, sum(sales)#79, sum(number_sales)#80]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[channel#71 ASC NULLS FIRST,i_brand_id#72 ASC NULLS FIRST,i_class_id#73 ASC NULLS FIRST,i_category_id#74 ASC NULLS FIRST], output=[channel#71,i_brand_id#72,i_class_id#73,i_category_id#74,sum(sales)#79,sum(number_sales)#80]), [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, sum(sales)#79, sum(number_sales)#80], 100, [channel#71 ASC NULLS FIRST, i_brand_id#72 ASC NULLS FIRST, i_class_id#73 ASC NULLS FIRST, i_category_id#74 ASC NULLS FIRST], [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, sum(sales)#79, sum(number_sales)#80]

(72) ColumnarToRow [codegen id : 1]
Input [6]: [channel#71, i_brand_id#72, i_class_id#73, i_category_id#74, sum(sales)#79, sum(number_sales)#80]

===== Subqueries =====

Subquery:1 Hosting operator id = 56 Hosting Expression = Subquery scalar-subquery#43, [id=#44]
* ColumnarToRow (89)
+- CometHashAggregate (88)
   +- CometExchange (87)
      +- CometHashAggregate (86)
         +- CometUnion (85)
            :- CometProject (76)
            :  +- CometBroadcastHashJoin (75)
            :     :- CometNativeScan: `spark_catalog`.`default`.`store_sales` (73)
            :     +- ReusedExchange (74)
            :- CometProject (80)
            :  +- CometBroadcastHashJoin (79)
            :     :- CometNativeScan: `spark_catalog`.`default`.`catalog_sales` (77)
            :     +- ReusedExchange (78)
            +- CometProject (84)
               +- CometBroadcastHashJoin (83)
                  :- CometNativeScan: `spark_catalog`.`default`.`web_sales` (81)
                  +- ReusedExchange (82)


(73) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [3]: [ss_quantity#81, ss_list_price#82, ss_sold_date_sk#83]
Arguments: [ss_quantity#81, ss_list_price#82, ss_sold_date_sk#83]

(74) ReusedExchange [Reuses operator id: 19]
Output [1]: [d_date_sk#84]

(75) CometBroadcastHashJoin
Left output [3]: [ss_quantity#81, ss_list_price#82, ss_sold_date_sk#83]
Right output [1]: [d_date_sk#84]
Arguments: [ss_sold_date_sk#83], [d_date_sk#84], Inner, BuildRight

(76) CometProject
Input [4]: [ss_quantity#81, ss_list_price#82, ss_sold_date_sk#83, d_date_sk#84]
Arguments: [quantity#85, list_price#86], [ss_quantity#81 AS quantity#85, ss_list_price#82 AS list_price#86]

(77) CometNativeScan: `spark_catalog`.`default`.`catalog_sales`
Output [3]: [cs_quantity#87, cs_list_price#88, cs_sold_date_sk#89]
Arguments: [cs_quantity#87, cs_list_price#88, cs_sold_date_sk#89]

(78) ReusedExchange [Reuses operator id: 19]
Output [1]: [d_date_sk#90]

(79) CometBroadcastHashJoin
Left output [3]: [cs_quantity#87, cs_list_price#88, cs_sold_date_sk#89]
Right output [1]: [d_date_sk#90]
Arguments: [cs_sold_date_sk#89], [d_date_sk#90], Inner, BuildRight

(80) CometProject
Input [4]: [cs_quantity#87, cs_list_price#88, cs_sold_date_sk#89, d_date_sk#90]
Arguments: [quantity#91, list_price#92], [cs_quantity#87 AS quantity#91, cs_list_price#88 AS list_price#92]

(81) CometNativeScan: `spark_catalog`.`default`.`web_sales`
Output [3]: [ws_quantity#93, ws_list_price#94, ws_sold_date_sk#95]
Arguments: [ws_quantity#93, ws_list_price#94, ws_sold_date_sk#95]

(82) ReusedExchange [Reuses operator id: 19]
Output [1]: [d_date_sk#96]

(83) CometBroadcastHashJoin
Left output [3]: [ws_quantity#93, ws_list_price#94, ws_sold_date_sk#95]
Right output [1]: [d_date_sk#96]
Arguments: [ws_sold_date_sk#95], [d_date_sk#96], Inner, BuildRight

(84) CometProject
Input [4]: [ws_quantity#93, ws_list_price#94, ws_sold_date_sk#95, d_date_sk#96]
Arguments: [quantity#97, list_price#98], [ws_quantity#93 AS quantity#97, ws_list_price#94 AS list_price#98]

(85) CometUnion
Child 0 Input [2]: [quantity#85, list_price#86]
Child 1 Input [2]: [quantity#91, list_price#92]
Child 2 Input [2]: [quantity#97, list_price#98]

(86) CometHashAggregate
Input [2]: [quantity#85, list_price#86]
Keys: []
Functions [1]: [partial_avg((cast(quantity#85 as decimal(10,0)) * list_price#86))]

(87) CometExchange
Input [2]: [sum#99, count#100]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=4]

(88) CometHashAggregate
Input [2]: [sum#99, count#100]
Keys: []
Functions [1]: [avg((cast(quantity#85 as decimal(10,0)) * list_price#86))]

(89) ColumnarToRow [codegen id : 1]
Input [1]: [average_sales#101]

Subquery:2 Hosting operator id = 60 Hosting Expression = ReusedSubquery Subquery scalar-subquery#43, [id=#44]

Subquery:3 Hosting operator id = 64 Hosting Expression = ReusedSubquery Subquery scalar-subquery#43, [id=#44]


