Ранжирование в Power Pivot
Категория: Надстройки Power, Приемы и советы | Опубликовано 26-01-2020
|2
Конечно, можно ранжировать данные уже непосредственно в сводной таблице на листе Excel, однако, это не логично. Если мы работаем с моделью Power Pivot, то и все вычисления должны быть подготовлены в ней, чтобы в дальнейшем пользователь мог просто выбирать меру в отчет и не заниматься дополнительными преобразованиями.
Для ранжирования данных необходимо использовать функцию на языке DAX – RANKX:
RANKX(Table;Expression;[Value];[Order];[Ties]),
- Order – порядок ранжирования:
ASC – ранжирование по возрастанию
DESC – по убыванию
- Ties – способ определения ранга; для одинаковых значений будет определен одинаковый ранг, а следующим присвоится:
Skip – следующее значение ранга + количество предыдущих одинаковых значений
Dense – следующее значение ранга
Ранжируем товары по их суммам продаж.
Создадим меру Продажи,р:=
SUMX(‘БытоваяТехника’;
‘БытоваяТехника'[Количество, шт]*’БытоваяТехника'[Цена за шт, р])
На базе созданной меры Продажи, р для всех наименований из таблицы БытоваяТехника, определим рейтинг:
Рейтинг:=RANKX(ALL(‘БытоваяТехника'[Наименование]);[Продажи,р])
Создав отчет сводной таблицы и добавив созданные меры, получим такой результат:
Как видно, Общий итог самый молодец :).
Починим формулу, добавив логическую функцию IF и функцию фильтрации HASONEVALUE.
- HASONEVALUE(ColumnName) – позволяет определить, вычисляется ли выражение в контексте одного значения для ColumnName. Если ColumnName был отфильтрован до одного значения, то TRUE, иначе – FALSE.
Рейтинг:=IF(
HASONEVALUE(‘БытоваяТехника'[Наименование]);
RANKX(ALL(‘БытоваяТехника'[Наименование]);[Продажи,р]))
Отчет обновится, отображение результатов будет корректным:
10.02.2020 (20:04)
Подскажите, а зачем это делать в модели, если в сводных можно получить такой же результат?
12.02.2020 (23:26)
В каждой сводной таблице, нужно будет делать это снова и снова. А здесь один раз создаете и затем используете. Плюс, на перспективу – для использования в Power BI