WholeStageCodegen (40)
  BroadcastNestedLoopJoin
    BroadcastNestedLoopJoin
      BroadcastNestedLoopJoin
        BroadcastNestedLoopJoin
          BroadcastNestedLoopJoin
            BroadcastNestedLoopJoin
              BroadcastNestedLoopJoin
                HashAggregate [count] [count(1),h8_30_to_9,count]
                  InputAdapter
                    Exchange #1
                      WholeStageCodegen (4)
                        HashAggregate [count,count]
                          Project
                            BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                              Project [ss_hdemo_sk]
                                BroadcastHashJoin [ss_store_sk,s_store_sk]
                                  Project [ss_hdemo_sk,ss_store_sk]
                                    BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                      Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                        Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                          ColumnarToRow
                                            InputAdapter
                                              Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                      InputAdapter
                                        BroadcastExchange #2
                                          WholeStageCodegen (1)
                                            Project [t_time_sk]
                                              Filter [t_hour,t_minute,t_time_sk]
                                                ColumnarToRow
                                                  InputAdapter
                                                    Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                                  InputAdapter
                                    BroadcastExchange #3
                                      WholeStageCodegen (2)
                                        Project [s_store_sk]
                                          Filter [s_store_name,s_store_sk]
                                            ColumnarToRow
                                              InputAdapter
                                                Scan parquet spark_catalog.default.store [s_store_sk,s_store_name]
                              InputAdapter
                                BroadcastExchange #4
                                  WholeStageCodegen (3)
                                    Project [hd_demo_sk]
                                      Filter [hd_dep_count,hd_vehicle_count,hd_demo_sk]
                                        ColumnarToRow
                                          InputAdapter
                                            Scan parquet spark_catalog.default.household_demographics [hd_demo_sk,hd_dep_count,hd_vehicle_count]
                InputAdapter
                  BroadcastExchange #5
                    WholeStageCodegen (9)
                      HashAggregate [count] [count(1),h9_to_9_30,count]
                        InputAdapter
                          Exchange #6
                            WholeStageCodegen (8)
                              HashAggregate [count,count]
                                Project
                                  BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                                    Project [ss_hdemo_sk]
                                      BroadcastHashJoin [ss_store_sk,s_store_sk]
                                        Project [ss_hdemo_sk,ss_store_sk]
                                          BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                            Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                              Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                                ColumnarToRow
                                                  InputAdapter
                                                    Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                            InputAdapter
                                              BroadcastExchange #7
                                                WholeStageCodegen (5)
                                                  Project [t_time_sk]
                                                    Filter [t_hour,t_minute,t_time_sk]
                                                      ColumnarToRow
                                                        InputAdapter
                                                          Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                                        InputAdapter
                                          ReusedExchange [s_store_sk] #3
                                    InputAdapter
                                      ReusedExchange [hd_demo_sk] #4
              InputAdapter
                BroadcastExchange #8
                  WholeStageCodegen (14)
                    HashAggregate [count] [count(1),h9_30_to_10,count]
                      InputAdapter
                        Exchange #9
                          WholeStageCodegen (13)
                            HashAggregate [count,count]
                              Project
                                BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                                  Project [ss_hdemo_sk]
                                    BroadcastHashJoin [ss_store_sk,s_store_sk]
                                      Project [ss_hdemo_sk,ss_store_sk]
                                        BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                          Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                            Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                              ColumnarToRow
                                                InputAdapter
                                                  Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                          InputAdapter
                                            BroadcastExchange #10
                                              WholeStageCodegen (10)
                                                Project [t_time_sk]
                                                  Filter [t_hour,t_minute,t_time_sk]
                                                    ColumnarToRow
                                                      InputAdapter
                                                        Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                                      InputAdapter
                                        ReusedExchange [s_store_sk] #3
                                  InputAdapter
                                    ReusedExchange [hd_demo_sk] #4
            InputAdapter
              BroadcastExchange #11
                WholeStageCodegen (19)
                  HashAggregate [count] [count(1),h10_to_10_30,count]
                    InputAdapter
                      Exchange #12
                        WholeStageCodegen (18)
                          HashAggregate [count,count]
                            Project
                              BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                                Project [ss_hdemo_sk]
                                  BroadcastHashJoin [ss_store_sk,s_store_sk]
                                    Project [ss_hdemo_sk,ss_store_sk]
                                      BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                        Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                          Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                            ColumnarToRow
                                              InputAdapter
                                                Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                        InputAdapter
                                          BroadcastExchange #13
                                            WholeStageCodegen (15)
                                              Project [t_time_sk]
                                                Filter [t_hour,t_minute,t_time_sk]
                                                  ColumnarToRow
                                                    InputAdapter
                                                      Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                                    InputAdapter
                                      ReusedExchange [s_store_sk] #3
                                InputAdapter
                                  ReusedExchange [hd_demo_sk] #4
          InputAdapter
            BroadcastExchange #14
              WholeStageCodegen (24)
                HashAggregate [count] [count(1),h10_30_to_11,count]
                  InputAdapter
                    Exchange #15
                      WholeStageCodegen (23)
                        HashAggregate [count,count]
                          Project
                            BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                              Project [ss_hdemo_sk]
                                BroadcastHashJoin [ss_store_sk,s_store_sk]
                                  Project [ss_hdemo_sk,ss_store_sk]
                                    BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                      Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                        Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                          ColumnarToRow
                                            InputAdapter
                                              Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                      InputAdapter
                                        BroadcastExchange #16
                                          WholeStageCodegen (20)
                                            Project [t_time_sk]
                                              Filter [t_hour,t_minute,t_time_sk]
                                                ColumnarToRow
                                                  InputAdapter
                                                    Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                                  InputAdapter
                                    ReusedExchange [s_store_sk] #3
                              InputAdapter
                                ReusedExchange [hd_demo_sk] #4
        InputAdapter
          BroadcastExchange #17
            WholeStageCodegen (29)
              HashAggregate [count] [count(1),h11_to_11_30,count]
                InputAdapter
                  Exchange #18
                    WholeStageCodegen (28)
                      HashAggregate [count,count]
                        Project
                          BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                            Project [ss_hdemo_sk]
                              BroadcastHashJoin [ss_store_sk,s_store_sk]
                                Project [ss_hdemo_sk,ss_store_sk]
                                  BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                    Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                      Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                        ColumnarToRow
                                          InputAdapter
                                            Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                    InputAdapter
                                      BroadcastExchange #19
                                        WholeStageCodegen (25)
                                          Project [t_time_sk]
                                            Filter [t_hour,t_minute,t_time_sk]
                                              ColumnarToRow
                                                InputAdapter
                                                  Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                                InputAdapter
                                  ReusedExchange [s_store_sk] #3
                            InputAdapter
                              ReusedExchange [hd_demo_sk] #4
      InputAdapter
        BroadcastExchange #20
          WholeStageCodegen (34)
            HashAggregate [count] [count(1),h11_30_to_12,count]
              InputAdapter
                Exchange #21
                  WholeStageCodegen (33)
                    HashAggregate [count,count]
                      Project
                        BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                          Project [ss_hdemo_sk]
                            BroadcastHashJoin [ss_store_sk,s_store_sk]
                              Project [ss_hdemo_sk,ss_store_sk]
                                BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                  Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                    Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                      ColumnarToRow
                                        InputAdapter
                                          Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                  InputAdapter
                                    BroadcastExchange #22
                                      WholeStageCodegen (30)
                                        Project [t_time_sk]
                                          Filter [t_hour,t_minute,t_time_sk]
                                            ColumnarToRow
                                              InputAdapter
                                                Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                              InputAdapter
                                ReusedExchange [s_store_sk] #3
                          InputAdapter
                            ReusedExchange [hd_demo_sk] #4
    InputAdapter
      BroadcastExchange #23
        WholeStageCodegen (39)
          HashAggregate [count] [count(1),h12_to_12_30,count]
            InputAdapter
              Exchange #24
                WholeStageCodegen (38)
                  HashAggregate [count,count]
                    Project
                      BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
                        Project [ss_hdemo_sk]
                          BroadcastHashJoin [ss_store_sk,s_store_sk]
                            Project [ss_hdemo_sk,ss_store_sk]
                              BroadcastHashJoin [ss_sold_time_sk,t_time_sk]
                                Project [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk]
                                  Filter [ss_hdemo_sk,ss_sold_time_sk,ss_store_sk]
                                    ColumnarToRow
                                      InputAdapter
                                        Scan parquet spark_catalog.default.store_sales [ss_sold_time_sk,ss_hdemo_sk,ss_store_sk,ss_sold_date_sk]
                                InputAdapter
                                  BroadcastExchange #25
                                    WholeStageCodegen (35)
                                      Project [t_time_sk]
                                        Filter [t_hour,t_minute,t_time_sk]
                                          ColumnarToRow
                                            InputAdapter
                                              Scan parquet spark_catalog.default.time_dim [t_time_sk,t_hour,t_minute]
                            InputAdapter
                              ReusedExchange [s_store_sk] #3
                        InputAdapter
                          ReusedExchange [hd_demo_sk] #4
