Forum Discussion

osinquinvdm's avatar
osinquinvdm
Icon for Advocate II rankAdvocate II
9 years ago
Solved

How come the value is sometimes not calculated

I have a creation date and a delay.

I'm calculating the due date by adding the delay to the creation date

 

Date due = DATEADD([Date created];[Delay];DAY)

in 80% of the cases it works fine but for the remaining 20% nothing get returned.

Why could that be - especially when the date and the delay looks fine.

So fine that they are actually used in power query to sucessfully calculate the duration since the creation and the lateness (in red below).

Sure I can (and will) add the due date into the query but I'd like to understand the possible cause for that behaviour

 

  • Hi osinquinvdm,

     

    Please modify your formula as below, this will give all the due date as expected:

    Date due = DATEADD(TableName[Date created].[Date],[Delay],DAY)

     

    Best regards,
    Yuliana Gu

5 Replies

  • eyeball's avatar
    eyeball
    Frequent Visitor

    Hi osinquinvdm,

     

    I believe the reason is that the date that you're trying to calculate doesn't exist in the column Date of Creation.  If you look at all the dates that have been created, they all seem to fall into November but the ones that haven't are all falling beyond Novemeber and I'd be fairly willing to bet that the rest of the data in your column doesn't go past November.

     

    Here's the link the the DAX function definition:

    https://msdn.microsoft.com/en-us/library/ee634905.aspx

     

    There's a line in there that states:

    The result table includes only dates that exist in the dates column

     

    I'm hoping that someone better than I will be able to provide you with a solution on how to get round it!

    Good luck!

    • fiveone's avatar
      fiveone
      Icon for Helper II rankHelper II

      Good catch eyeball on the function disclaimer in the DAX documentation.

       

      I'm not a big fan of * and small fonts, I'm more the type of guy who does not go though contract details and jump directly to the signature page :-)

       

      You are right, that test dataset is full of holes in terms of dates - so yes those dates where not part of the original date lists.

       

      Anyway if that is the way dateadd() works I have no choice but do the work in the query. Which works fine (see below DAX calculation has been renamed date cible/target and M calculation is called date due).

       

      Thanks so much for the quick follow-up (and attention to details)

       

       

  • v-yulgu-msft's avatar
    v-yulgu-msft
    Icon for Microsoft Employee rankMicrosoft Employee

    Hi osinquinvdm,

     

    Please modify your formula as below, this will give all the due date as expected:

    Date due = DATEADD(TableName[Date created].[Date],[Delay],DAY)

     

    Best regards,
    Yuliana Gu

    • fiveone's avatar
      fiveone
      Icon for Helper II rankHelper II

      Nice Trick!

      It does indeed work.

      I wish DATEADD() was smart enough to force it like this on its own

      • LaurentCouartou's avatar
        LaurentCouartou
        Icon for Solution Supplier rankSolution Supplier

        Assuming the unit for [Delay] is a number of days, you could also write:

        [Date created]+[Delay]