== Physical Plan ==
VeloxColumnarToRow (165)
+- ^ SortExecTransformer (163)
   +- ^ InputIteratorTransformer (162)
      +- ColumnarExchange (160)
         +- VeloxResizeBatches (159)
            +- ^ ProjectExecTransformer (157)
               +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (156)
                  :- ^ ProjectExecTransformer (130)
                  :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (129)
                  :     :- ^ BroadcastHashJoinExecTransformer Inner BuildRight (103)
                  :     :  :- ^ ProjectExecTransformer (77)
                  :     :  :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (76)
                  :     :  :     :- ^ BroadcastHashJoinExecTransformer Inner BuildRight (50)
                  :     :  :     :  :- ^ 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.store_sales (1)
                  :     :  :     :  :                          :     +- ^ InputIteratorTransformer (5)
                  :     :  :     :  :                          :        +- ReusedExchange (3)
                  :     :  :     :  :                          +- ^ InputIteratorTransformer (13)
                  :     :  :     :  :                             +- ColumnarBroadcastExchange (11)
                  :     :  :     :  :                                +- ^ FilterExecTransformer (9)
                  :     :  :     :  :                                   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.customer_address (8)
                  :     :  :     :  +- ^ InputIteratorTransformer (49)
                  :     :  :     :     +- ColumnarBroadcastExchange (47)
                  :     :  :     :        +- ^ ProjectExecTransformer (45)
                  :     :  :     :           +- ^ RegularHashAggregateExecTransformer (44)
                  :     :  :     :              +- ^ InputIteratorTransformer (43)
                  :     :  :     :                 +- ColumnarExchange (41)
                  :     :  :     :                    +- VeloxResizeBatches (40)
                  :     :  :     :                       +- ^ ProjectExecTransformer (38)
                  :     :  :     :                          +- ^ FlushableHashAggregateExecTransformer (37)
                  :     :  :     :                             +- ^ ProjectExecTransformer (36)
                  :     :  :     :                                +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (35)
                  :     :  :     :                                   :- ^ ProjectExecTransformer (31)
                  :     :  :     :                                   :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (30)
                  :     :  :     :                                   :     :- ^ FilterExecTransformer (26)
                  :     :  :     :                                   :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (25)
                  :     :  :     :                                   :     +- ^ InputIteratorTransformer (29)
                  :     :  :     :                                   :        +- ReusedExchange (27)
                  :     :  :     :                                   +- ^ InputIteratorTransformer (34)
                  :     :  :     :                                      +- ReusedExchange (32)
                  :     :  :     +- ^ InputIteratorTransformer (75)
                  :     :  :        +- ColumnarBroadcastExchange (73)
                  :     :  :           +- ^ ProjectExecTransformer (71)
                  :     :  :              +- ^ RegularHashAggregateExecTransformer (70)
                  :     :  :                 +- ^ InputIteratorTransformer (69)
                  :     :  :                    +- ColumnarExchange (67)
                  :     :  :                       +- VeloxResizeBatches (66)
                  :     :  :                          +- ^ ProjectExecTransformer (64)
                  :     :  :                             +- ^ FlushableHashAggregateExecTransformer (63)
                  :     :  :                                +- ^ ProjectExecTransformer (62)
                  :     :  :                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (61)
                  :     :  :                                      :- ^ ProjectExecTransformer (57)
                  :     :  :                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (56)
                  :     :  :                                      :     :- ^ FilterExecTransformer (52)
                  :     :  :                                      :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (51)
                  :     :  :                                      :     +- ^ InputIteratorTransformer (55)
                  :     :  :                                      :        +- ReusedExchange (53)
                  :     :  :                                      +- ^ InputIteratorTransformer (60)
                  :     :  :                                         +- ReusedExchange (58)
                  :     :  +- ^ InputIteratorTransformer (102)
                  :     :     +- ColumnarBroadcastExchange (100)
                  :     :        +- ^ ProjectExecTransformer (98)
                  :     :           +- ^ RegularHashAggregateExecTransformer (97)
                  :     :              +- ^ InputIteratorTransformer (96)
                  :     :                 +- ColumnarExchange (94)
                  :     :                    +- VeloxResizeBatches (93)
                  :     :                       +- ^ ProjectExecTransformer (91)
                  :     :                          +- ^ FlushableHashAggregateExecTransformer (90)
                  :     :                             +- ^ ProjectExecTransformer (89)
                  :     :                                +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (88)
                  :     :                                   :- ^ ProjectExecTransformer (84)
                  :     :                                   :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (83)
                  :     :                                   :     :- ^ FilterExecTransformer (79)
                  :     :                                   :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (78)
                  :     :                                   :     +- ^ InputIteratorTransformer (82)
                  :     :                                   :        +- ReusedExchange (80)
                  :     :                                   +- ^ InputIteratorTransformer (87)
                  :     :                                      +- ReusedExchange (85)
                  :     +- ^ InputIteratorTransformer (128)
                  :        +- ColumnarBroadcastExchange (126)
                  :           +- ^ ProjectExecTransformer (124)
                  :              +- ^ RegularHashAggregateExecTransformer (123)
                  :                 +- ^ InputIteratorTransformer (122)
                  :                    +- ColumnarExchange (120)
                  :                       +- VeloxResizeBatches (119)
                  :                          +- ^ ProjectExecTransformer (117)
                  :                             +- ^ FlushableHashAggregateExecTransformer (116)
                  :                                +- ^ ProjectExecTransformer (115)
                  :                                   +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (114)
                  :                                      :- ^ ProjectExecTransformer (110)
                  :                                      :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (109)
                  :                                      :     :- ^ FilterExecTransformer (105)
                  :                                      :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (104)
                  :                                      :     +- ^ InputIteratorTransformer (108)
                  :                                      :        +- ReusedExchange (106)
                  :                                      +- ^ InputIteratorTransformer (113)
                  :                                         +- ReusedExchange (111)
                  +- ^ InputIteratorTransformer (155)
                     +- ColumnarBroadcastExchange (153)
                        +- ^ ProjectExecTransformer (151)
                           +- ^ RegularHashAggregateExecTransformer (150)
                              +- ^ InputIteratorTransformer (149)
                                 +- ColumnarExchange (147)
                                    +- VeloxResizeBatches (146)
                                       +- ^ ProjectExecTransformer (144)
                                          +- ^ FlushableHashAggregateExecTransformer (143)
                                             +- ^ ProjectExecTransformer (142)
                                                +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (141)
                                                   :- ^ ProjectExecTransformer (137)
                                                   :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (136)
                                                   :     :- ^ FilterExecTransformer (132)
                                                   :     :  +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.web_sales (131)
                                                   :     +- ^ InputIteratorTransformer (135)
                                                   :        +- ReusedExchange (133)
                                                   +- ^ InputIteratorTransformer (140)
                                                      +- ReusedExchange (138)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [3]: [ss_addr_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#3), dynamicpruningexpression(ss_sold_date_sk#3 IN dynamicpruning#4)]
PushedFilters: [IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(2) FilterExecTransformer
Input [3]: [ss_addr_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3]
Arguments: isnotnull(ss_addr_sk#1)

(3) ReusedExchange [Reuses operator id: 169]
Output [3]: [d_date_sk#5, d_year#6, d_qoy#7]

(4) InputAdapter
Input [3]: [d_date_sk#5, d_year#6, d_qoy#7]

(5) InputIteratorTransformer
Input [3]: [d_date_sk#5, d_year#6, d_qoy#7]

(6) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#3]
Right keys [1]: [d_date_sk#5]
Join type: Inner
Join condition: None

(7) ProjectExecTransformer
Output [4]: [ss_addr_sk#1, ss_ext_sales_price#2, d_year#6, d_qoy#7]
Input [6]: [ss_addr_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3, d_date_sk#5, d_year#6, d_qoy#7]

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

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

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

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

(12) InputAdapter
Input [2]: [ca_address_sk#8, ca_county#9]

(13) InputIteratorTransformer
Input [2]: [ca_address_sk#8, ca_county#9]

(14) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_addr_sk#1]
Right keys [1]: [ca_address_sk#8]
Join type: Inner
Join condition: None

(15) ProjectExecTransformer
Output [4]: [d_year#6, d_qoy#7, ca_county#9, UnscaledValue(ss_ext_sales_price#2) AS _pre_1#10]
Input [6]: [ss_addr_sk#1, ss_ext_sales_price#2, d_year#6, d_qoy#7, ca_address_sk#8, ca_county#9]

(16) FlushableHashAggregateExecTransformer
Input [4]: [d_year#6, d_qoy#7, ca_county#9, _pre_1#10]
Keys [3]: [ca_county#9, d_qoy#7, d_year#6]
Functions [1]: [partial_sum(_pre_1#10)]
Aggregate Attributes [1]: [sum#11]
Results [4]: [ca_county#9, d_qoy#7, d_year#6, sum#12]

(17) ProjectExecTransformer
Output [5]: [hash(ca_county#9, d_qoy#7, d_year#6, 42) AS hash_partition_key#13, ca_county#9, d_qoy#7, d_year#6, sum#12]
Input [4]: [ca_county#9, d_qoy#7, d_year#6, sum#12]

(18) WholeStageCodegenTransformer (4)
Input [5]: [hash_partition_key#13, ca_county#9, d_qoy#7, d_year#6, sum#12]
Arguments: false

(19) VeloxResizeBatches
Input [5]: [hash_partition_key#13, ca_county#9, d_qoy#7, d_year#6, sum#12]
Arguments: 1024, 2147483647, 10485760

(20) ColumnarExchange
Input [5]: [hash_partition_key#13, ca_county#9, d_qoy#7, d_year#6, sum#12]
Arguments: hashpartitioning(ca_county#9, d_qoy#7, d_year#6, 1), ENSURE_REQUIREMENTS, [ca_county#9, d_qoy#7, d_year#6, sum#12], [plan_id=2], [shuffle_writer_type=hash]

(21) InputAdapter
Input [4]: [ca_county#9, d_qoy#7, d_year#6, sum#12]

(22) InputIteratorTransformer
Input [4]: [ca_county#9, d_qoy#7, d_year#6, sum#12]

(23) RegularHashAggregateExecTransformer
Input [4]: [ca_county#9, d_qoy#7, d_year#6, sum#12]
Keys [3]: [ca_county#9, d_qoy#7, d_year#6]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#2))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#2))#14]
Results [4]: [ca_county#9, d_qoy#7, d_year#6, sum(UnscaledValue(ss_ext_sales_price#2))#14]

(24) ProjectExecTransformer
Output [3]: [ca_county#9, d_year#6, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#2))#14,17,2) AS store_sales#15]
Input [4]: [ca_county#9, d_qoy#7, d_year#6, sum(UnscaledValue(ss_ext_sales_price#2))#14]

(25) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [3]: [ss_addr_sk#16, ss_ext_sales_price#17, ss_sold_date_sk#18]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#18), dynamicpruningexpression(ss_sold_date_sk#18 IN dynamicpruning#19)]
PushedFilters: [IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(26) FilterExecTransformer
Input [3]: [ss_addr_sk#16, ss_ext_sales_price#17, ss_sold_date_sk#18]
Arguments: isnotnull(ss_addr_sk#16)

(27) ReusedExchange [Reuses operator id: 173]
Output [3]: [d_date_sk#20, d_year#21, d_qoy#22]

(28) InputAdapter
Input [3]: [d_date_sk#20, d_year#21, d_qoy#22]

(29) InputIteratorTransformer
Input [3]: [d_date_sk#20, d_year#21, d_qoy#22]

(30) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#18]
Right keys [1]: [d_date_sk#20]
Join type: Inner
Join condition: None

(31) ProjectExecTransformer
Output [4]: [ss_addr_sk#16, ss_ext_sales_price#17, d_year#21, d_qoy#22]
Input [6]: [ss_addr_sk#16, ss_ext_sales_price#17, ss_sold_date_sk#18, d_date_sk#20, d_year#21, d_qoy#22]

(32) ReusedExchange [Reuses operator id: 11]
Output [2]: [ca_address_sk#23, ca_county#24]

(33) InputAdapter
Input [2]: [ca_address_sk#23, ca_county#24]

(34) InputIteratorTransformer
Input [2]: [ca_address_sk#23, ca_county#24]

(35) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_addr_sk#16]
Right keys [1]: [ca_address_sk#23]
Join type: Inner
Join condition: None

(36) ProjectExecTransformer
Output [4]: [d_year#21, d_qoy#22, ca_county#24, UnscaledValue(ss_ext_sales_price#17) AS _pre_2#25]
Input [6]: [ss_addr_sk#16, ss_ext_sales_price#17, d_year#21, d_qoy#22, ca_address_sk#23, ca_county#24]

(37) FlushableHashAggregateExecTransformer
Input [4]: [d_year#21, d_qoy#22, ca_county#24, _pre_2#25]
Keys [3]: [ca_county#24, d_qoy#22, d_year#21]
Functions [1]: [partial_sum(_pre_2#25)]
Aggregate Attributes [1]: [sum#26]
Results [4]: [ca_county#24, d_qoy#22, d_year#21, sum#27]

(38) ProjectExecTransformer
Output [5]: [hash(ca_county#24, d_qoy#22, d_year#21, 42) AS hash_partition_key#28, ca_county#24, d_qoy#22, d_year#21, sum#27]
Input [4]: [ca_county#24, d_qoy#22, d_year#21, sum#27]

(39) WholeStageCodegenTransformer (8)
Input [5]: [hash_partition_key#28, ca_county#24, d_qoy#22, d_year#21, sum#27]
Arguments: false

(40) VeloxResizeBatches
Input [5]: [hash_partition_key#28, ca_county#24, d_qoy#22, d_year#21, sum#27]
Arguments: 1024, 2147483647, 10485760

(41) ColumnarExchange
Input [5]: [hash_partition_key#28, ca_county#24, d_qoy#22, d_year#21, sum#27]
Arguments: hashpartitioning(ca_county#24, d_qoy#22, d_year#21, 1), ENSURE_REQUIREMENTS, [ca_county#24, d_qoy#22, d_year#21, sum#27], [plan_id=3], [shuffle_writer_type=hash]

(42) InputAdapter
Input [4]: [ca_county#24, d_qoy#22, d_year#21, sum#27]

(43) InputIteratorTransformer
Input [4]: [ca_county#24, d_qoy#22, d_year#21, sum#27]

(44) RegularHashAggregateExecTransformer
Input [4]: [ca_county#24, d_qoy#22, d_year#21, sum#27]
Keys [3]: [ca_county#24, d_qoy#22, d_year#21]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#17))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#17))#14]
Results [4]: [ca_county#24, d_qoy#22, d_year#21, sum(UnscaledValue(ss_ext_sales_price#17))#14]

(45) ProjectExecTransformer
Output [2]: [ca_county#24, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#17))#14,17,2) AS store_sales#29]
Input [4]: [ca_county#24, d_qoy#22, d_year#21, sum(UnscaledValue(ss_ext_sales_price#17))#14]

(46) WholeStageCodegenTransformer (9)
Input [2]: [ca_county#24, store_sales#29]
Arguments: false

(47) ColumnarBroadcastExchange
Input [2]: [ca_county#24, store_sales#29]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=4]

(48) InputAdapter
Input [2]: [ca_county#24, store_sales#29]

(49) InputIteratorTransformer
Input [2]: [ca_county#24, store_sales#29]

(50) BroadcastHashJoinExecTransformer
Left keys [1]: [ca_county#9]
Right keys [1]: [ca_county#24]
Join type: Inner
Join condition: None

(51) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [3]: [ss_addr_sk#30, ss_ext_sales_price#31, ss_sold_date_sk#32]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ss_sold_date_sk#32), dynamicpruningexpression(ss_sold_date_sk#32 IN dynamicpruning#33)]
PushedFilters: [IsNotNull(ss_addr_sk)]
ReadSchema: struct<ss_addr_sk:int,ss_ext_sales_price:decimal(7,2)>

(52) FilterExecTransformer
Input [3]: [ss_addr_sk#30, ss_ext_sales_price#31, ss_sold_date_sk#32]
Arguments: isnotnull(ss_addr_sk#30)

(53) ReusedExchange [Reuses operator id: 177]
Output [3]: [d_date_sk#34, d_year#35, d_qoy#36]

(54) InputAdapter
Input [3]: [d_date_sk#34, d_year#35, d_qoy#36]

(55) InputIteratorTransformer
Input [3]: [d_date_sk#34, d_year#35, d_qoy#36]

(56) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_date_sk#32]
Right keys [1]: [d_date_sk#34]
Join type: Inner
Join condition: None

(57) ProjectExecTransformer
Output [4]: [ss_addr_sk#30, ss_ext_sales_price#31, d_year#35, d_qoy#36]
Input [6]: [ss_addr_sk#30, ss_ext_sales_price#31, ss_sold_date_sk#32, d_date_sk#34, d_year#35, d_qoy#36]

(58) ReusedExchange [Reuses operator id: 11]
Output [2]: [ca_address_sk#37, ca_county#38]

(59) InputAdapter
Input [2]: [ca_address_sk#37, ca_county#38]

(60) InputIteratorTransformer
Input [2]: [ca_address_sk#37, ca_county#38]

(61) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_addr_sk#30]
Right keys [1]: [ca_address_sk#37]
Join type: Inner
Join condition: None

(62) ProjectExecTransformer
Output [4]: [d_year#35, d_qoy#36, ca_county#38, UnscaledValue(ss_ext_sales_price#31) AS _pre_3#39]
Input [6]: [ss_addr_sk#30, ss_ext_sales_price#31, d_year#35, d_qoy#36, ca_address_sk#37, ca_county#38]

(63) FlushableHashAggregateExecTransformer
Input [4]: [d_year#35, d_qoy#36, ca_county#38, _pre_3#39]
Keys [3]: [ca_county#38, d_qoy#36, d_year#35]
Functions [1]: [partial_sum(_pre_3#39)]
Aggregate Attributes [1]: [sum#40]
Results [4]: [ca_county#38, d_qoy#36, d_year#35, sum#41]

(64) ProjectExecTransformer
Output [5]: [hash(ca_county#38, d_qoy#36, d_year#35, 42) AS hash_partition_key#42, ca_county#38, d_qoy#36, d_year#35, sum#41]
Input [4]: [ca_county#38, d_qoy#36, d_year#35, sum#41]

(65) WholeStageCodegenTransformer (13)
Input [5]: [hash_partition_key#42, ca_county#38, d_qoy#36, d_year#35, sum#41]
Arguments: false

(66) VeloxResizeBatches
Input [5]: [hash_partition_key#42, ca_county#38, d_qoy#36, d_year#35, sum#41]
Arguments: 1024, 2147483647, 10485760

(67) ColumnarExchange
Input [5]: [hash_partition_key#42, ca_county#38, d_qoy#36, d_year#35, sum#41]
Arguments: hashpartitioning(ca_county#38, d_qoy#36, d_year#35, 1), ENSURE_REQUIREMENTS, [ca_county#38, d_qoy#36, d_year#35, sum#41], [plan_id=5], [shuffle_writer_type=hash]

(68) InputAdapter
Input [4]: [ca_county#38, d_qoy#36, d_year#35, sum#41]

(69) InputIteratorTransformer
Input [4]: [ca_county#38, d_qoy#36, d_year#35, sum#41]

(70) RegularHashAggregateExecTransformer
Input [4]: [ca_county#38, d_qoy#36, d_year#35, sum#41]
Keys [3]: [ca_county#38, d_qoy#36, d_year#35]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#31))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_ext_sales_price#31))#14]
Results [4]: [ca_county#38, d_qoy#36, d_year#35, sum(UnscaledValue(ss_ext_sales_price#31))#14]

(71) ProjectExecTransformer
Output [2]: [ca_county#38, MakeDecimal(sum(UnscaledValue(ss_ext_sales_price#31))#14,17,2) AS store_sales#43]
Input [4]: [ca_county#38, d_qoy#36, d_year#35, sum(UnscaledValue(ss_ext_sales_price#31))#14]

(72) WholeStageCodegenTransformer (14)
Input [2]: [ca_county#38, store_sales#43]
Arguments: false

(73) ColumnarBroadcastExchange
Input [2]: [ca_county#38, store_sales#43]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=6]

(74) InputAdapter
Input [2]: [ca_county#38, store_sales#43]

(75) InputIteratorTransformer
Input [2]: [ca_county#38, store_sales#43]

(76) BroadcastHashJoinExecTransformer
Left keys [1]: [ca_county#24]
Right keys [1]: [ca_county#38]
Join type: Inner
Join condition: None

(77) ProjectExecTransformer
Output [5]: [ca_county#9, d_year#6, store_sales#15, store_sales#29, store_sales#43]
Input [7]: [ca_county#9, d_year#6, store_sales#15, ca_county#24, store_sales#29, ca_county#38, store_sales#43]

(78) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [3]: [ws_bill_addr_sk#44, ws_ext_sales_price#45, ws_sold_date_sk#46]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#46), dynamicpruningexpression(ws_sold_date_sk#46 IN dynamicpruning#4)]
PushedFilters: [IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(79) FilterExecTransformer
Input [3]: [ws_bill_addr_sk#44, ws_ext_sales_price#45, ws_sold_date_sk#46]
Arguments: isnotnull(ws_bill_addr_sk#44)

(80) ReusedExchange [Reuses operator id: 169]
Output [3]: [d_date_sk#47, d_year#48, d_qoy#49]

(81) InputAdapter
Input [3]: [d_date_sk#47, d_year#48, d_qoy#49]

(82) InputIteratorTransformer
Input [3]: [d_date_sk#47, d_year#48, d_qoy#49]

(83) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#46]
Right keys [1]: [d_date_sk#47]
Join type: Inner
Join condition: None

(84) ProjectExecTransformer
Output [4]: [ws_bill_addr_sk#44, ws_ext_sales_price#45, d_year#48, d_qoy#49]
Input [6]: [ws_bill_addr_sk#44, ws_ext_sales_price#45, ws_sold_date_sk#46, d_date_sk#47, d_year#48, d_qoy#49]

(85) ReusedExchange [Reuses operator id: 11]
Output [2]: [ca_address_sk#50, ca_county#51]

(86) InputAdapter
Input [2]: [ca_address_sk#50, ca_county#51]

(87) InputIteratorTransformer
Input [2]: [ca_address_sk#50, ca_county#51]

(88) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_bill_addr_sk#44]
Right keys [1]: [ca_address_sk#50]
Join type: Inner
Join condition: None

(89) ProjectExecTransformer
Output [4]: [d_year#48, d_qoy#49, ca_county#51, UnscaledValue(ws_ext_sales_price#45) AS _pre_4#52]
Input [6]: [ws_bill_addr_sk#44, ws_ext_sales_price#45, d_year#48, d_qoy#49, ca_address_sk#50, ca_county#51]

(90) FlushableHashAggregateExecTransformer
Input [4]: [d_year#48, d_qoy#49, ca_county#51, _pre_4#52]
Keys [3]: [ca_county#51, d_qoy#49, d_year#48]
Functions [1]: [partial_sum(_pre_4#52)]
Aggregate Attributes [1]: [sum#53]
Results [4]: [ca_county#51, d_qoy#49, d_year#48, sum#54]

(91) ProjectExecTransformer
Output [5]: [hash(ca_county#51, d_qoy#49, d_year#48, 42) AS hash_partition_key#55, ca_county#51, d_qoy#49, d_year#48, sum#54]
Input [4]: [ca_county#51, d_qoy#49, d_year#48, sum#54]

(92) WholeStageCodegenTransformer (18)
Input [5]: [hash_partition_key#55, ca_county#51, d_qoy#49, d_year#48, sum#54]
Arguments: false

(93) VeloxResizeBatches
Input [5]: [hash_partition_key#55, ca_county#51, d_qoy#49, d_year#48, sum#54]
Arguments: 1024, 2147483647, 10485760

(94) ColumnarExchange
Input [5]: [hash_partition_key#55, ca_county#51, d_qoy#49, d_year#48, sum#54]
Arguments: hashpartitioning(ca_county#51, d_qoy#49, d_year#48, 1), ENSURE_REQUIREMENTS, [ca_county#51, d_qoy#49, d_year#48, sum#54], [plan_id=7], [shuffle_writer_type=hash]

(95) InputAdapter
Input [4]: [ca_county#51, d_qoy#49, d_year#48, sum#54]

(96) InputIteratorTransformer
Input [4]: [ca_county#51, d_qoy#49, d_year#48, sum#54]

(97) RegularHashAggregateExecTransformer
Input [4]: [ca_county#51, d_qoy#49, d_year#48, sum#54]
Keys [3]: [ca_county#51, d_qoy#49, d_year#48]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#45))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#45))#56]
Results [4]: [ca_county#51, d_qoy#49, d_year#48, sum(UnscaledValue(ws_ext_sales_price#45))#56]

(98) ProjectExecTransformer
Output [2]: [ca_county#51, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#45))#56,17,2) AS web_sales#57]
Input [4]: [ca_county#51, d_qoy#49, d_year#48, sum(UnscaledValue(ws_ext_sales_price#45))#56]

(99) WholeStageCodegenTransformer (19)
Input [2]: [ca_county#51, web_sales#57]
Arguments: false

(100) ColumnarBroadcastExchange
Input [2]: [ca_county#51, web_sales#57]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=8]

(101) InputAdapter
Input [2]: [ca_county#51, web_sales#57]

(102) InputIteratorTransformer
Input [2]: [ca_county#51, web_sales#57]

(103) BroadcastHashJoinExecTransformer
Left keys [1]: [ca_county#9]
Right keys [1]: [ca_county#51]
Join type: Inner
Join condition: None

(104) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [3]: [ws_bill_addr_sk#58, ws_ext_sales_price#59, ws_sold_date_sk#60]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#60), dynamicpruningexpression(ws_sold_date_sk#60 IN dynamicpruning#19)]
PushedFilters: [IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(105) FilterExecTransformer
Input [3]: [ws_bill_addr_sk#58, ws_ext_sales_price#59, ws_sold_date_sk#60]
Arguments: isnotnull(ws_bill_addr_sk#58)

(106) ReusedExchange [Reuses operator id: 173]
Output [3]: [d_date_sk#61, d_year#62, d_qoy#63]

(107) InputAdapter
Input [3]: [d_date_sk#61, d_year#62, d_qoy#63]

(108) InputIteratorTransformer
Input [3]: [d_date_sk#61, d_year#62, d_qoy#63]

(109) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#60]
Right keys [1]: [d_date_sk#61]
Join type: Inner
Join condition: None

(110) ProjectExecTransformer
Output [4]: [ws_bill_addr_sk#58, ws_ext_sales_price#59, d_year#62, d_qoy#63]
Input [6]: [ws_bill_addr_sk#58, ws_ext_sales_price#59, ws_sold_date_sk#60, d_date_sk#61, d_year#62, d_qoy#63]

(111) ReusedExchange [Reuses operator id: 11]
Output [2]: [ca_address_sk#64, ca_county#65]

(112) InputAdapter
Input [2]: [ca_address_sk#64, ca_county#65]

(113) InputIteratorTransformer
Input [2]: [ca_address_sk#64, ca_county#65]

(114) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_bill_addr_sk#58]
Right keys [1]: [ca_address_sk#64]
Join type: Inner
Join condition: None

(115) ProjectExecTransformer
Output [4]: [d_year#62, d_qoy#63, ca_county#65, UnscaledValue(ws_ext_sales_price#59) AS _pre_5#66]
Input [6]: [ws_bill_addr_sk#58, ws_ext_sales_price#59, d_year#62, d_qoy#63, ca_address_sk#64, ca_county#65]

(116) FlushableHashAggregateExecTransformer
Input [4]: [d_year#62, d_qoy#63, ca_county#65, _pre_5#66]
Keys [3]: [ca_county#65, d_qoy#63, d_year#62]
Functions [1]: [partial_sum(_pre_5#66)]
Aggregate Attributes [1]: [sum#67]
Results [4]: [ca_county#65, d_qoy#63, d_year#62, sum#68]

(117) ProjectExecTransformer
Output [5]: [hash(ca_county#65, d_qoy#63, d_year#62, 42) AS hash_partition_key#69, ca_county#65, d_qoy#63, d_year#62, sum#68]
Input [4]: [ca_county#65, d_qoy#63, d_year#62, sum#68]

(118) WholeStageCodegenTransformer (23)
Input [5]: [hash_partition_key#69, ca_county#65, d_qoy#63, d_year#62, sum#68]
Arguments: false

(119) VeloxResizeBatches
Input [5]: [hash_partition_key#69, ca_county#65, d_qoy#63, d_year#62, sum#68]
Arguments: 1024, 2147483647, 10485760

(120) ColumnarExchange
Input [5]: [hash_partition_key#69, ca_county#65, d_qoy#63, d_year#62, sum#68]
Arguments: hashpartitioning(ca_county#65, d_qoy#63, d_year#62, 1), ENSURE_REQUIREMENTS, [ca_county#65, d_qoy#63, d_year#62, sum#68], [plan_id=9], [shuffle_writer_type=hash]

(121) InputAdapter
Input [4]: [ca_county#65, d_qoy#63, d_year#62, sum#68]

(122) InputIteratorTransformer
Input [4]: [ca_county#65, d_qoy#63, d_year#62, sum#68]

(123) RegularHashAggregateExecTransformer
Input [4]: [ca_county#65, d_qoy#63, d_year#62, sum#68]
Keys [3]: [ca_county#65, d_qoy#63, d_year#62]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#59))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#59))#56]
Results [4]: [ca_county#65, d_qoy#63, d_year#62, sum(UnscaledValue(ws_ext_sales_price#59))#56]

(124) ProjectExecTransformer
Output [2]: [ca_county#65, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#59))#56,17,2) AS web_sales#70]
Input [4]: [ca_county#65, d_qoy#63, d_year#62, sum(UnscaledValue(ws_ext_sales_price#59))#56]

(125) WholeStageCodegenTransformer (24)
Input [2]: [ca_county#65, web_sales#70]
Arguments: false

(126) ColumnarBroadcastExchange
Input [2]: [ca_county#65, web_sales#70]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=10]

(127) InputAdapter
Input [2]: [ca_county#65, web_sales#70]

(128) InputIteratorTransformer
Input [2]: [ca_county#65, web_sales#70]

(129) BroadcastHashJoinExecTransformer
Left keys [1]: [ca_county#51]
Right keys [1]: [ca_county#65]
Join type: Inner
Join condition: (CASE WHEN (web_sales#57 > 0.00) THEN (web_sales#70 / web_sales#57) END > CASE WHEN (store_sales#15 > 0.00) THEN (store_sales#29 / store_sales#15) END)

(130) ProjectExecTransformer
Output [8]: [ca_county#9, d_year#6, store_sales#15, store_sales#29, store_sales#43, ca_county#51, web_sales#57, web_sales#70]
Input [9]: [ca_county#9, d_year#6, store_sales#15, store_sales#29, store_sales#43, ca_county#51, web_sales#57, ca_county#65, web_sales#70]

(131) FileSourceScanExecTransformer parquet spark_catalog.default.web_sales
Output [3]: [ws_bill_addr_sk#71, ws_ext_sales_price#72, ws_sold_date_sk#73]
Batched: true
Location: InMemoryFileIndex []
PartitionFilters: [isnotnull(ws_sold_date_sk#73), dynamicpruningexpression(ws_sold_date_sk#73 IN dynamicpruning#33)]
PushedFilters: [IsNotNull(ws_bill_addr_sk)]
ReadSchema: struct<ws_bill_addr_sk:int,ws_ext_sales_price:decimal(7,2)>

(132) FilterExecTransformer
Input [3]: [ws_bill_addr_sk#71, ws_ext_sales_price#72, ws_sold_date_sk#73]
Arguments: isnotnull(ws_bill_addr_sk#71)

(133) ReusedExchange [Reuses operator id: 177]
Output [3]: [d_date_sk#74, d_year#75, d_qoy#76]

(134) InputAdapter
Input [3]: [d_date_sk#74, d_year#75, d_qoy#76]

(135) InputIteratorTransformer
Input [3]: [d_date_sk#74, d_year#75, d_qoy#76]

(136) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_sold_date_sk#73]
Right keys [1]: [d_date_sk#74]
Join type: Inner
Join condition: None

(137) ProjectExecTransformer
Output [4]: [ws_bill_addr_sk#71, ws_ext_sales_price#72, d_year#75, d_qoy#76]
Input [6]: [ws_bill_addr_sk#71, ws_ext_sales_price#72, ws_sold_date_sk#73, d_date_sk#74, d_year#75, d_qoy#76]

(138) ReusedExchange [Reuses operator id: 11]
Output [2]: [ca_address_sk#77, ca_county#78]

(139) InputAdapter
Input [2]: [ca_address_sk#77, ca_county#78]

(140) InputIteratorTransformer
Input [2]: [ca_address_sk#77, ca_county#78]

(141) BroadcastHashJoinExecTransformer
Left keys [1]: [ws_bill_addr_sk#71]
Right keys [1]: [ca_address_sk#77]
Join type: Inner
Join condition: None

(142) ProjectExecTransformer
Output [4]: [d_year#75, d_qoy#76, ca_county#78, UnscaledValue(ws_ext_sales_price#72) AS _pre_6#79]
Input [6]: [ws_bill_addr_sk#71, ws_ext_sales_price#72, d_year#75, d_qoy#76, ca_address_sk#77, ca_county#78]

(143) FlushableHashAggregateExecTransformer
Input [4]: [d_year#75, d_qoy#76, ca_county#78, _pre_6#79]
Keys [3]: [ca_county#78, d_qoy#76, d_year#75]
Functions [1]: [partial_sum(_pre_6#79)]
Aggregate Attributes [1]: [sum#80]
Results [4]: [ca_county#78, d_qoy#76, d_year#75, sum#81]

(144) ProjectExecTransformer
Output [5]: [hash(ca_county#78, d_qoy#76, d_year#75, 42) AS hash_partition_key#82, ca_county#78, d_qoy#76, d_year#75, sum#81]
Input [4]: [ca_county#78, d_qoy#76, d_year#75, sum#81]

(145) WholeStageCodegenTransformer (28)
Input [5]: [hash_partition_key#82, ca_county#78, d_qoy#76, d_year#75, sum#81]
Arguments: false

(146) VeloxResizeBatches
Input [5]: [hash_partition_key#82, ca_county#78, d_qoy#76, d_year#75, sum#81]
Arguments: 1024, 2147483647, 10485760

(147) ColumnarExchange
Input [5]: [hash_partition_key#82, ca_county#78, d_qoy#76, d_year#75, sum#81]
Arguments: hashpartitioning(ca_county#78, d_qoy#76, d_year#75, 1), ENSURE_REQUIREMENTS, [ca_county#78, d_qoy#76, d_year#75, sum#81], [plan_id=11], [shuffle_writer_type=hash]

(148) InputAdapter
Input [4]: [ca_county#78, d_qoy#76, d_year#75, sum#81]

(149) InputIteratorTransformer
Input [4]: [ca_county#78, d_qoy#76, d_year#75, sum#81]

(150) RegularHashAggregateExecTransformer
Input [4]: [ca_county#78, d_qoy#76, d_year#75, sum#81]
Keys [3]: [ca_county#78, d_qoy#76, d_year#75]
Functions [1]: [sum(UnscaledValue(ws_ext_sales_price#72))]
Aggregate Attributes [1]: [sum(UnscaledValue(ws_ext_sales_price#72))#56]
Results [4]: [ca_county#78, d_qoy#76, d_year#75, sum(UnscaledValue(ws_ext_sales_price#72))#56]

(151) ProjectExecTransformer
Output [2]: [ca_county#78, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#72))#56,17,2) AS web_sales#83]
Input [4]: [ca_county#78, d_qoy#76, d_year#75, sum(UnscaledValue(ws_ext_sales_price#72))#56]

(152) WholeStageCodegenTransformer (29)
Input [2]: [ca_county#78, web_sales#83]
Arguments: false

(153) ColumnarBroadcastExchange
Input [2]: [ca_county#78, web_sales#83]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=12]

(154) InputAdapter
Input [2]: [ca_county#78, web_sales#83]

(155) InputIteratorTransformer
Input [2]: [ca_county#78, web_sales#83]

(156) BroadcastHashJoinExecTransformer
Left keys [1]: [ca_county#51]
Right keys [1]: [ca_county#78]
Join type: Inner
Join condition: (CASE WHEN (web_sales#70 > 0.00) THEN (web_sales#83 / web_sales#70) END > CASE WHEN (store_sales#29 > 0.00) THEN (store_sales#43 / store_sales#29) END)

(157) ProjectExecTransformer
Output [6]: [ca_county#9, d_year#6, (web_sales#70 / web_sales#57) AS web_q1_q2_increase#84, (store_sales#29 / store_sales#15) AS store_q1_q2_increase#85, (web_sales#83 / web_sales#70) AS web_q2_q3_increase#86, (store_sales#43 / store_sales#29) AS store_q2_q3_increase#87]
Input [10]: [ca_county#9, d_year#6, store_sales#15, store_sales#29, store_sales#43, ca_county#51, web_sales#57, web_sales#70, ca_county#78, web_sales#83]

(158) WholeStageCodegenTransformer (30)
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]
Arguments: false

(159) VeloxResizeBatches
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]
Arguments: 1024, 2147483647, 10485760

(160) ColumnarExchange
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]
Arguments: rangepartitioning(ca_county#9 ASC NULLS FIRST, 1), ENSURE_REQUIREMENTS, [plan_id=13], [shuffle_writer_type=hash]

(161) InputAdapter
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]

(162) InputIteratorTransformer
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]

(163) SortExecTransformer
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]
Arguments: [ca_county#9 ASC NULLS FIRST], true, 0

(164) WholeStageCodegenTransformer (31)
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]
Arguments: false

(165) VeloxColumnarToRow
Input [6]: [ca_county#9, d_year#6, web_q1_q2_increase#84, store_q1_q2_increase#85, web_q2_q3_increase#86, store_q2_q3_increase#87]

===== Subqueries =====

Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#3 IN dynamicpruning#4
ColumnarBroadcastExchange (169)
+- ^ FilterExecTransformer (167)
   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (166)


(166) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#5, d_year#6, d_qoy#7]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,1), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(167) FilterExecTransformer
Input [3]: [d_date_sk#5, d_year#6, d_qoy#7]
Arguments: ((((isnotnull(d_qoy#7) AND isnotnull(d_year#6)) AND (d_qoy#7 = 1)) AND (d_year#6 = 2000)) AND isnotnull(d_date_sk#5))

(168) WholeStageCodegenTransformer (1)
Input [3]: [d_date_sk#5, d_year#6, d_qoy#7]
Arguments: false

(169) ColumnarBroadcastExchange
Input [3]: [d_date_sk#5, d_year#6, d_qoy#7]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=14]

Subquery:2 Hosting operator id = 25 Hosting Expression = ss_sold_date_sk#18 IN dynamicpruning#19
ColumnarBroadcastExchange (173)
+- ^ FilterExecTransformer (171)
   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (170)


(170) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#20, d_year#21, d_qoy#22]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,2), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(171) FilterExecTransformer
Input [3]: [d_date_sk#20, d_year#21, d_qoy#22]
Arguments: ((((isnotnull(d_qoy#22) AND isnotnull(d_year#21)) AND (d_qoy#22 = 2)) AND (d_year#21 = 2000)) AND isnotnull(d_date_sk#20))

(172) WholeStageCodegenTransformer (5)
Input [3]: [d_date_sk#20, d_year#21, d_qoy#22]
Arguments: false

(173) ColumnarBroadcastExchange
Input [3]: [d_date_sk#20, d_year#21, d_qoy#22]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=15]

Subquery:3 Hosting operator id = 51 Hosting Expression = ss_sold_date_sk#32 IN dynamicpruning#33
ColumnarBroadcastExchange (177)
+- ^ FilterExecTransformer (175)
   +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.date_dim (174)


(174) FileSourceScanExecTransformer parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#34, d_year#35, d_qoy#36]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_qoy), IsNotNull(d_year), EqualTo(d_qoy,3), EqualTo(d_year,2000), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_qoy:int>

(175) FilterExecTransformer
Input [3]: [d_date_sk#34, d_year#35, d_qoy#36]
Arguments: ((((isnotnull(d_qoy#36) AND isnotnull(d_year#35)) AND (d_qoy#36 = 3)) AND (d_year#35 = 2000)) AND isnotnull(d_date_sk#34))

(176) WholeStageCodegenTransformer (10)
Input [3]: [d_date_sk#34, d_year#35, d_qoy#36]
Arguments: false

(177) ColumnarBroadcastExchange
Input [3]: [d_date_sk#34, d_year#35, d_qoy#36]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, false] as bigint)),false), [plan_id=16]

Subquery:4 Hosting operator id = 78 Hosting Expression = ws_sold_date_sk#46 IN dynamicpruning#4

Subquery:5 Hosting operator id = 104 Hosting Expression = ws_sold_date_sk#60 IN dynamicpruning#19

Subquery:6 Hosting operator id = 131 Hosting Expression = ws_sold_date_sk#73 IN dynamicpruning#33


