【发布时间】:2018-09-24 17:24:55
【问题描述】:
我想让 DAX 做的是:
- 查看 HR 数据表中的每一行。
- 确定员工(“员工 a”)的开始日期
- 应用以下过滤器总结表中其他员工的数量:
一种。顺利完成任务
湾。在开始日期 + 31 之前结束他们的任务
C。在开始日期后结束他们的任务 - 31(也就是说,在员工 a 开始日期的一个月内)
d。在员工 a 之前开始(不计入员工 a 或他们队列中的任何人)
e.与雇员 a 具有相同的职位。
这实质上是用普通英语问一个问题“对于我的每个员工,有多少其他具有相同职位的员工在该员工开始工作的一个月内成功结束了他们的任务?”在 DAX 中基本上只是“如何将多个过滤条件应用于 SUMX 或 COUNTAX 度量/计算列?”
我已经尝试过的措施是:
Contractors Available = COUNTAX(
'BAT VwRptMspAssignment',
CALCULATE(
DISTINCTCOUNT('BAT VwRptMspAssignment'[assignmentgk]),
FILTER(
FILTER(
FILTER(
FILTER(
FILTER(ALL('BAT VwRptMspAssignment'),
'BAT VwRptMspAssignment'[End.Date]<EARLIER('BAT VwRptMspAssignment'[Start.Date])+31),
'BAT VwRptMspAssignment'[End.Date]>EARLIER('BAT VwRptMspAssignment'[Start.Date])-31),
'BAT VwRptMspAssignment'[Start.Date]<EARLIER('BAT VwRptMspAssignment'[Start.Date])),
'BAT VwRptMspAssignment'[EoaReason]="Successful Completion"),
'BAT VwRptMspAssignment'[JobPostingTitle.1]=EARLIER('BAT VwRptMspAssignment'[JobPostingTitle.1]))
)
)
我尝试的计算列是:
Contractors Available.1 = SUMX(
FILTER(
FILTER(
FILTER(
FILTER(
FILTER(
FILTER(ALL('BAT VwRptMspAssignment'),
'BAT VwRptMspAssignment'[customergk]=EARLIER('BAT VwRptMspAssignment'[customergk])),
'BAT VwRptMspAssignment'[JobPostingTitle.1]=EARLIER('BAT VwRptMspAssignment'[JobPostingTitle.1])),
'BAT VwRptMspAssignment'[End.Date]<EARLIER('BAT VwRptMspAssignment'[Start.Date])+31),
'BAT VwRptMspAssignment'[End.Date]>EARLIER('BAT VwRptMspAssignment'[Start.Date])-31),
'BAT VwRptMspAssignment'[Start.Date]<EARLIER('BAT VwRptMspAssignment'[Start.Date])),
'BAT VwRptMspAssignment'[EoaReason]="Successful Completion"),
'BAT VwRptMspAssignment'[FinishFlag])
但这些解决方案都没有奏效。
有谁知道为什么或我还能尝试什么来实现这一目标?导出到 Excel 的数据格式示例:
“Contractors Available.2”是计算列。 请注意第一行中的 521。如果我在 Excel 中应用所有这些过滤器,它应该为零,这个职位在数据集中是唯一的。它说 107 个“技术作家 - 专家”行应该在 2017 年 9 月 26 日的一个月内结束,但这些是数据集中仅有的 3 名技术作家,另外两个中的零个在 9/9 的一个月内结束了他们的任务30/2016:
【问题讨论】:
-
仅供参考,您可以使用
&&/||作为逻辑 AND / OR 运算符,而不是嵌套一堆过滤器。FILTER(Table, <cond1> && <cond2>)而不是FILTER(FILTER(Table, <cond1>), <cond2>)。 -
谢谢亚历克西斯!当我在 Marco Vos 的答案中指定变量时,这适用于计算列,但问题在于多个列上的“EARLIER()”函数,这似乎只在我使用嵌套过滤器时才有效。而且我不能将行的值指定为度量中的变量,只能在计算的列版本中。
标签: powerbi dax powerpivot powerbi-desktop