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


(1) CometScan [native_iceberg_compat] parquet spark_catalog.default.store_sales
Output [5]: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, ss_sold_date_sk#5]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#5), dynamicpruningexpression(ss_sold_date_sk#5 IN dynamicpruning#6)]
PushedFilters: [IsNotNull(ss_store_sk), IsNotNull(ss_item_sk)]
ReadSchema: struct<ss_item_sk:int,ss_store_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2)>

(2) CometFilter
Input [5]: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, ss_sold_date_sk#5]
Condition : (isnotnull(ss_store_sk#2) AND isnotnull(ss_item_sk#1))

(3) CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim
Output [5]: [d_date_sk#7, d_month_seq#8, d_year#9, d_moy#10, d_qoy#11]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1212), LessThanOrEqual(d_month_seq,1223), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_month_seq:int,d_year:int,d_moy:int,d_qoy:int>

(4) CometFilter
Input [5]: [d_date_sk#7, d_month_seq#8, d_year#9, d_moy#10, d_qoy#11]
Condition : (((isnotnull(d_month_seq#8) AND (d_month_seq#8 >= 1212)) AND (d_month_seq#8 <= 1223)) AND isnotnull(d_date_sk#7))

(5) CometProject
Input [5]: [d_date_sk#7, d_month_seq#8, d_year#9, d_moy#10, d_qoy#11]
Arguments: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11], [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]

(6) CometBroadcastExchange
Input [4]: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]
Arguments: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]

(7) CometBroadcastHashJoin
Left output [5]: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, ss_sold_date_sk#5]
Right output [4]: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]
Arguments: [ss_sold_date_sk#5], [d_date_sk#7], Inner, BuildRight

(8) CometProject
Input [9]: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, ss_sold_date_sk#5, d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]
Arguments: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11], [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11]

(9) CometScan [native_iceberg_compat] parquet spark_catalog.default.store
Output [2]: [s_store_sk#12, s_store_id#13]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_store_id:string>

(10) CometFilter
Input [2]: [s_store_sk#12, s_store_id#13]
Condition : isnotnull(s_store_sk#12)

(11) CometProject
Input [2]: [s_store_sk#12, s_store_id#13]
Arguments: [s_store_sk#12, s_store_id#14], [s_store_sk#12, static_invoke(CharVarcharCodegenUtils.readSidePadding(s_store_id#13, 16)) AS s_store_id#14]

(12) CometBroadcastExchange
Input [2]: [s_store_sk#12, s_store_id#14]
Arguments: [s_store_sk#12, s_store_id#14]

(13) CometBroadcastHashJoin
Left output [7]: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11]
Right output [2]: [s_store_sk#12, s_store_id#14]
Arguments: [ss_store_sk#2], [s_store_sk#12], Inner, BuildRight

(14) CometProject
Input [9]: [ss_item_sk#1, ss_store_sk#2, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_sk#12, s_store_id#14]
Arguments: [ss_item_sk#1, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14], [ss_item_sk#1, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14]

(15) CometScan [native_iceberg_compat] parquet spark_catalog.default.item
Output [5]: [i_item_sk#15, i_brand#16, i_class#17, i_category#18, i_product_name#19]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_brand:string,i_class:string,i_category:string,i_product_name:string>

(16) CometFilter
Input [5]: [i_item_sk#15, i_brand#16, i_class#17, i_category#18, i_product_name#19]
Condition : isnotnull(i_item_sk#15)

(17) CometProject
Input [5]: [i_item_sk#15, i_brand#16, i_class#17, i_category#18, i_product_name#19]
Arguments: [i_item_sk#15, i_brand#20, i_class#21, i_category#22, i_product_name#23], [i_item_sk#15, static_invoke(CharVarcharCodegenUtils.readSidePadding(i_brand#16, 50)) AS i_brand#20, static_invoke(CharVarcharCodegenUtils.readSidePadding(i_class#17, 50)) AS i_class#21, static_invoke(CharVarcharCodegenUtils.readSidePadding(i_category#18, 50)) AS i_category#22, static_invoke(CharVarcharCodegenUtils.readSidePadding(i_product_name#19, 50)) AS i_product_name#23]

(18) CometBroadcastExchange
Input [5]: [i_item_sk#15, i_brand#20, i_class#21, i_category#22, i_product_name#23]
Arguments: [i_item_sk#15, i_brand#20, i_class#21, i_category#22, i_product_name#23]

(19) CometBroadcastHashJoin
Left output [7]: [ss_item_sk#1, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14]
Right output [5]: [i_item_sk#15, i_brand#20, i_class#21, i_category#22, i_product_name#23]
Arguments: [ss_item_sk#1], [i_item_sk#15], Inner, BuildRight

(20) CometProject
Input [12]: [ss_item_sk#1, ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14, i_item_sk#15, i_brand#20, i_class#21, i_category#22, i_product_name#23]
Arguments: [ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14, i_brand#20, i_class#21, i_category#22, i_product_name#23], [ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14, i_brand#20, i_class#21, i_category#22, i_product_name#23]

(21) CometHashAggregate
Input [10]: [ss_quantity#3, ss_sales_price#4, d_year#9, d_moy#10, d_qoy#11, s_store_id#14, i_brand#20, i_class#21, i_category#22, i_product_name#23]
Keys [8]: [i_category#22, i_class#21, i_brand#20, i_product_name#23, d_year#9, d_qoy#11, d_moy#10, s_store_id#14]
Functions [1]: [partial_sum(coalesce((ss_sales_price#4 * cast(ss_quantity#3 as decimal(10,0))), 0.00))]

(22) CometExchange
Input [10]: [i_category#22, i_class#21, i_brand#20, i_product_name#23, d_year#9, d_qoy#11, d_moy#10, s_store_id#14, sum#24, isEmpty#25]
Arguments: hashpartitioning(i_category#22, i_class#21, i_brand#20, i_product_name#23, d_year#9, d_qoy#11, d_moy#10, s_store_id#14, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(23) CometHashAggregate
Input [10]: [i_category#22, i_class#21, i_brand#20, i_product_name#23, d_year#9, d_qoy#11, d_moy#10, s_store_id#14, sum#24, isEmpty#25]
Keys [8]: [i_category#22, i_class#21, i_brand#20, i_product_name#23, d_year#9, d_qoy#11, d_moy#10, s_store_id#14]
Functions [1]: [sum(coalesce((ss_sales_price#4 * cast(ss_quantity#3 as decimal(10,0))), 0.00))]

(24) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, s_store_id#33, sum#34, isEmpty#35]

(25) CometHashAggregate
Input [10]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, s_store_id#33, sum#34, isEmpty#35]
Keys [8]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, s_store_id#33]
Functions [1]: [sum(coalesce((ss_sales_price#36 * cast(ss_quantity#37 as decimal(10,0))), 0.00))]

(26) CometHashAggregate
Input [8]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, sumsales#38]
Keys [7]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32]
Functions [1]: [partial_sum(sumsales#38)]

(27) CometExchange
Input [9]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, sum#39, isEmpty#40]
Arguments: hashpartitioning(i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(28) CometHashAggregate
Input [9]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, sum#39, isEmpty#40]
Keys [7]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32]
Functions [1]: [sum(sumsales#38)]

(29) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, d_moy#47, s_store_id#48, sum#49, isEmpty#50]

(30) CometHashAggregate
Input [10]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, d_moy#47, s_store_id#48, sum#49, isEmpty#50]
Keys [8]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, d_moy#47, s_store_id#48]
Functions [1]: [sum(coalesce((ss_sales_price#51 * cast(ss_quantity#52 as decimal(10,0))), 0.00))]

(31) CometHashAggregate
Input [7]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, sumsales#53]
Keys [6]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46]
Functions [1]: [partial_sum(sumsales#53)]

(32) CometExchange
Input [8]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, sum#54, isEmpty#55]
Arguments: hashpartitioning(i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=3]

(33) CometHashAggregate
Input [8]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, sum#54, isEmpty#55]
Keys [6]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46]
Functions [1]: [sum(sumsales#53)]

(34) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, d_qoy#61, d_moy#62, s_store_id#63, sum#64, isEmpty#65]

(35) CometHashAggregate
Input [10]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, d_qoy#61, d_moy#62, s_store_id#63, sum#64, isEmpty#65]
Keys [8]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, d_qoy#61, d_moy#62, s_store_id#63]
Functions [1]: [sum(coalesce((ss_sales_price#66 * cast(ss_quantity#67 as decimal(10,0))), 0.00))]

(36) CometHashAggregate
Input [6]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, sumsales#68]
Keys [5]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60]
Functions [1]: [partial_sum(sumsales#68)]

(37) CometExchange
Input [7]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, sum#69, isEmpty#70]
Arguments: hashpartitioning(i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=4]

(38) CometHashAggregate
Input [7]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, sum#69, isEmpty#70]
Keys [5]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60]
Functions [1]: [sum(sumsales#68)]

(39) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, d_year#75, d_qoy#76, d_moy#77, s_store_id#78, sum#79, isEmpty#80]

(40) CometHashAggregate
Input [10]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, d_year#75, d_qoy#76, d_moy#77, s_store_id#78, sum#79, isEmpty#80]
Keys [8]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, d_year#75, d_qoy#76, d_moy#77, s_store_id#78]
Functions [1]: [sum(coalesce((ss_sales_price#81 * cast(ss_quantity#82 as decimal(10,0))), 0.00))]

(41) CometHashAggregate
Input [5]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, sumsales#83]
Keys [4]: [i_category#71, i_class#72, i_brand#73, i_product_name#74]
Functions [1]: [partial_sum(sumsales#83)]

(42) CometExchange
Input [6]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, sum#84, isEmpty#85]
Arguments: hashpartitioning(i_category#71, i_class#72, i_brand#73, i_product_name#74, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=5]

(43) CometHashAggregate
Input [6]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, sum#84, isEmpty#85]
Keys [4]: [i_category#71, i_class#72, i_brand#73, i_product_name#74]
Functions [1]: [sum(sumsales#83)]

(44) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#86, i_class#87, i_brand#88, i_product_name#89, d_year#90, d_qoy#91, d_moy#92, s_store_id#93, sum#94, isEmpty#95]

(45) CometHashAggregate
Input [10]: [i_category#86, i_class#87, i_brand#88, i_product_name#89, d_year#90, d_qoy#91, d_moy#92, s_store_id#93, sum#94, isEmpty#95]
Keys [8]: [i_category#86, i_class#87, i_brand#88, i_product_name#89, d_year#90, d_qoy#91, d_moy#92, s_store_id#93]
Functions [1]: [sum(coalesce((ss_sales_price#96 * cast(ss_quantity#97 as decimal(10,0))), 0.00))]

(46) CometHashAggregate
Input [4]: [i_category#86, i_class#87, i_brand#88, sumsales#98]
Keys [3]: [i_category#86, i_class#87, i_brand#88]
Functions [1]: [partial_sum(sumsales#98)]

(47) CometExchange
Input [5]: [i_category#86, i_class#87, i_brand#88, sum#99, isEmpty#100]
Arguments: hashpartitioning(i_category#86, i_class#87, i_brand#88, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=6]

(48) CometHashAggregate
Input [5]: [i_category#86, i_class#87, i_brand#88, sum#99, isEmpty#100]
Keys [3]: [i_category#86, i_class#87, i_brand#88]
Functions [1]: [sum(sumsales#98)]

(49) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#101, i_class#102, i_brand#103, i_product_name#104, d_year#105, d_qoy#106, d_moy#107, s_store_id#108, sum#109, isEmpty#110]

(50) CometHashAggregate
Input [10]: [i_category#101, i_class#102, i_brand#103, i_product_name#104, d_year#105, d_qoy#106, d_moy#107, s_store_id#108, sum#109, isEmpty#110]
Keys [8]: [i_category#101, i_class#102, i_brand#103, i_product_name#104, d_year#105, d_qoy#106, d_moy#107, s_store_id#108]
Functions [1]: [sum(coalesce((ss_sales_price#111 * cast(ss_quantity#112 as decimal(10,0))), 0.00))]

(51) CometHashAggregate
Input [3]: [i_category#101, i_class#102, sumsales#113]
Keys [2]: [i_category#101, i_class#102]
Functions [1]: [partial_sum(sumsales#113)]

(52) CometExchange
Input [4]: [i_category#101, i_class#102, sum#114, isEmpty#115]
Arguments: hashpartitioning(i_category#101, i_class#102, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=7]

(53) CometHashAggregate
Input [4]: [i_category#101, i_class#102, sum#114, isEmpty#115]
Keys [2]: [i_category#101, i_class#102]
Functions [1]: [sum(sumsales#113)]

(54) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#116, i_class#117, i_brand#118, i_product_name#119, d_year#120, d_qoy#121, d_moy#122, s_store_id#123, sum#124, isEmpty#125]

(55) CometHashAggregate
Input [10]: [i_category#116, i_class#117, i_brand#118, i_product_name#119, d_year#120, d_qoy#121, d_moy#122, s_store_id#123, sum#124, isEmpty#125]
Keys [8]: [i_category#116, i_class#117, i_brand#118, i_product_name#119, d_year#120, d_qoy#121, d_moy#122, s_store_id#123]
Functions [1]: [sum(coalesce((ss_sales_price#126 * cast(ss_quantity#127 as decimal(10,0))), 0.00))]

(56) CometHashAggregate
Input [2]: [i_category#116, sumsales#128]
Keys [1]: [i_category#116]
Functions [1]: [partial_sum(sumsales#128)]

(57) CometExchange
Input [3]: [i_category#116, sum#129, isEmpty#130]
Arguments: hashpartitioning(i_category#116, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=8]

(58) CometHashAggregate
Input [3]: [i_category#116, sum#129, isEmpty#130]
Keys [1]: [i_category#116]
Functions [1]: [sum(sumsales#128)]

(59) ReusedExchange [Reuses operator id: 22]
Output [10]: [i_category#131, i_class#132, i_brand#133, i_product_name#134, d_year#135, d_qoy#136, d_moy#137, s_store_id#138, sum#139, isEmpty#140]

(60) CometHashAggregate
Input [10]: [i_category#131, i_class#132, i_brand#133, i_product_name#134, d_year#135, d_qoy#136, d_moy#137, s_store_id#138, sum#139, isEmpty#140]
Keys [8]: [i_category#131, i_class#132, i_brand#133, i_product_name#134, d_year#135, d_qoy#136, d_moy#137, s_store_id#138]
Functions [1]: [sum(coalesce((ss_sales_price#141 * cast(ss_quantity#142 as decimal(10,0))), 0.00))]

(61) CometHashAggregate
Input [1]: [sumsales#143]
Keys: []
Functions [1]: [partial_sum(sumsales#143)]

(62) CometExchange
Input [2]: [sum#144, isEmpty#145]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=9]

(63) CometHashAggregate
Input [2]: [sum#144, isEmpty#145]
Keys: []
Functions [1]: [sum(sumsales#143)]

(64) CometUnion
Child 0 Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Child 1 Input [9]: [i_category#26, i_class#27, i_brand#28, i_product_name#29, d_year#30, d_qoy#31, d_moy#32, s_store_id#155, sumsales#156]
Child 2 Input [9]: [i_category#41, i_class#42, i_brand#43, i_product_name#44, d_year#45, d_qoy#46, d_moy#157, s_store_id#158, sumsales#159]
Child 3 Input [9]: [i_category#56, i_class#57, i_brand#58, i_product_name#59, d_year#60, d_qoy#160, d_moy#161, s_store_id#162, sumsales#163]
Child 4 Input [9]: [i_category#71, i_class#72, i_brand#73, i_product_name#74, d_year#164, d_qoy#165, d_moy#166, s_store_id#167, sumsales#168]
Child 5 Input [9]: [i_category#86, i_class#87, i_brand#88, i_product_name#169, d_year#170, d_qoy#171, d_moy#172, s_store_id#173, sumsales#174]
Child 6 Input [9]: [i_category#101, i_class#102, i_brand#175, i_product_name#176, d_year#177, d_qoy#178, d_moy#179, s_store_id#180, sumsales#181]
Child 7 Input [9]: [i_category#116, i_class#182, i_brand#183, i_product_name#184, d_year#185, d_qoy#186, d_moy#187, s_store_id#188, sumsales#189]
Child 8 Input [9]: [i_category#190, i_class#191, i_brand#192, i_product_name#193, d_year#194, d_qoy#195, d_moy#196, s_store_id#197, sumsales#198]

(65) CometSort
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Arguments: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154], [i_category#146 ASC NULLS FIRST, sumsales#154 DESC NULLS LAST]

(66) CometColumnarToRow [codegen id : 1]
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]

(67) WindowGroupLimit
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Arguments: [i_category#146], [sumsales#154 DESC NULLS LAST], rank(sumsales#154), 100, Partial

(68) CometColumnarExchange
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Arguments: hashpartitioning(i_category#146, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=10]

(69) CometSort
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Arguments: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154], [i_category#146 ASC NULLS FIRST, sumsales#154 DESC NULLS LAST]

(70) CometColumnarToRow [codegen id : 2]
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]

(71) WindowGroupLimit
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Arguments: [i_category#146], [sumsales#154 DESC NULLS LAST], rank(sumsales#154), 100, Final

(72) Window
Input [9]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154]
Arguments: [rank(sumsales#154) windowspecdefinition(i_category#146, sumsales#154 DESC NULLS LAST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS rk#199], [i_category#146], [sumsales#154 DESC NULLS LAST]

(73) Filter [codegen id : 3]
Input [10]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154, rk#199]
Condition : (rk#199 <= 100)

(74) TakeOrderedAndProject
Input [10]: [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154, rk#199]
Arguments: 100, [i_category#146 ASC NULLS FIRST, i_class#147 ASC NULLS FIRST, i_brand#148 ASC NULLS FIRST, i_product_name#149 ASC NULLS FIRST, d_year#150 ASC NULLS FIRST, d_qoy#151 ASC NULLS FIRST, d_moy#152 ASC NULLS FIRST, s_store_id#153 ASC NULLS FIRST, sumsales#154 ASC NULLS FIRST, rk#199 ASC NULLS FIRST], [i_category#146, i_class#147, i_brand#148, i_product_name#149, d_year#150, d_qoy#151, d_moy#152, s_store_id#153, sumsales#154, rk#199]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#5 IN dynamicpruning#6
BroadcastExchange (79)
+- * CometColumnarToRow (78)
   +- CometProject (77)
      +- CometFilter (76)
         +- CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim (75)


(75) CometScan [native_iceberg_compat] parquet spark_catalog.default.date_dim
Output [5]: [d_date_sk#7, d_month_seq#8, d_year#9, d_moy#10, d_qoy#11]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_month_seq), GreaterThanOrEqual(d_month_seq,1212), LessThanOrEqual(d_month_seq,1223), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_month_seq:int,d_year:int,d_moy:int,d_qoy:int>

(76) CometFilter
Input [5]: [d_date_sk#7, d_month_seq#8, d_year#9, d_moy#10, d_qoy#11]
Condition : (((isnotnull(d_month_seq#8) AND (d_month_seq#8 >= 1212)) AND (d_month_seq#8 <= 1223)) AND isnotnull(d_date_sk#7))

(77) CometProject
Input [5]: [d_date_sk#7, d_month_seq#8, d_year#9, d_moy#10, d_qoy#11]
Arguments: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11], [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]

(78) CometColumnarToRow [codegen id : 1]
Input [4]: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]

(79) BroadcastExchange
Input [4]: [d_date_sk#7, d_year#9, d_moy#10, d_qoy#11]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=11]


