== Physical Plan ==
* ColumnarToRow (92)
+- CometTakeOrderedAndProject (91)
   +- CometHashAggregate (90)
      +- CometExchange (89)
         +- CometHashAggregate (88)
            +- CometUnion (87)
               :- CometHashAggregate (66)
               :  +- CometExchange (65)
               :     +- CometHashAggregate (64)
               :        +- CometUnion (63)
               :           :- 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)
               :           :- CometFilter (59)
               :           :  +- CometHashAggregate (58)
               :           :     +- ReusedExchange (57)
               :           +- CometFilter (62)
               :              +- CometHashAggregate (61)
               :                 +- ReusedExchange (60)
               :- CometHashAggregate (71)
               :  +- CometExchange (70)
               :     +- CometHashAggregate (69)
               :        +- CometHashAggregate (68)
               :           +- ReusedExchange (67)
               :- CometHashAggregate (76)
               :  +- CometExchange (75)
               :     +- CometHashAggregate (74)
               :        +- CometHashAggregate (73)
               :           +- ReusedExchange (72)
               :- CometHashAggregate (81)
               :  +- CometExchange (80)
               :     +- CometHashAggregate (79)
               :        +- CometHashAggregate (78)
               :           +- ReusedExchange (77)
               +- CometHashAggregate (86)
                  +- CometExchange (85)
                     +- CometHashAggregate (84)
                        +- CometHashAggregate (83)
                           +- ReusedExchange (82)


(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 = 2000)) 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 [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sales#42, number_sales#43]
Condition : (isnotnull(sales#42) AND (cast(sales#42 as decimal(32,6)) > cast(Subquery scalar-subquery#44, [id=#45] as decimal(32,6))))

(57) ReusedExchange [Reuses operator id: 54]
Output [6]: [i_brand_id#46, i_class_id#47, i_category_id#48, sum#49, isEmpty#50, count#51]

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

(59) CometFilter
Input [6]: [channel#54, i_brand_id#46, i_class_id#47, i_category_id#48, sales#55, number_sales#56]
Condition : (isnotnull(sales#55) AND (cast(sales#55 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#44, [id=#45] as decimal(32,6))))

(60) ReusedExchange [Reuses operator id: 54]
Output [6]: [i_brand_id#57, i_class_id#58, i_category_id#59, sum#60, isEmpty#61, count#62]

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

(62) CometFilter
Input [6]: [channel#65, i_brand_id#57, i_class_id#58, i_category_id#59, sales#66, number_sales#67]
Condition : (isnotnull(sales#66) AND (cast(sales#66 as decimal(32,6)) > cast(ReusedSubquery Subquery scalar-subquery#44, [id=#45] as decimal(32,6))))

(63) CometUnion
Child 0 Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sales#42, number_sales#43]
Child 1 Input [6]: [channel#54, i_brand_id#46, i_class_id#47, i_category_id#48, sales#55, number_sales#56]
Child 2 Input [6]: [channel#65, i_brand_id#57, i_class_id#58, i_category_id#59, sales#66, number_sales#67]

(64) CometHashAggregate
Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sales#42, number_sales#43]
Keys [4]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34]
Functions [2]: [partial_sum(sales#42), partial_sum(number_sales#43)]

(65) CometExchange
Input [7]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum#68, isEmpty#69, sum#70]
Arguments: hashpartitioning(channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(66) CometHashAggregate
Input [7]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum#68, isEmpty#69, sum#70]
Keys [4]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34]
Functions [2]: [sum(sales#42), sum(number_sales#43)]

(67) ReusedExchange [Reuses operator id: 65]
Output [7]: [channel#41, i_brand_id#71, i_class_id#72, i_category_id#73, sum#68, isEmpty#69, sum#70]

(68) CometHashAggregate
Input [7]: [channel#41, i_brand_id#71, i_class_id#72, i_category_id#73, sum#68, isEmpty#69, sum#70]
Keys [4]: [channel#41, i_brand_id#71, i_class_id#72, i_category_id#73]
Functions [2]: [sum(sales#42), sum(number_sales#43)]

(69) CometHashAggregate
Input [5]: [channel#41, i_brand_id#71, i_class_id#72, sum_sales#74, number_sales#75]
Keys [3]: [channel#41, i_brand_id#71, i_class_id#72]
Functions [2]: [partial_sum(sum_sales#74), partial_sum(number_sales#75)]

(70) CometExchange
Input [6]: [channel#41, i_brand_id#71, i_class_id#72, sum#76, isEmpty#77, sum#78]
Arguments: hashpartitioning(channel#41, i_brand_id#71, i_class_id#72, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=4]

(71) CometHashAggregate
Input [6]: [channel#41, i_brand_id#71, i_class_id#72, sum#76, isEmpty#77, sum#78]
Keys [3]: [channel#41, i_brand_id#71, i_class_id#72]
Functions [2]: [sum(sum_sales#74), sum(number_sales#75)]

(72) ReusedExchange [Reuses operator id: 65]
Output [7]: [channel#41, i_brand_id#79, i_class_id#80, i_category_id#81, sum#68, isEmpty#69, sum#70]

(73) CometHashAggregate
Input [7]: [channel#41, i_brand_id#79, i_class_id#80, i_category_id#81, sum#68, isEmpty#69, sum#70]
Keys [4]: [channel#41, i_brand_id#79, i_class_id#80, i_category_id#81]
Functions [2]: [sum(sales#42), sum(number_sales#43)]

(74) CometHashAggregate
Input [4]: [channel#41, i_brand_id#79, sum_sales#82, number_sales#83]
Keys [2]: [channel#41, i_brand_id#79]
Functions [2]: [partial_sum(sum_sales#82), partial_sum(number_sales#83)]

(75) CometExchange
Input [5]: [channel#41, i_brand_id#79, sum#84, isEmpty#85, sum#86]
Arguments: hashpartitioning(channel#41, i_brand_id#79, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=5]

(76) CometHashAggregate
Input [5]: [channel#41, i_brand_id#79, sum#84, isEmpty#85, sum#86]
Keys [2]: [channel#41, i_brand_id#79]
Functions [2]: [sum(sum_sales#82), sum(number_sales#83)]

(77) ReusedExchange [Reuses operator id: 65]
Output [7]: [channel#41, i_brand_id#87, i_class_id#88, i_category_id#89, sum#68, isEmpty#69, sum#70]

(78) CometHashAggregate
Input [7]: [channel#41, i_brand_id#87, i_class_id#88, i_category_id#89, sum#68, isEmpty#69, sum#70]
Keys [4]: [channel#41, i_brand_id#87, i_class_id#88, i_category_id#89]
Functions [2]: [sum(sales#42), sum(number_sales#43)]

(79) CometHashAggregate
Input [3]: [channel#41, sum_sales#90, number_sales#91]
Keys [1]: [channel#41]
Functions [2]: [partial_sum(sum_sales#90), partial_sum(number_sales#91)]

(80) CometExchange
Input [4]: [channel#41, sum#92, isEmpty#93, sum#94]
Arguments: hashpartitioning(channel#41, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=6]

(81) CometHashAggregate
Input [4]: [channel#41, sum#92, isEmpty#93, sum#94]
Keys [1]: [channel#41]
Functions [2]: [sum(sum_sales#90), sum(number_sales#91)]

(82) ReusedExchange [Reuses operator id: 65]
Output [7]: [channel#41, i_brand_id#95, i_class_id#96, i_category_id#97, sum#68, isEmpty#69, sum#70]

(83) CometHashAggregate
Input [7]: [channel#41, i_brand_id#95, i_class_id#96, i_category_id#97, sum#68, isEmpty#69, sum#70]
Keys [4]: [channel#41, i_brand_id#95, i_class_id#96, i_category_id#97]
Functions [2]: [sum(sales#42), sum(number_sales#43)]

(84) CometHashAggregate
Input [2]: [sum_sales#98, number_sales#99]
Keys: []
Functions [2]: [partial_sum(sum_sales#98), partial_sum(number_sales#99)]

(85) CometExchange
Input [3]: [sum#100, isEmpty#101, sum#102]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=7]

(86) CometHashAggregate
Input [3]: [sum#100, isEmpty#101, sum#102]
Keys: []
Functions [2]: [sum(sum_sales#98), sum(number_sales#99)]

(87) CometUnion
Child 0 Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Child 1 Input [6]: [channel#41, i_brand_id#71, i_class_id#72, i_category_id#105, sum(sum_sales)#106, sum(number_sales)#107]
Child 2 Input [6]: [channel#41, i_brand_id#79, i_class_id#108, i_category_id#109, sum(sum_sales)#110, sum(number_sales)#111]
Child 3 Input [6]: [channel#41, i_brand_id#112, i_class_id#113, i_category_id#114, sum(sum_sales)#115, sum(number_sales)#116]
Child 4 Input [6]: [channel#117, i_brand_id#118, i_class_id#119, i_category_id#120, sum(sum_sales)#121, sum(number_sales)#122]

(88) CometHashAggregate
Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Keys [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Functions: []

(89) CometExchange
Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Arguments: hashpartitioning(channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=8]

(90) CometHashAggregate
Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Keys [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Functions: []

(91) CometTakeOrderedAndProject
Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[channel#41 ASC NULLS FIRST,i_brand_id#32 ASC NULLS FIRST,i_class_id#33 ASC NULLS FIRST,i_category_id#34 ASC NULLS FIRST], output=[channel#41,i_brand_id#32,i_class_id#33,i_category_id#34,sum_sales#103,number_sales#104]), [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104], 100, [channel#41 ASC NULLS FIRST, i_brand_id#32 ASC NULLS FIRST, i_class_id#33 ASC NULLS FIRST, i_category_id#34 ASC NULLS FIRST], [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]

(92) ColumnarToRow [codegen id : 1]
Input [6]: [channel#41, i_brand_id#32, i_class_id#33, i_category_id#34, sum_sales#103, number_sales#104]

===== Subqueries =====

Subquery:1 Hosting operator id = 56 Hosting Expression = Subquery scalar-subquery#44, [id=#45]
* ColumnarToRow (112)
+- CometHashAggregate (111)
   +- CometExchange (110)
      +- CometHashAggregate (109)
         +- CometUnion (108)
            :- CometProject (96)
            :  +- CometBroadcastHashJoin (95)
            :     :- CometNativeScan: `spark_catalog`.`default`.`store_sales` (93)
            :     +- ReusedExchange (94)
            :- CometProject (103)
            :  +- CometBroadcastHashJoin (102)
            :     :- CometNativeScan: `spark_catalog`.`default`.`catalog_sales` (97)
            :     +- CometBroadcastExchange (101)
            :        +- CometProject (100)
            :           +- CometFilter (99)
            :              +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (98)
            +- CometProject (107)
               +- CometBroadcastHashJoin (106)
                  :- CometNativeScan: `spark_catalog`.`default`.`web_sales` (104)
                  +- ReusedExchange (105)


(93) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [3]: [ss_quantity#123, ss_list_price#124, ss_sold_date_sk#125]
Arguments: [ss_quantity#123, ss_list_price#124, ss_sold_date_sk#125]

(94) ReusedExchange [Reuses operator id: 19]
Output [1]: [d_date_sk#126]

(95) CometBroadcastHashJoin
Left output [3]: [ss_quantity#123, ss_list_price#124, ss_sold_date_sk#125]
Right output [1]: [d_date_sk#126]
Arguments: [ss_sold_date_sk#125], [d_date_sk#126], Inner, BuildRight

(96) CometProject
Input [4]: [ss_quantity#123, ss_list_price#124, ss_sold_date_sk#125, d_date_sk#126]
Arguments: [quantity#127, list_price#128], [ss_quantity#123 AS quantity#127, ss_list_price#124 AS list_price#128]

(97) CometNativeScan: `spark_catalog`.`default`.`catalog_sales`
Output [3]: [cs_quantity#129, cs_list_price#130, cs_sold_date_sk#131]
Arguments: [cs_quantity#129, cs_list_price#130, cs_sold_date_sk#131]

(98) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [2]: [d_date_sk#132, d_year#133]
Arguments: [d_date_sk#132, d_year#133]

(99) CometFilter
Input [2]: [d_date_sk#132, d_year#133]
Condition : (((isnotnull(d_year#133) AND (d_year#133 >= 1998)) AND (d_year#133 <= 2000)) AND isnotnull(d_date_sk#132))

(100) CometProject
Input [2]: [d_date_sk#132, d_year#133]
Arguments: [d_date_sk#132], [d_date_sk#132]

(101) CometBroadcastExchange
Input [1]: [d_date_sk#132]
Arguments: [d_date_sk#132]

(102) CometBroadcastHashJoin
Left output [3]: [cs_quantity#129, cs_list_price#130, cs_sold_date_sk#131]
Right output [1]: [d_date_sk#132]
Arguments: [cs_sold_date_sk#131], [d_date_sk#132], Inner, BuildRight

(103) CometProject
Input [4]: [cs_quantity#129, cs_list_price#130, cs_sold_date_sk#131, d_date_sk#132]
Arguments: [quantity#134, list_price#135], [cs_quantity#129 AS quantity#134, cs_list_price#130 AS list_price#135]

(104) CometNativeScan: `spark_catalog`.`default`.`web_sales`
Output [3]: [ws_quantity#136, ws_list_price#137, ws_sold_date_sk#138]
Arguments: [ws_quantity#136, ws_list_price#137, ws_sold_date_sk#138]

(105) ReusedExchange [Reuses operator id: 101]
Output [1]: [d_date_sk#139]

(106) CometBroadcastHashJoin
Left output [3]: [ws_quantity#136, ws_list_price#137, ws_sold_date_sk#138]
Right output [1]: [d_date_sk#139]
Arguments: [ws_sold_date_sk#138], [d_date_sk#139], Inner, BuildRight

(107) CometProject
Input [4]: [ws_quantity#136, ws_list_price#137, ws_sold_date_sk#138, d_date_sk#139]
Arguments: [quantity#140, list_price#141], [ws_quantity#136 AS quantity#140, ws_list_price#137 AS list_price#141]

(108) CometUnion
Child 0 Input [2]: [quantity#127, list_price#128]
Child 1 Input [2]: [quantity#134, list_price#135]
Child 2 Input [2]: [quantity#140, list_price#141]

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

(110) CometExchange
Input [2]: [sum#142, count#143]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=9]

(111) CometHashAggregate
Input [2]: [sum#142, count#143]
Keys: []
Functions [1]: [avg((cast(quantity#127 as decimal(10,0)) * list_price#128))]

(112) ColumnarToRow [codegen id : 1]
Input [1]: [average_sales#144]

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

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


