Время прочтения: 3 мин.
Одна из задач, которую необходимо было нам решить с помощью Power BI – это настройка динамического рейтингования сотрудников с помощью этого инструмента.
Допустим мы являемся сотрудниками отдела продаж.
У нас есть таблица, в которой указано: ФИО сотрудника, товар, который он продавал в течение месяца и количество звонков, которое было совершено клиентам по каждой позиции.
Мы видим, что «продукт 1» продают три сотрудника и, что первый сотрудник совершил больше всего звонков. «Продукт 2» — 6 сотрудников и т.д.
Выберем по всем продуктам только тех сотрудников, которые совершили максимальное количество звонков.
- Подключаем источник данных и, при необходимости, удаляем пустые столбцы.
Для удаления используем «Управление столбцами» — «Выбор столбцов»
- Произведем группировку по продуктам. И в качестве операции группировки выбираем – «Все строки».
В итоге мы получаем таблицу в свернутом виде.
- Теперь нам нужно добавить пользовательский столбец, который будет фильтровать каждую вложенную таблицу по максимальному значению. Создаем пользовательский столбец и, используя язык M – пишем следующую функцию:
= Table.SelectRows([Количество], (row)=> row[Звонков]=List.Max([Количество][Звонков]))
(при создании источника данных старайтесь не использовать в названиях столбцов слова через тире)
- Удалим все столбцы, кроме «Пользовательский» и развернем получившуюся таблицу
- Расставим места сотрудников по их эффективности.
Для этого вернемся в окно Power BI и, используя язык DAX, создадим меру и проставим ранг:
RankingNew_2 = RANKX(ALLSELECTED('Справочник ФИО'), CALCULATE(SUM('kniga1'[Пользовательский.3вонков])),,DESC)
- ‘kniga1’– так называется наша таблица с данными;
- ‘Справочник ФИО’ – это отдельная таблица, содержащая все ФИО сотрудников. Создаем её для корректной работы функции RANKX;
- DESC – поможет нам упорядочить ранг по убыванию, если нужно по возрастанию – то заменим его на ASC.
Но при рейтинговании мы можем столкнуться также с одинаковым количеством показателей у нескольких сотрудников. Тогда занимаемое место мы будем рассчитывать, как среднее арифметическое. Формула для меры будет выглядеть так:
RankingNew_4 = FORMAT(VAR current_rank = [RankingNew_2]
return current_rank + (CALCULATE(COUNT('Справочник ФИО'[ФИО]),
FILTER(ALLSELECTED('Справочник ФИО'[ФИО]),[RankingNew_2] = current_rank))-1)/2, "General Number")
Благодаря тому, что мы использовали меру, а не вычисляемый столбец – поучили динамический рейтинг. Т.е. если в ваших исходных данных будут даты и нужно добавить срез по дате, то при изменении периода, рейтинг тоже будет меняться автоматически.
Осталось визуализировать полученные данные. И отчет готов.