Power BI - отображение только данных, принадлежащих требуемому выбору (и логике)

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

Role            Skills       Resource
Data Analyst     R             A
Data Analyst     Python        A
Data Analyst     SQL           B
Business Analyst SQL           A

Мои навыки находятся на фильтре. У меня есть несколько визуальных элементов на приборной панели.

И если я выберу SQL и Python, результаты аналитиков данных и бизнес-аналитиков будут отображаться в визуальном элементе.

Но я хочу, чтобы отображались только результаты аналитика данных, потому что только аналитик данных обладает всеми выбранными навыками.

Чтобы достичь этого, я думаю, что может помочь создать меру и поместить ее в фильтр визуального уровня в каждом визуальном элементе.

Обновление: - если я выберу здесь SQL, я получу 2 отдельных ресурса на визуальном элементе моей карты, который имеет отношение к ресурсам, но если я выберу SQL и Python, я получу 0 ресурсов на визуальном элементе моей карты, который имеет отношение к ресурсам и 1 количество ролей, которое имеет отношение к ролям в измерении роли.

Пожалуйста, помогите мне создать эту меру.


person CodingDawg    schedule 07.05.2019    source источник
comment
Что должно произойти, если фильтр навыков не имеет выбора (фактически, он выбирает все навыки)? Если я понимаю вашу логику, тогда все визуальные эффекты должны быть пустыми, потому что ни у одной роли нет всех навыков. Если это так, то ваш отчет всегда будет пустым, если пользователь не выберет определенные навыки и в выбранном наборе навыков не будет хотя бы одной роли, которая ему соответствует. Это верно?   -  person RADO    schedule 08.05.2019
comment
Да ты прав.   -  person CodingDawg    schedule 08.05.2019


Ответы (1)


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

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

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. Мы должны использовать ВСЕ (Данные [Навык]), чтобы игнорировать выбор среза навыков;
  • В-третьих, поскольку обе указанные выше переменные являются таблицами, мы можем использовать функцию 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

Формула использует ту же логику, только возвращает количество недостающих навыков для каждой роли вместо статуса «истина / ложь». Это позволит вам отобразить список навыков, отсортированный по количеству отсутствующих навыков по сравнению с выбранным набором навыков:

введите описание изображения здесь

Вы все еще можете использовать его для фильтрации визуальных эффектов; преимущество в том, что он никогда не бывает пустым, даже если выбраны все навыки:

введите описание изображения здесь

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

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

person RADO    schedule 08.05.2019
comment
Спасибо. Но единственная проблема заключается в том, что у меня есть визуальный элемент карты в power bi, который дает мне количество ресурсов, но поскольку он не направлен против ролей, фильтр визуального уровня не поддерживается. Можете ли вы предложить обходной путь. Спасибо еще раз. - person CodingDawg; 08.05.2019
comment
Визуализация карты по сути похожа на общую, поэтому здесь уместно мое последнее замечание - что именно вы хотели бы видеть на карте? - person RADO; 08.05.2019
comment
Подсчитайте количество ресурсов, поэтому иерархия состоит из ролей, ресурсов и навыков. позвольте мне добавить сюда несколько примеров данных и через минуту вывести их. - person CodingDawg; 08.05.2019
comment
Обновил вопрос с данными. - person CodingDawg; 08.05.2019
comment
@RADO Замечательно! - person StelioK; 08.05.2019