Power BI - показывать только те данные, которые относятся к необходимому выбору (и логика) - PullRequest
1 голос
/ 07 мая 2019

У меня есть такая таблица

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 Ответ

3 голосов
/ 08 мая 2019

Возможно, кто-то предложит более элегантный способ сделать это;Я придумал следующие идеи.

Создайте меру (я назову вашу таблицу «Данные»):

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

Это также дает вам возможность увидеть, какие роли наиболее близки квыполнение требования, даже если ни одно не соответствует ему идеально;может быть желательной особенностью.

Последнее замечание: во всех этих отчетах у меня нет промежуточных итогов и итогов, если предположить, что они не важны.Если они вам нужны, то, возможно, потребуется изменить формулы, чтобы они соответствовали вашим требованиям для итогов (в зависимости от того, что вы хотите там показать).

...