Время прочтения: 3 мин.

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

Допустим мы являемся сотрудниками отдела продаж.

У нас есть таблица, в которой указано: ФИО сотрудника, товар, который он продавал в течение месяца и количество звонков, которое было совершено клиентам по каждой позиции.

Мы видим, что «продукт 1» продают три сотрудника и, что первый сотрудник совершил больше всего звонков. «Продукт 2» — 6 сотрудников и т.д.

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

  1. Подключаем источник данных и, при необходимости, удаляем пустые столбцы.

Для удаления используем «Управление столбцами» — «Выбор столбцов»

  1. Произведем группировку по продуктам. И в качестве операции группировки выбираем – «Все строки».

В итоге мы получаем таблицу в свернутом виде.

  1. Теперь нам нужно добавить пользовательский столбец, который будет фильтровать каждую вложенную таблицу по максимальному значению. Создаем пользовательский столбец и, используя язык M – пишем следующую функцию:
= Table.SelectRows([Количество], (row)=> row[Звонков]=List.Max([Количество][Звонков]))

(при создании источника данных старайтесь не использовать в названиях столбцов слова через тире)

  1. Удалим все столбцы, кроме «Пользовательский» и развернем получившуюся таблицу
  1. Расставим места сотрудников по их эффективности.

Для этого вернемся в окно 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")

Благодаря тому, что мы использовали меру, а не вычисляемый столбец – поучили динамический рейтинг.  Т.е. если в ваших исходных данных будут даты и нужно добавить срез по дате, то при изменении периода, рейтинг тоже будет меняться автоматически.

Осталось визуализировать полученные данные. И отчет готов.