== Physical Plan ==
VeloxColumnarToRow (82)
+- TakeOrderedAndProjectExecTransformer (81)
   +- ^ ProjectExecTransformer (79)
      +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (78)
         :- ^ ProjectExecTransformer (70)
         :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (69)
         :     :- ^ ProjectExecTransformer (62)
         :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (61)
         :     :     :- ^ FilterExecTransformer (25)
         :     :     :  +- ^ ProjectExecTransformer (24)
         :     :     :     +- ^ RegularHashAggregateExecTransformer (23)
         :     :     :        +- ^ InputIteratorTransformer (22)
         :     :     :           +- ColumnarExchange (20)
         :     :     :              +- VeloxResizeBatches (19)
         :     :     :                 +- ^ ProjectExecTransformer (17)
         :     :     :                    +- ^ FlushableHashAggregateExecTransformer (16)
         :     :     :                       +- ^ ProjectExecTransformer (15)
         :     :     :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (14)
         :     :     :                             :- ^ ProjectExecTransformer (7)
         :     :     :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (6)
         :     :     :                             :     :- ^ FilterExecTransformer (2)
         :     :     :                             :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_returns (1)
         :     :     :                             :     +- ^ InputIteratorTransformer (5)
         :     :     :                             :        +- ReusedExchange (3)
         :     :     :                             +- ^ InputIteratorTransformer (13)
         :     :     :                                +- ColumnarBroadcastExchange (11)
         :     :     :                                   +- ^ FilterExecTransformer (9)
         :     :     :                                      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_address (8)
         :     :     +- ^ InputIteratorTransformer (60)
         :     :        +- ColumnarBroadcastExchange (58)
         :     :           +- ^ FilterExecTransformer (56)
         :     :              +- ^ ProjectExecTransformer (55)
         :     :                 +- ^ RegularHashAggregateExecTransformer (54)
         :     :                    +- ^ InputIteratorTransformer (53)
         :     :                       +- ColumnarExchange (51)
         :     :                          +- VeloxResizeBatches (50)
         :     :                             +- ^ ProjectExecTransformer (48)
         :     :                                +- ^ FlushableHashAggregateExecTransformer (47)
         :     :                                   +- ^ ProjectExecTransformer (46)
         :     :                                      +- ^ RegularHashAggregateExecTransformer (45)
         :     :                                         +- ^ InputIteratorTransformer (44)
         :     :                                            +- ColumnarExchange (42)
         :     :                                               +- VeloxResizeBatches (41)
         :     :                                                  +- ^ ProjectExecTransformer (39)
         :     :                                                     +- ^ FlushableHashAggregateExecTransformer (38)
         :     :                                                        +- ^ ProjectExecTransformer (37)
         :     :                                                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (36)
         :     :                                                              :- ^ ProjectExecTransformer (32)
         :     :                                                              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (31)
         :     :                                                              :     :- ^ FilterExecTransformer (27)
         :     :                                                              :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_returns (26)
         :     :                                                              :     +- ^ InputIteratorTransformer (30)
         :     :                                                              :        +- ReusedExchange (28)
         :     :                                                              +- ^ InputIteratorTransformer (35)
         :     :                                                                 +- ReusedExchange (33)
         :     +- ^ InputIteratorTransformer (68)
         :        +- ColumnarBroadcastExchange (66)
         :           +- ^ FilterExecTransformer (64)
         :              +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer (63)
         +- ^ InputIteratorTransformer (77)
            +- ColumnarBroadcastExchange (75)
               +- ^ ProjectExecTransformer (73)
                  +- ^ FilterExecTransformer (72)
                     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_address (71)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.web_returns
Output [4]: [wr_returning_customer_sk#1, wr_returning_addr_sk#2, wr_return_amt#3, wr_returned_date_sk#4]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(wr_returned_date_sk#4), dynamicpruningexpression(wr_returned_date_sk#4 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(wr_returning_addr_sk), IsNotNull(wr_returning_customer_sk)]
ReadSchema: struct<wr_returning_customer_sk:int,wr_returning_addr_sk:int,wr_return_amt:decimal(7,2)>

(2) FilterExecTransformer
Input [4]: [wr_returning_customer_sk#1, wr_returning_addr_sk#2, wr_return_amt#3, wr_returned_date_sk#4]
Arguments: (isnotnull(wr_returning_addr_sk#2) AND isnotnull(wr_returning_customer_sk#1))

(3) ReusedExchange [Reuses operator id: 87]
Output [1]: [d_date_sk#6]

(4) InputAdapter
Input [1]: [d_date_sk#6]

(5) InputIteratorTransformer
Input [1]: [d_date_sk#6]

(6) BroadcastHashJoinExecTransformer
Left keys [1]: [wr_returned_date_sk#4]
Right keys [1]: [d_date_sk#6]
Join type: Inner
Join condition: None

(7) ProjectExecTransformer
Output [3]: [wr_returning_customer_sk#1, wr_returning_addr_sk#2, wr_return_amt#3]
Input [5]: [wr_returning_customer_sk#1, wr_returning_addr_sk#2, wr_return_amt#3, wr_returned_date_sk#4, d_date_sk#6]

(8) FileSourceScanExecTransformer parquet spark_catalog.default.customer_address
Output [2]: [ca_address_sk#7, ca_state#8]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_address_sk), IsNotNull(ca_state)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(9) FilterExecTransformer
Input [2]: [ca_address_sk#7, ca_state#8]
Arguments: (isnotnull(ca_address_sk#7) AND isnotnull(ca_state#8))

(10) WholeStageCodegenTransformer (3)
Input [2]: [ca_address_sk#7, ca_state#8]
Arguments: false

(11) ColumnarBroadcastExchange
Input [2]: [ca_address_sk#7, ca_state#8]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=1]

(12) InputAdapter
Input [2]: [ca_address_sk#7, ca_state#8]

(13) InputIteratorTransformer
Input [2]: [ca_address_sk#7, ca_state#8]

(14) BroadcastHashJoinExecTransformer
Left keys [1]: [wr_returning_addr_sk#2]
Right keys [1]: [ca_address_sk#7]
Join type: Inner
Join condition: None

(15) ProjectExecTransformer
Output [3]: [wr_returning_customer_sk#1, ca_state#8, UnscaledValue(wr_return_amt#3) AS _pre_1#9]
Input [5]: [wr_returning_customer_sk#1, wr_returning_addr_sk#2, wr_return_amt#3, ca_address_sk#7, ca_state#8]

(16) FlushableHashAggregateExecTransformer
Input [3]: [wr_returning_customer_sk#1, ca_state#8, _pre_1#9]
Keys [2]: [wr_returning_customer_sk#1, ca_state#8]
Functions [1]: [partial_sum(_pre_1#9)]
Aggregate Attributes [1]: [sum#10]
Results [3]: [wr_returning_customer_sk#1, ca_state#8, sum#11]

(17) ProjectExecTransformer
Output [4]: [hash(wr_returning_customer_sk#1, ca_state#8, 42) AS hash_partition_key#12, wr_returning_customer_sk#1, ca_state#8, sum#11]
Input [3]: [wr_returning_customer_sk#1, ca_state#8, sum#11]

(18) WholeStageCodegenTransformer (4)
Input [4]: [hash_partition_key#12, wr_returning_customer_sk#1, ca_state#8, sum#11]
Arguments: false

(19) VeloxResizeBatches
Input [4]: [hash_partition_key#12, wr_returning_customer_sk#1, ca_state#8, sum#11]
Arguments: 1024, 2147483647, 10485760

(20) ColumnarExchange
Input [4]: [hash_partition_key#12, wr_returning_customer_sk#1, ca_state#8, sum#11]
Arguments: hashpartitioning(wr_returning_customer_sk#1, ca_state#8, 1), ENSURE_REQUIREMENTS, [wr_returning_customer_sk#1, ca_state#8, sum#11], [plan_id=2], [shuffle_writer_type=hash]

(21) InputAdapter
Input [3]: [wr_returning_customer_sk#1, ca_state#8, sum#11]

(22) InputIteratorTransformer
Input [3]: [wr_returning_customer_sk#1, ca_state#8, sum#11]

(23) RegularHashAggregateExecTransformer
Input [3]: [wr_returning_customer_sk#1, ca_state#8, sum#11]
Keys [2]: [wr_returning_customer_sk#1, ca_state#8]
Functions [1]: [sum(UnscaledValue(wr_return_amt#3))]
Aggregate Attributes [1]: [sum(UnscaledValue(wr_return_amt#3))#13]
Results [3]: [wr_returning_customer_sk#1, ca_state#8, sum(UnscaledValue(wr_return_amt#3))#13]

(24) ProjectExecTransformer
Output [3]: [wr_returning_customer_sk#1 AS ctr_customer_sk#14, ca_state#8 AS ctr_state#15, MakeDecimal(sum(UnscaledValue(wr_return_amt#3))#13,17,2) AS ctr_total_return#16]
Input [3]: [wr_returning_customer_sk#1, ca_state#8, sum(UnscaledValue(wr_return_amt#3))#13]

(25) FilterExecTransformer
Input [3]: [ctr_customer_sk#14, ctr_state#15, ctr_total_return#16]
Arguments: isnotnull(ctr_total_return#16)

(26) FileSourceScanExecTransformer parquet spark_catalog.default.web_returns
Output [4]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, wr_returned_date_sk#20]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(wr_returned_date_sk#20), dynamicpruningexpression(wr_returned_date_sk#20 IN dynamicpruning#5)]
PushedFilters: [IsNotNull(wr_returning_addr_sk)]
ReadSchema: struct<wr_returning_customer_sk:int,wr_returning_addr_sk:int,wr_return_amt:decimal(7,2)>

(27) FilterExecTransformer
Input [4]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, wr_returned_date_sk#20]
Arguments: isnotnull(wr_returning_addr_sk#18)

(28) ReusedExchange [Reuses operator id: 87]
Output [1]: [d_date_sk#21]

(29) InputAdapter
Input [1]: [d_date_sk#21]

(30) InputIteratorTransformer
Input [1]: [d_date_sk#21]

(31) BroadcastHashJoinExecTransformer
Left keys [1]: [wr_returned_date_sk#20]
Right keys [1]: [d_date_sk#21]
Join type: Inner
Join condition: None

(32) ProjectExecTransformer
Output [3]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19]
Input [5]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, wr_returned_date_sk#20, d_date_sk#21]

(33) ReusedExchange [Reuses operator id: 11]
Output [2]: [ca_address_sk#22, ca_state#23]

(34) InputAdapter
Input [2]: [ca_address_sk#22, ca_state#23]

(35) InputIteratorTransformer
Input [2]: [ca_address_sk#22, ca_state#23]

(36) BroadcastHashJoinExecTransformer
Left keys [1]: [wr_returning_addr_sk#18]
Right keys [1]: [ca_address_sk#22]
Join type: Inner
Join condition: None

(37) ProjectExecTransformer
Output [3]: [wr_returning_customer_sk#17, ca_state#23, UnscaledValue(wr_return_amt#19) AS _pre_2#24]
Input [5]: [wr_returning_customer_sk#17, wr_returning_addr_sk#18, wr_return_amt#19, ca_address_sk#22, ca_state#23]

(38) FlushableHashAggregateExecTransformer
Input [3]: [wr_returning_customer_sk#17, ca_state#23, _pre_2#24]
Keys [2]: [wr_returning_customer_sk#17, ca_state#23]
Functions [1]: [partial_sum(_pre_2#24)]
Aggregate Attributes [1]: [sum#25]
Results [3]: [wr_returning_customer_sk#17, ca_state#23, sum#26]

(39) ProjectExecTransformer
Output [4]: [hash(wr_returning_customer_sk#17, ca_state#23, 42) AS hash_partition_key#27, wr_returning_customer_sk#17, ca_state#23, sum#26]
Input [3]: [wr_returning_customer_sk#17, ca_state#23, sum#26]

(40) WholeStageCodegenTransformer (8)
Input [4]: [hash_partition_key#27, wr_returning_customer_sk#17, ca_state#23, sum#26]
Arguments: false

(41) VeloxResizeBatches
Input [4]: [hash_partition_key#27, wr_returning_customer_sk#17, ca_state#23, sum#26]
Arguments: 1024, 2147483647, 10485760

(42) ColumnarExchange
Input [4]: [hash_partition_key#27, wr_returning_customer_sk#17, ca_state#23, sum#26]
Arguments: hashpartitioning(wr_returning_customer_sk#17, ca_state#23, 1), ENSURE_REQUIREMENTS, [wr_returning_customer_sk#17, ca_state#23, sum#26], [plan_id=3], [shuffle_writer_type=hash]

(43) InputAdapter
Input [3]: [wr_returning_customer_sk#17, ca_state#23, sum#26]

(44) InputIteratorTransformer
Input [3]: [wr_returning_customer_sk#17, ca_state#23, sum#26]

(45) RegularHashAggregateExecTransformer
Input [3]: [wr_returning_customer_sk#17, ca_state#23, sum#26]
Keys [2]: [wr_returning_customer_sk#17, ca_state#23]
Functions [1]: [sum(UnscaledValue(wr_return_amt#19))]
Aggregate Attributes [1]: [sum(UnscaledValue(wr_return_amt#19))#13]
Results [3]: [wr_returning_customer_sk#17, ca_state#23, sum(UnscaledValue(wr_return_amt#19))#13]

(46) ProjectExecTransformer
Output [2]: [ca_state#23 AS ctr_state#28, MakeDecimal(sum(UnscaledValue(wr_return_amt#19))#13,17,2) AS ctr_total_return#29]
Input [3]: [wr_returning_customer_sk#17, ca_state#23, sum(UnscaledValue(wr_return_amt#19))#13]

(47) FlushableHashAggregateExecTransformer
Input [2]: [ctr_state#28, ctr_total_return#29]
Keys [1]: [ctr_state#28]
Functions [1]: [partial_avg(ctr_total_return#29)]
Aggregate Attributes [2]: [sum#30, count#31]
Results [3]: [ctr_state#28, sum#32, count#33]

(48) ProjectExecTransformer
Output [4]: [hash(ctr_state#28, 42) AS hash_partition_key#34, ctr_state#28, sum#32, count#33]
Input [3]: [ctr_state#28, sum#32, count#33]

(49) WholeStageCodegenTransformer (9)
Input [4]: [hash_partition_key#34, ctr_state#28, sum#32, count#33]
Arguments: false

(50) VeloxResizeBatches
Input [4]: [hash_partition_key#34, ctr_state#28, sum#32, count#33]
Arguments: 1024, 2147483647, 10485760

(51) ColumnarExchange
Input [4]: [hash_partition_key#34, ctr_state#28, sum#32, count#33]
Arguments: hashpartitioning(ctr_state#28, 1), ENSURE_REQUIREMENTS, [ctr_state#28, sum#32, count#33], [plan_id=4], [shuffle_writer_type=hash]

(52) InputAdapter
Input [3]: [ctr_state#28, sum#32, count#33]

(53) InputIteratorTransformer
Input [3]: [ctr_state#28, sum#32, count#33]

(54) RegularHashAggregateExecTransformer
Input [3]: [ctr_state#28, sum#32, count#33]
Keys [1]: [ctr_state#28]
Functions [1]: [avg(ctr_total_return#29)]
Aggregate Attributes [1]: [avg(ctr_total_return#29)#35]
Results [2]: [ctr_state#28, avg(ctr_total_return#29)#35]

(55) ProjectExecTransformer
Output [2]: [(avg(ctr_total_return#29)#35 * 1.2) AS (avg(ctr_total_return) * 1.2)#36, ctr_state#28]
Input [2]: [ctr_state#28, avg(ctr_total_return#29)#35]

(56) FilterExecTransformer
Input [2]: [(avg(ctr_total_return) * 1.2)#36, ctr_state#28]
Arguments: isnotnull((avg(ctr_total_return) * 1.2)#36)

(57) WholeStageCodegenTransformer (10)
Input [2]: [(avg(ctr_total_return) * 1.2)#36, ctr_state#28]
Arguments: false

(58) ColumnarBroadcastExchange
Input [2]: [(avg(ctr_total_return) * 1.2)#36, ctr_state#28]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=5]

(59) InputAdapter
Input [2]: [(avg(ctr_total_return) * 1.2)#36, ctr_state#28]

(60) InputIteratorTransformer
Input [2]: [(avg(ctr_total_return) * 1.2)#36, ctr_state#28]

(61) BroadcastHashJoinExecTransformer
Left keys [1]: [ctr_state#15]
Right keys [1]: [ctr_state#28]
Join type: Inner
Join condition: (cast(ctr_total_return#16 as decimal(24,7)) > (avg(ctr_total_return) * 1.2)#36)

(62) ProjectExecTransformer
Output [2]: [ctr_customer_sk#14, ctr_total_return#16]
Input [5]: [ctr_customer_sk#14, ctr_state#15, ctr_total_return#16, (avg(ctr_total_return) * 1.2)#36, ctr_state#28]

(63) FileSourceScanExecTransformer parquet spark_catalog.default.customer
Output [14]: [c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_customer_id:string,c_current_addr_sk:int,c_salutation:string,c_first_name:string,c_last_name:string,c_preferred_cust_flag:string,c_birth_day:int,c_birth_month:int,c_birth_year:int,c_birth_country:string,c_login:string,c_email_address:string,c_last_review_date:int>

(64) FilterExecTransformer
Input [14]: [c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]
Arguments: (isnotnull(c_customer_sk#37) AND isnotnull(c_current_addr_sk#39))

(65) WholeStageCodegenTransformer (11)
Input [14]: [c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]
Arguments: false

(66) ColumnarBroadcastExchange
Input [14]: [c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=6]

(67) InputAdapter
Input [14]: [c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]

(68) InputIteratorTransformer
Input [14]: [c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]

(69) BroadcastHashJoinExecTransformer
Left keys [1]: [ctr_customer_sk#14]
Right keys [1]: [c_customer_sk#37]
Join type: Inner
Join condition: None

(70) ProjectExecTransformer
Output [14]: [ctr_total_return#16, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]
Input [16]: [ctr_customer_sk#14, ctr_total_return#16, c_customer_sk#37, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50]

(71) FileSourceScanExecTransformer parquet spark_catalog.default.customer_address
Output [2]: [ca_address_sk#51, ca_state#52]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_state), EqualTo(ca_state,GA), IsNotNull(ca_address_sk)]
ReadSchema: struct<ca_address_sk:int,ca_state:string>

(72) FilterExecTransformer
Input [2]: [ca_address_sk#51, ca_state#52]
Arguments: ((isnotnull(ca_state#52) AND (ca_state#52 = GA)) AND isnotnull(ca_address_sk#51))

(73) ProjectExecTransformer
Output [1]: [ca_address_sk#51]
Input [2]: [ca_address_sk#51, ca_state#52]

(74) WholeStageCodegenTransformer (12)
Input [1]: [ca_address_sk#51]
Arguments: false

(75) ColumnarBroadcastExchange
Input [1]: [ca_address_sk#51]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]

(76) InputAdapter
Input [1]: [ca_address_sk#51]

(77) InputIteratorTransformer
Input [1]: [ca_address_sk#51]

(78) BroadcastHashJoinExecTransformer
Left keys [1]: [c_current_addr_sk#39]
Right keys [1]: [ca_address_sk#51]
Join type: Inner
Join condition: None

(79) ProjectExecTransformer
Output [13]: [c_customer_id#38, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50, ctr_total_return#16]
Input [15]: [ctr_total_return#16, c_customer_id#38, c_current_addr_sk#39, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50, ca_address_sk#51]

(80) WholeStageCodegenTransformer (13)
Input [13]: [c_customer_id#38, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50, ctr_total_return#16]
Arguments: false

(81) TakeOrderedAndProjectExecTransformer
Input [13]: [c_customer_id#38, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50, ctr_total_return#16]
Arguments: 100, [c_customer_id#38 ASC NULLS FIRST, c_salutation#40 ASC NULLS FIRST, c_first_name#41 ASC NULLS FIRST, c_last_name#42 ASC NULLS FIRST, c_preferred_cust_flag#43 ASC NULLS FIRST, c_birth_day#44 ASC NULLS FIRST, c_birth_month#45 ASC NULLS FIRST, c_birth_year#46 ASC NULLS FIRST, c_birth_country#47 ASC NULLS FIRST, c_login#48 ASC NULLS FIRST, c_email_address#49 ASC NULLS FIRST, c_last_review_date#50 ASC NULLS FIRST, ctr_total_return#16 ASC NULLS FIRST], [c_customer_id#38, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50, ctr_total_return#16], 0

(82) VeloxColumnarToRow
Input [13]: [c_customer_id#38, c_salutation#40, c_first_name#41, c_last_name#42, c_preferred_cust_flag#43, c_birth_day#44, c_birth_month#45, c_birth_year#46, c_birth_country#47, c_login#48, c_email_address#49, c_last_review_date#50, ctr_total_return#16]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = wr_returned_date_sk#4 IN dynamicpruning#5
ColumnarBroadcastExchange (87)
+- ^ ProjectExecTransformer (85)
   +- ^ FilterExecTransformer (84)
      +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (83)


(83) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [2]: [d_date_sk#6, d_year#53]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), EqualTo(d_year,2002), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>

(84) FilterExecTransformer
Input [2]: [d_date_sk#6, d_year#53]
Arguments: ((isnotnull(d_year#53) AND (d_year#53 = 2002)) AND isnotnull(d_date_sk#6))

(85) ProjectExecTransformer
Output [1]: [d_date_sk#6]
Input [2]: [d_date_sk#6, d_year#53]

(86) WholeStageCodegenTransformer (1)
Input [1]: [d_date_sk#6]
Arguments: false

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

Subquery:2 Hosting operator id = 26 Hosting Expression = wr_returned_date_sk#20 IN dynamicpruning#5


