Forum Discussion

Lesley1Storey's avatar
Lesley1Storey
New Member
6 years ago
Solved

Adding Workdays to Dates

Hi, I have a table which shows a created date for when invoices are entered into our system. I need to add workdays onto this date to get our SLA Date. I have a Date Table which has a weekday index included with days 1-5 (saturday and sunday included as day 5). I need to add the workdays onto the created date. The two tables are connected by created date from the Invoices file and Dates from the Date table. Any help would be greatly appreciated.

  • Hi Lesley1Storey ,

     

    Don't know if you want a calculated column or a measure but you can do the following.

     

    Create a column on your calendar table

    Workday = 
    SWITCH (
        TRUE ();    
    WEEKDAY('Calendar'[Date]) IN { 6 ; 7 }; FALSE (); 
        TRUE ()
    )

     

    Now add the following measure to your model:

     

    Forecasted End Date = 
    ----------------------------------------------------------
    VAR relevantdate =
        SELECTEDVALUE(Invoices[Date]) --this can be replaced by TODAY()
    VAR workdaysremain =
        15 --Can be adjusted to be another value
    ---------------------------------------------------------
    /* create a virtual date table only for working days starting from
       the relevant date and only for the workdays remaining */
    VAR workingdateTable =
        TOPN (
            workdaysremain;
            CALCULATETABLE (
                'Calendar';
                'Calendar'[Workday] = TRUE ();
                'Calendar'[Date] >= relevantdate
            )
        ) 
    ---------------------------------------------------------
    /* find the maximum date in the virtual table, which will be
       the forecasted end date */
    VAR futuredate =
        CALCULATE ( MAX ( 'Calendar'[Date] ); workingdateTable ) 
    ---------------------------------------------------------
    RETURN
        futuredate

     

    this was adapted from the post below:

    https://www.pbiusergroup.com/communities/community-home/digestviewer/viewthread?MessageKey=a5b04c5c-4052-4fd9-8fc9-9c157df8bbbe&CommunityKey=b35c8468-2fd8-4e1a-8429-322c39fe7110&tab=digestviewer

     

     

1 Reply

  • Hi Lesley1Storey ,

     

    Don't know if you want a calculated column or a measure but you can do the following.

     

    Create a column on your calendar table

    Workday = 
    SWITCH (
        TRUE ();    
    WEEKDAY('Calendar'[Date]) IN { 6 ; 7 }; FALSE (); 
        TRUE ()
    )

     

    Now add the following measure to your model:

     

    Forecasted End Date = 
    ----------------------------------------------------------
    VAR relevantdate =
        SELECTEDVALUE(Invoices[Date]) --this can be replaced by TODAY()
    VAR workdaysremain =
        15 --Can be adjusted to be another value
    ---------------------------------------------------------
    /* create a virtual date table only for working days starting from
       the relevant date and only for the workdays remaining */
    VAR workingdateTable =
        TOPN (
            workdaysremain;
            CALCULATETABLE (
                'Calendar';
                'Calendar'[Workday] = TRUE ();
                'Calendar'[Date] >= relevantdate
            )
        ) 
    ---------------------------------------------------------
    /* find the maximum date in the virtual table, which will be
       the forecasted end date */
    VAR futuredate =
        CALCULATE ( MAX ( 'Calendar'[Date] ); workingdateTable ) 
    ---------------------------------------------------------
    RETURN
        futuredate

     

    this was adapted from the post below:

    https://www.pbiusergroup.com/communities/community-home/digestviewer/viewthread?MessageKey=a5b04c5c-4052-4fd9-8fc9-9c157df8bbbe&CommunityKey=b35c8468-2fd8-4e1a-8429-322c39fe7110&tab=digestviewer