== Physical Plan ==
VeloxColumnarToRow (277)
+- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (275)
   :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (241)
   :  :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (207)
   :  :  :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (173)
   :  :  :  :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (139)
   :  :  :  :  :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (105)
   :  :  :  :  :  :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight (71)
   :  :  :  :  :  :  :- ^ RegularHashAggregateExecTransformer (37)
   :  :  :  :  :  :  :  +- ^ InputIteratorTransformer (36)
   :  :  :  :  :  :  :     +- ColumnarExchange (34)
   :  :  :  :  :  :  :        +- VeloxResizeBatches (33)
   :  :  :  :  :  :  :           +- ^ FlushableHashAggregateExecTransformer (31)
   :  :  :  :  :  :  :              +- ^ ProjectExecTransformer (30)
   :  :  :  :  :  :  :                 +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (29)
   :  :  :  :  :  :  :                    :- ^ ProjectExecTransformer (21)
   :  :  :  :  :  :  :                    :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (20)
   :  :  :  :  :  :  :                    :     :- ^ ProjectExecTransformer (12)
   :  :  :  :  :  :  :                    :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (11)
   :  :  :  :  :  :  :                    :     :     :- ^ ProjectExecTransformer (3)
   :  :  :  :  :  :  :                    :     :     :  +- ^ FilterExecTransformer (2)
   :  :  :  :  :  :  :                    :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (1)
   :  :  :  :  :  :  :                    :     :     +- ^ InputIteratorTransformer (10)
   :  :  :  :  :  :  :                    :     :        +- ColumnarBroadcastExchange (8)
   :  :  :  :  :  :  :                    :     :           +- ^ ProjectExecTransformer (6)
   :  :  :  :  :  :  :                    :     :              +- ^ FilterExecTransformer (5)
   :  :  :  :  :  :  :                    :     :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.household_demographics (4)
   :  :  :  :  :  :  :                    :     +- ^ InputIteratorTransformer (19)
   :  :  :  :  :  :  :                    :        +- ColumnarBroadcastExchange (17)
   :  :  :  :  :  :  :                    :           +- ^ ProjectExecTransformer (15)
   :  :  :  :  :  :  :                    :              +- ^ FilterExecTransformer (14)
   :  :  :  :  :  :  :                    :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (13)
   :  :  :  :  :  :  :                    +- ^ InputIteratorTransformer (28)
   :  :  :  :  :  :  :                       +- ColumnarBroadcastExchange (26)
   :  :  :  :  :  :  :                          +- ^ ProjectExecTransformer (24)
   :  :  :  :  :  :  :                             +- ^ FilterExecTransformer (23)
   :  :  :  :  :  :  :                                +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store (22)
   :  :  :  :  :  :  +- ^ InputIteratorTransformer (70)
   :  :  :  :  :  :     +- ColumnarBroadcastExchange (68)
   :  :  :  :  :  :        +- ^ RegularHashAggregateExecTransformer (66)
   :  :  :  :  :  :           +- ^ InputIteratorTransformer (65)
   :  :  :  :  :  :              +- ColumnarExchange (63)
   :  :  :  :  :  :                 +- VeloxResizeBatches (62)
   :  :  :  :  :  :                    +- ^ FlushableHashAggregateExecTransformer (60)
   :  :  :  :  :  :                       +- ^ ProjectExecTransformer (59)
   :  :  :  :  :  :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (58)
   :  :  :  :  :  :                             :- ^ ProjectExecTransformer (54)
   :  :  :  :  :  :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (53)
   :  :  :  :  :  :                             :     :- ^ ProjectExecTransformer (45)
   :  :  :  :  :  :                             :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (44)
   :  :  :  :  :  :                             :     :     :- ^ ProjectExecTransformer (40)
   :  :  :  :  :  :                             :     :     :  +- ^ FilterExecTransformer (39)
   :  :  :  :  :  :                             :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (38)
   :  :  :  :  :  :                             :     :     +- ^ InputIteratorTransformer (43)
   :  :  :  :  :  :                             :     :        +- ReusedExchange (41)
   :  :  :  :  :  :                             :     +- ^ InputIteratorTransformer (52)
   :  :  :  :  :  :                             :        +- ColumnarBroadcastExchange (50)
   :  :  :  :  :  :                             :           +- ^ ProjectExecTransformer (48)
   :  :  :  :  :  :                             :              +- ^ FilterExecTransformer (47)
   :  :  :  :  :  :                             :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (46)
   :  :  :  :  :  :                             +- ^ InputIteratorTransformer (57)
   :  :  :  :  :  :                                +- ReusedExchange (55)
   :  :  :  :  :  +- ^ InputIteratorTransformer (104)
   :  :  :  :  :     +- ColumnarBroadcastExchange (102)
   :  :  :  :  :        +- ^ RegularHashAggregateExecTransformer (100)
   :  :  :  :  :           +- ^ InputIteratorTransformer (99)
   :  :  :  :  :              +- ColumnarExchange (97)
   :  :  :  :  :                 +- VeloxResizeBatches (96)
   :  :  :  :  :                    +- ^ FlushableHashAggregateExecTransformer (94)
   :  :  :  :  :                       +- ^ ProjectExecTransformer (93)
   :  :  :  :  :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (92)
   :  :  :  :  :                             :- ^ ProjectExecTransformer (88)
   :  :  :  :  :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (87)
   :  :  :  :  :                             :     :- ^ ProjectExecTransformer (79)
   :  :  :  :  :                             :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (78)
   :  :  :  :  :                             :     :     :- ^ ProjectExecTransformer (74)
   :  :  :  :  :                             :     :     :  +- ^ FilterExecTransformer (73)
   :  :  :  :  :                             :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (72)
   :  :  :  :  :                             :     :     +- ^ InputIteratorTransformer (77)
   :  :  :  :  :                             :     :        +- ReusedExchange (75)
   :  :  :  :  :                             :     +- ^ InputIteratorTransformer (86)
   :  :  :  :  :                             :        +- ColumnarBroadcastExchange (84)
   :  :  :  :  :                             :           +- ^ ProjectExecTransformer (82)
   :  :  :  :  :                             :              +- ^ FilterExecTransformer (81)
   :  :  :  :  :                             :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (80)
   :  :  :  :  :                             +- ^ InputIteratorTransformer (91)
   :  :  :  :  :                                +- ReusedExchange (89)
   :  :  :  :  +- ^ InputIteratorTransformer (138)
   :  :  :  :     +- ColumnarBroadcastExchange (136)
   :  :  :  :        +- ^ RegularHashAggregateExecTransformer (134)
   :  :  :  :           +- ^ InputIteratorTransformer (133)
   :  :  :  :              +- ColumnarExchange (131)
   :  :  :  :                 +- VeloxResizeBatches (130)
   :  :  :  :                    +- ^ FlushableHashAggregateExecTransformer (128)
   :  :  :  :                       +- ^ ProjectExecTransformer (127)
   :  :  :  :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (126)
   :  :  :  :                             :- ^ ProjectExecTransformer (122)
   :  :  :  :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (121)
   :  :  :  :                             :     :- ^ ProjectExecTransformer (113)
   :  :  :  :                             :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (112)
   :  :  :  :                             :     :     :- ^ ProjectExecTransformer (108)
   :  :  :  :                             :     :     :  +- ^ FilterExecTransformer (107)
   :  :  :  :                             :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (106)
   :  :  :  :                             :     :     +- ^ InputIteratorTransformer (111)
   :  :  :  :                             :     :        +- ReusedExchange (109)
   :  :  :  :                             :     +- ^ InputIteratorTransformer (120)
   :  :  :  :                             :        +- ColumnarBroadcastExchange (118)
   :  :  :  :                             :           +- ^ ProjectExecTransformer (116)
   :  :  :  :                             :              +- ^ FilterExecTransformer (115)
   :  :  :  :                             :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (114)
   :  :  :  :                             +- ^ InputIteratorTransformer (125)
   :  :  :  :                                +- ReusedExchange (123)
   :  :  :  +- ^ InputIteratorTransformer (172)
   :  :  :     +- ColumnarBroadcastExchange (170)
   :  :  :        +- ^ RegularHashAggregateExecTransformer (168)
   :  :  :           +- ^ InputIteratorTransformer (167)
   :  :  :              +- ColumnarExchange (165)
   :  :  :                 +- VeloxResizeBatches (164)
   :  :  :                    +- ^ FlushableHashAggregateExecTransformer (162)
   :  :  :                       +- ^ ProjectExecTransformer (161)
   :  :  :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (160)
   :  :  :                             :- ^ ProjectExecTransformer (156)
   :  :  :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (155)
   :  :  :                             :     :- ^ ProjectExecTransformer (147)
   :  :  :                             :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (146)
   :  :  :                             :     :     :- ^ ProjectExecTransformer (142)
   :  :  :                             :     :     :  +- ^ FilterExecTransformer (141)
   :  :  :                             :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (140)
   :  :  :                             :     :     +- ^ InputIteratorTransformer (145)
   :  :  :                             :     :        +- ReusedExchange (143)
   :  :  :                             :     +- ^ InputIteratorTransformer (154)
   :  :  :                             :        +- ColumnarBroadcastExchange (152)
   :  :  :                             :           +- ^ ProjectExecTransformer (150)
   :  :  :                             :              +- ^ FilterExecTransformer (149)
   :  :  :                             :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (148)
   :  :  :                             +- ^ InputIteratorTransformer (159)
   :  :  :                                +- ReusedExchange (157)
   :  :  +- ^ InputIteratorTransformer (206)
   :  :     +- ColumnarBroadcastExchange (204)
   :  :        +- ^ RegularHashAggregateExecTransformer (202)
   :  :           +- ^ InputIteratorTransformer (201)
   :  :              +- ColumnarExchange (199)
   :  :                 +- VeloxResizeBatches (198)
   :  :                    +- ^ FlushableHashAggregateExecTransformer (196)
   :  :                       +- ^ ProjectExecTransformer (195)
   :  :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (194)
   :  :                             :- ^ ProjectExecTransformer (190)
   :  :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (189)
   :  :                             :     :- ^ ProjectExecTransformer (181)
   :  :                             :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (180)
   :  :                             :     :     :- ^ ProjectExecTransformer (176)
   :  :                             :     :     :  +- ^ FilterExecTransformer (175)
   :  :                             :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (174)
   :  :                             :     :     +- ^ InputIteratorTransformer (179)
   :  :                             :     :        +- ReusedExchange (177)
   :  :                             :     +- ^ InputIteratorTransformer (188)
   :  :                             :        +- ColumnarBroadcastExchange (186)
   :  :                             :           +- ^ ProjectExecTransformer (184)
   :  :                             :              +- ^ FilterExecTransformer (183)
   :  :                             :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (182)
   :  :                             +- ^ InputIteratorTransformer (193)
   :  :                                +- ReusedExchange (191)
   :  +- ^ InputIteratorTransformer (240)
   :     +- ColumnarBroadcastExchange (238)
   :        +- ^ RegularHashAggregateExecTransformer (236)
   :           +- ^ InputIteratorTransformer (235)
   :              +- ColumnarExchange (233)
   :                 +- VeloxResizeBatches (232)
   :                    +- ^ FlushableHashAggregateExecTransformer (230)
   :                       +- ^ ProjectExecTransformer (229)
   :                          +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (228)
   :                             :- ^ ProjectExecTransformer (224)
   :                             :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (223)
   :                             :     :- ^ ProjectExecTransformer (215)
   :                             :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (214)
   :                             :     :     :- ^ ProjectExecTransformer (210)
   :                             :     :     :  +- ^ FilterExecTransformer (209)
   :                             :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (208)
   :                             :     :     +- ^ InputIteratorTransformer (213)
   :                             :     :        +- ReusedExchange (211)
   :                             :     +- ^ InputIteratorTransformer (222)
   :                             :        +- ColumnarBroadcastExchange (220)
   :                             :           +- ^ ProjectExecTransformer (218)
   :                             :              +- ^ FilterExecTransformer (217)
   :                             :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (216)
   :                             +- ^ InputIteratorTransformer (227)
   :                                +- ReusedExchange (225)
   +- ^ InputIteratorTransformer (274)
      +- ColumnarBroadcastExchange (272)
         +- ^ RegularHashAggregateExecTransformer (270)
            +- ^ InputIteratorTransformer (269)
               +- ColumnarExchange (267)
                  +- VeloxResizeBatches (266)
                     +- ^ FlushableHashAggregateExecTransformer (264)
                        +- ^ ProjectExecTransformer (263)
                           +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (262)
                              :- ^ ProjectExecTransformer (258)
                              :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (257)
                              :     :- ^ ProjectExecTransformer (249)
                              :     :  +- ^ BroadcastHashJoinExecTransformer Inner BuildRight (248)
                              :     :     :- ^ ProjectExecTransformer (244)
                              :     :     :  +- ^ FilterExecTransformer (243)
                              :     :     :     +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.store_sales (242)
                              :     :     +- ^ InputIteratorTransformer (247)
                              :     :        +- ReusedExchange (245)
                              :     +- ^ InputIteratorTransformer (256)
                              :        +- ColumnarBroadcastExchange (254)
                              :           +- ^ ProjectExecTransformer (252)
                              :              +- ^ FilterExecTransformer (251)
                              :                 +- ^ FileSourceScanExecTransformer parquet spark_catalog.default.time_dim (250)
                              +- ^ InputIteratorTransformer (261)
                                 +- ReusedExchange (259)


(1) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3, ss_sold_date_sk#4]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(2) FilterExecTransformer
Input [4]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3, ss_sold_date_sk#4]
Arguments: ((isnotnull(ss_hdemo_sk#2) AND isnotnull(ss_sold_time_sk#1)) AND isnotnull(ss_store_sk#3))

(3) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3]
Input [4]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3, ss_sold_date_sk#4]

(4) FileSourceScanExecTransformer parquet spark_catalog.default.household_demographics
Output [3]: [hd_demo_sk#5, hd_dep_count#6, hd_vehicle_count#7]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/household_demographics]
PushedFilters: [Or(Or(And(EqualTo(hd_dep_count,4),LessThanOrEqual(hd_vehicle_count,6)),And(EqualTo(hd_dep_count,2),LessThanOrEqual(hd_vehicle_count,4))),And(EqualTo(hd_dep_count,0),LessThanOrEqual(hd_vehicle_count,2))), IsNotNull(hd_demo_sk)]
ReadSchema: struct<hd_demo_sk:int,hd_dep_count:int,hd_vehicle_count:int>

(5) FilterExecTransformer
Input [3]: [hd_demo_sk#5, hd_dep_count#6, hd_vehicle_count#7]
Arguments: (((((hd_dep_count#6 = 4) AND (hd_vehicle_count#7 <= 6)) OR ((hd_dep_count#6 = 2) AND (hd_vehicle_count#7 <= 4))) OR ((hd_dep_count#6 = 0) AND (hd_vehicle_count#7 <= 2))) AND isnotnull(hd_demo_sk#5))

(6) ProjectExecTransformer
Output [1]: [hd_demo_sk#5]
Input [3]: [hd_demo_sk#5, hd_dep_count#6, hd_vehicle_count#7]

(7) WholeStageCodegenTransformer (1)
Input [1]: [hd_demo_sk#5]
Arguments: false

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

(9) InputAdapter
Input [1]: [hd_demo_sk#5]

(10) InputIteratorTransformer
Input [1]: [hd_demo_sk#5]

(11) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#2]
Right keys [1]: [hd_demo_sk#5]
Join type: Inner
Join condition: None

(12) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#1, ss_store_sk#3]
Input [4]: [ss_sold_time_sk#1, ss_hdemo_sk#2, ss_store_sk#3, hd_demo_sk#5]

(13) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#8, t_hour#9, t_minute#10]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,8), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(14) FilterExecTransformer
Input [3]: [t_time_sk#8, t_hour#9, t_minute#10]
Arguments: ((((isnotnull(t_hour#9) AND isnotnull(t_minute#10)) AND (t_hour#9 = 8)) AND (t_minute#10 >= 30)) AND isnotnull(t_time_sk#8))

(15) ProjectExecTransformer
Output [1]: [t_time_sk#8]
Input [3]: [t_time_sk#8, t_hour#9, t_minute#10]

(16) WholeStageCodegenTransformer (2)
Input [1]: [t_time_sk#8]
Arguments: false

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

(18) InputAdapter
Input [1]: [t_time_sk#8]

(19) InputIteratorTransformer
Input [1]: [t_time_sk#8]

(20) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#1]
Right keys [1]: [t_time_sk#8]
Join type: Inner
Join condition: None

(21) ProjectExecTransformer
Output [1]: [ss_store_sk#3]
Input [3]: [ss_sold_time_sk#1, ss_store_sk#3, t_time_sk#8]

(22) FileSourceScanExecTransformer parquet spark_catalog.default.store
Output [2]: [s_store_sk#11, s_store_name#12]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_store_name), EqualTo(s_store_name,ese), IsNotNull(s_store_sk)]
ReadSchema: struct<s_store_sk:int,s_store_name:string>

(23) FilterExecTransformer
Input [2]: [s_store_sk#11, s_store_name#12]
Arguments: ((isnotnull(s_store_name#12) AND (s_store_name#12 = ese)) AND isnotnull(s_store_sk#11))

(24) ProjectExecTransformer
Output [1]: [s_store_sk#11]
Input [2]: [s_store_sk#11, s_store_name#12]

(25) WholeStageCodegenTransformer (3)
Input [1]: [s_store_sk#11]
Arguments: false

(26) ColumnarBroadcastExchange
Input [1]: [s_store_sk#11]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=3]

(27) InputAdapter
Input [1]: [s_store_sk#11]

(28) InputIteratorTransformer
Input [1]: [s_store_sk#11]

(29) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#3]
Right keys [1]: [s_store_sk#11]
Join type: Inner
Join condition: None

(30) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#3, s_store_sk#11]

(31) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#13]
Results [1]: [count#14]

(32) WholeStageCodegenTransformer (4)
Input [1]: [count#14]
Arguments: false

(33) VeloxResizeBatches
Input [1]: [count#14]
Arguments: 1024, 2147483647, 10485760

(34) ColumnarExchange
Input [1]: [count#14]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=4], [shuffle_writer_type=hash]

(35) InputAdapter
Input [1]: [count#14]

(36) InputIteratorTransformer
Input [1]: [count#14]

(37) RegularHashAggregateExecTransformer
Input [1]: [count#14]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#15]
Results [1]: [count(1)#15 AS h8_30_to_9#16]

(38) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#17, ss_hdemo_sk#18, ss_store_sk#19, ss_sold_date_sk#20]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(39) FilterExecTransformer
Input [4]: [ss_sold_time_sk#17, ss_hdemo_sk#18, ss_store_sk#19, ss_sold_date_sk#20]
Arguments: ((isnotnull(ss_hdemo_sk#18) AND isnotnull(ss_sold_time_sk#17)) AND isnotnull(ss_store_sk#19))

(40) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#17, ss_hdemo_sk#18, ss_store_sk#19]
Input [4]: [ss_sold_time_sk#17, ss_hdemo_sk#18, ss_store_sk#19, ss_sold_date_sk#20]

(41) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#21]

(42) InputAdapter
Input [1]: [hd_demo_sk#21]

(43) InputIteratorTransformer
Input [1]: [hd_demo_sk#21]

(44) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#18]
Right keys [1]: [hd_demo_sk#21]
Join type: Inner
Join condition: None

(45) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#17, ss_store_sk#19]
Input [4]: [ss_sold_time_sk#17, ss_hdemo_sk#18, ss_store_sk#19, hd_demo_sk#21]

(46) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#22, t_hour#23, t_minute#24]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,9), LessThan(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(47) FilterExecTransformer
Input [3]: [t_time_sk#22, t_hour#23, t_minute#24]
Arguments: ((((isnotnull(t_hour#23) AND isnotnull(t_minute#24)) AND (t_hour#23 = 9)) AND (t_minute#24 < 30)) AND isnotnull(t_time_sk#22))

(48) ProjectExecTransformer
Output [1]: [t_time_sk#22]
Input [3]: [t_time_sk#22, t_hour#23, t_minute#24]

(49) WholeStageCodegenTransformer (6)
Input [1]: [t_time_sk#22]
Arguments: false

(50) ColumnarBroadcastExchange
Input [1]: [t_time_sk#22]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=5]

(51) InputAdapter
Input [1]: [t_time_sk#22]

(52) InputIteratorTransformer
Input [1]: [t_time_sk#22]

(53) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#17]
Right keys [1]: [t_time_sk#22]
Join type: Inner
Join condition: None

(54) ProjectExecTransformer
Output [1]: [ss_store_sk#19]
Input [3]: [ss_sold_time_sk#17, ss_store_sk#19, t_time_sk#22]

(55) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#25]

(56) InputAdapter
Input [1]: [s_store_sk#25]

(57) InputIteratorTransformer
Input [1]: [s_store_sk#25]

(58) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#19]
Right keys [1]: [s_store_sk#25]
Join type: Inner
Join condition: None

(59) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#19, s_store_sk#25]

(60) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#26]
Results [1]: [count#27]

(61) WholeStageCodegenTransformer (8)
Input [1]: [count#27]
Arguments: false

(62) VeloxResizeBatches
Input [1]: [count#27]
Arguments: 1024, 2147483647, 10485760

(63) ColumnarExchange
Input [1]: [count#27]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=6], [shuffle_writer_type=hash]

(64) InputAdapter
Input [1]: [count#27]

(65) InputIteratorTransformer
Input [1]: [count#27]

(66) RegularHashAggregateExecTransformer
Input [1]: [count#27]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#28]
Results [1]: [count(1)#28 AS h9_to_9_30#29]

(67) WholeStageCodegenTransformer (9)
Input [1]: [h9_to_9_30#29]
Arguments: false

(68) ColumnarBroadcastExchange
Input [1]: [h9_to_9_30#29]
Arguments: IdentityBroadcastMode, [plan_id=7]

(69) InputAdapter
Input [1]: [h9_to_9_30#29]

(70) InputIteratorTransformer
Input [1]: [h9_to_9_30#29]

(71) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(72) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#30, ss_hdemo_sk#31, ss_store_sk#32, ss_sold_date_sk#33]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(73) FilterExecTransformer
Input [4]: [ss_sold_time_sk#30, ss_hdemo_sk#31, ss_store_sk#32, ss_sold_date_sk#33]
Arguments: ((isnotnull(ss_hdemo_sk#31) AND isnotnull(ss_sold_time_sk#30)) AND isnotnull(ss_store_sk#32))

(74) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#30, ss_hdemo_sk#31, ss_store_sk#32]
Input [4]: [ss_sold_time_sk#30, ss_hdemo_sk#31, ss_store_sk#32, ss_sold_date_sk#33]

(75) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#34]

(76) InputAdapter
Input [1]: [hd_demo_sk#34]

(77) InputIteratorTransformer
Input [1]: [hd_demo_sk#34]

(78) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#31]
Right keys [1]: [hd_demo_sk#34]
Join type: Inner
Join condition: None

(79) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#30, ss_store_sk#32]
Input [4]: [ss_sold_time_sk#30, ss_hdemo_sk#31, ss_store_sk#32, hd_demo_sk#34]

(80) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#35, t_hour#36, t_minute#37]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,9), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(81) FilterExecTransformer
Input [3]: [t_time_sk#35, t_hour#36, t_minute#37]
Arguments: ((((isnotnull(t_hour#36) AND isnotnull(t_minute#37)) AND (t_hour#36 = 9)) AND (t_minute#37 >= 30)) AND isnotnull(t_time_sk#35))

(82) ProjectExecTransformer
Output [1]: [t_time_sk#35]
Input [3]: [t_time_sk#35, t_hour#36, t_minute#37]

(83) WholeStageCodegenTransformer (11)
Input [1]: [t_time_sk#35]
Arguments: false

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

(85) InputAdapter
Input [1]: [t_time_sk#35]

(86) InputIteratorTransformer
Input [1]: [t_time_sk#35]

(87) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#30]
Right keys [1]: [t_time_sk#35]
Join type: Inner
Join condition: None

(88) ProjectExecTransformer
Output [1]: [ss_store_sk#32]
Input [3]: [ss_sold_time_sk#30, ss_store_sk#32, t_time_sk#35]

(89) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#38]

(90) InputAdapter
Input [1]: [s_store_sk#38]

(91) InputIteratorTransformer
Input [1]: [s_store_sk#38]

(92) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#32]
Right keys [1]: [s_store_sk#38]
Join type: Inner
Join condition: None

(93) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#32, s_store_sk#38]

(94) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#39]
Results [1]: [count#40]

(95) WholeStageCodegenTransformer (13)
Input [1]: [count#40]
Arguments: false

(96) VeloxResizeBatches
Input [1]: [count#40]
Arguments: 1024, 2147483647, 10485760

(97) ColumnarExchange
Input [1]: [count#40]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=9], [shuffle_writer_type=hash]

(98) InputAdapter
Input [1]: [count#40]

(99) InputIteratorTransformer
Input [1]: [count#40]

(100) RegularHashAggregateExecTransformer
Input [1]: [count#40]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#41]
Results [1]: [count(1)#41 AS h9_30_to_10#42]

(101) WholeStageCodegenTransformer (14)
Input [1]: [h9_30_to_10#42]
Arguments: false

(102) ColumnarBroadcastExchange
Input [1]: [h9_30_to_10#42]
Arguments: IdentityBroadcastMode, [plan_id=10]

(103) InputAdapter
Input [1]: [h9_30_to_10#42]

(104) InputIteratorTransformer
Input [1]: [h9_30_to_10#42]

(105) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(106) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#43, ss_hdemo_sk#44, ss_store_sk#45, ss_sold_date_sk#46]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(107) FilterExecTransformer
Input [4]: [ss_sold_time_sk#43, ss_hdemo_sk#44, ss_store_sk#45, ss_sold_date_sk#46]
Arguments: ((isnotnull(ss_hdemo_sk#44) AND isnotnull(ss_sold_time_sk#43)) AND isnotnull(ss_store_sk#45))

(108) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#43, ss_hdemo_sk#44, ss_store_sk#45]
Input [4]: [ss_sold_time_sk#43, ss_hdemo_sk#44, ss_store_sk#45, ss_sold_date_sk#46]

(109) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#47]

(110) InputAdapter
Input [1]: [hd_demo_sk#47]

(111) InputIteratorTransformer
Input [1]: [hd_demo_sk#47]

(112) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#44]
Right keys [1]: [hd_demo_sk#47]
Join type: Inner
Join condition: None

(113) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#43, ss_store_sk#45]
Input [4]: [ss_sold_time_sk#43, ss_hdemo_sk#44, ss_store_sk#45, hd_demo_sk#47]

(114) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#48, t_hour#49, t_minute#50]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,10), LessThan(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(115) FilterExecTransformer
Input [3]: [t_time_sk#48, t_hour#49, t_minute#50]
Arguments: ((((isnotnull(t_hour#49) AND isnotnull(t_minute#50)) AND (t_hour#49 = 10)) AND (t_minute#50 < 30)) AND isnotnull(t_time_sk#48))

(116) ProjectExecTransformer
Output [1]: [t_time_sk#48]
Input [3]: [t_time_sk#48, t_hour#49, t_minute#50]

(117) WholeStageCodegenTransformer (16)
Input [1]: [t_time_sk#48]
Arguments: false

(118) ColumnarBroadcastExchange
Input [1]: [t_time_sk#48]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=11]

(119) InputAdapter
Input [1]: [t_time_sk#48]

(120) InputIteratorTransformer
Input [1]: [t_time_sk#48]

(121) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#43]
Right keys [1]: [t_time_sk#48]
Join type: Inner
Join condition: None

(122) ProjectExecTransformer
Output [1]: [ss_store_sk#45]
Input [3]: [ss_sold_time_sk#43, ss_store_sk#45, t_time_sk#48]

(123) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#51]

(124) InputAdapter
Input [1]: [s_store_sk#51]

(125) InputIteratorTransformer
Input [1]: [s_store_sk#51]

(126) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#45]
Right keys [1]: [s_store_sk#51]
Join type: Inner
Join condition: None

(127) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#45, s_store_sk#51]

(128) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#52]
Results [1]: [count#53]

(129) WholeStageCodegenTransformer (18)
Input [1]: [count#53]
Arguments: false

(130) VeloxResizeBatches
Input [1]: [count#53]
Arguments: 1024, 2147483647, 10485760

(131) ColumnarExchange
Input [1]: [count#53]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=12], [shuffle_writer_type=hash]

(132) InputAdapter
Input [1]: [count#53]

(133) InputIteratorTransformer
Input [1]: [count#53]

(134) RegularHashAggregateExecTransformer
Input [1]: [count#53]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#54]
Results [1]: [count(1)#54 AS h10_to_10_30#55]

(135) WholeStageCodegenTransformer (19)
Input [1]: [h10_to_10_30#55]
Arguments: false

(136) ColumnarBroadcastExchange
Input [1]: [h10_to_10_30#55]
Arguments: IdentityBroadcastMode, [plan_id=13]

(137) InputAdapter
Input [1]: [h10_to_10_30#55]

(138) InputIteratorTransformer
Input [1]: [h10_to_10_30#55]

(139) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(140) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#56, ss_hdemo_sk#57, ss_store_sk#58, ss_sold_date_sk#59]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(141) FilterExecTransformer
Input [4]: [ss_sold_time_sk#56, ss_hdemo_sk#57, ss_store_sk#58, ss_sold_date_sk#59]
Arguments: ((isnotnull(ss_hdemo_sk#57) AND isnotnull(ss_sold_time_sk#56)) AND isnotnull(ss_store_sk#58))

(142) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#56, ss_hdemo_sk#57, ss_store_sk#58]
Input [4]: [ss_sold_time_sk#56, ss_hdemo_sk#57, ss_store_sk#58, ss_sold_date_sk#59]

(143) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#60]

(144) InputAdapter
Input [1]: [hd_demo_sk#60]

(145) InputIteratorTransformer
Input [1]: [hd_demo_sk#60]

(146) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#57]
Right keys [1]: [hd_demo_sk#60]
Join type: Inner
Join condition: None

(147) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#56, ss_store_sk#58]
Input [4]: [ss_sold_time_sk#56, ss_hdemo_sk#57, ss_store_sk#58, hd_demo_sk#60]

(148) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#61, t_hour#62, t_minute#63]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,10), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(149) FilterExecTransformer
Input [3]: [t_time_sk#61, t_hour#62, t_minute#63]
Arguments: ((((isnotnull(t_hour#62) AND isnotnull(t_minute#63)) AND (t_hour#62 = 10)) AND (t_minute#63 >= 30)) AND isnotnull(t_time_sk#61))

(150) ProjectExecTransformer
Output [1]: [t_time_sk#61]
Input [3]: [t_time_sk#61, t_hour#62, t_minute#63]

(151) WholeStageCodegenTransformer (21)
Input [1]: [t_time_sk#61]
Arguments: false

(152) ColumnarBroadcastExchange
Input [1]: [t_time_sk#61]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=14]

(153) InputAdapter
Input [1]: [t_time_sk#61]

(154) InputIteratorTransformer
Input [1]: [t_time_sk#61]

(155) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#56]
Right keys [1]: [t_time_sk#61]
Join type: Inner
Join condition: None

(156) ProjectExecTransformer
Output [1]: [ss_store_sk#58]
Input [3]: [ss_sold_time_sk#56, ss_store_sk#58, t_time_sk#61]

(157) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#64]

(158) InputAdapter
Input [1]: [s_store_sk#64]

(159) InputIteratorTransformer
Input [1]: [s_store_sk#64]

(160) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#58]
Right keys [1]: [s_store_sk#64]
Join type: Inner
Join condition: None

(161) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#58, s_store_sk#64]

(162) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#65]
Results [1]: [count#66]

(163) WholeStageCodegenTransformer (23)
Input [1]: [count#66]
Arguments: false

(164) VeloxResizeBatches
Input [1]: [count#66]
Arguments: 1024, 2147483647, 10485760

(165) ColumnarExchange
Input [1]: [count#66]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=15], [shuffle_writer_type=hash]

(166) InputAdapter
Input [1]: [count#66]

(167) InputIteratorTransformer
Input [1]: [count#66]

(168) RegularHashAggregateExecTransformer
Input [1]: [count#66]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#67]
Results [1]: [count(1)#67 AS h10_30_to_11#68]

(169) WholeStageCodegenTransformer (24)
Input [1]: [h10_30_to_11#68]
Arguments: false

(170) ColumnarBroadcastExchange
Input [1]: [h10_30_to_11#68]
Arguments: IdentityBroadcastMode, [plan_id=16]

(171) InputAdapter
Input [1]: [h10_30_to_11#68]

(172) InputIteratorTransformer
Input [1]: [h10_30_to_11#68]

(173) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(174) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#69, ss_hdemo_sk#70, ss_store_sk#71, ss_sold_date_sk#72]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(175) FilterExecTransformer
Input [4]: [ss_sold_time_sk#69, ss_hdemo_sk#70, ss_store_sk#71, ss_sold_date_sk#72]
Arguments: ((isnotnull(ss_hdemo_sk#70) AND isnotnull(ss_sold_time_sk#69)) AND isnotnull(ss_store_sk#71))

(176) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#69, ss_hdemo_sk#70, ss_store_sk#71]
Input [4]: [ss_sold_time_sk#69, ss_hdemo_sk#70, ss_store_sk#71, ss_sold_date_sk#72]

(177) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#73]

(178) InputAdapter
Input [1]: [hd_demo_sk#73]

(179) InputIteratorTransformer
Input [1]: [hd_demo_sk#73]

(180) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#70]
Right keys [1]: [hd_demo_sk#73]
Join type: Inner
Join condition: None

(181) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#69, ss_store_sk#71]
Input [4]: [ss_sold_time_sk#69, ss_hdemo_sk#70, ss_store_sk#71, hd_demo_sk#73]

(182) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#74, t_hour#75, t_minute#76]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,11), LessThan(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(183) FilterExecTransformer
Input [3]: [t_time_sk#74, t_hour#75, t_minute#76]
Arguments: ((((isnotnull(t_hour#75) AND isnotnull(t_minute#76)) AND (t_hour#75 = 11)) AND (t_minute#76 < 30)) AND isnotnull(t_time_sk#74))

(184) ProjectExecTransformer
Output [1]: [t_time_sk#74]
Input [3]: [t_time_sk#74, t_hour#75, t_minute#76]

(185) WholeStageCodegenTransformer (26)
Input [1]: [t_time_sk#74]
Arguments: false

(186) ColumnarBroadcastExchange
Input [1]: [t_time_sk#74]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=17]

(187) InputAdapter
Input [1]: [t_time_sk#74]

(188) InputIteratorTransformer
Input [1]: [t_time_sk#74]

(189) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#69]
Right keys [1]: [t_time_sk#74]
Join type: Inner
Join condition: None

(190) ProjectExecTransformer
Output [1]: [ss_store_sk#71]
Input [3]: [ss_sold_time_sk#69, ss_store_sk#71, t_time_sk#74]

(191) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#77]

(192) InputAdapter
Input [1]: [s_store_sk#77]

(193) InputIteratorTransformer
Input [1]: [s_store_sk#77]

(194) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#71]
Right keys [1]: [s_store_sk#77]
Join type: Inner
Join condition: None

(195) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#71, s_store_sk#77]

(196) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#78]
Results [1]: [count#79]

(197) WholeStageCodegenTransformer (28)
Input [1]: [count#79]
Arguments: false

(198) VeloxResizeBatches
Input [1]: [count#79]
Arguments: 1024, 2147483647, 10485760

(199) ColumnarExchange
Input [1]: [count#79]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=18], [shuffle_writer_type=hash]

(200) InputAdapter
Input [1]: [count#79]

(201) InputIteratorTransformer
Input [1]: [count#79]

(202) RegularHashAggregateExecTransformer
Input [1]: [count#79]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#80]
Results [1]: [count(1)#80 AS h11_to_11_30#81]

(203) WholeStageCodegenTransformer (29)
Input [1]: [h11_to_11_30#81]
Arguments: false

(204) ColumnarBroadcastExchange
Input [1]: [h11_to_11_30#81]
Arguments: IdentityBroadcastMode, [plan_id=19]

(205) InputAdapter
Input [1]: [h11_to_11_30#81]

(206) InputIteratorTransformer
Input [1]: [h11_to_11_30#81]

(207) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(208) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#82, ss_hdemo_sk#83, ss_store_sk#84, ss_sold_date_sk#85]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(209) FilterExecTransformer
Input [4]: [ss_sold_time_sk#82, ss_hdemo_sk#83, ss_store_sk#84, ss_sold_date_sk#85]
Arguments: ((isnotnull(ss_hdemo_sk#83) AND isnotnull(ss_sold_time_sk#82)) AND isnotnull(ss_store_sk#84))

(210) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#82, ss_hdemo_sk#83, ss_store_sk#84]
Input [4]: [ss_sold_time_sk#82, ss_hdemo_sk#83, ss_store_sk#84, ss_sold_date_sk#85]

(211) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#86]

(212) InputAdapter
Input [1]: [hd_demo_sk#86]

(213) InputIteratorTransformer
Input [1]: [hd_demo_sk#86]

(214) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#83]
Right keys [1]: [hd_demo_sk#86]
Join type: Inner
Join condition: None

(215) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#82, ss_store_sk#84]
Input [4]: [ss_sold_time_sk#82, ss_hdemo_sk#83, ss_store_sk#84, hd_demo_sk#86]

(216) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#87, t_hour#88, t_minute#89]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,11), GreaterThanOrEqual(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(217) FilterExecTransformer
Input [3]: [t_time_sk#87, t_hour#88, t_minute#89]
Arguments: ((((isnotnull(t_hour#88) AND isnotnull(t_minute#89)) AND (t_hour#88 = 11)) AND (t_minute#89 >= 30)) AND isnotnull(t_time_sk#87))

(218) ProjectExecTransformer
Output [1]: [t_time_sk#87]
Input [3]: [t_time_sk#87, t_hour#88, t_minute#89]

(219) WholeStageCodegenTransformer (31)
Input [1]: [t_time_sk#87]
Arguments: false

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

(221) InputAdapter
Input [1]: [t_time_sk#87]

(222) InputIteratorTransformer
Input [1]: [t_time_sk#87]

(223) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#82]
Right keys [1]: [t_time_sk#87]
Join type: Inner
Join condition: None

(224) ProjectExecTransformer
Output [1]: [ss_store_sk#84]
Input [3]: [ss_sold_time_sk#82, ss_store_sk#84, t_time_sk#87]

(225) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#90]

(226) InputAdapter
Input [1]: [s_store_sk#90]

(227) InputIteratorTransformer
Input [1]: [s_store_sk#90]

(228) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#84]
Right keys [1]: [s_store_sk#90]
Join type: Inner
Join condition: None

(229) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#84, s_store_sk#90]

(230) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#91]
Results [1]: [count#92]

(231) WholeStageCodegenTransformer (33)
Input [1]: [count#92]
Arguments: false

(232) VeloxResizeBatches
Input [1]: [count#92]
Arguments: 1024, 2147483647, 10485760

(233) ColumnarExchange
Input [1]: [count#92]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=21], [shuffle_writer_type=hash]

(234) InputAdapter
Input [1]: [count#92]

(235) InputIteratorTransformer
Input [1]: [count#92]

(236) RegularHashAggregateExecTransformer
Input [1]: [count#92]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#93]
Results [1]: [count(1)#93 AS h11_30_to_12#94]

(237) WholeStageCodegenTransformer (34)
Input [1]: [h11_30_to_12#94]
Arguments: false

(238) ColumnarBroadcastExchange
Input [1]: [h11_30_to_12#94]
Arguments: IdentityBroadcastMode, [plan_id=22]

(239) InputAdapter
Input [1]: [h11_30_to_12#94]

(240) InputIteratorTransformer
Input [1]: [h11_30_to_12#94]

(241) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(242) FileSourceScanExecTransformer parquet spark_catalog.default.store_sales
Output [4]: [ss_sold_time_sk#95, ss_hdemo_sk#96, ss_store_sk#97, ss_sold_date_sk#98]
Batched: true
Location: CatalogFileIndex [{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_hdemo_sk), IsNotNull(ss_sold_time_sk), IsNotNull(ss_store_sk)]
ReadSchema: struct<ss_sold_time_sk:int,ss_hdemo_sk:int,ss_store_sk:int>

(243) FilterExecTransformer
Input [4]: [ss_sold_time_sk#95, ss_hdemo_sk#96, ss_store_sk#97, ss_sold_date_sk#98]
Arguments: ((isnotnull(ss_hdemo_sk#96) AND isnotnull(ss_sold_time_sk#95)) AND isnotnull(ss_store_sk#97))

(244) ProjectExecTransformer
Output [3]: [ss_sold_time_sk#95, ss_hdemo_sk#96, ss_store_sk#97]
Input [4]: [ss_sold_time_sk#95, ss_hdemo_sk#96, ss_store_sk#97, ss_sold_date_sk#98]

(245) ReusedExchange [Reuses operator id: 8]
Output [1]: [hd_demo_sk#99]

(246) InputAdapter
Input [1]: [hd_demo_sk#99]

(247) InputIteratorTransformer
Input [1]: [hd_demo_sk#99]

(248) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_hdemo_sk#96]
Right keys [1]: [hd_demo_sk#99]
Join type: Inner
Join condition: None

(249) ProjectExecTransformer
Output [2]: [ss_sold_time_sk#95, ss_store_sk#97]
Input [4]: [ss_sold_time_sk#95, ss_hdemo_sk#96, ss_store_sk#97, hd_demo_sk#99]

(250) FileSourceScanExecTransformer parquet spark_catalog.default.time_dim
Output [3]: [t_time_sk#100, t_hour#101, t_minute#102]
Batched: true
Location: InMemoryFileIndex [{warehouse_dir}/time_dim]
PushedFilters: [IsNotNull(t_hour), IsNotNull(t_minute), EqualTo(t_hour,12), LessThan(t_minute,30), IsNotNull(t_time_sk)]
ReadSchema: struct<t_time_sk:int,t_hour:int,t_minute:int>

(251) FilterExecTransformer
Input [3]: [t_time_sk#100, t_hour#101, t_minute#102]
Arguments: ((((isnotnull(t_hour#101) AND isnotnull(t_minute#102)) AND (t_hour#101 = 12)) AND (t_minute#102 < 30)) AND isnotnull(t_time_sk#100))

(252) ProjectExecTransformer
Output [1]: [t_time_sk#100]
Input [3]: [t_time_sk#100, t_hour#101, t_minute#102]

(253) WholeStageCodegenTransformer (36)
Input [1]: [t_time_sk#100]
Arguments: false

(254) ColumnarBroadcastExchange
Input [1]: [t_time_sk#100]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=23]

(255) InputAdapter
Input [1]: [t_time_sk#100]

(256) InputIteratorTransformer
Input [1]: [t_time_sk#100]

(257) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_sold_time_sk#95]
Right keys [1]: [t_time_sk#100]
Join type: Inner
Join condition: None

(258) ProjectExecTransformer
Output [1]: [ss_store_sk#97]
Input [3]: [ss_sold_time_sk#95, ss_store_sk#97, t_time_sk#100]

(259) ReusedExchange [Reuses operator id: 26]
Output [1]: [s_store_sk#103]

(260) InputAdapter
Input [1]: [s_store_sk#103]

(261) InputIteratorTransformer
Input [1]: [s_store_sk#103]

(262) BroadcastHashJoinExecTransformer
Left keys [1]: [ss_store_sk#97]
Right keys [1]: [s_store_sk#103]
Join type: Inner
Join condition: None

(263) ProjectExecTransformer
Output: []
Input [2]: [ss_store_sk#97, s_store_sk#103]

(264) FlushableHashAggregateExecTransformer
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#104]
Results [1]: [count#105]

(265) WholeStageCodegenTransformer (38)
Input [1]: [count#105]
Arguments: false

(266) VeloxResizeBatches
Input [1]: [count#105]
Arguments: 1024, 2147483647, 10485760

(267) ColumnarExchange
Input [1]: [count#105]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=24], [shuffle_writer_type=hash]

(268) InputAdapter
Input [1]: [count#105]

(269) InputIteratorTransformer
Input [1]: [count#105]

(270) RegularHashAggregateExecTransformer
Input [1]: [count#105]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#106]
Results [1]: [count(1)#106 AS h12_to_12_30#107]

(271) WholeStageCodegenTransformer (39)
Input [1]: [h12_to_12_30#107]
Arguments: false

(272) ColumnarBroadcastExchange
Input [1]: [h12_to_12_30#107]
Arguments: IdentityBroadcastMode, [plan_id=25]

(273) InputAdapter
Input [1]: [h12_to_12_30#107]

(274) InputIteratorTransformer
Input [1]: [h12_to_12_30#107]

(275) VeloxBroadcastNestedLoopJoinExecTransformer
Join type: Inner
Join condition: None

(276) WholeStageCodegenTransformer (40)
Input [8]: [h8_30_to_9#16, h9_to_9_30#29, h9_30_to_10#42, h10_to_10_30#55, h10_30_to_11#68, h11_to_11_30#81, h11_30_to_12#94, h12_to_12_30#107]
Arguments: false

(277) VeloxColumnarToRow
Input [8]: [h8_30_to_9#16, h9_to_9_30#29, h9_30_to_10#42, h10_to_10_30#55, h10_30_to_11#68, h11_to_11_30#81, h11_30_to_12#94, h12_to_12_30#107]

