Валідація відповідей
Один із способів забезпечити якість даних — додати обмеження до полів даних у вашій формі. Обмеження допомагають запобігти введенню користувачами недійсних або неможливих відповідей. Наприклад, при запиті доходу особи ви хочете уникнути нереалістичних значень, таких як від’ємні числа або надзвичайно великі значення. Додати обмеження даних у форму легко. Просто виконайте наступні кроки:
- Додайте новий стовпець з назвою “constraint” до вашої форми.
- У стовпці “constraint” введіть формулу, що визначає обмеження на відповідь.
Приклад
Розглянемо приклад, де ми хочемо додати обмеження для доходу особи. Обмеження вимагає, щоб дохід знаходився між $0 і $1 000 000. Ось як можна налаштувати обмеження:
name | constraint |
|---|---|
| Income | . >= 0 & . <= 1000000 |
У прикладі вище “.” у формулі посилається назад на змінну питання, яка представляє значення, введене користувачем для питання “Income”. Обмеження “. >= 0 && . <= 1000000” гарантує, що введений дохід більший або рівний 0 і менший або рівний 1 000 000.
Жорстке обмеження
Жорстке обмеження повністю блокує відправлення форми, якщо введене значення не задовольняє виразу. Анкетер не може продовжити, доки не введе дійсне значення.
Щоб додати жорстке обмеження, введіть свій вираз у стовпець constraint. За бажанням додайте зрозуміле повідомлення в constraint_message:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | age | Age of respondent | . > 0 and . <= 120 | Age must be between 1 and 120 |
| decimal | temperature | Body temperature (°C) | . >= 35 and . <= 42 | Temperature must be between 35°C and 42°C |
| text | phone | Phone number | regex(., '^[0-9]{10}$') | Enter a 10-digit phone number |
Кілька умов
Об’єднуйте умови за допомогою and / or:
. >= 0 and . <= 100
. = 'yes' or . = 'no'
Використання regex() для перевірки за шаблоном
Функція regex(value, pattern) перевіряє значення за регулярним виразом:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| text | Email address | regex(., '^[^@]+@[^@]+\.[^@]+$') | Enter a valid email address | |
| text | zip_code | ZIP code | regex(., '^[0-9]{5}$') | Enter a 5-digit ZIP code |
Посилання на інші поля в обмеженні
Використовуйте ${fieldname} для посилання на значення з інших питань:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | end_year | End year | . >= ${start_year} | End year must be after start year |
| decimal | loan_repaid | Amount repaid | . <= ${loan_amount} | Cannot repay more than the loan amount |
М’яке попередження
М’яке попередження (також зване м’яким обмеженням або застереженням) попереджає анкетера, що значення виглядає незвичним, але все одно дозволяє продовжити. Це корисно, коли значення технічно дійсне, але статистично малоймовірне.
rtSurvey підтримує м’які попередження за допомогою стовпця constraint зі спеціальним підходом constraint_type, або через appearance soft у поєднанні з полем note.
Найпоширеніший шаблон — використовувати note з виразом relevant, що позначає підозріле значення, у парі з питанням типу acknowledge для підтвердження:
type | name | label | relevant |
|---|---|---|---|
| integer | children | Number of children | |
| note | children_warning | Warning: You entered ${children} children. Please confirm this is correct. | . > 15 |
| trigger | children_confirm | Confirm the number of children is correct | ${children} > 15 |
М’яке попередження лише з constraint_message
Для простішого м’якого попередження можна сформулювати обмеження так, щоб воно попереджало про екстремальні значення, але все одно дозволяло широкий діапазон:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | children | Number of children | . >= 0 and . <= 30 | This value seems very high. Please verify. |
Різниця між жорсткими та м’якими обмеженнями важлива для якості даних. Використовуйте жорсткі обмеження для логічно неможливих значень (від’ємний вік, температура вище 100°C). Використовуйте м’які попередження для статистично малоймовірних, але не неможливих значень — ви не хочете блокувати законні граничні випадки.