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


(1) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [3]: [ss_store_sk#1, ss_net_profit#2, ss_sold_date_sk#3]
Arguments: [ss_store_sk#1, ss_net_profit#2, ss_sold_date_sk#3]

(2) CometFilter
Input [3]: [ss_store_sk#1, ss_net_profit#2, ss_sold_date_sk#3]
Condition : isnotnull(ss_store_sk#1)

(3) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Arguments: [d_date_sk#4, d_year#5, d_qoy#6]

(4) CometFilter
Input [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Condition : ((((isnotnull(d_qoy#6) AND isnotnull(d_year#5)) AND (d_qoy#6 = 2)) AND (d_year#5 = 1998)) AND isnotnull(d_date_sk#4))

(5) CometProject
Input [3]: [d_date_sk#4, d_year#5, d_qoy#6]
Arguments: [d_date_sk#4], [d_date_sk#4]

(6) CometBroadcastExchange
Input [1]: [d_date_sk#4]
Arguments: [d_date_sk#4]

(7) CometBroadcastHashJoin
Left output [3]: [ss_store_sk#1, ss_net_profit#2, ss_sold_date_sk#3]
Right output [1]: [d_date_sk#4]
Arguments: [ss_sold_date_sk#3], [d_date_sk#4], Inner, BuildRight

(8) CometProject
Input [4]: [ss_store_sk#1, ss_net_profit#2, ss_sold_date_sk#3, d_date_sk#4]
Arguments: [ss_store_sk#1, ss_net_profit#2], [ss_store_sk#1, ss_net_profit#2]

(9) CometNativeScan: `spark_catalog`.`default`.`store`
Output [3]: [s_store_sk#7, s_store_name#8, s_zip#9]
Arguments: [s_store_sk#7, s_store_name#8, s_zip#9]

(10) CometFilter
Input [3]: [s_store_sk#7, s_store_name#8, s_zip#9]
Condition : (isnotnull(s_store_sk#7) AND isnotnull(s_zip#9))

(11) CometBroadcastExchange
Input [3]: [s_store_sk#7, s_store_name#8, s_zip#9]
Arguments: [s_store_sk#7, s_store_name#8, s_zip#9]

(12) CometBroadcastHashJoin
Left output [2]: [ss_store_sk#1, ss_net_profit#2]
Right output [3]: [s_store_sk#7, s_store_name#8, s_zip#9]
Arguments: [ss_store_sk#1], [s_store_sk#7], Inner, BuildRight

(13) CometProject
Input [5]: [ss_store_sk#1, ss_net_profit#2, s_store_sk#7, s_store_name#8, s_zip#9]
Arguments: [ss_net_profit#2, s_store_name#8, s_zip#9], [ss_net_profit#2, s_store_name#8, s_zip#9]

(14) CometNativeScan: `spark_catalog`.`default`.`customer_address`
Output [1]: [ca_zip#10]
Arguments: [ca_zip#10]

(15) CometFilter
Input [1]: [ca_zip#10]
Condition : (substr(ca_zip#10, 1, 5) INSET 10144, 10336, 10390, 10445, 10516, 10567, 11101, 11356, 11376, 11489, 11634, 11928, 12305, 13354, 13375, 13376, 13394, 13595, 13695, 13955, 14060, 14089, 14171, 14328, 14663, 14867, 14922, 15126, 15146, 15371, 15455, 15559, 15723, 15734, 15765, 15798, 15882, 16021, 16725, 16807, 17043, 17183, 17871, 17879, 17920, 18119, 18270, 18376, 18383, 18426, 18652, 18767, 18799, 18840, 18842, 18845, 18906, 19430, 19505, 19512, 19515, 19736, 19769, 19849, 20004, 20260, 20548, 21076, 21195, 21286, 21309, 21337, 21756, 22152, 22245, 22246, 22351, 22437, 22461, 22685, 22744, 22752, 22927, 23006, 23470, 23932, 23968, 24128, 24206, 24317, 24610, 24671, 24676, 24996, 25003, 25103, 25280, 25486, 25631, 25733, 25782, 25858, 25989, 26065, 26105, 26231, 26233, 26653, 26689, 26859, 27068, 27156, 27385, 27700, 28286, 28488, 28545, 28577, 28587, 28709, 28810, 28898, 28915, 29178, 29741, 29839, 30010, 30122, 30431, 30450, 30469, 30625, 30903, 31016, 31029, 31387, 31671, 31880, 32213, 32754, 33123, 33282, 33515, 33786, 34102, 34322, 34425, 35258, 35458, 35474, 35576, 35850, 35942, 36233, 36420, 36446, 36495, 36634, 37125, 37126, 37930, 38122, 38193, 38415, 38607, 38935, 39127, 39192, 39371, 39516, 39736, 39861, 39972, 40081, 40162, 40558, 40604, 41248, 41367, 41368, 41766, 41918, 42029, 42666, 42961, 43285, 43848, 43933, 44165, 44438, 45200, 45266, 45375, 45549, 45692, 45721, 45748, 46081, 46136, 46820, 47305, 47537, 47770, 48033, 48425, 48583, 49130, 49156, 49448, 50016, 50298, 50308, 50412, 51061, 51103, 51200, 51211, 51622, 51649, 51650, 51798, 51949, 52867, 53179, 53268, 53535, 53672, 54364, 54601, 54917, 55253, 55307, 55565, 56240, 56458, 56529, 56571, 56575, 56616, 56691, 56910, 57047, 57647, 57665, 57834, 57855, 58048, 58058, 58078, 58263, 58470, 58943, 59166, 59402, 60099, 60279, 60576, 61265, 61547, 61810, 61860, 62377, 62496, 62878, 62971, 63089, 63193, 63435, 63792, 63837, 63981, 64034, 64147, 64457, 64528, 64544, 65084, 65164, 66162, 66708, 66864, 67030, 67301, 67467, 67473, 67853, 67875, 67897, 68014, 68100, 68101, 68309, 68341, 68621, 68786, 68806, 68880, 68893, 68908, 69035, 69399, 69913, 69952, 70372, 70466, 70738, 71256, 71286, 71791, 71954, 72013, 72151, 72175, 72305, 72325, 72425, 72550, 72823, 73134, 73171, 73241, 73273, 73520, 73650, 74351, 75691, 76107, 76231, 76232, 76614, 76638, 76698, 77191, 77556, 77610, 77721, 78451, 78567, 78668, 78890, 79077, 79777, 79994, 81019, 81096, 81312, 81426, 82136, 82276, 82636, 83041, 83144, 83444, 83849, 83921, 83926, 83933, 84093, 84935, 85816, 86057, 86198, 86284, 86379, 87343, 87501, 87816, 88086, 88190, 88424, 88885, 89091, 89360, 90225, 90257, 90578, 91068, 91110, 91137, 91393, 92712, 94167, 94627, 94898, 94945, 94983, 96451, 96576, 96765, 96888, 96976, 97189, 97789, 98025, 98235, 98294, 98359, 98569, 99076, 99543 AND isnotnull(substr(ca_zip#10, 1, 5)))

(16) CometProject
Input [1]: [ca_zip#10]
Arguments: [ca_zip#11], [substr(ca_zip#10, 1, 5) AS ca_zip#11]

(17) CometNativeScan: `spark_catalog`.`default`.`customer_address`
Output [2]: [ca_address_sk#12, ca_zip#13]
Arguments: [ca_address_sk#12, ca_zip#13]

(18) CometFilter
Input [2]: [ca_address_sk#12, ca_zip#13]
Condition : isnotnull(ca_address_sk#12)

(19) CometNativeScan: `spark_catalog`.`default`.`customer`
Output [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15]
Arguments: [c_current_addr_sk#14, c_preferred_cust_flag#15]

(20) CometFilter
Input [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15]
Condition : ((isnotnull(c_preferred_cust_flag#15) AND (c_preferred_cust_flag#15 = Y)) AND isnotnull(c_current_addr_sk#14))

(21) CometProject
Input [2]: [c_current_addr_sk#14, c_preferred_cust_flag#15]
Arguments: [c_current_addr_sk#14], [c_current_addr_sk#14]

(22) CometBroadcastExchange
Input [1]: [c_current_addr_sk#14]
Arguments: [c_current_addr_sk#14]

(23) CometBroadcastHashJoin
Left output [2]: [ca_address_sk#12, ca_zip#13]
Right output [1]: [c_current_addr_sk#14]
Arguments: [ca_address_sk#12], [c_current_addr_sk#14], Inner, BuildRight

(24) CometProject
Input [3]: [ca_address_sk#12, ca_zip#13, c_current_addr_sk#14]
Arguments: [ca_zip#13], [ca_zip#13]

(25) CometHashAggregate
Input [1]: [ca_zip#13]
Keys [1]: [ca_zip#13]
Functions [1]: [partial_count(1)]

(26) CometExchange
Input [2]: [ca_zip#13, count#16]
Arguments: hashpartitioning(ca_zip#13, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(27) CometHashAggregate
Input [2]: [ca_zip#13, count#16]
Keys [1]: [ca_zip#13]
Functions [1]: [count(1)]

(28) CometFilter
Input [2]: [ca_zip#17, cnt#18]
Condition : (cnt#18 > 10)

(29) CometProject
Input [2]: [ca_zip#17, cnt#18]
Arguments: [ca_zip#17], [ca_zip#17]

(30) CometBroadcastExchange
Input [1]: [ca_zip#17]
Arguments: [ca_zip#17]

(31) CometBroadcastHashJoin
Left output [1]: [ca_zip#11]
Right output [1]: [ca_zip#17]
Arguments: [coalesce(ca_zip#11, ), isnull(ca_zip#11)], [coalesce(ca_zip#17, ), isnull(ca_zip#17)], LeftSemi, BuildRight

(32) CometHashAggregate
Input [1]: [ca_zip#11]
Keys [1]: [ca_zip#11]
Functions: []

(33) CometExchange
Input [1]: [ca_zip#11]
Arguments: hashpartitioning(ca_zip#11, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(34) CometHashAggregate
Input [1]: [ca_zip#11]
Keys [1]: [ca_zip#11]
Functions: []

(35) CometBroadcastExchange
Input [1]: [ca_zip#11]
Arguments: [ca_zip#11]

(36) CometBroadcastHashJoin
Left output [3]: [ss_net_profit#2, s_store_name#8, s_zip#9]
Right output [1]: [ca_zip#11]
Arguments: [substr(s_zip#9, 1, 2)], [substr(ca_zip#11, 1, 2)], Inner, BuildRight

(37) CometProject
Input [4]: [ss_net_profit#2, s_store_name#8, s_zip#9, ca_zip#11]
Arguments: [ss_net_profit#2, s_store_name#8], [ss_net_profit#2, s_store_name#8]

(38) ColumnarToRow [codegen id : 1]
Input [2]: [ss_net_profit#2, s_store_name#8]

(39) HashAggregate [codegen id : 1]
Input [2]: [ss_net_profit#2, s_store_name#8]
Keys [1]: [s_store_name#8]
Functions [1]: [partial_sum(UnscaledValue(ss_net_profit#2))]
Aggregate Attributes [1]: [sum#19]
Results [2]: [s_store_name#8, sum#20]

(40) Exchange
Input [2]: [s_store_name#8, sum#20]
Arguments: hashpartitioning(s_store_name#8, 5), ENSURE_REQUIREMENTS, [plan_id=3]

(41) HashAggregate [codegen id : 2]
Input [2]: [s_store_name#8, sum#20]
Keys [1]: [s_store_name#8]
Functions [1]: [sum(UnscaledValue(ss_net_profit#2))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_profit#2))#21]
Results [2]: [s_store_name#8, MakeDecimal(sum(UnscaledValue(ss_net_profit#2))#21,17,2) AS sum(ss_net_profit)#22]

(42) TakeOrderedAndProject
Input [2]: [s_store_name#8, sum(ss_net_profit)#22]
Arguments: 100, [s_store_name#8 ASC NULLS FIRST], [s_store_name#8, sum(ss_net_profit)#22]

