使用每周数据测量以获得每月计数

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

我有以下形式的工资数据表(示例数据包含在帖子末尾)。

[ Name, Date, Hours, Job Code ]

Name = Employee Name
Date = Date format, but this is weekly data. So the dates will always be exactly one week apart.
Hours = Number of hours worked for that Job Code for that week ending in the date specified in the [Date] column.
Job Code = Work type. Regular vs OT.

我的任务是创建一个表格,显示每周工作时间超过最大时数限制(60 小时)的员工人数,但以月度格式显示。换句话说,它应该看起来像这样:

有几个重要条件:

  • 对于工作时间,必须考虑所有工资代码。换句话说,每位员工的总工作时间考虑了正常工作时间和加班工作时间。
  • 如果某个员工每周工作时间超过 60 小时,在同一个月内两周或两周以上(例如下面数据集中 7 月的 Jeremy 的情况),仍将其算作该月仅一次条目.
  • 最大计算严格大于(因此每周 60 小时不计入上述计算)。

到目前为止我已经制定了以下措施:

// To get the total work hours considering all job codes for an employee for a particular date
HoursPerson = CALCULATE(SUM(WorkHours[Hours]), ALLSELECTED(WorkHours[Job Code]))

然后,我想我可以创建另一个度量,如果

HoursPerson > 60
则计算员工的姓名,如果我将其放入矩阵中,它将给出我想要的答案。

CountOver60 = COUNTAX(VALUES(WorkHours[Name]), [HoursPerson] > 60)

但这并没有给我预期的答案,而是计算所有至少具有一个值的名称。下面,我将这两个度量放入矩阵中,并突出显示 HoursPerson > 60,如您所见,对于

CountOver60
,它会计算所有姓名:

我在这里做错了什么?怎样才能得到想要的结果?


样本数据:

Name,Date,Hours,Job Code
Alejandro,2023/08/04,25,REGULAR
Alexander,2023/07/14,20.5,REGULAR
Arceli,2023/09/15,30,REGULAR
Chad,2023/07/14,20,REGULAR
Chad,2023/09/15,21.25,REGULAR
Christopher,2023/08/11,27.5,REGULAR
Christopher,2023/08/18,43,REGULAR
Christopher,2023/08/25,31.75,REGULAR
Daniel,2023/07/21,22,REGULAR
Daniel,2023/08/04,23.5,REGULAR
Daniel,2023/08/11,70,REGULAR
Daniel,2023/08/18,28,REGULAR
Daniel,2023/09/01,21.5,REGULAR
Darrell,2023/09/15,29,REGULAR
David,2023/07/14,21,REGULAR
David,2023/09/01,21,REGULAR
Devin,2023/09/15,65,REGULAR
Everett,2023/07/21,21,REGULAR
Everett,2023/08/25,24.5,REGULAR
Gabriel,2023/08/04,47,REGULAR
Isaias,2023/09/15,20,REGULAR
James,2023/08/11,21.5,REGULAR
Jason,2023/07/21,29.5,REGULAR
Jason,2023/08/25,38.5,REGULAR
Jason,2023/08/25,30,OT
Jeremy,2023/07/14,63,REGULAR
Jeremy,2023/07/21,21,REGULAR
Jeremy,2023/07/28,67,REGULAR
John,2023/07/14,48,REGULAR
John,2023/07/21,28,REGULAR
John,2023/07/28,65,REGULAR
John,2023/08/04,24.5,REGULAR
John,2023/08/11,22,REGULAR
John,2023/08/25,20,REGULAR
John,2023/09/22,31.5,REGULAR
Justin,2023/09/15,31.25,REGULAR
Leonides,2023/08/18,20,REGULAR
Leonides,2023/08/25,22,REGULAR
Leonides,2023/08/25,42,OT
Mario,2023/07/21,22,REGULAR
Mario,2023/07/21,24,OT
Mario,2023/07/28,40,REGULAR
Mario,2023/07/28,24,OT
Matthew,2023/07/28,24.5,REGULAR
Pedro,2023/07/14,20,REGULAR
Robert,2023/08/18,20,REGULAR
Shawn,2023/08/04,24.5,REGULAR
Shawn,2023/09/15,32.75,REGULAR
Steven,2023/07/14,22.5,REGULAR
Thomas,2023/07/21,32,REGULAR
Thomas,2023/07/28,24.5,REGULAR
Thomas,2023/09/15,31.5,REGULAR
Thomas,2023/09/22,26.5,REGULAR
Thomas,2023/07/28,20,OT
Thomas,2023/08/18,45,REGULAR
Thomas,2023/08/18,20.5,OT
Timothy,2023/07/14,20,REGULAR
Timothy,2023/08/11,25,REGULAR
Timothy,2023/08/11,45,OT
Vincent,2023/07/07,20,REGULAR
Vincent,2023/07/28,20,REGULAR
Vincent,2023/08/11,20,REGULAR
Vincent,2023/08/18,20,REGULAR
Vincent,2023/09/01,20,REGULAR
Vincent,2023/09/08,54,REGULAR
Vincent,2023/09/15,65,REGULAR
Vincent,2023/09/22,20,REGULAR
powerbi dax powerbi-desktop measure
1个回答
0
投票

试试这个。

HoursPerson = SUM(WorkHours[Hours])


CountOver60 = 
VAR t = 
FILTER(
    ADDCOLUMNS(
        SUMMARIZE(WorkHours, WorkHours[Name], 'Date'[Calendar Year], 'Date'[Month Number]),
        "@x", [HoursPerson]
    ),
    [@x] > 60
)
 
 RETURN COUNTROWS(t)
© www.soinside.com 2019 - 2024. All rights reserved.