Forum Discussion

caruso1058's avatar
caruso1058
Microsoft Employee
5 years ago
Solved

undefined

I am attempting to create a Gantt Chart, however I need to supply end dates to my model. The end date of a task is the start date of the other task, so I am looking for a DAX function that will allow me to build this logic:

 

ProjectGateStart_DateFinish_Date

A123

Beginning

1/1/20203/1/2020

A123

Partial3/1/20206/1/2020
A123Mostly6/1/202010/1/2020
A123Final10/1/202010/1/2020

 

I am not sure what DAX formual I can write to return the Finsh Date.
All help is greatly appreciated.

  • Hi caruso1058 - see this measure:

     

    Finish Date = 
    VAR varCurrentDate = MAX('Table'[Start_Date])
    VAR varNextDate = 
    CALCULATE(
        MIN('Table'[Start_Date]),
        FILTER(
            All('Table'),
            'Table'[Start_Date] > varCurrentDate
        )
    )
    RETURN
    IF(
        ISBLANK(varNextDate),
        varCurrentDate,
        varNextDate
        )

     

    This will return the minium date above the current date, unless there is no next date, in which case it will repeat the current date.

     

    One note caruso1058 - you didn't specify, but I assume you want this to be by project. Note the replacement of ALL() with ALLEXCEPT()

    So you can see that the April 1, 2020 date did not impact the  A123 project.

     

  • Hi,

    Try this calculated column formula

    =calculate(min(data[project schedule]),filter(data,data[project]=earlier(data[project])&&data[project schedule]>earlier(data[project schedule])))

    Hope this helps.

9 Replies

  • edhans's avatar
    edhans
    Community Champion

    Hi caruso1058 - see this measure:

     

    Finish Date = 
    VAR varCurrentDate = MAX('Table'[Start_Date])
    VAR varNextDate = 
    CALCULATE(
        MIN('Table'[Start_Date]),
        FILTER(
            All('Table'),
            'Table'[Start_Date] > varCurrentDate
        )
    )
    RETURN
    IF(
        ISBLANK(varNextDate),
        varCurrentDate,
        varNextDate
        )

     

    This will return the minium date above the current date, unless there is no next date, in which case it will repeat the current date.

     

    One note caruso1058 - you didn't specify, but I assume you want this to be by project. Note the replacement of ALL() with ALLEXCEPT()

    So you can see that the April 1, 2020 date did not impact the  A123 project.

     

  • caruso1058's avatar
    caruso1058
    Microsoft Employee

    Hello edhans ,

     

    Thank you very much for your help with this! I like your tactic, but I seem to be running into an issue with this logic, as it only returns the MAX Date within my dataset...seems to be a typo as we are not scheduling ahead that far in the future just yet, but I digress. 

     

    Anyway, the trouble I am having is two fold, one is extracting the last task date, second is grouping this logic by each project. 

    • Ashish_Mathur's avatar
      Ashish_Mathur
      Super User

      Hi,

      Try this calculated column formula

      =calculate(min(data[project schedule]),filter(data,data[project]=earlier(data[project])&&data[project schedule]>earlier(data[project schedule])))

      Hope this helps.