== Physical Plan ==
TakeOrderedAndProject (155)
+- Union (154)
   :- * HashAggregate (42)
   :  +- * CometColumnarToRow (41)
   :     +- CometColumnarExchange (40)
   :        +- * HashAggregate (39)
   :           +- * CometColumnarToRow (38)
   :              +- CometProject (37)
   :                 +- CometBroadcastHashJoin (36)
   :                    :- CometProject (31)
   :                    :  +- CometBroadcastHashJoin (30)
   :                    :     :- CometProject (25)
   :                    :     :  +- CometBroadcastHashJoin (24)
   :                    :     :     :- CometProject (19)
   :                    :     :     :  +- CometBroadcastHashJoin (18)
   :                    :     :     :     :- CometProject (14)
   :                    :     :     :     :  +- CometBroadcastHashJoin (13)
   :                    :     :     :     :     :- CometProject (8)
   :                    :     :     :     :     :  +- CometBroadcastHashJoin (7)
   :                    :     :     :     :     :     :- CometFilter (2)
   :                    :     :     :     :     :     :  +- CometScan parquet spark_catalog.default.catalog_sales (1)
   :                    :     :     :     :     :     +- CometBroadcastExchange (6)
   :                    :     :     :     :     :        +- CometProject (5)
   :                    :     :     :     :     :           +- CometFilter (4)
   :                    :     :     :     :     :              +- CometScan parquet spark_catalog.default.customer_demographics (3)
   :                    :     :     :     :     +- CometBroadcastExchange (12)
   :                    :     :     :     :        +- CometProject (11)
   :                    :     :     :     :           +- CometFilter (10)
   :                    :     :     :     :              +- CometScan parquet spark_catalog.default.customer (9)
   :                    :     :     :     +- CometBroadcastExchange (17)
   :                    :     :     :        +- CometFilter (16)
   :                    :     :     :           +- CometScan parquet spark_catalog.default.customer_demographics (15)
   :                    :     :     +- CometBroadcastExchange (23)
   :                    :     :        +- CometProject (22)
   :                    :     :           +- CometFilter (21)
   :                    :     :              +- CometScan parquet spark_catalog.default.customer_address (20)
   :                    :     +- CometBroadcastExchange (29)
   :                    :        +- CometProject (28)
   :                    :           +- CometFilter (27)
   :                    :              +- CometScan parquet spark_catalog.default.date_dim (26)
   :                    +- CometBroadcastExchange (35)
   :                       +- CometProject (34)
   :                          +- CometFilter (33)
   :                             +- CometScan parquet spark_catalog.default.item (32)
   :- * HashAggregate (70)
   :  +- * CometColumnarToRow (69)
   :     +- CometColumnarExchange (68)
   :        +- * HashAggregate (67)
   :           +- * CometColumnarToRow (66)
   :              +- CometProject (65)
   :                 +- CometBroadcastHashJoin (64)
   :                    :- CometProject (62)
   :                    :  +- CometBroadcastHashJoin (61)
   :                    :     :- CometProject (59)
   :                    :     :  +- CometBroadcastHashJoin (58)
   :                    :     :     :- CometProject (53)
   :                    :     :     :  +- CometBroadcastHashJoin (52)
   :                    :     :     :     :- CometProject (50)
   :                    :     :     :     :  +- CometBroadcastHashJoin (49)
   :                    :     :     :     :     :- CometProject (47)
   :                    :     :     :     :     :  +- CometBroadcastHashJoin (46)
   :                    :     :     :     :     :     :- CometFilter (44)
   :                    :     :     :     :     :     :  +- CometScan parquet spark_catalog.default.catalog_sales (43)
   :                    :     :     :     :     :     +- ReusedExchange (45)
   :                    :     :     :     :     +- ReusedExchange (48)
   :                    :     :     :     +- ReusedExchange (51)
   :                    :     :     +- CometBroadcastExchange (57)
   :                    :     :        +- CometProject (56)
   :                    :     :           +- CometFilter (55)
   :                    :     :              +- CometScan parquet spark_catalog.default.customer_address (54)
   :                    :     +- ReusedExchange (60)
   :                    +- ReusedExchange (63)
   :- * HashAggregate (98)
   :  +- * CometColumnarToRow (97)
   :     +- CometColumnarExchange (96)
   :        +- * HashAggregate (95)
   :           +- * CometColumnarToRow (94)
   :              +- CometProject (93)
   :                 +- CometBroadcastHashJoin (92)
   :                    :- CometProject (90)
   :                    :  +- CometBroadcastHashJoin (89)
   :                    :     :- CometProject (87)
   :                    :     :  +- CometBroadcastHashJoin (86)
   :                    :     :     :- CometProject (81)
   :                    :     :     :  +- CometBroadcastHashJoin (80)
   :                    :     :     :     :- CometProject (78)
   :                    :     :     :     :  +- CometBroadcastHashJoin (77)
   :                    :     :     :     :     :- CometProject (75)
   :                    :     :     :     :     :  +- CometBroadcastHashJoin (74)
   :                    :     :     :     :     :     :- CometFilter (72)
   :                    :     :     :     :     :     :  +- CometScan parquet spark_catalog.default.catalog_sales (71)
   :                    :     :     :     :     :     +- ReusedExchange (73)
   :                    :     :     :     :     +- ReusedExchange (76)
   :                    :     :     :     +- ReusedExchange (79)
   :                    :     :     +- CometBroadcastExchange (85)
   :                    :     :        +- CometProject (84)
   :                    :     :           +- CometFilter (83)
   :                    :     :              +- CometScan parquet spark_catalog.default.customer_address (82)
   :                    :     +- ReusedExchange (88)
   :                    +- ReusedExchange (91)
   :- * HashAggregate (126)
   :  +- * CometColumnarToRow (125)
   :     +- CometColumnarExchange (124)
   :        +- * HashAggregate (123)
   :           +- * CometColumnarToRow (122)
   :              +- CometProject (121)
   :                 +- CometBroadcastHashJoin (120)
   :                    :- CometProject (118)
   :                    :  +- CometBroadcastHashJoin (117)
   :                    :     :- CometProject (115)
   :                    :     :  +- CometBroadcastHashJoin (114)
   :                    :     :     :- CometProject (109)
   :                    :     :     :  +- CometBroadcastHashJoin (108)
   :                    :     :     :     :- CometProject (106)
   :                    :     :     :     :  +- CometBroadcastHashJoin (105)
   :                    :     :     :     :     :- CometProject (103)
   :                    :     :     :     :     :  +- CometBroadcastHashJoin (102)
   :                    :     :     :     :     :     :- CometFilter (100)
   :                    :     :     :     :     :     :  +- CometScan parquet spark_catalog.default.catalog_sales (99)
   :                    :     :     :     :     :     +- ReusedExchange (101)
   :                    :     :     :     :     +- ReusedExchange (104)
   :                    :     :     :     +- ReusedExchange (107)
   :                    :     :     +- CometBroadcastExchange (113)
   :                    :     :        +- CometProject (112)
   :                    :     :           +- CometFilter (111)
   :                    :     :              +- CometScan parquet spark_catalog.default.customer_address (110)
   :                    :     +- ReusedExchange (116)
   :                    +- ReusedExchange (119)
   +- * HashAggregate (153)
      +- * CometColumnarToRow (152)
         +- CometColumnarExchange (151)
            +- * HashAggregate (150)
               +- * CometColumnarToRow (149)
                  +- CometProject (148)
                     +- CometBroadcastHashJoin (147)
                        :- CometProject (143)
                        :  +- CometBroadcastHashJoin (142)
                        :     :- CometProject (140)
                        :     :  +- CometBroadcastHashJoin (139)
                        :     :     :- CometProject (137)
                        :     :     :  +- CometBroadcastHashJoin (136)
                        :     :     :     :- CometProject (134)
                        :     :     :     :  +- CometBroadcastHashJoin (133)
                        :     :     :     :     :- CometProject (131)
                        :     :     :     :     :  +- CometBroadcastHashJoin (130)
                        :     :     :     :     :     :- CometFilter (128)
                        :     :     :     :     :     :  +- CometScan parquet spark_catalog.default.catalog_sales (127)
                        :     :     :     :     :     +- ReusedExchange (129)
                        :     :     :     :     +- ReusedExchange (132)
                        :     :     :     +- ReusedExchange (135)
                        :     :     +- ReusedExchange (138)
                        :     +- ReusedExchange (141)
                        +- CometBroadcastExchange (146)
                           +- CometFilter (145)
                              +- CometScan parquet spark_catalog.default.item (144)


(1) CometScan parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#9), dynamicpruningexpression(cs_sold_date_sk#9 IN dynamicpruning#10)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(2) CometFilter
Input [9]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9]
Condition : ((isnotnull(cs_bill_cdemo_sk#2) AND isnotnull(cs_bill_customer_sk#1)) AND isnotnull(cs_item_sk#3))

(3) CometScan parquet spark_catalog.default.customer_demographics
Output [4]: [cd_demo_sk#11, cd_gender#12, cd_education_status#13, cd_dep_count#14]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int,cd_gender:string,cd_education_status:string,cd_dep_count:int>

(4) CometFilter
Input [4]: [cd_demo_sk#11, cd_gender#12, cd_education_status#13, cd_dep_count#14]
Condition : (((staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, cd_gender#12, 1, true, false, true) = M) AND (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, cd_education_status#13, 20, true, false, true) = College             )) AND isnotnull(cd_demo_sk#11))

(5) CometProject
Input [4]: [cd_demo_sk#11, cd_gender#12, cd_education_status#13, cd_dep_count#14]
Arguments: [cd_demo_sk#11, cd_dep_count#14], [cd_demo_sk#11, cd_dep_count#14]

(6) CometBroadcastExchange
Input [2]: [cd_demo_sk#11, cd_dep_count#14]
Arguments: [cd_demo_sk#11, cd_dep_count#14]

(7) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9]
Right output [2]: [cd_demo_sk#11, cd_dep_count#14]
Arguments: [cs_bill_cdemo_sk#2], [cd_demo_sk#11], Inner, BuildRight

(8) CometProject
Input [11]: [cs_bill_customer_sk#1, cs_bill_cdemo_sk#2, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_demo_sk#11, cd_dep_count#14]
Arguments: [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14], [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14]

(9) CometScan parquet spark_catalog.default.customer
Output [5]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_month#18, c_birth_year#19]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [In(c_birth_month, [1,10,12,4,5,9]), IsNotNull(c_customer_sk), IsNotNull(c_current_cdemo_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_cdemo_sk:int,c_current_addr_sk:int,c_birth_month:int,c_birth_year:int>

(10) CometFilter
Input [5]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_month#18, c_birth_year#19]
Condition : (((c_birth_month#18 IN (9,5,12,4,1,10) AND isnotnull(c_customer_sk#15)) AND isnotnull(c_current_cdemo_sk#16)) AND isnotnull(c_current_addr_sk#17))

(11) CometProject
Input [5]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_month#18, c_birth_year#19]
Arguments: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19], [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]

(12) CometBroadcastExchange
Input [4]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Arguments: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]

(13) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14]
Right output [4]: [c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Arguments: [cs_bill_customer_sk#1], [c_customer_sk#15], Inner, BuildRight

(14) CometProject
Input [13]: [cs_bill_customer_sk#1, cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_customer_sk#15, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]

(15) CometScan parquet spark_catalog.default.customer_demographics
Output [1]: [cd_demo_sk#20]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_demographics]
PushedFilters: [IsNotNull(cd_demo_sk)]
ReadSchema: struct<cd_demo_sk:int>

(16) CometFilter
Input [1]: [cd_demo_sk#20]
Condition : isnotnull(cd_demo_sk#20)

(17) CometBroadcastExchange
Input [1]: [cd_demo_sk#20]
Arguments: [cd_demo_sk#20]

(18) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19]
Right output [1]: [cd_demo_sk#20]
Arguments: [c_current_cdemo_sk#16], [cd_demo_sk#20], Inner, BuildRight

(19) CometProject
Input [12]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_cdemo_sk#16, c_current_addr_sk#17, c_birth_year#19, cd_demo_sk#20]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19]

(20) CometScan parquet spark_catalog.default.customer_address
Output [4]: [ca_address_sk#21, ca_county#22, ca_state#23, ca_country#24]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_county:string,ca_state:string,ca_country:string>

(21) CometFilter
Input [4]: [ca_address_sk#21, ca_county#22, ca_state#23, ca_country#24]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#23, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#21))

(22) CometProject
Input [4]: [ca_address_sk#21, ca_county#22, ca_state#23, ca_country#24]
Arguments: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24], [ca_address_sk#21, ca_county#22, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#23, 2, true, false, true) AS ca_state#25, ca_country#24]

(23) CometBroadcastExchange
Input [4]: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]
Arguments: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]

(24) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19]
Right output [4]: [ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]
Arguments: [c_current_addr_sk#17], [ca_address_sk#21], Inner, BuildRight

(25) CometProject
Input [14]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_current_addr_sk#17, c_birth_year#19, ca_address_sk#21, ca_county#22, ca_state#25, ca_country#24]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]

(26) CometScan parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#26, d_year#27]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

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

(28) CometProject
Input [2]: [d_date_sk#26, d_year#27]
Arguments: [d_date_sk#26], [d_date_sk#26]

(29) CometBroadcastExchange
Input [1]: [d_date_sk#26]
Arguments: [d_date_sk#26]

(30) CometBroadcastHashJoin
Left output [12]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]
Right output [1]: [d_date_sk#26]
Arguments: [cs_sold_date_sk#9], [d_date_sk#26], Inner, BuildRight

(31) CometProject
Input [13]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cs_sold_date_sk#9, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24, d_date_sk#26]
Arguments: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24], [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]

(32) CometScan parquet spark_catalog.default.item
Output [2]: [i_item_sk#28, i_item_id#29]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_item_id:string>

(33) CometFilter
Input [2]: [i_item_sk#28, i_item_id#29]
Condition : isnotnull(i_item_sk#28)

(34) CometProject
Input [2]: [i_item_sk#28, i_item_id#29]
Arguments: [i_item_sk#28, i_item_id#30], [i_item_sk#28, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, i_item_id#29, 16, true, false, true) AS i_item_id#30]

(35) CometBroadcastExchange
Input [2]: [i_item_sk#28, i_item_id#30]
Arguments: [i_item_sk#28, i_item_id#30]

(36) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24]
Right output [2]: [i_item_sk#28, i_item_id#30]
Arguments: [cs_item_sk#3], [i_item_sk#28], Inner, BuildRight

(37) CometProject
Input [13]: [cs_item_sk#3, cs_quantity#4, cs_list_price#5, cs_sales_price#6, cs_coupon_amt#7, cs_net_profit#8, cd_dep_count#14, c_birth_year#19, ca_county#22, ca_state#25, ca_country#24, i_item_sk#28, i_item_id#30]
Arguments: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#35, agg2#36, agg3#37, agg4#38, agg5#39, agg6#40, agg7#41], [i_item_id#30 AS i_item_id#31, ca_country#24 AS ca_country#32, ca_state#25 AS ca_state#33, ca_county#22 AS ca_county#34, cast(cs_quantity#4 as decimal(12,2)) AS agg1#35, cast(cs_list_price#5 as decimal(12,2)) AS agg2#36, cast(cs_coupon_amt#7 as decimal(12,2)) AS agg3#37, cast(cs_sales_price#6 as decimal(12,2)) AS agg4#38, cast(cs_net_profit#8 as decimal(12,2)) AS agg5#39, cast(c_birth_year#19 as decimal(12,2)) AS agg6#40, cast(cd_dep_count#14 as decimal(12,2)) AS agg7#41]

(38) CometColumnarToRow [codegen id : 1]
Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#35, agg2#36, agg3#37, agg4#38, agg5#39, agg6#40, agg7#41]

(39) HashAggregate [codegen id : 1]
Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#35, agg2#36, agg3#37, agg4#38, agg5#39, agg6#40, agg7#41]
Keys [4]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34]
Functions [7]: [partial_avg(agg1#35), partial_avg(agg2#36), partial_avg(agg3#37), partial_avg(agg4#38), partial_avg(agg5#39), partial_avg(agg6#40), partial_avg(agg7#41)]
Aggregate Attributes [14]: [sum#42, count#43, sum#44, count#45, sum#46, count#47, sum#48, count#49, sum#50, count#51, sum#52, count#53, sum#54, count#55]
Results [18]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, sum#56, count#57, sum#58, count#59, sum#60, count#61, sum#62, count#63, sum#64, count#65, sum#66, count#67, sum#68, count#69]

(40) CometColumnarExchange
Input [18]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, sum#56, count#57, sum#58, count#59, sum#60, count#61, sum#62, count#63, sum#64, count#65, sum#66, count#67, sum#68, count#69]
Arguments: hashpartitioning(i_item_id#31, ca_country#32, ca_state#33, ca_county#34, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=1]

(41) CometColumnarToRow [codegen id : 2]
Input [18]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, sum#56, count#57, sum#58, count#59, sum#60, count#61, sum#62, count#63, sum#64, count#65, sum#66, count#67, sum#68, count#69]

(42) HashAggregate [codegen id : 2]
Input [18]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, sum#56, count#57, sum#58, count#59, sum#60, count#61, sum#62, count#63, sum#64, count#65, sum#66, count#67, sum#68, count#69]
Keys [4]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34]
Functions [7]: [avg(agg1#35), avg(agg2#36), avg(agg3#37), avg(agg4#38), avg(agg5#39), avg(agg6#40), avg(agg7#41)]
Aggregate Attributes [7]: [avg(agg1#35)#70, avg(agg2#36)#71, avg(agg3#37)#72, avg(agg4#38)#73, avg(agg5#39)#74, avg(agg6#40)#75, avg(agg7#41)#76]
Results [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, avg(agg1#35)#70 AS agg1#77, avg(agg2#36)#71 AS agg2#78, avg(agg3#37)#72 AS agg3#79, avg(agg4#38)#73 AS agg4#80, avg(agg5#39)#74 AS agg5#81, avg(agg6#40)#75 AS agg6#82, avg(agg7#41)#76 AS agg7#83]

(43) CometScan parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#84, cs_bill_cdemo_sk#85, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#92), dynamicpruningexpression(cs_sold_date_sk#92 IN dynamicpruning#93)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(44) CometFilter
Input [9]: [cs_bill_customer_sk#84, cs_bill_cdemo_sk#85, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92]
Condition : ((isnotnull(cs_bill_cdemo_sk#85) AND isnotnull(cs_bill_customer_sk#84)) AND isnotnull(cs_item_sk#86))

(45) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#94, cd_dep_count#95]

(46) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#84, cs_bill_cdemo_sk#85, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92]
Right output [2]: [cd_demo_sk#94, cd_dep_count#95]
Arguments: [cs_bill_cdemo_sk#85], [cd_demo_sk#94], Inner, BuildRight

(47) CometProject
Input [11]: [cs_bill_customer_sk#84, cs_bill_cdemo_sk#85, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_demo_sk#94, cd_dep_count#95]
Arguments: [cs_bill_customer_sk#84, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95], [cs_bill_customer_sk#84, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95]

(48) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#96, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99]

(49) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#84, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95]
Right output [4]: [c_customer_sk#96, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99]
Arguments: [cs_bill_customer_sk#84], [c_customer_sk#96], Inner, BuildRight

(50) CometProject
Input [13]: [cs_bill_customer_sk#84, cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_customer_sk#96, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99]
Arguments: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99], [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99]

(51) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#100]

(52) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99]
Right output [1]: [cd_demo_sk#100]
Arguments: [c_current_cdemo_sk#97], [cd_demo_sk#100], Inner, BuildRight

(53) CometProject
Input [12]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_cdemo_sk#97, c_current_addr_sk#98, c_birth_year#99, cd_demo_sk#100]
Arguments: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_addr_sk#98, c_birth_year#99], [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_addr_sk#98, c_birth_year#99]

(54) CometScan parquet spark_catalog.default.customer_address
Output [3]: [ca_address_sk#101, ca_state#102, ca_country#103]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_country:string>

(55) CometFilter
Input [3]: [ca_address_sk#101, ca_state#102, ca_country#103]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#102, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#101))

(56) CometProject
Input [3]: [ca_address_sk#101, ca_state#102, ca_country#103]
Arguments: [ca_address_sk#101, ca_state#104, ca_country#103], [ca_address_sk#101, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#102, 2, true, false, true) AS ca_state#104, ca_country#103]

(57) CometBroadcastExchange
Input [3]: [ca_address_sk#101, ca_state#104, ca_country#103]
Arguments: [ca_address_sk#101, ca_state#104, ca_country#103]

(58) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_addr_sk#98, c_birth_year#99]
Right output [3]: [ca_address_sk#101, ca_state#104, ca_country#103]
Arguments: [c_current_addr_sk#98], [ca_address_sk#101], Inner, BuildRight

(59) CometProject
Input [13]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_current_addr_sk#98, c_birth_year#99, ca_address_sk#101, ca_state#104, ca_country#103]
Arguments: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103], [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103]

(60) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#105]

(61) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103]
Right output [1]: [d_date_sk#105]
Arguments: [cs_sold_date_sk#92], [d_date_sk#105], Inner, BuildRight

(62) CometProject
Input [12]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cs_sold_date_sk#92, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103, d_date_sk#105]
Arguments: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103], [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103]

(63) ReusedExchange [Reuses operator id: 35]
Output [2]: [i_item_sk#106, i_item_id#107]

(64) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103]
Right output [2]: [i_item_sk#106, i_item_id#107]
Arguments: [cs_item_sk#86], [i_item_sk#106], Inner, BuildRight

(65) CometProject
Input [12]: [cs_item_sk#86, cs_quantity#87, cs_list_price#88, cs_sales_price#89, cs_coupon_amt#90, cs_net_profit#91, cd_dep_count#95, c_birth_year#99, ca_state#104, ca_country#103, i_item_sk#106, i_item_id#107]
Arguments: [i_item_id#107, ca_country#103, ca_state#104, agg1#108, agg2#109, agg3#110, agg4#111, agg5#112, agg6#113, agg7#114], [i_item_id#107, ca_country#103, ca_state#104, cast(cs_quantity#87 as decimal(12,2)) AS agg1#108, cast(cs_list_price#88 as decimal(12,2)) AS agg2#109, cast(cs_coupon_amt#90 as decimal(12,2)) AS agg3#110, cast(cs_sales_price#89 as decimal(12,2)) AS agg4#111, cast(cs_net_profit#91 as decimal(12,2)) AS agg5#112, cast(c_birth_year#99 as decimal(12,2)) AS agg6#113, cast(cd_dep_count#95 as decimal(12,2)) AS agg7#114]

(66) CometColumnarToRow [codegen id : 3]
Input [10]: [i_item_id#107, ca_country#103, ca_state#104, agg1#108, agg2#109, agg3#110, agg4#111, agg5#112, agg6#113, agg7#114]

(67) HashAggregate [codegen id : 3]
Input [10]: [i_item_id#107, ca_country#103, ca_state#104, agg1#108, agg2#109, agg3#110, agg4#111, agg5#112, agg6#113, agg7#114]
Keys [3]: [i_item_id#107, ca_country#103, ca_state#104]
Functions [7]: [partial_avg(agg1#108), partial_avg(agg2#109), partial_avg(agg3#110), partial_avg(agg4#111), partial_avg(agg5#112), partial_avg(agg6#113), partial_avg(agg7#114)]
Aggregate Attributes [14]: [sum#115, count#116, sum#117, count#118, sum#119, count#120, sum#121, count#122, sum#123, count#124, sum#125, count#126, sum#127, count#128]
Results [17]: [i_item_id#107, ca_country#103, ca_state#104, sum#129, count#130, sum#131, count#132, sum#133, count#134, sum#135, count#136, sum#137, count#138, sum#139, count#140, sum#141, count#142]

(68) CometColumnarExchange
Input [17]: [i_item_id#107, ca_country#103, ca_state#104, sum#129, count#130, sum#131, count#132, sum#133, count#134, sum#135, count#136, sum#137, count#138, sum#139, count#140, sum#141, count#142]
Arguments: hashpartitioning(i_item_id#107, ca_country#103, ca_state#104, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=2]

(69) CometColumnarToRow [codegen id : 4]
Input [17]: [i_item_id#107, ca_country#103, ca_state#104, sum#129, count#130, sum#131, count#132, sum#133, count#134, sum#135, count#136, sum#137, count#138, sum#139, count#140, sum#141, count#142]

(70) HashAggregate [codegen id : 4]
Input [17]: [i_item_id#107, ca_country#103, ca_state#104, sum#129, count#130, sum#131, count#132, sum#133, count#134, sum#135, count#136, sum#137, count#138, sum#139, count#140, sum#141, count#142]
Keys [3]: [i_item_id#107, ca_country#103, ca_state#104]
Functions [7]: [avg(agg1#108), avg(agg2#109), avg(agg3#110), avg(agg4#111), avg(agg5#112), avg(agg6#113), avg(agg7#114)]
Aggregate Attributes [7]: [avg(agg1#108)#143, avg(agg2#109)#144, avg(agg3#110)#145, avg(agg4#111)#146, avg(agg5#112)#147, avg(agg6#113)#148, avg(agg7#114)#149]
Results [11]: [i_item_id#107, ca_country#103, ca_state#104, null AS county#150, avg(agg1#108)#143 AS agg1#151, avg(agg2#109)#144 AS agg2#152, avg(agg3#110)#145 AS agg3#153, avg(agg4#111)#146 AS agg4#154, avg(agg5#112)#147 AS agg5#155, avg(agg6#113)#148 AS agg6#156, avg(agg7#114)#149 AS agg7#157]

(71) CometScan parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#158, cs_bill_cdemo_sk#159, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#166), dynamicpruningexpression(cs_sold_date_sk#166 IN dynamicpruning#167)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(72) CometFilter
Input [9]: [cs_bill_customer_sk#158, cs_bill_cdemo_sk#159, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166]
Condition : ((isnotnull(cs_bill_cdemo_sk#159) AND isnotnull(cs_bill_customer_sk#158)) AND isnotnull(cs_item_sk#160))

(73) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#168, cd_dep_count#169]

(74) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#158, cs_bill_cdemo_sk#159, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166]
Right output [2]: [cd_demo_sk#168, cd_dep_count#169]
Arguments: [cs_bill_cdemo_sk#159], [cd_demo_sk#168], Inner, BuildRight

(75) CometProject
Input [11]: [cs_bill_customer_sk#158, cs_bill_cdemo_sk#159, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_demo_sk#168, cd_dep_count#169]
Arguments: [cs_bill_customer_sk#158, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169], [cs_bill_customer_sk#158, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169]

(76) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#170, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173]

(77) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#158, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169]
Right output [4]: [c_customer_sk#170, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173]
Arguments: [cs_bill_customer_sk#158], [c_customer_sk#170], Inner, BuildRight

(78) CometProject
Input [13]: [cs_bill_customer_sk#158, cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_customer_sk#170, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173]
Arguments: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173], [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173]

(79) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#174]

(80) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173]
Right output [1]: [cd_demo_sk#174]
Arguments: [c_current_cdemo_sk#171], [cd_demo_sk#174], Inner, BuildRight

(81) CometProject
Input [12]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_cdemo_sk#171, c_current_addr_sk#172, c_birth_year#173, cd_demo_sk#174]
Arguments: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_addr_sk#172, c_birth_year#173], [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_addr_sk#172, c_birth_year#173]

(82) CometScan parquet spark_catalog.default.customer_address
Output [3]: [ca_address_sk#175, ca_state#176, ca_country#177]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string,ca_country:string>

(83) CometFilter
Input [3]: [ca_address_sk#175, ca_state#176, ca_country#177]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#176, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#175))

(84) CometProject
Input [3]: [ca_address_sk#175, ca_state#176, ca_country#177]
Arguments: [ca_address_sk#175, ca_country#177], [ca_address_sk#175, ca_country#177]

(85) CometBroadcastExchange
Input [2]: [ca_address_sk#175, ca_country#177]
Arguments: [ca_address_sk#175, ca_country#177]

(86) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_addr_sk#172, c_birth_year#173]
Right output [2]: [ca_address_sk#175, ca_country#177]
Arguments: [c_current_addr_sk#172], [ca_address_sk#175], Inner, BuildRight

(87) CometProject
Input [12]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_current_addr_sk#172, c_birth_year#173, ca_address_sk#175, ca_country#177]
Arguments: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_birth_year#173, ca_country#177], [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_birth_year#173, ca_country#177]

(88) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#178]

(89) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_birth_year#173, ca_country#177]
Right output [1]: [d_date_sk#178]
Arguments: [cs_sold_date_sk#166], [d_date_sk#178], Inner, BuildRight

(90) CometProject
Input [11]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cs_sold_date_sk#166, cd_dep_count#169, c_birth_year#173, ca_country#177, d_date_sk#178]
Arguments: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cd_dep_count#169, c_birth_year#173, ca_country#177], [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cd_dep_count#169, c_birth_year#173, ca_country#177]

(91) ReusedExchange [Reuses operator id: 35]
Output [2]: [i_item_sk#179, i_item_id#180]

(92) CometBroadcastHashJoin
Left output [9]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cd_dep_count#169, c_birth_year#173, ca_country#177]
Right output [2]: [i_item_sk#179, i_item_id#180]
Arguments: [cs_item_sk#160], [i_item_sk#179], Inner, BuildRight

(93) CometProject
Input [11]: [cs_item_sk#160, cs_quantity#161, cs_list_price#162, cs_sales_price#163, cs_coupon_amt#164, cs_net_profit#165, cd_dep_count#169, c_birth_year#173, ca_country#177, i_item_sk#179, i_item_id#180]
Arguments: [i_item_id#180, ca_country#177, agg1#181, agg2#182, agg3#183, agg4#184, agg5#185, agg6#186, agg7#187], [i_item_id#180, ca_country#177, cast(cs_quantity#161 as decimal(12,2)) AS agg1#181, cast(cs_list_price#162 as decimal(12,2)) AS agg2#182, cast(cs_coupon_amt#164 as decimal(12,2)) AS agg3#183, cast(cs_sales_price#163 as decimal(12,2)) AS agg4#184, cast(cs_net_profit#165 as decimal(12,2)) AS agg5#185, cast(c_birth_year#173 as decimal(12,2)) AS agg6#186, cast(cd_dep_count#169 as decimal(12,2)) AS agg7#187]

(94) CometColumnarToRow [codegen id : 5]
Input [9]: [i_item_id#180, ca_country#177, agg1#181, agg2#182, agg3#183, agg4#184, agg5#185, agg6#186, agg7#187]

(95) HashAggregate [codegen id : 5]
Input [9]: [i_item_id#180, ca_country#177, agg1#181, agg2#182, agg3#183, agg4#184, agg5#185, agg6#186, agg7#187]
Keys [2]: [i_item_id#180, ca_country#177]
Functions [7]: [partial_avg(agg1#181), partial_avg(agg2#182), partial_avg(agg3#183), partial_avg(agg4#184), partial_avg(agg5#185), partial_avg(agg6#186), partial_avg(agg7#187)]
Aggregate Attributes [14]: [sum#188, count#189, sum#190, count#191, sum#192, count#193, sum#194, count#195, sum#196, count#197, sum#198, count#199, sum#200, count#201]
Results [16]: [i_item_id#180, ca_country#177, sum#202, count#203, sum#204, count#205, sum#206, count#207, sum#208, count#209, sum#210, count#211, sum#212, count#213, sum#214, count#215]

(96) CometColumnarExchange
Input [16]: [i_item_id#180, ca_country#177, sum#202, count#203, sum#204, count#205, sum#206, count#207, sum#208, count#209, sum#210, count#211, sum#212, count#213, sum#214, count#215]
Arguments: hashpartitioning(i_item_id#180, ca_country#177, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=3]

(97) CometColumnarToRow [codegen id : 6]
Input [16]: [i_item_id#180, ca_country#177, sum#202, count#203, sum#204, count#205, sum#206, count#207, sum#208, count#209, sum#210, count#211, sum#212, count#213, sum#214, count#215]

(98) HashAggregate [codegen id : 6]
Input [16]: [i_item_id#180, ca_country#177, sum#202, count#203, sum#204, count#205, sum#206, count#207, sum#208, count#209, sum#210, count#211, sum#212, count#213, sum#214, count#215]
Keys [2]: [i_item_id#180, ca_country#177]
Functions [7]: [avg(agg1#181), avg(agg2#182), avg(agg3#183), avg(agg4#184), avg(agg5#185), avg(agg6#186), avg(agg7#187)]
Aggregate Attributes [7]: [avg(agg1#181)#216, avg(agg2#182)#217, avg(agg3#183)#218, avg(agg4#184)#219, avg(agg5#185)#220, avg(agg6#186)#221, avg(agg7#187)#222]
Results [11]: [i_item_id#180, ca_country#177, null AS ca_state#223, null AS county#224, avg(agg1#181)#216 AS agg1#225, avg(agg2#182)#217 AS agg2#226, avg(agg3#183)#218 AS agg3#227, avg(agg4#184)#219 AS agg4#228, avg(agg5#185)#220 AS agg5#229, avg(agg6#186)#221 AS agg6#230, avg(agg7#187)#222 AS agg7#231]

(99) CometScan parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#232, cs_bill_cdemo_sk#233, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#240), dynamicpruningexpression(cs_sold_date_sk#240 IN dynamicpruning#241)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(100) CometFilter
Input [9]: [cs_bill_customer_sk#232, cs_bill_cdemo_sk#233, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240]
Condition : ((isnotnull(cs_bill_cdemo_sk#233) AND isnotnull(cs_bill_customer_sk#232)) AND isnotnull(cs_item_sk#234))

(101) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#242, cd_dep_count#243]

(102) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#232, cs_bill_cdemo_sk#233, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240]
Right output [2]: [cd_demo_sk#242, cd_dep_count#243]
Arguments: [cs_bill_cdemo_sk#233], [cd_demo_sk#242], Inner, BuildRight

(103) CometProject
Input [11]: [cs_bill_customer_sk#232, cs_bill_cdemo_sk#233, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_demo_sk#242, cd_dep_count#243]
Arguments: [cs_bill_customer_sk#232, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243], [cs_bill_customer_sk#232, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243]

(104) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#244, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247]

(105) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#232, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243]
Right output [4]: [c_customer_sk#244, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247]
Arguments: [cs_bill_customer_sk#232], [c_customer_sk#244], Inner, BuildRight

(106) CometProject
Input [13]: [cs_bill_customer_sk#232, cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_customer_sk#244, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247]
Arguments: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247], [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247]

(107) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#248]

(108) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247]
Right output [1]: [cd_demo_sk#248]
Arguments: [c_current_cdemo_sk#245], [cd_demo_sk#248], Inner, BuildRight

(109) CometProject
Input [12]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_cdemo_sk#245, c_current_addr_sk#246, c_birth_year#247, cd_demo_sk#248]
Arguments: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_addr_sk#246, c_birth_year#247], [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_addr_sk#246, c_birth_year#247]

(110) CometScan parquet spark_catalog.default.customer_address
Output [2]: [ca_address_sk#249, ca_state#250]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(111) CometFilter
Input [2]: [ca_address_sk#249, ca_state#250]
Condition : (staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, ca_state#250, 2, true, false, true) IN (ND,WI,AL,NC,OK,MS,TN) AND isnotnull(ca_address_sk#249))

(112) CometProject
Input [2]: [ca_address_sk#249, ca_state#250]
Arguments: [ca_address_sk#249], [ca_address_sk#249]

(113) CometBroadcastExchange
Input [1]: [ca_address_sk#249]
Arguments: [ca_address_sk#249]

(114) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_addr_sk#246, c_birth_year#247]
Right output [1]: [ca_address_sk#249]
Arguments: [c_current_addr_sk#246], [ca_address_sk#249], Inner, BuildRight

(115) CometProject
Input [11]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_current_addr_sk#246, c_birth_year#247, ca_address_sk#249]
Arguments: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_birth_year#247], [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_birth_year#247]

(116) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#251]

(117) CometBroadcastHashJoin
Left output [9]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_birth_year#247]
Right output [1]: [d_date_sk#251]
Arguments: [cs_sold_date_sk#240], [d_date_sk#251], Inner, BuildRight

(118) CometProject
Input [10]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cs_sold_date_sk#240, cd_dep_count#243, c_birth_year#247, d_date_sk#251]
Arguments: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cd_dep_count#243, c_birth_year#247], [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cd_dep_count#243, c_birth_year#247]

(119) ReusedExchange [Reuses operator id: 35]
Output [2]: [i_item_sk#252, i_item_id#253]

(120) CometBroadcastHashJoin
Left output [8]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cd_dep_count#243, c_birth_year#247]
Right output [2]: [i_item_sk#252, i_item_id#253]
Arguments: [cs_item_sk#234], [i_item_sk#252], Inner, BuildRight

(121) CometProject
Input [10]: [cs_item_sk#234, cs_quantity#235, cs_list_price#236, cs_sales_price#237, cs_coupon_amt#238, cs_net_profit#239, cd_dep_count#243, c_birth_year#247, i_item_sk#252, i_item_id#253]
Arguments: [i_item_id#253, agg1#254, agg2#255, agg3#256, agg4#257, agg5#258, agg6#259, agg7#260], [i_item_id#253, cast(cs_quantity#235 as decimal(12,2)) AS agg1#254, cast(cs_list_price#236 as decimal(12,2)) AS agg2#255, cast(cs_coupon_amt#238 as decimal(12,2)) AS agg3#256, cast(cs_sales_price#237 as decimal(12,2)) AS agg4#257, cast(cs_net_profit#239 as decimal(12,2)) AS agg5#258, cast(c_birth_year#247 as decimal(12,2)) AS agg6#259, cast(cd_dep_count#243 as decimal(12,2)) AS agg7#260]

(122) CometColumnarToRow [codegen id : 7]
Input [8]: [i_item_id#253, agg1#254, agg2#255, agg3#256, agg4#257, agg5#258, agg6#259, agg7#260]

(123) HashAggregate [codegen id : 7]
Input [8]: [i_item_id#253, agg1#254, agg2#255, agg3#256, agg4#257, agg5#258, agg6#259, agg7#260]
Keys [1]: [i_item_id#253]
Functions [7]: [partial_avg(agg1#254), partial_avg(agg2#255), partial_avg(agg3#256), partial_avg(agg4#257), partial_avg(agg5#258), partial_avg(agg6#259), partial_avg(agg7#260)]
Aggregate Attributes [14]: [sum#261, count#262, sum#263, count#264, sum#265, count#266, sum#267, count#268, sum#269, count#270, sum#271, count#272, sum#273, count#274]
Results [15]: [i_item_id#253, sum#275, count#276, sum#277, count#278, sum#279, count#280, sum#281, count#282, sum#283, count#284, sum#285, count#286, sum#287, count#288]

(124) CometColumnarExchange
Input [15]: [i_item_id#253, sum#275, count#276, sum#277, count#278, sum#279, count#280, sum#281, count#282, sum#283, count#284, sum#285, count#286, sum#287, count#288]
Arguments: hashpartitioning(i_item_id#253, 5), ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=4]

(125) CometColumnarToRow [codegen id : 8]
Input [15]: [i_item_id#253, sum#275, count#276, sum#277, count#278, sum#279, count#280, sum#281, count#282, sum#283, count#284, sum#285, count#286, sum#287, count#288]

(126) HashAggregate [codegen id : 8]
Input [15]: [i_item_id#253, sum#275, count#276, sum#277, count#278, sum#279, count#280, sum#281, count#282, sum#283, count#284, sum#285, count#286, sum#287, count#288]
Keys [1]: [i_item_id#253]
Functions [7]: [avg(agg1#254), avg(agg2#255), avg(agg3#256), avg(agg4#257), avg(agg5#258), avg(agg6#259), avg(agg7#260)]
Aggregate Attributes [7]: [avg(agg1#254)#289, avg(agg2#255)#290, avg(agg3#256)#291, avg(agg4#257)#292, avg(agg5#258)#293, avg(agg6#259)#294, avg(agg7#260)#295]
Results [11]: [i_item_id#253, null AS ca_country#296, null AS ca_state#297, null AS county#298, avg(agg1#254)#289 AS agg1#299, avg(agg2#255)#290 AS agg2#300, avg(agg3#256)#291 AS agg3#301, avg(agg4#257)#292 AS agg4#302, avg(agg5#258)#293 AS agg5#303, avg(agg6#259)#294 AS agg6#304, avg(agg7#260)#295 AS agg7#305]

(127) CometScan parquet spark_catalog.default.catalog_sales
Output [9]: [cs_bill_customer_sk#306, cs_bill_cdemo_sk#307, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(cs_sold_date_sk#314), dynamicpruningexpression(cs_sold_date_sk#314 IN dynamicpruning#315)]
PushedFilters: [IsNotNull(cs_bill_cdemo_sk), IsNotNull(cs_bill_customer_sk), IsNotNull(cs_item_sk)]
ReadSchema: struct<cs_bill_customer_sk:int,cs_bill_cdemo_sk:int,cs_item_sk:int,cs_quantity:int,cs_list_price:decimal(7,2),cs_sales_price:decimal(7,2),cs_coupon_amt:decimal(7,2),cs_net_profit:decimal(7,2)>

(128) CometFilter
Input [9]: [cs_bill_customer_sk#306, cs_bill_cdemo_sk#307, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314]
Condition : ((isnotnull(cs_bill_cdemo_sk#307) AND isnotnull(cs_bill_customer_sk#306)) AND isnotnull(cs_item_sk#308))

(129) ReusedExchange [Reuses operator id: 6]
Output [2]: [cd_demo_sk#316, cd_dep_count#317]

(130) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#306, cs_bill_cdemo_sk#307, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314]
Right output [2]: [cd_demo_sk#316, cd_dep_count#317]
Arguments: [cs_bill_cdemo_sk#307], [cd_demo_sk#316], Inner, BuildRight

(131) CometProject
Input [11]: [cs_bill_customer_sk#306, cs_bill_cdemo_sk#307, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_demo_sk#316, cd_dep_count#317]
Arguments: [cs_bill_customer_sk#306, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317], [cs_bill_customer_sk#306, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317]

(132) ReusedExchange [Reuses operator id: 12]
Output [4]: [c_customer_sk#318, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321]

(133) CometBroadcastHashJoin
Left output [9]: [cs_bill_customer_sk#306, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317]
Right output [4]: [c_customer_sk#318, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321]
Arguments: [cs_bill_customer_sk#306], [c_customer_sk#318], Inner, BuildRight

(134) CometProject
Input [13]: [cs_bill_customer_sk#306, cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_customer_sk#318, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321]
Arguments: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321], [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321]

(135) ReusedExchange [Reuses operator id: 17]
Output [1]: [cd_demo_sk#322]

(136) CometBroadcastHashJoin
Left output [11]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321]
Right output [1]: [cd_demo_sk#322]
Arguments: [c_current_cdemo_sk#319], [cd_demo_sk#322], Inner, BuildRight

(137) CometProject
Input [12]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_cdemo_sk#319, c_current_addr_sk#320, c_birth_year#321, cd_demo_sk#322]
Arguments: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_addr_sk#320, c_birth_year#321], [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_addr_sk#320, c_birth_year#321]

(138) ReusedExchange [Reuses operator id: 113]
Output [1]: [ca_address_sk#323]

(139) CometBroadcastHashJoin
Left output [10]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_addr_sk#320, c_birth_year#321]
Right output [1]: [ca_address_sk#323]
Arguments: [c_current_addr_sk#320], [ca_address_sk#323], Inner, BuildRight

(140) CometProject
Input [11]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_current_addr_sk#320, c_birth_year#321, ca_address_sk#323]
Arguments: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_birth_year#321], [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_birth_year#321]

(141) ReusedExchange [Reuses operator id: 29]
Output [1]: [d_date_sk#324]

(142) CometBroadcastHashJoin
Left output [9]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_birth_year#321]
Right output [1]: [d_date_sk#324]
Arguments: [cs_sold_date_sk#314], [d_date_sk#324], Inner, BuildRight

(143) CometProject
Input [10]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cs_sold_date_sk#314, cd_dep_count#317, c_birth_year#321, d_date_sk#324]
Arguments: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cd_dep_count#317, c_birth_year#321], [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cd_dep_count#317, c_birth_year#321]

(144) CometScan parquet spark_catalog.default.item
Output [1]: [i_item_sk#325]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int>

(145) CometFilter
Input [1]: [i_item_sk#325]
Condition : isnotnull(i_item_sk#325)

(146) CometBroadcastExchange
Input [1]: [i_item_sk#325]
Arguments: [i_item_sk#325]

(147) CometBroadcastHashJoin
Left output [8]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cd_dep_count#317, c_birth_year#321]
Right output [1]: [i_item_sk#325]
Arguments: [cs_item_sk#308], [i_item_sk#325], Inner, BuildRight

(148) CometProject
Input [9]: [cs_item_sk#308, cs_quantity#309, cs_list_price#310, cs_sales_price#311, cs_coupon_amt#312, cs_net_profit#313, cd_dep_count#317, c_birth_year#321, i_item_sk#325]
Arguments: [agg1#326, agg2#327, agg3#328, agg4#329, agg5#330, agg6#331, agg7#332], [cast(cs_quantity#309 as decimal(12,2)) AS agg1#326, cast(cs_list_price#310 as decimal(12,2)) AS agg2#327, cast(cs_coupon_amt#312 as decimal(12,2)) AS agg3#328, cast(cs_sales_price#311 as decimal(12,2)) AS agg4#329, cast(cs_net_profit#313 as decimal(12,2)) AS agg5#330, cast(c_birth_year#321 as decimal(12,2)) AS agg6#331, cast(cd_dep_count#317 as decimal(12,2)) AS agg7#332]

(149) CometColumnarToRow [codegen id : 9]
Input [7]: [agg1#326, agg2#327, agg3#328, agg4#329, agg5#330, agg6#331, agg7#332]

(150) HashAggregate [codegen id : 9]
Input [7]: [agg1#326, agg2#327, agg3#328, agg4#329, agg5#330, agg6#331, agg7#332]
Keys: []
Functions [7]: [partial_avg(agg1#326), partial_avg(agg2#327), partial_avg(agg3#328), partial_avg(agg4#329), partial_avg(agg5#330), partial_avg(agg6#331), partial_avg(agg7#332)]
Aggregate Attributes [14]: [sum#333, count#334, sum#335, count#336, sum#337, count#338, sum#339, count#340, sum#341, count#342, sum#343, count#344, sum#345, count#346]
Results [14]: [sum#347, count#348, sum#349, count#350, sum#351, count#352, sum#353, count#354, sum#355, count#356, sum#357, count#358, sum#359, count#360]

(151) CometColumnarExchange
Input [14]: [sum#347, count#348, sum#349, count#350, sum#351, count#352, sum#353, count#354, sum#355, count#356, sum#357, count#358, sum#359, count#360]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, CometColumnarShuffle, [plan_id=5]

(152) CometColumnarToRow [codegen id : 10]
Input [14]: [sum#347, count#348, sum#349, count#350, sum#351, count#352, sum#353, count#354, sum#355, count#356, sum#357, count#358, sum#359, count#360]

(153) HashAggregate [codegen id : 10]
Input [14]: [sum#347, count#348, sum#349, count#350, sum#351, count#352, sum#353, count#354, sum#355, count#356, sum#357, count#358, sum#359, count#360]
Keys: []
Functions [7]: [avg(agg1#326), avg(agg2#327), avg(agg3#328), avg(agg4#329), avg(agg5#330), avg(agg6#331), avg(agg7#332)]
Aggregate Attributes [7]: [avg(agg1#326)#361, avg(agg2#327)#362, avg(agg3#328)#363, avg(agg4#329)#364, avg(agg5#330)#365, avg(agg6#331)#366, avg(agg7#332)#367]
Results [11]: [null AS i_item_id#368, null AS ca_country#369, null AS ca_state#370, null AS county#371, avg(agg1#326)#361 AS agg1#372, avg(agg2#327)#362 AS agg2#373, avg(agg3#328)#363 AS agg3#374, avg(agg4#329)#364 AS agg4#375, avg(agg5#330)#365 AS agg5#376, avg(agg6#331)#366 AS agg6#377, avg(agg7#332)#367 AS agg7#378]

(154) Union

(155) TakeOrderedAndProject
Input [11]: [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#77, agg2#78, agg3#79, agg4#80, agg5#81, agg6#82, agg7#83]
Arguments: 100, [ca_country#32 ASC NULLS FIRST, ca_state#33 ASC NULLS FIRST, ca_county#34 ASC NULLS FIRST, i_item_id#31 ASC NULLS FIRST], [i_item_id#31, ca_country#32, ca_state#33, ca_county#34, agg1#77, agg2#78, agg3#79, agg4#80, agg5#81, agg6#82, agg7#83]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#9 IN dynamicpruning#10
BroadcastExchange (160)
+- * CometColumnarToRow (159)
   +- CometProject (158)
      +- CometFilter (157)
         +- CometScan parquet spark_catalog.default.date_dim (156)


(156) CometScan parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#26, d_year#27]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2001), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(157) CometFilter
Input [2]: [d_date_sk#26, d_year#27]
Condition : ((isnotnull(d_year#27) AND (d_year#27 = 2001)) AND isnotnull(d_date_sk#26))

(158) CometProject
Input [2]: [d_date_sk#26, d_year#27]
Arguments: [d_date_sk#26], [d_date_sk#26]

(159) CometColumnarToRow [codegen id : 1]
Input [1]: [d_date_sk#26]

(160) BroadcastExchange
Input [1]: [d_date_sk#26]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=6]

Subquery:2 Hosting operator id = 43 Hosting Expression = cs_sold_date_sk#92 IN dynamicpruning#10

Subquery:3 Hosting operator id = 71 Hosting Expression = cs_sold_date_sk#166 IN dynamicpruning#10

Subquery:4 Hosting operator id = 99 Hosting Expression = cs_sold_date_sk#240 IN dynamicpruning#10

Subquery:5 Hosting operator id = 127 Hosting Expression = cs_sold_date_sk#314 IN dynamicpruning#10


