StackOverflow 大师们大家好,
我想请求您帮助解决我的 PowerBI 问题。
我的任务是创建可视化,显示项目中有多个团队,并显示这些团队的一些差异。 我有几个表:项目、员工、员工预订、团队、日历。 我创建了一个在 100% 堆积条形图中使用的度量。 我需要能够按团队名称(来自团队表)、员工姓名(来自员工表)和会计年度(来自日历表)进行过滤。我的解决方案适用于按团队和财政年度进行过滤,但当我按资源名称进行过滤时不会显示预期结果。例如,如果我选择 John John,我的可视化应该显示他的团队已经工作过或仍在与他们在这些项目上协作的其他团队合作的项目。 现在,可视化显示了他所从事的项目,仅考虑了他的团队。 我想补充一点,过滤必须适用于来自不同切片器的多个选择
按团队过滤时的可视化:
我按资源名称过滤时的结果:
我在可视化中使用的测量。
Count Cross Team 6 =
VAR SelectedTeams = VALUES ( Teams[Name] )
VAR SelectedEmployees = VALUES ( Employees[Name] )
VAR SelectedTeamsAndEmployees = UNION ( SelectedTeams, SelectedEmployees )
VAR a =
SUMMARIZE (
ADDCOLUMNS (
ALLSELECTED ( EmployeeBookings ),
"Projects", RELATED ( Projects[Name] ),
"Team", RELATED ( Employees[Team] ),
"Employee", RELATED ( Employees[Name] )
),
[ID Project],
[Projects],
[Team],
[Employee]
)
VAR b =
COUNTROWS ( FILTER ( a, [Projects] IN VALUES ( Projects[Name] ) ) )
RETURN
IF (
ISFILTERED ( Teams[Name] ) && COUNTROWS ( SelectedTeamsAndEmployees ) > 0,
IF (
b > 1,
COUNTROWS (
FILTER (
a,
[Projects]
IN VALUES ( Projects[Name] )
&& [Team] IN SelectedTeamsAndEmployees
)
)
),
IF (
ISFILTERED ( Employees[Name] ) && COUNTROWS ( SelectedTeamsAndEmployees ) > 0,
COUNTROWS (
FILTER (
a,
[Projects]
IN VALUES ( Projects[Name] )
&& [Employee] IN SelectedTeamsAndEmployees
)
),
IF (
b > 1,
COUNTROWS (
FILTER (
a,
[Projects]
IN VALUES ( Projects[Name] )
&& [Team] IN VALUES ( Employees[Team] )
)
)
)
)
)
如果有人想下载 pbix 文件,请链接。 pbix 文件
我尝试更改我的度量以包含按资源过滤的部分,但我不知道是否能够以某种方式将过滤选项合并到我的度量中。 我尝试创建一个附加表,在其中收集来自 Teams、Project、EmployeeBookings 和 Employee 表的列,通过关系连接到 Projects 表,并测试如果我使用切片器中新创建的表中的列,过滤是否有效。
如果有人可以帮助解决这个问题,我将非常感激。 预先感谢!
你就快到了。问题是您的 Employee 切片器来自
Employees
表,其中图表图例中使用了 Team
列。因此,当您切入 Employee
时,它也会切入 Team
- 这意味着您永远不会看到外部/跨队。
让您继续前进的步骤。
1。仅为员工切片器创建一个新的断开连接表
Slicer Employee = SUMMARIZECOLUMNS(Employees[ID Employee], Employees[Name])
然后更新您的切片器以使用这个新表(
Slicer Employee[Name]
)
2。更新您的测量以参考
Slicer Employee
表
Count Cross Team 6 =
VAR SelectedTeams = VALUES ( Teams[Name] )
VAR SelectedEmployees = VALUES ( 'Slicer Employee'[Name] )
VAR SelectedTeamsAndEmployees = UNION ( SelectedTeams, SelectedEmployees )
VAR a =
SUMMARIZE (
ADDCOLUMNS (
ALLSELECTED ( EmployeeBookings ),
"Projects", RELATED ( Projects[Name] ),
"Team", RELATED ( Employees[Team] ),
"Employee", RELATED ( Employees[Name] )
),
[ID Project],
[Projects],
[Team],
[Employee]
)
VAR b =
COUNTROWS ( FILTER ( a, [Projects] IN VALUES ( Projects[Name] ) ) )
RETURN
SWITCH( TRUE(),
ISFILTERED( Teams[Name] ) && COUNTROWS ( SelectedTeamsAndEmployees ) > 0 && b > 1,
COUNTROWS (
FILTER (
a,
[Projects]
IN VALUES ( Projects[Name] )
&& [Team] IN SelectedTeamsAndEmployees
)
),
ISFILTERED ( 'Slicer Employee'[Name] ) && COUNTROWS ( SelectedTeamsAndEmployees ) > 0,
COUNTROWS (
FILTER (
a,
[Projects]
IN VALUES ( Projects[Name] )
&& [Employee] IN SelectedTeamsAndEmployees
)
),
b > 1,
COUNTROWS (
FILTER (
a,
[Projects]
IN VALUES ( Projects[Name] )
&& [Team] IN VALUES ( Employees[Team] )
)
)
)