Forum Discussion

JoseCamp's avatar
JoseCamp
Frequent Visitor
5 years ago
Solved

Repeat rank value through hierarchy levels

Hello community, 

 

I have a product table with different sizes and locations (Table on the left). I have created a ranking for this table based on Product name total sales (Table on the right)

I can't figure out how to replicate the ranking value from the right table, through all the rows that have the same product name, as shown in the Ranking # on the yellow table. I need to to this so I can filter a set of information by ranking (Example the top 2), and be able to display the product information by size and location.

 

Any idead how to achieve this?

 

Thanks in advance! 

 

  • JoseCamp  The file is attached below my signature:

    Product Rank =
    IF (
        ISINSCOPE ( Jose[Product name] ),
        VAR CurrentProduct =
            SELECTEDVALUE ( Jose[Product Name] )
        VAR TotalSellAtCurrentProduct =
            CALCULATE (
                [Total Sell],
                Jose[Product name] = CurrentProduct,
                ALLEXCEPT ( Jose, Jose[Date] ),
                ALLSELECTED ( Jose[Date] )
            )
        VAR TotalSellEachProduct =
            CALCULATETABLE (
                ADDCOLUMNS ( VALUES ( Jose[Product Name] ), "@Total Sells", [Total Sell] ),
                ALLEXCEPT ( Jose, Jose[Date] ),
                ALLSELECTED ( Jose[Date] )
            )
        VAR RankCurrentSell =
            FILTER ( TotalSellEachProduct, [@Total Sells] >= TotalSellAtCurrentProduct )
        VAR Result =
            COUNTROWS ( RankCurrentSell )
        RETURN
            Result
    )
    

3 Replies

  • AntrikshSharma's avatar
    AntrikshSharma
    Icon for Community Champion rankCommunity Champion

    JoseCamp  Try this:

     

    Product Rank = 
    VAR CurrentProduct = Jose[Product Name]
    VAR TotalSellAtCurrentProduct =
        CALCULATE ( SUM ( Jose[Sells] ), ALLEXCEPT ( Jose, Jose[Product Name] ) )
    VAR TotalSellEachProduct =
        ADDCOLUMNS (
            VALUES ( Jose[Product Name] ),
            "@Total Sells", CALCULATE ( SUM ( Jose[Sells] ), ALLEXCEPT ( Jose, Jose[Product Name] ) )
        )
    VAR RankCurrentSell =
        FILTER ( TotalSellEachProduct, [@Total Sells] >= TotalSellAtCurrentProduct )
    VAR Result =
        COUNTROWS ( RankCurrentSell )
    RETURN
        Result
    

     

  • JoseCamp's avatar
    JoseCamp
    Frequent Visitor

    AntrikshSharma thanks for your answer! I should have been a bit more specific about my request! (My bad) The product table has selling dates and I need the ranking to change based on the sales of a specific date range, or if a selection of a specific location (s), or a group (s) of products.

    Product nameSizeLocationSellsDate
    Prod1S1Loc1 $ 10.02021-03-10
    Prod1S2Loc1 $ 20.02021-03-10
    Prod1S1Loc3 $ 30.02021-03-12
    Prod1S1Loc4 $ 20.02021-03-09
    Prod2S3Loc1 $   5.02021-03-10
    Prod2S4Loc4 $   8.02021-03-10
    Prod3S5Loc2 $   4.02021-03-10
    Prod3S5Loc3 $   3.02021-03-09
    Prod3S5Loc4 $   9.02021-03-09

     

    Thanks for your help!

    • AntrikshSharma's avatar
      AntrikshSharma
      Icon for Community Champion rankCommunity Champion

      JoseCamp  The file is attached below my signature:

      Product Rank =
      IF (
          ISINSCOPE ( Jose[Product name] ),
          VAR CurrentProduct =
              SELECTEDVALUE ( Jose[Product Name] )
          VAR TotalSellAtCurrentProduct =
              CALCULATE (
                  [Total Sell],
                  Jose[Product name] = CurrentProduct,
                  ALLEXCEPT ( Jose, Jose[Date] ),
                  ALLSELECTED ( Jose[Date] )
              )
          VAR TotalSellEachProduct =
              CALCULATETABLE (
                  ADDCOLUMNS ( VALUES ( Jose[Product Name] ), "@Total Sells", [Total Sell] ),
                  ALLEXCEPT ( Jose, Jose[Date] ),
                  ALLSELECTED ( Jose[Date] )
              )
          VAR RankCurrentSell =
              FILTER ( TotalSellEachProduct, [@Total Sells] >= TotalSellAtCurrentProduct )
          VAR Result =
              COUNTROWS ( RankCurrentSell )
          RETURN
              Result
      )