TakeOrderedAndProject [lochierarchy,i_category,rank_within_parent,total_sum,i_class]
  WholeStageCodegen (6)
    Project [total_sum,i_category,i_class,lochierarchy,rank_within_parent]
      InputAdapter
        Window [_w0,_w1,_w2]
          WholeStageCodegen (5)
            Sort [_w1,_w2,_w0]
              InputAdapter
                Exchange [_w1,_w2] #1
                  WholeStageCodegen (4)
                    HashAggregate [i_category,i_class,spark_grouping_id,sum] [sum(UnscaledValue(ws_net_paid)),total_sum,lochierarchy,_w0,_w1,_w2,sum]
                      InputAdapter
                        Exchange [i_category,i_class,spark_grouping_id] #2
                          WholeStageCodegen (3)
                            HashAggregate [i_category,i_class,spark_grouping_id,ws_net_paid] [sum,sum]
                              Expand [ws_net_paid,i_category,i_class]
                                Project [ws_net_paid,i_category,i_class]
                                  BroadcastHashJoin [ws_item_sk,i_item_sk]
                                    Project [ws_item_sk,ws_net_paid]
                                      BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
                                        Filter [ws_item_sk]
                                          ColumnarToRow
                                            InputAdapter
                                              Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_net_paid,ws_sold_date_sk]
                                                SubqueryBroadcast [d_date_sk] #1
                                                  BroadcastExchange #3
                                                    WholeStageCodegen (1)
                                                      Project [d_date_sk]
                                                        Filter [d_month_seq,d_date_sk]
                                                          ColumnarToRow
                                                            InputAdapter
                                                              Scan parquet spark_catalog.default.date_dim [d_date_sk,d_month_seq]
                                        InputAdapter
                                          ReusedExchange [d_date_sk] #3
                                    InputAdapter
                                      BroadcastExchange #4
                                        WholeStageCodegen (2)
                                          Filter [i_item_sk]
                                            ColumnarToRow
                                              InputAdapter
                                                Scan parquet spark_catalog.default.item [i_item_sk,i_class,i_category]
