# Создание отчетов по опросам

У каждого отчета есть идентификатор `survey_id`, который используется для указания на конкретный отчет в метрике. Ниже приведен пример URL, где число 1 является идентификатором опроса:

`account.webim.ru/agent/survey-configs/1`

Также в отчете присутствуют формы опроса, идентификатор формы `form_id` обозначается порядковым номером формы, начиная с 0: `0, 1, 2...`

Внутри формы у каждого вопроса есть свой идентификатор `question_id`, который так же, как и форма, обозначается порядковым номером.

Для указания на конкретный опрос:

`survey_id == A`, где A - идентификатор опроса

Для указания на конкретную форму опроса:

`survey_id == A and form_id == B`, где A - идентификатор опроса, B - идентификатор формы опроса

Для указания на конкретный вопрос:

`survey_id == A and form_id == B and question_id == C`, где A - идентификатор опроса, B - идентификатор формы опроса, C - идентификатор вопроса

Важные поля:

  * `subjects` - оцениваемая сущность, в данный момент оператор или бот, пример настройки для бота: `has(subjects, "bot")`

  * `survey_id` - идентификатор опроса

  * `form_id` - идентификатор формы опроса

  * `question_id` - идентификатор вопроса в форме

  * `type` - тип вопроса, например `stars`, `radio` или `comment`

  * `question_text` - сопроводительный текст вопроса, также может использоваться для указания на конкретный вопрос

  * `answer` - текст, содержащий оценку (с одним числом), вариант ответа (текст одного из вариантов) или развернутый ответ на вопрос

![Пример опроса с добавлением форм](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/surveys-form-id.webp){ style="width: 862px; max-width: 100%" }

## Создание статистики по оценкам

Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам, содержащим тип `stars`: *type == 'stars'*

Метрика, считающая среднюю оценку по всем опросам в системе, будет являться копией стандартной метрики *Средняя оценка оператора (опросы)*. Пример формулы расчета:

```
if(sum(type == 'stars' ? sign : 0) != 0, round(sum(type == 'stars' ? accurateCastOrDefault(answer, 'UInt8', 0) * sign : 0) / sum(type == 'stars' and isNotNull(accurateCastOrNull(answer, 'UInt8')) ? sign : 0), 2), 0)
```

![Пример создания метрики, считающей среднюю оценку по всем опросам в системе](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-stars-average.webp){ style="width: 885px; max-width: 100%" }

В метрике, считающей среднюю оценку по *конкретному опросу*, используется уточнение `survey_id == N`, где N - идентификатор интересующего опроса. Ниже приведен пример формулы расчета, где N = 1:

```
if(sum(type == 'stars' and survey_id == 1 ? sign : 0) != 0, round(sum(type == 'stars' and survey_id == 1 ? accurateCastOrDefault(answer, 'UInt8', 0) * sign : 0) / sum(type == 'stars' and survey_id == 1 and isNotNull(accurateCastOrNull(answer, 'UInt8')) ? sign : 0), 2), 0)
```

![Пример создания метрики, считающей среднюю оценку по конкретному опросу](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-stars-survey-id.webp){ style="width: 885px; max-width: 100%" }

В метрике, считающей среднюю оценку по *конкретному вопросу* во всей системе, также добавляется уточнение с номером конкретного опроса, формы и вопроса: `survey_id == A and form_id == B and question_id == C`. Ниже приведен пример формулы расчета, где А = 1, В и С = 0:

```
if(sum(type == 'stars' and survey_id == 1 and form_id == 0 and question_id == 0 ? sign : 0) != 0, round(sum(type == 'stars' and survey_id == 1 and form_id == 0 and question_id == 0 ? accurateCastOrDefault(answer, 'UInt8', 0) * sign : 0) / sum(type == 'stars' and survey_id == 1 and form_id == 0 and question_id == 0 and isNotNull(accurateCastOrNull(answer, 'UInt8')) ? sign : 0), 2), 0)
```

![Пример создания метрики, считающей среднюю оценку по конкретному вопросу](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-stars-question-id.webp){ style="width: 885px; max-width: 100%" }

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

![Пример конфигурации отчета по опросам, содержащим вопросы типа `stars`](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/survey-report-type-stars.webp){ style="width: 780px; max-width: 100%" }

![Пример результат запроса отчета](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/report-type-stars-result.webp){ style="width: 1055px; max-width: 100%" }

## Создание статистики по вопросам с возможностью выбора варианта ответа

Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам содержащим тип `radio`: *type == 'radio'*

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

```
sum(if(survey_id == 1 and form_id == 0 and question_id == 2 and type =='radio', sign, 0))
```

![Пример создания метрики, считающей количество ответов для конкретного вопроса](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-radio-question-id.webp){ style="width: 1055px; max-width: 100%" }

Ниже приведены примеры метрик, считающих количество определенных ответов из вариантов.

Количество ответов "Ответ 1" в вопросе с выбором в опросе 1:

```
sum(if(survey_id == 1 and form_id == 0 and question_id == 2 and type =='radio' and answer = "Ответ 1", sign, 0))
```
![Метрика, считающая количество ответов "Ответ 1"](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-radio-question-id-1.webp){ style="width: 1055px; max-width: 100%" }

Количество ответов "Ответ 2" в вопросе с выбором в опросе 1:

```
sum(if(survey_id == 1 and form_id == 0 and question_id == 2 and type =='radio' and answer = "Ответ 2", sign, 0))
```

![Метрика, считающая количество ответов "Ответ 2"](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-radio-question-id-2.webp){ style="width: 1055px; max-width: 100%" }

!!! Note "N.B."
    Такие метрики следует использовать для конкретных вопросов, так как подсчет ответов основывается на точной формулировке ответов заданных при создании опроса.

На примерах ниже показана конфигурация подобного отчета и результат запроса:

![Конфигурация отчета по опросам, содержащим вопросы типа `radio`](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/report-type-radio.webp){ style="width: 1059px; max-width: 100%" }

![Результат запроса](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/report-type-radio-result.webp){ style="width: 1059px; max-width: 100%" }

## Создание статистики по развернутым ответам

Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам содержащим тип `comment` *type == 'comment'*. Ниже приведены примеры подобных метрик.

  1. Количество развернутых ответов в опросах:

    ```
    sum(if(type == 'comment', sign, 0))
    ```

    ![Пример метрики, считающей количество развернутых ответов на вопросы](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-comment.webp){ style="width: 1227px; max-width: 100%" }

  1. Количество развернутых ответов на вопросы содержащих плохие слова, заданные метрикой:

    ```
    sum(if(type == 'comment' and multiSearchAny(answer, ['badword1', 'badword2']), sign, 0))
    ```

    ![Пример метрики, считающей количество развернутых ответов на вопросы содержащих плохие слова, заданные метрикой](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-comment-bad-words.webp){ style="width: 1227px; max-width: 100%" }

  1. Количество развернутых ответов на вопросы, длина ответов которых превышает 20 символов:

    ```
    sum(if(type == 'comment' and length(answer) > 20, sign, 0))
    ```

    ![Пример метрики, считающей количество развернутых ответов на вопросы, длина ответов которых превышает 20 символов](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/metrics-type-comment-answer-over-20.webp){ style="width: 1227px; max-width: 100%" }

На примерах ниже показана конфигурация подобного отчета и результат запроса.

![Конфигурация отчета по опросам, содержащим вопросы типа `comment`](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/survey-report-type-comment.webp){ style="width: 1130px; max-width: 100%" }

![Результат запроса](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/survey-report-type-comment-result.webp){ style="width: 1210px; max-width: 100%" }

---

## Пример запроса комплексного отчета

Для создания запроса комплексного отчета будут использоваться все ранее описанные метрики. На примере ниже показан подобный запрос с группировкой по временным интервалам по часам в течение дня:

![Пример запроса комплексного отчета](https://webim.ru/kb/img/for-admins/surveys/surveys-reports-guide/survey-report-whole.webp){ style="width: 1588px; max-width: 100%" }

---

Источник: https://webim.ru/kb/for-admins/surveys/surveys-reports-guide.html
