Пользовательская сортировка каскадной диаграммы (Waterfall) в Power BI
Недавно в чате о Power BI в Telegram был задан вопрос – возможно ли применить для графика Waterfall (каскадная диаграмма, она же «Водопад») нестандартную динамическую сортировку: положительные значения показываются по убыванию, а отрицательные наоборот, по возрастанию (то есть, сначала самые большие по модулю отрицательные значения, затем минуса поменьше и самые мелкие – в конце).
В итоге из такого графика:
Нужно получить вот такой:
Стандартными средствами мы можем сортировать Waterfall только по возрастанию или убыванию, по обычным правилам (настроить и проверить сортировку можно нажав на три точки в правом верхнем углу визуала):
Нам же нужно сделать так, чтобы:
- Можно было применить нестандартную сортировку;
- Она должна быть динамической, то есть реагировать на фильтры (например, по дате)
Решение этой задачи делится на две подзадачи:
- Найти способ применить пользовательскую сортировку
- Определить и реализовать алгоритм сортировки
Можем ли мы применить пользовательскую сортировку?
Первая подзадача в случае визуального элемента Waterfall (каскадная диаграмма) решается просто: мы можем использовать для сортировки любые поля, помещенные в одну из областей визуального элемента.
У Waterfall таких областей четыре:
- Категория
- Распределение
- Ось Y
- Подсказки
Первые две используются для определения значений оси X, третья – для определения размера столбиков, а вот четвертая используется для вывода информации во всплывающем окошке при наведении мыши на элемент графика.
Вот ее мы и будем использовать для того, чтобы отсортировать значения на графике в нужном нам порядке.
Скажу сразу – если бы мы не могли использовать эту область для сортировки, то и решение было бы кардинально другим, если бы вообще было.
Как задать правило сортировки?
Вспомним, что сортировка должна учитывать возможность применения пользовательских фильтров, поэтому нам не подойдет вычисляемый столбец в DAX или Power Query). То есть, нам нужна мера.
Теперь нам надо придумать, как создать такую формулу, которая будет давать нам нужный порядок сортировки.
Continue Reading →Follow me: