Forum Discussion

axk180022's avatar
axk180022
Icon for Helper II rankHelper II
5 years ago
Solved

Find difference between the 2 rows of column based on another column criteria

I would want to find the difference in the GenHours for each serialid. Currently this is how my table looks on power BI. I have filtered the latest and 2nd latest date for each serialid.

 

Now i would want to find the difference between the GenHours that is being diplayed on Power BI after applying filters like removing blanks. 

 

Can someone please help.

 

amitchandak Greg_Deckler parry2k 

  • Anonymous's avatar
    Anonymous
    5 years ago

    Hi axk180022 

    According to your statement, I know you want to show absolute Gen Difference. And you will filter your table to show first 2 date for each serialid, you just want show difference in 1st latest date and difference in 2nd latest date will show blank. Here I suggest you build a table visual and create a measure to achieve your goal. Measure could be dynamic.

    My Sample:

    Rank is a calculated column.

    Rank = RANKX(FILTER('Table','Table'[serialid]=EARLIER('Table'[serialid])),'Table'[Dates],,DESC,Dense)

    Build a table visual and filter visual by rank column to show items when value is less than or equal to 2.

    Measure:

    Gen Difference = 
    VAR _RANK1GenHours =
        CALCULATE (
            SUM ( 'Table'[GenHours] ),
            FILTER (
                ALL ( 'Table' ),
                'Table'[serialid] = MAX ( 'Table'[serialid] )
                    && 'Table'[Rank] = 1
            )
        )
    VAR _RANK2GenHours =
        CALCULATE (
            SUM ( 'Table'[GenHours] ),
            FILTER (
                ALL ( 'Table' ),
                'Table'[serialid] = MAX ( 'Table'[serialid] )
                    && 'Table'[Rank] = 2
            )
        )
    RETURN
        IF (
            SUM ( 'Table'[Rank] ) = 1,
            ABS ( _RANK1GenHours - _RANK2GenHours ),
            BLANK ()
        )

    Result is as below.

    Best Regards,
    Rico Zhou

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

     

2 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi axk180022 

    According to your statement, I know you want to show absolute Gen Difference. And you will filter your table to show first 2 date for each serialid, you just want show difference in 1st latest date and difference in 2nd latest date will show blank. Here I suggest you build a table visual and create a measure to achieve your goal. Measure could be dynamic.

    My Sample:

    Rank is a calculated column.

    Rank = RANKX(FILTER('Table','Table'[serialid]=EARLIER('Table'[serialid])),'Table'[Dates],,DESC,Dense)

    Build a table visual and filter visual by rank column to show items when value is less than or equal to 2.

    Measure:

    Gen Difference = 
    VAR _RANK1GenHours =
        CALCULATE (
            SUM ( 'Table'[GenHours] ),
            FILTER (
                ALL ( 'Table' ),
                'Table'[serialid] = MAX ( 'Table'[serialid] )
                    && 'Table'[Rank] = 1
            )
        )
    VAR _RANK2GenHours =
        CALCULATE (
            SUM ( 'Table'[GenHours] ),
            FILTER (
                ALL ( 'Table' ),
                'Table'[serialid] = MAX ( 'Table'[serialid] )
                    && 'Table'[Rank] = 2
            )
        )
    RETURN
        IF (
            SUM ( 'Table'[Rank] ) = 1,
            ABS ( _RANK1GenHours - _RANK2GenHours ),
            BLANK ()
        )

    Result is as below.

    Best Regards,
    Rico Zhou

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.