Forum Discussion
Help with DAX Measure for Calculating Employee Workdays by Year
Hi Zeshansaif1 - Your measure logic needs to handle employees who were hired in earlier years correctly. The issue arises because you are not accounting for the fact that employees hired before the selected year need their working days calculated differently.
Total Days Worked =
VAR SelectedYear = SELECTEDVALUE('Date'[Year])
VAR StartOfYear = DATE(SelectedYear, 1, 1)
VAR EndOfYear = DATE(SelectedYear, 12, 31)
RETURN
SUMX(
'DataTable',
VAR HireDate = 'DataTable'[HireDate Updated]
VAR TerminationDate = 'DataTable'[TerminationDate]
VAR IsTerminated = NOT(ISBLANK(TerminationDate))
VAR DaysWorked =
SWITCH(
TRUE(),
-- Hired and terminated in the same year
YEAR(HireDate) = SelectedYear && IsTerminated && YEAR(TerminationDate) = SelectedYear,
DATEDIFF(HireDate, TerminationDate, DAY) + 1,
-- Hired before the selected year and terminated in the selected year
YEAR(HireDate) < SelectedYear && IsTerminated && YEAR(TerminationDate) = SelectedYear,
DATEDIFF(StartOfYear, TerminationDate, DAY) + 1,
-- Hired in the selected year and terminated in a later year
YEAR(HireDate) = SelectedYear && IsTerminated && YEAR(TerminationDate) > SelectedYear,
DATEDIFF(HireDate, EndOfYear, DAY) + 1,
-- Hired before the selected year and terminated after the selected year
YEAR(HireDate) < SelectedYear && IsTerminated && YEAR(TerminationDate) > SelectedYear,
DATEDIFF(StartOfYear, EndOfYear, DAY) + 1,
-- Hired before the selected year and not terminated
YEAR(HireDate) < SelectedYear && NOT(IsTerminated),
DATEDIFF(StartOfYear, EndOfYear, DAY) + 1,
-- Hired in the selected year and not terminated
YEAR(HireDate) = SelectedYear && NOT(IsTerminated),
DATEDIFF(HireDate, EndOfYear, DAY) + 1,
0 -- Default case
)
RETURN
DaysWorked
)
This ensures the measure does not calculate for blank years. Hope this works. please check.
Thankyou for your efforts. However It's not working as intended.
I came up with a solution that does work.