对每位员工的连续缺勤日期进行分组

问题描述 投票:0回答:1

我正在 Excel PowerPivot 中工作,我有一个缺勤数据集,其中每个员工的每一天缺勤都有一行。

我想将缺勤的第一天分配给前一个员工 ID 相同且前一个缺勤日期是连续的(即前一天)的每一行。

我的数据集如下所示:

当前数据集的“缺席开始日期”列是我希望实现的目标(https://i.stack.imgur.com/gTJ9w.png

任何帮助将不胜感激! :)

我之前玩过其他游戏,但我只是在原地打转!

我想提取缺勤发生的第一天(即该员工特定缺勤的日期范围内的第一个日期)并将其添加到该范围内的每一行。

dax grouping powerpivot
1个回答
0
投票

这是一种方法,但它涉及两个计算列。

第一个计算列称为

FirstDateOccurrence

=
  var thisId = [Employee ID]
  var thisReason = [Time Off Reason]
  var thisDate = [Time Off Date]
  var prevRow = TOPN(1, FILTER('Table1', [Employee ID] = thisId && [Time Off Reason] = thisReason && [Time Off Date] < thisDate), [Time Off Date], DESC)
  var prevDate = CALCULATE(MAX([Time Off Date]), prevRow)
  return IF(NETWORKDAYS(prevDate, thisDate) > 2, thisDate)

第二个计算列称为

Occurrence ID

=
  var thisId = [Employee ID]
  var thisReason = [Time Off Reason]
  var thisDate = [Time Off Date]
  var prevRow = TOPN(1, FILTER('Table1', [Employee ID] = thisId && [Time Off Reason] = thisReason && [FirstDateOccurrence] <= thisDate), [FirstDateOccurrence], DESC)
  return CALCULATE(MAX([Time Off Date]), prevRow)

作为额外的好处,上面使用了

NETWORKDAYS
,因此如果日期是星期五,下一个日期是星期一,那么它会将他们视为兄弟姐妹。

结果

© www.soinside.com 2019 - 2024. All rights reserved.