Возможно, кто-то предложит более элегантный способ сделать это;Я придумал следующие идеи.
Создайте меру (я назову вашу таблицу «Данные»):
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]), чтобы игнорировать выбор среза навыков;
- В-третьих, поскольку обе переменные, приведенные выше, являются таблицами, мы можем использовать функцию 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
Формула использует ту же логику, возвращает только количество пропущенных навыков на роль вместо состояния «истина / ложь».Это позволит вам показать список умений, отсортированный по количеству пропущенных умений против выбранного набора умений:
Вы все еще можете использовать егофильтровать ваши визуальные эффекты;преимущество в том, что оно никогда не бывает пустым, даже если выбраны все навыки:
Это также дает вам возможность увидеть, какие роли наиболее близки квыполнение требования, даже если ни одно не соответствует ему идеально;может быть желательной особенностью.
Последнее замечание: во всех этих отчетах у меня нет промежуточных итогов и итогов, если предположить, что они не важны.Если они вам нужны, то, возможно, потребуется изменить формулы, чтобы они соответствовали вашим требованиям для итогов (в зависимости от того, что вы хотите там показать).