Power BI - 查找假设分析前后的匹配百分比

问题描述 投票:0回答:2

我有一个要求,我有一个这样的表:

Role              Skills
Developer           C
Developer           SQL
Developer           C++
Data Analyst        R
Data Analyst        Python
Data Analyst        SQL
Business Analyst    Excel
Business Analyst    SQL

我需要在 Power BI 中创建类似的东西:

解释业务分析师在 Power BI Visual Table 中的第一个结果:

  1. 从筛选器 1 - 我选择了数据分析师 - 其实际技能是 R、Python 和 SQL
  2. 从过滤器 2 - 我选择了一项新技能 (Upskill) 作为 Excel。

所以现在,他有4个技能。

对于业务分析师来说 - 可视表中的第 1 行 %无需提升技能的技能 - 只有数据分析师技能中的 SQL 与业务分析师技能相匹配,因此在提升技能之前为 50%。

但是在使用 Excel 进行技能提升后,它就成为 100% 的业务分析师技能。

提升技能后,他拥有 4 项技能,但其中 2 项(R 和 Python),他不会在业务分析师角色中使用。这显示在表格的最后一列中。

我的想法是试图展示 - 所选角色的技能组与另一个角色匹配的百分比有多少。

升级后所选角色的技能组与另一个角色匹配的百分比是多少。

很高兴能够基于此创建新表并根据需要重新调整数据。

powerbi ssas dax data-modeling powerbi-desktop
2个回答
1
投票

这里的关键是为切片器提供不同的不相关表。

我们将您原来的桌子命名为

Jobs

创建两个新表:

Role = DISTINCT(Jobs[Role])
Skills = DISTINCT(Jobs[Skills])

现在我们有了这些表,我们可以用它们创建切片器并将所选值读入我们的度量中。

% Skill Match =
VAR SelectedRole = SELECTEDVALUE ( Role[Role] )
VAR RelatedSkills = CALCULATETABLE ( DISTINCT ( Jobs[Skills] ), Jobs[Role] = SelectedRole )
VAR CurrentSkills = DISTINCT ( Jobs[Skills] )
RETURN
    DIVIDE (
        COUNTROWS ( INTERSECT ( RelatedSkills, CurrentSkills ) ),
        COUNTROWS ( CurrentSkills )
    )

这会读取您在第一个变量中选择的角色。当我们提高技能时,我们也会在另一个切片机中阅读:

% Skill Match Upskilled =
VAR SelectedRole = SELECTEDVALUE ( Role[Role] )
VAR SelectedSkills = VALUES ( Skills[Skills] )
VAR RelatedSkills = CALCULATETABLE ( DISTINCT ( Jobs[Skills] ), Jobs[Role] = SelectedRole )
VAR CurrentSkills = DISTINCT ( Jobs[Skills] )
VAR Upskilled = DISTINCT ( UNION ( RelatedSkills, SelectedSkills ) )
RETURN
    DIVIDE (
        COUNTROWS ( INTERSECT ( Upskilled, CurrentSkills ) ),
        COUNTROWS ( CurrentSkills )
    )

未使用的技能测量非常相似。

Unused Skills =
VAR SelectedRole = SELECTEDVALUE ( Role[Role] )
VAR SelectedSkills = VALUES ( Skills[Skills] )
VAR RelatedSkills = CALCULATETABLE ( DISTINCT ( Jobs[Skills] ), Jobs[Role] = SelectedRole )
VAR CurrentSkills = DISTINCT ( Jobs[Skills] )
VAR Upskilled = DISTINCT ( UNION ( RelatedSkills, SelectedSkills ) )
RETURN
    CONCATENATEX ( EXCEPT ( Upskilled, CurrentSkills ), Jobs[Skills], ", " )

结果应该是这样的:

您可以添加一些逻辑来隐藏您在矩阵视觉中选择的角色,但我在这里让事情变得更简单。


0
投票

嗯,我认为这里的关键是一个好的模型。

我的想法是试图展示 - 所选角色的技能组与另一个角色匹配的百分比有多少。

对于第一个问题,您需要定义关系来评估匹配并据此计算百分比。我会做以下事情:

创建

MaxSkillTable

JobID    JobName               Skill
 1       Business Analyst     Power-Bi
 1       Business Analyst     SSRS
 1       Business Analyst     Excel
 2       Other jobs           Other skills for other jobs
 ...and so on

假设现在您在 Person 表上为

Max Mustermann
选择
Business Analyst
并得到以下结果:

     Name         Skill    JobID   
 Max Mustermann   Excel      1     
 Max Mustermann   SSRS       1

现在您需要将上面的结果与JobID相同的

MaxSkillTable
进行匹配。您将获得两个匹配项(Excel 和 SSRS)。这将是您的第一个结果。之后,您可以选择此作业的最大技能计数(Excel、SSRS、Power-BI = 3)。这将是第二个结果。当您获得这两个结果时,您可以计算百分比。

对于

Max Mustermann
来说,它将是
2 / 3
所以大约。
66%

对于你的第二个问题,

升级后所选角色的技能组与另一个角色匹配的百分比是多少。

您可以模拟增加

Max Mustermanns
技能的数量。他查询的结果是两个技能。所以
2 + 1 = 3
。现在再次根据这个增量计算百分比。
3 / 3 = 1 = 100%
(这里需要注意不要增加计数超过最大值)。

© www.soinside.com 2019 - 2024. All rights reserved.