Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

How to get difference between two columns in Matrix based on slicer selection of Year in Power Bi

  • tamerj1's avatar
    tamerj1
    4 years ago

    Hi Anonymous 
    Here you go https://www.dropbox.com/t/sMyzwonHckNHvdKX
    Original Measure code remains the same

    Measure = COUNTROWS ( DISTINCT ('Table'[Value] ) )

    New Measure code is

    Measure1 = 
    VAR MaxYear = MAX ( 'Table'[Year] )
    VAR MinYear = MIN ( 'Table'[Year] )
    VAR MaxYearValue =
        CALCULATE ( 
            [Measure],
            'Table'[Year] = MaxYear
        )
    VAR MinYearValue =
        CALCULATE ( 
            [Measure],
            'Table'[Year] = MinYear
        )
    VAR Difference = MaxYearValue - MinYearValue
    VAR Result =
        SWITCH (
            TRUE,
            NOT HASONEVALUE ( 'Table'[Year] ), Difference,
            COUNTROWS ( ALLSELECTED ('Table'[Year] ) ) = 1, BLANK(),
            [Measure]
        )
    RETURN
        Result 

     

14 Replies

  • Hi. I think this is a question for the DAX forum. Anyway. In this case, you have years. That might help you to create a math subsctracting current selection and last year. You can do a measure like this:

     

    Measure = 
    _current = CALCULATE ( SUM(Table[Value]) )
    _last_year = CALCULATE ( SUM(Table[Value]) , SAMEPERIODLASTYEAR(Calendar[Date]) )
    RETURN
    _current - _last_year

     

    In order to make that calculation you need a calendar or date table to help you get time intelligence calculations. That would be the best practice, but if you don't like the idea you can use SELECTEDVALUE to get the current year and just do -1 in the _last_year filter context instead of SAMEPERIODLASTYEAR. That way when you filter a year you can get current - last difference. If you don't filter it will try to render differences with last year for each year in the matrix. The measure won't make sense if you add it in a visual without a period of time.

    I hope that helps,

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thanks for your response Ibbarau ,
       My values are actually codes ( like m124 , b016, cd56 ) . I categorized them as Distinct count . so when I use  SUM  the DAX is not working.
      If you need  any info. Please ask .
      Thanks

       

      • ibarrau's avatar
        ibarrau
        Super User

        Ok. If the numbers in the fields are distinct count of categories you can replace the SUM of the measure I have sent with DISTINCTCOUNT function in DAX.

        I hope that work

  • tamerj1's avatar
    tamerj1
    Community Champion

    Hi Anonymous 

    Check out this sample file https://www.dropbox.com/t/34kVadAA9Yb40CUO
    Actually, you cannot add a new measure to the matrix visual. If you do so you will see two values under each year. Therefore, the only choice is to create a new measure that is built on top of the original one, playing with the code in order to view the difference at the Total column like this 

    This is the code:     Note: [Measure] is your original measure

    Measure1 = 
    VAR MaxYear = MAX ( 'Table'[Year] )
    VAR MinYear = MIN ( 'Table'[Year] )
    VAR MaxYearValue =
        CALCULATE ( 
            [Measure],
            'Table'[Year] = MaxYear
        )
    VAR MinYearValue =
        CALCULATE ( 
            [Measure],
            'Table'[Year] = MinYear
        )
    VAR Difference = MaxYearValue - MinYearValue
    VAR Result =
        SWITCH (
            TRUE,
            NOT HASONEVALUE ( 'Table'[Year] ), Difference,
            COUNTROWS ( ALLSELECTED ('Table'[Year] ) ) = 1, BLANK(),
            [Measure]
        )
    RETURN
        Result 

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thanks For Your Solution .
      One thing is the values column in your Pbix is numbers like 10 , 20  26 ,but  my requirement is,  values  column is codes like b010 , c350, d6f , ng6 . I categorized them as Distinct count . So they look like numbers in my attached file . I think the DAX is almost correct .  Can you modify dax by using my scenario .
      Thanks For such great Help .

      • tamerj1's avatar
        tamerj1
        Community Champion

        You can just refer your measure name instead of [Measure] and it should work. Otherwise, you can send your file with a sample data and I'll do it for you. 
        If you are satisfied please mark my reply as accepted solution. Kudoes are also appreciated. 

  • AAspa's avatar
    AAspa
    Frequent Visitor

    is there a way to add an additional column with the difference in percentage?

     

    Many thanks