Forum Discussion

veerub's avatar
veerub
Frequent Visitor
5 years ago
Solved

Calculating Remaining Days from last reporting date

Hi All,

I need some help to solve the following

I have a table with a column maturity date. The maturity date column includes both (i) dates which are before today's date (ii) dates which are after today's date.

 

I want to have a new column which give me the remaining days from a last reporting date (which is not today). The last reporting date to be source from another table such as in below case should be 28-May-21

 

 

How should i go about it or if you guys have an easier way to do it?

 

Regards

VB

 

  • Hi veerub , just so we are clear Remaining Days calculates the remaining days from today, and the Date Count calculates from the reporting date to the maturity.  Added some dax to make a negative number if the report date exceeds maturity. Changed the date to 6/3/2021 so that it exceeds the maturity date in one instance.
    Let me know if you have any questions.

    If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos πŸ‘are nice too.
    Nathaniel

    DateCount = 
    VAR _today =
        TODAY () //This measure returns the count from last reporting date to maturity, but if the bond has already matured, returns the diff from last reporting date to maturity date
    VAR _reportDate = [ReportDate]
    VAR _bondMaturity =
        MAX ( Maturity[MaturityDate] )
    VAR _dateDiff =
        DATEDIFF (
            _reportDate,
            IF ( _today > _bondMaturity, _today, _bondMaturity ),
            DAY
        )
    
        
    var _reverseDateDiff = DATEDIFF(_reportDate,_bondMaturity,DAY)
    RETURN
       If(_bondMaturity>_today, _dateDiff,if(_bondMaturity<_reportDate,_reverseDateDiff))
    
    =======================================================================
    
    RemainingDays = 
    VAR _today =
        TODAY () //This measure returns 0 if matured else number of remaining dayes
        
        VAR _reportDate = [ReportDate]
    VAR _bondMaturity =
        MAX ( Maturity[MaturityDate] )
    VAR _dateDiff =
        DATEDIFF (
            _today,_bondMaturity,
             
            DAY
        )
    
    var _reverseDateDiff = DATEDIFF(_reportDate,_bondMaturity,DAY)
    RETURN
       If(_bondMaturity>_today, _dateDiff,if(_bondMaturity<_reportDate,_reverseDateDiff))


     



8 Replies

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

    Hi veerub , not sure if I understand your final outcome, but try this:

    DateCount =
    VAR _today =
        TODAY () //This measure returns the count from last reporting date to maturity, but if the bond has already matured, returns the diff from last reporting date to maturity date
    VAR _reportDate = [ReportDate]
    VAR _bondMaturity =
        MAX ( Maturity[MaturityDate] )
    VAR _dateDiff =
        DATEDIFF (
            _reportDate,
            IF ( _today > _bondMaturity, _today, _bondMaturity ),
            DAY
        )
    RETURN
        _dateDiff
    



    Let me know if you have any questions.

    If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos πŸ‘are nice too.
    Nathaniel

      • veerub's avatar
        veerub
        Frequent Visitor

        Hi Nathaniel,

         

        Thanks for the response. Here are some additional comments

        1. If maturity date < reporting date, it shall return the negative values. that is maturity date minus reporting date.

        2. The 57 in your example above is correct. But how did you bring the reportingdate into the model? the reporting date will be a single value. What would be the most appropriate way to get the reportDate updated

         

        Regards,

        Veeru

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

    Hi veerub , or if what you are looking at is zero if bond has matured, and the remaing time from today until maturity, try this.

    RemainingDays = 
    VAR _today =
        TODAY () //This measure returns 0 if matured else number of remaining dayes
        
        VAR _reportDate = [ReportDate]
    VAR _bondMaturity =
        MAX ( Maturity[MaturityDate] )
    VAR _dateDiff =
        DATEDIFF (
            _today,_bondMaturity,
             
            DAY
        )
    RETURN
       If(_bondMaturity>_today, _dateDiff,0)




    Let me know if you have any questions.

    If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos πŸ‘are nice too.
    Nathaniel