Forum Discussion

manojk_pbi's avatar
manojk_pbi
Helper V
2 years ago
Solved

How to write DAX for % change

Hi Friends,

 

I am looking for a DAX measure to calculate Change in Percentage w.r.t to a particular period by Products. Please suggest me how can we write the optimized DAX for the same. Provided a sample with required output. Baseline is Jan-23 data, this can vary as per business request. Any suggestions are much appreciated.

MY            Product   Qty          %Change

Jan-23PROD1100 
Feb-23PROD112020%
Mar-23PROD113535%
Apr-23PROD114040%
May-23PROD112020%
Jun-23PROD11000%
Jul-23PROD180-20%
Aug-23PROD190-10%
Sep-23PROD175-25%
Oct-23PROD11000%
Nov-23PROD180-20%
Dec-23PROD165-35%

 

Thanks

  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi manojk_pbi ,

    Please update the formula of measure as below to get it, please find the details in the attachment.

    %Change = 
    VAR _MY =
        SELECTEDVALUE ( 'Table'[MY] )
    VAR _product =
        SELECTEDVALUE ( 'Table'[Product] )
    VAR _preMY =
        CALCULATE (
            MIN ( 'Table'[MY] ),
            FILTER ( ALLSELECTED ( 'Table' ), 'Table'[Product] = _product )
        )
    VAR _preqty =
        CALCULATE (
            SUM ( 'Table'[Qty] ),
            FILTER (
                ALLSELECTED ( 'Table' ),
                'Table'[Product] = _product
                    && 'Table'[MY] = _preMY
            )
        )
    RETURN
        IF (
            _MY = _preMY,
            BLANK (),
            DIVIDE ( SUM ( 'Table'[Qty] ) - _preqty, _preqty )
        )

    Best Regards

7 Replies

  • That is a very, very subjective topic especially when sign changes are involved (like in your case).

     

    One approximation is DIVIDE(current-previous, ABS(previous),BLANK())

     

    But at the end of the day you have to decide what is a reasonable number in your scenarios.

    • manojk_pbi's avatar
      manojk_pbi
      Helper V

      Thanks for your input.

       

      I am looking for suggestion on writing measure to calculate % Change .

      • Anonymous's avatar
        Anonymous
        Not applicable

        lbendlin  Thanks for your contribution on this thread.

        Hi manojk_pbi ,

        lbendlin already gave the related formula. If you want to get the expected result base on your sample data, you can create a measure as below to get it:

        %Change = 
        VAR _MY =
            SELECTEDVALUE ( 'Table'[MY] )
        VAR _preMY =
            CALCULATE ( MIN ( 'Table'[MY] ), ALLSELECTED ( 'Table' ) )
        VAR _preqty =
            CALCULATE (
                SUM ( 'Table'[Qty] ),
                FILTER ( ALLSELECTED ( 'Table' ), 'Table'[MY] = _preMY )
            )
        RETURN
            IF (
                _MY = _preMY,
                BLANK (),
                DIVIDE ( SUM ( 'Table'[Qty] ) - _preqty, _preqty )
            )

        Best Regards