Создание отчетов по опросникам
У каждого отчета есть идентификатор 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)
Описанные выше подходы позволяют считать среднюю, максимальную и минимальную оценку в любых пределах, начиная от одного вопроса, заканчивая всеми вопросами в системе.
Создание статистики по вопросам с возможностью выбора варианта ответа
Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам содержащим тип 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.
Такие метрики следует использовать для конкретных вопросов, так как подсчет ответов основывается на точной формулировке ответов заданных при создании опросника.
На примерах ниже показана конфигурация подобного отчета и результат запроса:
Создание статистики по развернутым ответам
Суть составления метрик по оценкам заключается в формировании выражения, делающего выборку по строкам содержащим тип 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)
На примерах ниже показана конфигурация подобного отчета и результат запроса:
Пример запроса комплексного отчета
Для создания запроса комплексного отчета будут использоваться все ранее описанные метрики. На примере ниже показан подобный запрос с группировкой по временным интервалам по часам в течение дня: