cancel
Showing results for
Did you mean:
Helper V

## EOMONTH working days calculation

I have a measure to subtract the total number of days in a month e.g. 31 - absence.

Measure =
VAR _lastday =
DAY (
EOMONTH (
DATE ( LEFT ( MAX ( 'DimDate'[Month Year] ), 4 ), VALUE ( RIGHT ( MAX ( 'DimDate'[Month Year] ), 2 ) ), 1 ),
0
)
)
RETURN
IF ( ISBLANK ( [AbsentByDay] ), BLANK (), _lastday ) - [AbsentByDay]

Is there a way to only include working days in this calculation e.g. 22 working days in month - absence?

e.g. NOT WEEKDAY( 'DimDate'[Date] ) IN { 1,7 }

File attached:
1 ACCEPTED SOLUTION
Super User

@Niiru1

The DimDate table has a column, Working Day, I used that as that is your basis for other measures:

Measure 3 =

VAR _Month =
EOMONTH (
DATE ( LEFT ( MAX ( 'DimDate'[Month Year] ), 4 ), VALUE ( RIGHT ( MAX ( 'DimDate'[Month Year] ), 2 ) ), 1 ),
0
)
VAR _lastday=
COUNTROWS(
FILTER(
DimDate,
DimDate[Date] >= EDATE(_Month , -1)+1 && DimDate[Date] <= _Month && DimDate[WorkingDays] = TRUE())
)

RETURN

IF ( ISBLANK ( [AbsentByDay] ), BLANK (), _lastday ) - [AbsentByDay]

________________________

If my answer was helpful, please consider Accept it as the solution to help the other members find it

Click on the Thumbs-Up icon if you like this reply 🙂

Did I answer your question? Mark my post as a solution! and hit thumbs up
4 REPLIES 4
Super User

@Niiru1

I have modified the formula to include only workdays, I consider weekday 1 and 7 as weekend, you can change if you need.

Measure =

VAR _Month =
EOMONTH (
DATE ( LEFT ( MAX ( 'DimDate'[Month Year] ), 4 ), VALUE ( RIGHT ( MAX ( 'DimDate'[Month Year] ), 2 ) ), 1 ),
0
)

VAR _lastday=
COUNTROWS(
FILTER(
CALENDAR( EDATE(_Month , -1)+1 , _Month ),
NOT( WEEKDAY( [Date] ) IN { 1,7 })
)
)

RETURN
IF ( ISBLANK ( [AbsentByDay] ), BLANK (), _lastday ) - [AbsentByDay]

________________________

If my answer was helpful, please consider Accept it as the solution to help the other members find it

Click on the Thumbs-Up icon if you like this reply 🙂

Did I answer your question? Mark my post as a solution! and hit thumbs up
Helper V

This works great but I'm having trouble with 1 or 2 values not adding up

I think person_id 135 was absent twice in month : 201902, is there any way to account for this?

https://www.dropbox.com/s/jrvtgfms7akm1fv/Sample2%28updated%29.pbix?dl=0

Helper V

Looking into this I think the :

VAR _Month =
EOMONTH (
DATE ( LEFT ( MAX ( 'DimDate'[Month Year] ), 4 ), VALUE ( RIGHT ( MAX ( 'DimDate'[Month Year] ), 2 ) ), 1 ),
0
)

assumes that there are 30/31 days in each month?
Super User

@Niiru1

The DimDate table has a column, Working Day, I used that as that is your basis for other measures:

Measure 3 =

VAR _Month =
EOMONTH (
DATE ( LEFT ( MAX ( 'DimDate'[Month Year] ), 4 ), VALUE ( RIGHT ( MAX ( 'DimDate'[Month Year] ), 2 ) ), 1 ),
0
)
VAR _lastday=
COUNTROWS(
FILTER(
DimDate,
DimDate[Date] >= EDATE(_Month , -1)+1 && DimDate[Date] <= _Month && DimDate[WorkingDays] = TRUE())
)

RETURN

IF ( ISBLANK ( [AbsentByDay] ), BLANK (), _lastday ) - [AbsentByDay]

________________________

If my answer was helpful, please consider Accept it as the solution to help the other members find it

Click on the Thumbs-Up icon if you like this reply 🙂

Did I answer your question? Mark my post as a solution! and hit thumbs up

Announcements

#### 2023 Release Wave 1 Plans

Power BI release plans for 2023 release wave 1 describes all new features releasing from April 2023 through September 2023.

#### Global Power BI Training

Make sure you register today for the Power BI Summit 2023. Don't miss all of the great sessions and speakers!

#### 2022 Monthly Feature Releases

We had a great 2022 with a ton of feature releases to help you drive a data culture.

Top Solution Authors
Top Kudoed Authors