cancel
Showing results for
Search instead for
Did you mean:
Member

## Calculate Turn Around Time

Hi, I have done turn around time (TAT) in Excel using NETWORKDAYS formula.

Here is the example below. How can I do this in Power BI using Contact Date & Date Written?

Thanks,

spanda

1 ACCEPTED SOLUTION

Accepted Solutions
Super User

## Re: Calculate Turn Around Time

Sure thing. I will use your first table as the starting point.  You can use excel to build a date table and then import, or use the CALENDAR function in DAX to create one.  I went with the DAX.

Calculations-->Modeling-->New Table.  Use the CALENDAR function.  Which needs a start and end date (which will cover in a sec).  Now, could use CALENDARAUTO which will find the start and end data automatically, but does so by searching the entire data model.  Would have worked fine in this small example, but in bigger data models that have date place holders as something like 1/1/9999, CALENDARAUTO will find that as the max.  So back to our CALENDAR function.  Need to find the Min and Max.  We wil do this by search each the Contact Date and Date writting columns and use the Min and Max of those two columns:

```Date =
CALENDAR(
MIN (
MIN (TurnAroundTIme[Contact Date]),
MIN( TurnAroundTIme[Date Written])
),
MAX (
MAX (TurnAroundTIme[Contact Date]),
MAX( TurnAroundTIme[Date Written])
)
)```

Then add a calculated column for Day Name and then one to label using that day name to denote Weekday or Weekend:

```Day = FORMAT('Date'[Date],"DDDD")

Day Type =
SWITCH(
'Date'[Day],
"Saturday", "Weekend",
"Sunday", "Weekend",
"Weekday"
)```

Here's the end result:

Then need to mark as  Date Table so DAX knows to use that for the built-in time intelligence functions:

Now that we have a calendar that we can use, setting up the DAX formulas should be much easier.   There's actually two ways we can do this, one using FILTER and one using DATESBETWEEN.

```TaT using Filter =
CALCULATE(
COUNTROWS( 'Date' ),
FILTER( ALL('Date'),
MAX( TurnAroundTime[Contact Date]) <= 'Date'[Date]
&& MAX( TurnAroundTime[Date Written]) >= 'Date'[Date]
&& 'Date'[Day Type] ="Weekday"
)
)

TaT using DatesBetween =
CALCULATE(
COUNTROWS( 'Date' ),
DATESBETWEEN('Date'[Date],
MAX( TurnAroundTime[Contact Date]) ,
MAX( TurnAroundTime[Date Written])
),
'Date'[Day Type] ="Weekday"
)```

DATESBETWEEN leverages the use of the time-intelligence, but requires some additional logic to not give a figure when there is no Contact Date or Date Written field:

```TaT using DatesBetween =
IF (
NOT
OR(
ISBLANK(MAX( TurnAroundTime[Contact Date])),
ISBLANK(MAX( TurnAroundTime[Date Written])
)
),
CALCULATE(
COUNTROWS( 'Date' ),
DATESBETWEEN('Date'[Date],
MAX( TurnAroundTime[Contact Date]) ,
MAX( TurnAroundTime[Date Written])
),
'Date'[Day Type] ="Weekday"
)
)```

Then the final output:

16 REPLIES 16
Super Contributor

## Re: Calculate Turn Around Time

If you dont want have a date table you can do it like this:

```=
COUNTROWS(
FILTER(
CALENDAR( [Contact Date], [Date Written] ),
WEEKDAY( [Date], 2 ) < 6
)
)```

Did I answer your question correctly? Mark my answer as a solution!

Proud to be a Datanaut!

Member

## Re: Calculate Turn Around Time

Thanks @LivioLanzo

Its showing me this message now.

Thanks for your help!!

Super Contributor

## Re: Calculate Turn Around Time

as the error message says, you have some start dates which are after the end date, so you need to add a condition for this scenario

Did I answer your question correctly? Mark my answer as a solution!

Proud to be a Datanaut!

Member

## Re: Calculate Turn Around Time

Thank  you @LivioLanzo!!

So how & where should I add the condition ?

-Panda2018

Highlighted
Super Contributor

## Re: Calculate Turn Around Time

@Panda2018

It depends on what you are trying to achieve. What should happen when your start date is after your end date ?

Did I answer your question correctly? Mark my answer as a solution!

Proud to be a Datanaut!

Community Support Team

## Re: Calculate Turn Around Time

You may just add IF Function as follows.

```Column =
IF (
Table1[Contact Date] > Table1[Date Written],
BLANK (),```
Community Support Team _ Sam Zha
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Member

## Re: Calculate Turn Around Time

Thank you @LivioLanzo !!

So I am trying to count the days it takes to write a note (Difference between Contact date & Date Written Date)

And it should not count the weekends or Holidays.

I tried this formula below. It works but it is counting the weekends & Holidays .

How should I do it?

TAT = IF('2018-2019'[Contact Date]>'2018-2019'[Date Written],0 - DATEDIFF('2018-2019'[Date Written],'2018-2019'[Contact Date],DAY),DATEDIFF('2018-2019'[Contact Date],'2018-2019'[Date Written],DAY))

Thanks,

panda2018

Super Contributor

## Re: Calculate Turn Around Time

Can you post another dataset along with expected results?

thanks

Did I answer your question correctly? Mark my answer as a solution!

Proud to be a Datanaut!

Member

## Re: Calculate Turn Around Time

@LivioLanzo Here is the data.

Hopw do I attach a Excel file?

Thanks!!

## Helpful resources

Announcements

#### Challenge: Can You Solve These?

Find out how to participate in the first Power BI 'Can You Solve These?' challenge.

#### Community News & Announcements

Get your latest community news and announcements.

#### Microsoft Business Applications October Virtual Launch Event

Join us for an in-depth look at the new innovations across Dynamics 365 and the Microsoft Power Platform.

#### Win Power BI Swag with Community Kudopalooza!

Each week, complete activities and be qualified in the drawing for cool Power BI Swag.

Top Kudoed Authors
Users Online
Currently online: 357 members 3,309 guests
Recent signins:
Please welcome our newest community members: