Power BI - 查找匹配百分比(赏金 100)前后的假设分析

Power BI - Find the % matching (Bounty 100) What-if analysis before and after

我有一个要求,我有一个像这样的 table,

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个技能。

因此对于业务分析师 - Visual 中的第 1 行 Table %Skills without upskilling - 只有 SQL 来自 Data Analyst 的技能与 Business Analyst 技能相匹配,所以它在提升技能之前是 50%。

但是在使用 excel 提高技能后,它变成了 100% 的业务分析师技能。

升级后他有 4 项技能,但其中 2 项(R 和 Python),他不会在 Business Analyst 中使用 Role.That 显示在 table.

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

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

很高兴基于此创建新的 tables 并根据需要重新塑造数据。

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

The Idea is I am trying to show - How much percentage the skillsets of the selected role is matching with another role.

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

正在创建 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

假设现在你 select Max Mustermann for Business Analyst on your Person table 并得到以下结果:

     Name         Skill    JobID   
 Max Mustermann   Excel      1     
 Max Mustermann   SSRS       1

现在您需要将上面的结果与 MaxSkillTable 匹配,其中 JobID 相同。您将获得两个匹配项(Excel 和 SSRS)。这将是您的第一个结果。之后,您可以 select 此工作的最大技能数(Excel,SSRS,Power-BI = 3)。这将是第二个结果。当你有这两个结果时,你可以计算百分比。

对于 Max Mustermann 它将是 2 / 3 所以大约。 66%.

关于你的第二个问题,

How much percentage the skillsets of selected role is matching with another role after upskilling.

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

这里的关键是要为您的切片器设置明显不相关的 table。

让我们称你的原始 table Jobs.

创建两个新的 table:

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

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

% 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], ", " )

结果应如下所示:

您可以添加一些逻辑来隐藏您在矩阵视觉对象中选择的角色,但我在这里保持简单。