Forum Discussion

DonalMc's avatar
DonalMc
Advocate II
1 year ago
Solved

Cumaltive Diff with missing days

I have an auto-generated dataset with a cumalative number. I used the method from v-ljerr-msft in Solved: Day to day difference in cumulative values DAX or ... - Microsoft Fabric Community to generate the daily difference - see my Usage column code below.

My problem is that occasionally there is a gap in the data with missing days and this gives me an erroneous number.

Any suggestions as to how to remedy?

In my head, the best way would be to fill in missing data with half the difference.

Alternatively, if there is no data, just subtract the difference from the next day where there is data.

Hopefully this makes sense! 

 

 

Usage =
var usagePreviousDay =
    CALCULATE(
            SUM('ESB Data'[Reading]),
            FILTER(
                ALL('ESB Data'),
                'ESB Data'[Date]
                 = EARLIER('ESB Data'[Date]) - 1
                 && 'ESB Data'[Type] = EARLIER('ESB Data'[Type])
                 ))
RETURN
'ESB Data'[Reading] - usagePreviousDay

 

  • Hello DonalMc 

     

    try thid DAX code

    Usage =

    VAR currentDate = 'ESB Data'[Date]

    VAR currentType = 'ESB Data'[Type]

     

    VAR previousDate =

        CALCULATE(

            MAX('ESB Data'[Date]),

            FILTER(

                ALL('ESB Data'),

                'ESB Data'[Date] < currentDate &&

                'ESB Data'[Type] = currentType

            )

        )

     

    VAR previousReading =

        CALCULATE(

            SUM('ESB Data'[Reading]),

            FILTER(

                ALL('ESB Data'),

                'ESB Data'[Date] = previousDate &&

                'ESB Data'[Type] = currentType

            )

        )

     

    RETURN

        IF(

            NOT ISBLANK(previousReading),

            'ESB Data'[Reading] - previousReading,

            BLANK()

        )

    Thanks,
     Pankaj Namekar | LinkedIn

    If this solution helps, please accept it and give a kudos (Like), it would be greatly appreciated.

2 Replies

  • Hello DonalMc 

     

    try thid DAX code

    Usage =

    VAR currentDate = 'ESB Data'[Date]

    VAR currentType = 'ESB Data'[Type]

     

    VAR previousDate =

        CALCULATE(

            MAX('ESB Data'[Date]),

            FILTER(

                ALL('ESB Data'),

                'ESB Data'[Date] < currentDate &&

                'ESB Data'[Type] = currentType

            )

        )

     

    VAR previousReading =

        CALCULATE(

            SUM('ESB Data'[Reading]),

            FILTER(

                ALL('ESB Data'),

                'ESB Data'[Date] = previousDate &&

                'ESB Data'[Type] = currentType

            )

        )

     

    RETURN

        IF(

            NOT ISBLANK(previousReading),

            'ESB Data'[Reading] - previousReading,

            BLANK()

        )

    Thanks,
     Pankaj Namekar | LinkedIn

    If this solution helps, please accept it and give a kudos (Like), it would be greatly appreciated.