Power BI - 仅显示属于所需选择(和逻辑)的数据
Power BI - Show only data that belongs to the required selection (And Logic)
我有一个table这样的
Role Skills Resource
Data Analyst R A
Data Analyst Python A
Data Analyst SQL B
Business Analyst SQL A
我的技能正在筛选中。我在仪表板上有多个视觉效果。
并且如果我 select SQL 和 Python 那么数据分析师和业务分析师的结果都会显示在视觉对象中。
但是,我希望它只显示 Data Analyst 结果,因为只有 Data Analyst 拥有所有 selected 技能。
为了实现这一点,我想创建一个度量并将其放在每个视觉中的视觉级别过滤器上可能会有所帮助。
更新:- 如果我 select SQL 在这里,我的卡片视觉上有 2 个与资源相关的不同资源,但是如果我 select SQL 和 Python - 我的卡片视觉上有 0 个与资源相关的资源和 1 个与角色度量中的角色相关的角色计数。
请帮助我创建该度量。
也许有人会建议一种更优雅的方法;我想出了以下想法。
创建度量(我将调用您的 table "Data"):
Has All Selected Skills
=
VAR
Selected_Skills = ALLSELECTED ( Data[Skills] )
VAR
Role_Skills = CALCULATETABLE ( VALUES ( Data[Skills] ), ALL ( Data[Skills] ) )
VAR
Missing_Skills = COUNTROWS ( EXCEPT ( Selected_Skills, Role_Skills ) )
RETURN
IF ( NOT ( Missing_Skills ), 1 )
如果将度量放在针对角色的视觉对象中,它将产生以下结果:
此代码的工作方式:
- 首先,我们将所有选定的技能存储在一个变量中 "Selected_Skills";
- 其次,我们将角色可用的所有技能存储在变量 "Role_Skills" 中。我们必须使用 ALL(Data[Skill]) 来忽略技能切片器选择;
- 第三,由于上面两个变量都是table,我们可以使用EXCEPT函数来找出它们的不同之处。在这里,我们告诉 DAX 查找 Selected_Skills 中不存在于 Role_Skills 中的记录。将结果存储在变量 "Missing_Skills" 中。
- 最后,如果 Missing_Skills 为零,则表示该角色拥有所有选定的技能,我们将其标记为 1(尽管您可能会使用 True/False 等)。
我发现这种方法的问题是,如果技能选择器没有选择(显示 "all skills"),那么所有角色的公式可能 return 空白,并且您的所有视觉效果都将是空白.从技术上讲,这是正确的 - 它本质上是说没有角色拥有所有技能。但如果这不是您想要的行为,请考虑稍微修改一下的方法:
Missing Skills Count
=
VAR
Selected_Skills = ALLSELECTED ( Data[Skills] )
VAR
Role_Skills = CALCULATETABLE ( VALUES ( Data[Skills] ), ALL ( Data[Skills] ) )
VAR
Missing_Skills = COUNTROWS ( EXCEPT ( Selected_Skills, Role_Skills ) )
RETURN
Missing_Skills + 0
公式使用相同的逻辑,只是 return 每个角色缺少的技能数,而不是 true/false 状态。它将允许您显示技能列表,按缺失技能数与所选技能集排序:
您仍然可以使用它来过滤视觉效果;优点是它永远不会空白,即使选择了所有技能:
它还使您能够查看哪些角色最接近满足要求,即使 none 完全匹配也是如此;可能是一个理想的功能。
最后说明:在所有这些报告中,我没有小计和总计,假设它们不重要。如果您确实需要它们,则可能需要修改公式以满足您对总计的要求(取决于您想要在那里显示的内容)。
我有一个table这样的
Role Skills Resource
Data Analyst R A
Data Analyst Python A
Data Analyst SQL B
Business Analyst SQL A
我的技能正在筛选中。我在仪表板上有多个视觉效果。
并且如果我 select SQL 和 Python 那么数据分析师和业务分析师的结果都会显示在视觉对象中。
但是,我希望它只显示 Data Analyst 结果,因为只有 Data Analyst 拥有所有 selected 技能。
为了实现这一点,我想创建一个度量并将其放在每个视觉中的视觉级别过滤器上可能会有所帮助。
更新:- 如果我 select SQL 在这里,我的卡片视觉上有 2 个与资源相关的不同资源,但是如果我 select SQL 和 Python - 我的卡片视觉上有 0 个与资源相关的资源和 1 个与角色度量中的角色相关的角色计数。
请帮助我创建该度量。
也许有人会建议一种更优雅的方法;我想出了以下想法。
创建度量(我将调用您的 table "Data"):
Has All Selected Skills
=
VAR
Selected_Skills = ALLSELECTED ( Data[Skills] )
VAR
Role_Skills = CALCULATETABLE ( VALUES ( Data[Skills] ), ALL ( Data[Skills] ) )
VAR
Missing_Skills = COUNTROWS ( EXCEPT ( Selected_Skills, Role_Skills ) )
RETURN
IF ( NOT ( Missing_Skills ), 1 )
如果将度量放在针对角色的视觉对象中,它将产生以下结果:
此代码的工作方式:
- 首先,我们将所有选定的技能存储在一个变量中 "Selected_Skills";
- 其次,我们将角色可用的所有技能存储在变量 "Role_Skills" 中。我们必须使用 ALL(Data[Skill]) 来忽略技能切片器选择;
- 第三,由于上面两个变量都是table,我们可以使用EXCEPT函数来找出它们的不同之处。在这里,我们告诉 DAX 查找 Selected_Skills 中不存在于 Role_Skills 中的记录。将结果存储在变量 "Missing_Skills" 中。
- 最后,如果 Missing_Skills 为零,则表示该角色拥有所有选定的技能,我们将其标记为 1(尽管您可能会使用 True/False 等)。
我发现这种方法的问题是,如果技能选择器没有选择(显示 "all skills"),那么所有角色的公式可能 return 空白,并且您的所有视觉效果都将是空白.从技术上讲,这是正确的 - 它本质上是说没有角色拥有所有技能。但如果这不是您想要的行为,请考虑稍微修改一下的方法:
Missing Skills Count
=
VAR
Selected_Skills = ALLSELECTED ( Data[Skills] )
VAR
Role_Skills = CALCULATETABLE ( VALUES ( Data[Skills] ), ALL ( Data[Skills] ) )
VAR
Missing_Skills = COUNTROWS ( EXCEPT ( Selected_Skills, Role_Skills ) )
RETURN
Missing_Skills + 0
公式使用相同的逻辑,只是 return 每个角色缺少的技能数,而不是 true/false 状态。它将允许您显示技能列表,按缺失技能数与所选技能集排序:
您仍然可以使用它来过滤视觉效果;优点是它永远不会空白,即使选择了所有技能:
它还使您能够查看哪些角色最接近满足要求,即使 none 完全匹配也是如此;可能是一个理想的功能。
最后说明:在所有这些报告中,我没有小计和总计,假设它们不重要。如果您确实需要它们,则可能需要修改公式以满足您对总计的要求(取决于您想要在那里显示的内容)。