Power bi box и усы: фильтр с выражением if

MWE настроено:

1) С визуального веб-сайта Power Bi: https://app.powerbi.com/visuals/ есть кастомная загрузка "Коробка и усы (Ян Питер)"

2) Скачать образец.

3) создайте новую меру с формулой dax:

Distinct count score = if(distinctCOUNT(Courses[Score]) > 4, average(Courses[Score]), Blank())

4) Добавьте столбчатую диаграмму с накоплением с курсом в качестве оси и вновь созданным «счетчиком различий» в качестве значения и получите следующее:

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

5) сравните этот график с Box and Whisker, предоставленным Power BI:

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

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

Итак, если я попробую решение, работающее с гистограммой с накоплением, используя формулу Дакса. Получаю следующее - ничего не отображается:  введите описание изображения здесь

И вот чего я хочу:

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

Вопрос:

Есть ли способ в Power BI запустить и отдельный оператор подсчета в диаграмме Box and Whisker, чтобы отображать только данные с> 4 различными значениями (или любым оператором if)?

Я хочу, чтобы это было основано на формуле, я не могу просто «визуально фильтровать» элементы, которые мне не нужны.

Вариант ответа:

Я подумал о том, чтобы обратиться к исходному коду, чтобы попытаться «добавить» оператор if. Но я пошел в git hub разработчиков: https://github.com/liprec - я не смог найти репо для этого визуала.


person jpf5046    schedule 01.12.2016    source источник


Ответы (2)


В основном это связано с тем, как работает диаграмма ящиков и усов. Визуальным элементам нужен набор данных для вычисления значений (среднего, медианного и т. Д.) И использования этих значений для отображения поля и усов.

Итак, в вашем случае вам нужно создать меру, которая находится на том же уровне, что и оценки (потому что эти значения необходимы) и доступна только. На скриншоте показано наглядное объяснение необходимой меры.

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

Я создал меру с помощью следующей меры DAX:

Filter Score = IF(CALCULATE(DISTINCTCOUNT(Courses[Score]), ALLEXCEPT(Courses, Courses[Course]))>4, MIN(Courses[Score]), BLANK())

Логическое выражение оператора IF вычисляет различные оценки за курс с помощью выражения CALCULATE и параметра фильтра ALLEXCEPT, чтобы игнорировать все, кроме значения курса. Часть TRUE возвращает результат, который необходимо агрегировать, поэтому части MIN и FALSE возвращают значение BLANK(), поэтому его можно игнорировать.

Когда вы добавляете новую меру и создаете диаграмму BW, она будет показывать только результаты курса «Физика».

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

Если вам нужна дополнительная помощь, дайте мне знать здесь или по электронной почте.

-JP

Кстати: я только что обновил свой визуальный репозиторий PowerBI на GitHub (https://github.com/liprec/PowerBI-custom-visuals) и добавил в папку oldAPI мою коробку и диаграмму усов, а также срез иерархии.

person Jan Pieter Posthuma    schedule 02.12.2016
comment
Это сработало! В наборе данных, который я использую, я добавил в ALLEXEMPT, чтобы включить больше фильтров. похоже тоже Filter Score = IF(CALCULATE(DISTINCTCOUNT(Courses[Score]), ALLEXCEPT(Courses, Courses[Course], Courses[Session]))>4, MIN(Courses[Score]), BLANK()). Спасибо, JP - person jpf5046; 03.12.2016

Суть вашей проблемы, насколько я могу судить, заключается в том, что вы хотите отфильтровать визуальные элементы по курсам, которые имеют определенное количество различных значений. Какой визуальный элемент вы хотите использовать, почти не имеет значения (хотя было полезно иметь образец книги Power BI, которой можно было бы следовать).

То, как я подхожу к этому (и не говорю, что это лучший или единственный способ)

Шаг 1

Создайте новую таблицу измерений курса с одной строкой для каждого уникального курса. В образце книги вы можете нажать «Ввести данные» и ввести данные вручную.

Course
------
English
Math
Physics

Шаг 2

Затем создайте вычисляемый столбец в новой таблице и вычислите количество отличий для каждого курса. Это не мера - это столбец в вашей таблице, в котором используется расчет Distinct Count из вашего вопроса.

Distinct Count = CALCULATE(DISTINCTCOUNT(Courses[Score]), SUMMARIZE('Courses','Courses'[Course])) 

SUMMARIZE работает как GROUP BY. По сути, создание одной строки для каждого курса с отдельным подсчетом баллов.

Шаг 3

Используйте этот новый атрибут как фильтр для вашего визуального элемента. Затем вы можете динамически изменять количество различных значений по своему усмотрению (4, 3, 2).

Я знаю, что это не так хорошо, как ввод формулы в поле визуального фильтра, хотя на практике это все еще определяется формулами. Формула находится только в базовой таблице.

Почему так сложно?

Причина, по которой вы должны сделать это для визуального элемента Box & Whiskers, в то время как ваша мера «Distinct Count Score» работает так хорошо, заключается в том, что на столбчатой ​​диаграмме вы отображаете одно значение (средний балл). Диаграмма Box & Whiskers, напротив, отображает каждый индивидуальный результат.

Фактически, если вы удалили «Курс» с оси своей столбчатой ​​диаграммы, значение изменится по мере добавления обратно в курсы, которые вы отфильтровали. (Причина в том, что, если на вашей оси нет курса, ваша формула вычисляет отдельное количество всех курсов, равное 7). Точно так же, если бы вы отфильтровали свою столбчатую диаграмму по определенному сеансу, ваша столбчатая диаграмма стала бы пустой (поскольку в любом данном сеансе ни один курс не имеет более 4 различных значений).

Описанный выше метод устраняет эти проблемы, поскольку он с самого начала отфильтровывает курсы математики и английского языка. Не имеет значения, отфильтровали ли вы по одному сеансу или вообще не отфильтровали по курсу. Английский язык и математика всегда будут исключены, если их отдельное количество меньше указанного вами значения.

Надеюсь это поможет.

person Leonard    schedule 01.12.2016
comment
Творческий. Это потенциально работоспособно, но не как есть. Я не могу позволить конечным пользователям очищать визуальные фильтры и в конечном итоге показывать математику и английский язык - это был бы наихудший сценарий. - person jpf5046; 02.12.2016
comment
Безопасность - это совсем другая тема. Если данные находятся в модели данных, они потенциально доступны для конечных пользователей, если вы не добавите безопасность на уровне строк: powerbi.microsoft.com/en-us/documentation/powerbi-admin-rls - person Leonard; 02.12.2016