Перейти к содержанию

Создание кастомного отчёта с кастомной метрикой

Данная статья является пошаговой инструкцией по созданию кастомного отчёта с кастомной метрикой. В качестве примера здесь приведена инструкция по созданию отчёта по оценкам операторов с соответствующими метриками.

1. Создание метрик

  1. Перейдите в Редактор метрик (Настройки -> Отчёты, далее кликните по плашке Метрики). Откроется окно следующего вида:

    Редактор метрик

  2. Перейдите к созданию новой метрики. Нажмите на кнопку Создать метрику. Откроется окно создания новой метрики.

    Меню создания новой метрики

  3. Введите название метрики в поле Название. Первая созданная метрика будет называться Минимальная оценка оператора.

  4. Опционально введите описание метрики в поле Описание. Данное поле предназначено для подробного объяснения сути и механизма работы метрики, значение поля отображается в общем списке метрик.

  5. В выпадающем списке Источник данных выберите Оценки операторов. Источниками данных являются таблицы в БД, в которых хранится информация обо всех событиях, происходящих на аккаунте (создание чата, оценка оператора, информация об операторах и т. д.).

  6. В поле Выражение Вы должны ввести некоторое арифметико-логическое выражение, определяющее то, каким образом будет подсчитываться метрика. Выражение составляется из переменных, функций и условий. Переменными могут являться поля, доступные для выбранного источника данных (см. вкладку Доступные поля), параметры account config или некоторые скалярные значения, которые можно задать нажатием на кнопку Добавить переменную и выбором в выпадающем списке Тип переменной варианта Скалярное значение. Основные агрегатные функции представлены во вкладке Доступные агрегатные функции (полный список можно найти в этой статье). Под условиями подразумеваются логические конструкции if/else и/или тернарные операторы, реализующие аналогичную логику.

    Наша первая метрика будет достаточно простой. Так как нам необходимо лишь найти минимальную оценку оператора, выражением будет min(rates.value) + 3. Функция min() находит минимальное значение переданного в качестве аргумента поля, rates.value хранит в себе значения оценок операторов, прибавление 3 необходимо для корректного отображения оценок - в ClickHouse оценки операторов записываются по шкале от -2 до 2.

  7. Далее Вы можете переопределить фильтры. Это может быть необходимо в некоторых ситуациях, когда стандартная выборка из БД не подходит для Ваших целей (например, Вы хотите получить выборку по последним операторам, назначенных на диалоги вместо стандартной выборки). Если Вам это необходимо, воспользуйтесь подразделом Определение фильтров, выбрав из выпадающих списков необходимые Вам опции.

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

  8. Результатом шагов 3-7 будет следующая конфигурация метрики:

    Конфигурация метрики Минимальная оценка оператора

    Нажмите на кнопку Сохранить.

  9. Создайте новую метрику (повторите шаги 2-5). Назовите её Максимальная оценка оператора. Заполните описание при необходимости. В качестве источника данных снова выберите Оценки операторов. В поле Выражение введите max(rates.value) + 3. Данная метрика будет работать аналогично предыдущей, с той разницей, что в этой метрике используется функция max(), возвращающая максимальное значение поля. Сохраните метрику.

    Конфигурация метрики Максимальная оценка оператора

  10. Создайте новую метрику (повторите шаги 2-5). Назовите её Средняя оценка оператора. Заполните описание при необходимости. В качестве источника данных снова выберите Оценки операторов. В поле Выражение введите if(sum(sign) != 0, round(sum(sign > 0 ? rates.value : 0) / sum(sign), 2) + 3, 0). Сложность выражения и присутствие в нём ранее не введённой переменной sign обуславливается особенностями сохранения данных в ClickHouse. Сумма sign не должна быть равна нулю для расчёта средней оценки оператора, так как в противном случае при дальнейшем расчёте произойдёт деление на ноль.

Итогом этапа станут три новых метрики, которые будут добавлены в отчёт в следующем этапе.

2. Создание отчёта

Для визуализации данных метрик необходимо добавить их в отчёт и сгруппировать каким-либо образом. Без группировки данные метрик являются достаточно абстрактными и их понимание в отчёте может быть затруднено.

  1. Перейдите в Редактор отчётов (Настройки -> Отчёты). Откроется окно следующего вида:

    Редактор отчётов

  2. Нажмите на кнопку Создать отчёт. Вы перейдёте в окно создания нового отчёта.

    Меню создания нового отчёта

  3. Заполните поле Название. Для примера назовём отчёт Отчёт по оценкам операторов.

  4. При необходимости заполните поле Описание. Данное поле предназначено для подробного объяснения сути отчёта, значение поля отображается в общем списке отчётов.

  5. Добавьте созданные ранее метрики. Нажмите на кнопку Добавить метрику. В выпадающем списке Название выберите метрику Минимальная оценка оператора. В выпадающем списке Формат выводимых данных Вы можете выбрать формат, в котором данные будут представлены в отчёте. Для нашего примера нам потребуется стандартная опция - Число. Чекбокс Выводить сумму отвечает за визуализацию суммарного значения данных метрики внизу отчёта. Снимите с него галочку - для нашего отчёта это не нужно.

  6. Аналогичным образом добавьте метрики Максимальная оценка оператора и Средняя оценка оператора.

  7. В блоке Группировать по нажмите на +. Так Вы добавите новую группировку. Для примера нам необходимо в появившемся выпадающем списке выбрать группировку по Операторам.

  8. В добавленных метриках появятся выпадающие списки с конкретными вариантами группировки. В нашем примере их 4. Из списков везде выбираем rates.agent_id - так оценки будут сгруппированы по тем операторам, которым они были выданы посетителями. Оставльные варианты имеют другую логику работы и могут предоставлять отличающиеся данные.

  9. Нажмите на кнопку Сохранить.

    Итоговый вид получившегося отчёта

Итогом этапа станет кастомный отчёт с кастомными метриками, который Вы сможете просмотреть в меню Статистики v2. Подробнее об использовании модуля статистики Вы можете прочитать в этом разделе