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

Редактор позволяет создавать отчеты, добавлять в них поля и управлять отображением этого отчета.

В **Конструкторе аналитики** перейдите в раздел **Отчёты** и нажмите **Создать отчёт**.


![Редактор отчетов](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor.webp){ style="width: 1175px; max-width: 100%" }

В меню редактирования отобразятся следующие поля/пункты для заполнения:

  * **Название** - название отчёта, которое будет отражаться в статистике.

  * **Описание** - краткое содержание, какие данные показывает отчёт. Видно только в меню редактирования.

  * **Группировать по** - выбор группировки данных отчёта из списка.

## Группировки отчетов

Группировки нужно рассматривать в контексте SQL запросов. Под собой они подразумевают добавление к выражениям метрик конструкции `GROUP BY`, из-за чего происходит группировка результатов по сущностям.

![Пример группировки отчетов](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr.webp){ style="width: 1017px; max-width: 100%" }

Добавление группировок в отчет происходит путем добавления нажатия на **"+"** в секции **"Группировать по"**. Всего можно добавить до 3 группировок включительно.

То есть при SQL запросе это выглядело бы так: `SELECT metric_1, metric_2 FROM source GROUP BY aggr1, aggr2, aggr3;`. Более подробно можно ознакомиться в [документации](https://clickhouse.com/docs/ru/sql-reference/statements/select/group-by).

После добавления группировок в отчет для каждого поля необходимо указать, по какой колонке источника будет происходить группировка. Например, если группируем по операторам и для метрики использован источник "Записи о состояниях взаимодействий в процессе существования", то можно выбрать как оператора, который привязан к состоянию, так и оператора, который назначен уже на следующее состояние.

При добавлении нескольких группировок необходимо выбрать колонку для каждой.

![Добавление группировок и выбор колонки для них](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr_example.webp){ style="width: 1100px; max-width: 100%" }

После сохранения отчета с данной конфигурацией мы можем его запросить. Теперь строки отчета содержат группировку по операторам.

![Отчет с добавленной группировкой](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr_result.webp){ style="width: 1172px; max-width: 100%" }

Существует несколько видов группировки, но подробнее остановимся только на сложных.

  * Операторы
!!! Note "N.B."
    Если в отчёте используется группировка по операторам, в результатах может присутствовать строка "Без оператора". Она соответствует периодам, в которые диалог не был назначен ни на одного оператора. Строка формируется автоматически и не может быть удалена из отчёта.

  * Язык

  * Временные отрезки - группировка, в которой деление происходит на временные отрезки, которые определяются в частном порядке. То есть, если указать, что нужно делить временной период на отрезки длинной в 1 день, то получим группировку по дням (по строке на каждый день в выборке).

    ![Группировка по временным отрезкам](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr_time_section.webp){ style="width: 453px; max-width: 100%" }

    Результатом будет:

    ![Группировка по дням](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr_time_section_result.webp){ style="width: 1177px; max-width: 100%" }

  * Временные интервалы - группировка при которой происходит округление до какого-то интервала. Например, если группируем по часам в течение дня, то вне зависимости от даты происходит округление до часа, а всё остальное игнорируется. Следовательно, максимум при такой группировке получается 24 строки, по строке на каждый час дня.

    ![Группировка по временным интервалам](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr_time_interval.webp){ style="width: 392px; max-width: 100%" }

    Результатом будет:

    ![Группировка по часам в течение дня](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_aggr_time_interval_result.webp){ style="width: 1170px; max-width: 100%" }

  * Отделы

  * Каналы

  * Категории

  * Местоположение

  * Размещение

!!! Note "N.B."
    Начиная с версии 10.8 доступна группировка **«Размещение»**, которая использует поле `location` чата. 
    Группировка появляется для отчётов, в которых используются источники, связанные с чатами (например, `thread_*_source`).

Если по каким-то причинам результаты какой-либо строки группировки отсутствуют, то такая строка не отображается, исключение - группировка по категориям при [выгрузке в формате Excel](https://webim.ru/kb/for-analytics/statistics/downloading-reports.html).

!!! Warning "Важно!"
    Важно заметить, что можно создать отчет без группировок, но метрики всё равно должны содержать агрегатные функции и возвращать единственное значение, другое поведение пока не предусмотрено.

## Простые поля отчетов { #simple-reports-fields }

Рассмотрим создание отчета с несколькими простыми полями. Простые поля - это ссылки на метрики, которые нужно использовать для подсчета поля. Добавление происходит при нажатии на кнопку **[1]** **"+ Обычное поле"**.

![Поля отчета](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain.webp){ style="width: 1302px; max-width: 100%" }

При добавлении любого поля в отчете (всегда сверху) появляется блок с настройками поля. Данный блок содержит следующие элементы управления:

  * **[2]** Выбор метрики - это обычный селектор с возможностью поиска метрики из общего набора.
  * **[3]** Выбор формата вывода данных. В зависимости от метрики может быть необходимо вывести значение как число, проценты, время, дату и т.п., для этого и присутствует данный селектор.

    ![Выбор формата вывода данных](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_formats.webp){ style="width: 215px; max-width: 100%" }

    Остановимся только на важных форматах вывода данных:

    * Проценты - отображение результата в виде процентов. Значение метрики должно возвращаться в долях единицы, иначе значение может выйти за рамки 100%.

    * Проценты от суммы - схожее отображение с процентами, но проценты вычисляются относительно строки **"Итого"** в колонке, то есть, если значение в клетке `2`, а в **"Итого"** мы имеем `10`, то значение будет `2 / 10 * 100% = 20%`.

    * Операторы / Отделы - если метрика возвращает идентификаторы операторов или отделов, то можно выбрать этот вариант отображения для того чтобы вывести значения не как сырые идентификаторы, а как карточки операторов / отделов соответственно.
    
  * **[4]** Вывод суммы - если чекбокс не активен, значение **"Итого"** для колонки будет отсутствовать, но это никак не повлияет на отображение **"Проценты от суммы"**, значение для этого отображения будет считаться как и раньше. Если в отчете для всех полей выключено отображение суммы, то строка **"Итого"** отсутствует вовсе.
  * **[5]** Изменение порядка полей в отчете - с помощью стрелочек можно изменять порядок колонок, порядок интепретируется как **сверху-вниз = слева-направо**.

Создадим в качестве примера следующий отчет:

![Пример отчета](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_result.webp){ style="width: 1178px; max-width: 100%" }

Видим результат в разделе **"Статистика"**:

![Редактор отчёта: предпросмотр результата](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_result_preview.webp){ style="width: 1173px; max-width: 100%" }

### Конфигурация граничных значений отчетов { #reports-limit-values-config }

Ранее мы уже сталкивались с [граничными значениями отчетов](https://webim.ru/kb/for-analytics/statistics/display-of-limit-values.html), в данной секции мы рассмотрим их конфигурацию.

Настройки граничных значений происходят в блоке **"Граничные значения"**. Для каждого поля значения настраиваются отдельно, количество граничных значений не ограничено, единственное правило - диапазоны значений не должны пересекаться.

![Настройка граничных значений](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_boundary.webp){ style="width: 1152px; max-width: 100%" }

Результат на изображении ниже:

![Редактор отчёта: граничное значение](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_boundary_result.webp){ style="width: 1173px; max-width: 100%" }

!!! Warning "Важно!"
    Граничные значения не зависят от варианта отображения, поэтому границы нужно устанавливать для сырого значения до преобразования, которое можно просмотреть, если выбрать вариант отображения **"Число"**, то есть, если мы говорим о метрике, возвращающей значение в долях единицы, и выбран вариант отображения **"Проценты"**, то границы тоже нужно указывать в долях единицы. Для метрик, возвращающих строковые значения, граничные значения работать не будут.

### Переменные метрик при добавлении в отчет

При добавлении в отчет метрики, в которой используется переменная - скалярное значение, то рядом с граничными значениями появляется новая секция **"Переопределение параметров метрик"**.

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

![Переопределение параметров метрик](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_plain_params.webp){ style="width: 1150px; max-width: 100%" }

Данный функционал позволяет переиспользовать метрику несколько раз, например, это будет полезно для метрики **"Оценок N"**, считающей количество определенных оценок. Можно добавить 5 полей с этой метрикой и в каждом выставить разное значение.

!!! Note "N.B."
    Пока что отсутствует функционал изменения имени метрики при добавлении ее в качестве поля в отчет, но в будущем он появится.

!!! Warning "Внимание!"
    Создать отчёт без метрик **невозможно**, т.е. хотя бы одна метрика должна присутствовать в отчёте самостоятельно, либо же в составе выражения вычисляемого значения.

## Вычисляемые поля отчетов

Вычисляемые поля - это особый вид поля, значение которого вычисляется на базе других метрик. Для него прямо в блоке поля нужно указать выражение, которое является уже не SQL выражением, а Python выражением. Это может быть как математическое выражение, так и функция, которая преобразовывает строковое выражение.

Для добавления поля используется отдельная кнопка **"+ Вычисляемое поле"**.

![Добавление вычисляемого поля](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_calculable.webp){ style="width: 1162px; max-width: 100%" }

В вычисляемом выражении расчет производится с помощью переменных. Скалярные переменные и опции account config уже описаны в [секции метрик](https://webim.ru/kb/for-analytics/analytics-designer/metrics/metrics-editor.html#metrics-variables), но помимо этого присутствует уникальная для этого поля переменная - **Метрика**.

Следует рассмотреть следующий пример:

![Переменная Метрика](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_calculable_metrics.webp){ style="width: 1154px; max-width: 100%" }

Результатом будет:

![Редактор отчёта: результат вычисляемой метрики](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_calculable_metrics_result.webp){ style="width: 1171px; max-width: 100%" }

Разберем подробно как получился такой результат. В выражении вычисляемого поля мы видим формулу `M0 + M1`, следовательно, происходит сложение двух метрик по следующему принципу:

![Сложение двух метрик](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_calculable_metrics_example.webp){ style="width: 1407px; max-width: 100%" }

Каждая метрика вычисляется с помощью аналитической базы данных, данные хранятся в памяти. Далее посредством Python значения в соответствующих строках (соответствие определяется на основе группировок) складываются/вычитаются. Это зависит от формулы вычисляемого выражения. **Если для группы не было значений в одной из метрик, то используется 0.**

Данный функционал позволяет писать сложные метрики без использования сложных [JOIN'ов](https://clickhouse.com/docs/en/sql-reference/statements/select/join) таблиц.

Важно отметить, что конфигурация метрик внутри вычисляемого поля полностью соответствует [конфигурации метрик в рамках обычного поля](#simple-reports-fields).

Рассмотрим вариант создания вычисляемого поля для изменения представления, используя выражение:

```python
f'Значение: {M0 + M1}, больше 10? - {"Да" if M0 + M1 > 10 else "Нет"}'
```

В данном выражении используется [текстовое форматирование Python](https://docs.python.org/3/tutorial/inputoutput.html) для вывода дополнительного текста и тернарное условие, на основе которого мы решаем, какой текст выводить.

Результатом запросом отчета с таким полем будет:

![Редактор отчёта: текст вычисляемой метрики](https://webim.ru/kb/img/for-analytics/v2/analytics-designer/reports/report-editor/editor_report_editor_calculable_metrics_text.webp){ style="width: 1448px; max-width: 100%" }

Как видно на изображении текст изменяется в зависимости от значения поля.

**Остальные аспекты полностью аналогичны** [обычному полю](#simple-reports-fields).

---

Источник: https://webim.ru/kb/for-analytics/analytics-designer/reports/report-editor.html
