Power BI-仅显示属于所需选择(和逻辑)的数据

时间:2019-05-07 13:29:26

标签: powerbi dax powerbi-desktop

我有一张这样的桌子

Role            Skills       Resource
Data Analyst     R             A
Data Analyst     Python        A
Data Analyst     SQL           B
Business Analyst SQL           A

我的技能处于过滤状态。我在仪表板上有多个视觉效果。

如果我选择SQL和Python,那么数据分析器和业务分析器的结果都将显示在视觉中。

但是,我希望它仅显示Data Analyst结果,因为只有Data Analyst才具有所有选定的技能。

为实现这一目标,我认为创建一个度量并将其放在每个视觉对象的视觉级别过滤器中可能会有所帮助。

更新:-如果在此处选择SQL,则在我的卡片视觉上获得2个与资源相关的不同资源,但是如果选择SQL和Python,则在我的卡片视觉上获得0个与以下资源相关的资源:资源和1个与“角色”度量中的角色相关的角色计数。

请帮助我制定该措施。

1 个答案:

答案 0 :(得分:3)

也许有人会建议一种更优雅的方法;我提出了以下想法。

创建一个度量(我将您的表称为“数据”):

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 )

如果将度量放置在与角色相对的视图中,则会产生以下结果:

enter image description here

enter image description here

此代码的工作方式:

  • 首先,我们将所有选定的技能存储在变量“ Selected_Skills”中;
  • 第二,我们将角色可用的所有技能存储在变量“ Role_Skills”中。我们必须使用ALL(Data [Skill])来忽略技能切片器的选择;
  • 第三,由于上述两个变量都是表,因此我们可以使用EXCEPT函数来查找它们之间的不同。在这里,我们告诉DAX查找Selected_Skills中的哪些记录在Role_Skills中不存在。将结果存储在变量“ Missing_Skills”中。
  • 最后,如果Missing_Skills为零,则表示该角色具有所有选定的技能,我们将其标记为1(尽管您可能会使用True / False,等等)。

我看到的这种方法的问题是,如果“技能选择器”没有选择(显示“所有技能”),则该公式对于所有角色都可能返回空白,并且所有视觉效果都将为空白。从技术上讲,这是正确的-本质上讲,没有一个角色拥有所有技能。但是,如果这不是您想要的行为,请考虑稍微修改一下的方法:

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

该公式使用相同的逻辑,仅返回每个角色缺少的技能数,而不是正确/错误状态。它将允许您显示技能列表,并按缺少的技能数与所选技能组合的顺序进行排序:

enter image description here

您仍然可以使用它来过滤视觉效果;优点是即使选择了所有技能,它也绝不会空白:

enter image description here

它还使您能够查看最接近满足要求的角色,即使没有一个与之完美匹配;可能是一个理想的功能。

最后说明:在所有这些报告中,我没有小计和总计,假设它们并不重要。如果确实需要它们,则可能需要修改公式以符合总计要求(取决于要在此处显示的内容)。