Главное здесь - иметь разные несвязанные таблицы для ваших слайсеров.
Давайте назовем вашу исходную таблицу 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], ", " )
Результат должен выглядеть примерно так:
Вы можете добавить некоторую логику, чтобы скрыть роль, выбранную вами в матричном визуальном элементе, но здесь я упрощаю.