我有一个存储员工及其技能的数据库。我想要做的是能够使用切片机选择多种技能,并向所有选择了所有技能的员工展示。
当我选择多个条件并应用“OR”时,向我显示所有所选技能的员工。 (见截图)
在上面的示例中,如何修改报告以便仅 Steve出现?
我添加了一个基于Tab Alleman提出的DAX的新度量,但我仍然看到正在实现“OR”逻辑。这是DAX:
Employees with all skills =
COUNTROWS (
FILTER (
ADDCOLUMNS (
VALUES ('dw Employee'[ADUserId]),
"Skills",
CALCULATE (
COUNTROWS ( VALUES ( 'dw Skill'[SkillName] ) ),
CALCULATETABLE ( 'dw EmployeeSkill' )
)
),
[Skills] = COUNTROWS ( VALUES ( 'dw Skill'[SkillName] ) )
)
)
答案 0 :(得分:1)
衡量具有所有技能衡量标准的员工基本上是正确的,但不会按照您期望的方式行事。
这是一个度量,因此它本身不会更改表的过滤方式,除非在表中使用度量(通过将度量作为列添加到表中或使用度量作为过滤器)
如果你创建一个只有员工[全名]的表格和你的尺度,你会看到只有史蒂夫出现。
由于您不希望显示该度量,您还可以将其置于可视级别过滤器中并获得相同的效果:
但是,您正在做的一件棘手的事情就是您想要显示技能名称。只要将技能名称拖到桌子上,Joshua,Eric&任何具有这两种技能的员工都会重新出现(因为它与计量所依赖的行计数相混淆)。
要解决此问题,您需要更新您正在使用的指标,以便在计算行数时忽略技能名称:
Employees with all skills =
CALCULATE (
COUNTROWS (
FILTER (
ADDCOLUMNS (
VALUES ( 'dw Employee'[ADUserId] ),
"Skills", CALCULATE (
COUNTROWS ( VALUES ( 'dw Skill'[SkillName] ) ),
CALCULATETABLE ( 'dw EmployeeSkill' )
)
),
[Skills] = COUNTROWS ( ALLSELECTED( 'dw Skill'[SkillName] ) )
)
),
ALLSELECTED ( 'dw Skill'[SkillName] )
)
我真正改变的是第一行和最后一行。我已将整个度量包装在新的CALCULATE语句中,然后在最后更改了过滤器上下文,以包含来自“dw技能”的所有技能名称。表
然后,您可以创建一个包含FullName和SkillName的表,但仍然只能让Steve回来:
注意:我没有声明我的DAX修改是解决此问题的最有效或最佳解决方案。