Создание отчетов по опросникам
У каждого отчета есть идентификатор 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
- текст, содержащий оценку (с одним числом), вариант ответа (текст одного из вариантов) или развернутый ответ на вопрос
Создание статистики по оценкам
Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам, содержащим тип 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)
В метрике, считающей среднюю оценку по конкретному опроснику, используется уточнение 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)
В метрике, считающей среднюю оценку по конкретному вопросу во всей системе, также добавляется уточнение с номером конкретного опросника, формы и вопроса: 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)
Описанные выше подходы позволяют считать среднюю, максимальную и минимальную оценку в любых пределах, начиная от одного вопроса, заканчивая всеми вопросами в системе.
stars
Создание статистики по вопросам с возможностью выбора варианта ответа
Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам содержащим тип radio
: type == 'radio'
Метрика, считающая количество ответов для конкретного вопроса с выбором ответа, может использоваться для различных опросников, аналогично статистике по оценкам. Пример формулы расчета:
sum(if(survey_id == 1 and form_id == 0 and question_id == 2 and type =='radio', sign, 0)
Ниже приведены примеры метрик, считающих количество определенных ответов из вариантов.
Количество ответов "Ответ 1" в вопросе с выбором в опроснике 1:
sum(if(survey_id == 1 and form_id == 0 and question_id == 2 and type =='radio' and answer = "Ответ 1", sign, 0)

Количество ответов "Ответ 2" в вопросе с выбором в опроснике 1:
sum(if(survey_id == 1 and form_id == 0 and question_id == 2 and type =='radio' and answer = "Ответ 2", sign, 0)
N.B.
Такие метрики следует использовать для конкретных вопросов, так как подсчет ответов основывается на точной формулировке ответов заданных при создании опросника.
На примерах ниже показана конфигурация подобного отчета и результат запроса:
radio
Создание статистики по развернутым ответам
Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам содержащим тип comment
type == 'comment'. Ниже приведены примеры подобных метрик.
-
Количество развернутых ответов в опросах:
sum(if(type == 'comment', sign, 0)
Пример метрики, считающей количество развернутых ответов на вопросы -
Количество развернутых ответов на вопросы содержащих плохие слова, заданные метрикой:
sum(if(type == 'comment' and multiSearchAny(answer, ['badword1', 'badword2']), sign, 0)
Пример метрики, считающей количество развернутых ответов на вопросы содержащих плохие слова, заданные метрикой -
Количество развернутых ответов на вопросы, длина ответов которых превышает 20 символов:
sum(if(type == 'comment' and length(answer) > 20, sign, 0)
Пример метрики, считающей количество развернутых ответов на вопросы, длина ответов которых превышает 20 символов На примерах ниже показана конфигурация подобного отчета и результат запроса:
Конфигурация отчета по опросникам, содержащим вопросы типа comment
Результат запроса
Пример запроса комплексного отчета
Для создания запроса комплексного отчета будут использоваться все ранее описанные метрики. На примере ниже показан подобный запрос с группировкой по временным интервалам по часам в течение дня: