Validando respostas
Uma maneira de garantir a qualidade dos dados é adicionar restrições aos campos de dados no seu formulário. As restrições ajudam a evitar que os usuários insiram respostas inválidas ou impossíveis. Por exemplo, ao perguntar sobre a renda de uma pessoa, você quer evitar valores irrealistas, como números negativos ou valores extremamente altos. Adicionar restrições de dados ao seu formulário é fácil de fazer. Siga as etapas abaixo:
- Adicione uma nova coluna chamada “constraint” ao seu formulário.
- Na coluna “constraint”, insira uma fórmula que especifica os limites da resposta.
Exemplo
Vamos considerar um exemplo em que queremos adicionar uma restrição para a renda da pessoa. A restrição exige que a renda esteja entre R$ 0 e R$ 1.000.000. Veja como você pode configurar a restrição:
name | constraint |
|---|---|
| Income | . >= 0 & . <= 1000000 |
No exemplo acima, o “.” na fórmula se refere à variável da pergunta, que representa o valor inserido pelo usuário para a pergunta “Income”. A restrição “. >= 0 && . <= 1000000” garante que a renda inserida seja maior ou igual a 0 e menor ou igual a 1.000.000.
Restrição rígida
Uma restrição rígida bloqueia completamente o envio do formulário se o valor inserido não satisfizer a expressão. O entrevistador não pode prosseguir até inserir um valor válido.
Para adicionar uma restrição rígida, insira sua expressão na coluna constraint. Opcionalmente, adicione uma mensagem legível por humanos em constraint_message:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | age | Idade do respondente | . > 0 and . <= 120 | A idade deve ser entre 1 e 120 |
| decimal | temperature | Temperatura corporal (°C) | . >= 35 and . <= 42 | A temperatura deve ser entre 35°C e 42°C |
| text | phone | Número de telefone | regex(., '^[0-9]{10}$') | Insira um número de telefone com 10 dígitos |
Múltiplas condições
Combine condições com and / or:
. >= 0 and . <= 100
. = 'yes' or . = 'no'
Usando regex() para validação de padrão
A função regex(value, pattern) testa um valor contra uma expressão regular:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| text | Endereço de e-mail | regex(., '^[^@]+@[^@]+\.[^@]+$') | Insira um endereço de e-mail válido | |
| text | zip_code | CEP | regex(., '^[0-9]{8}$') | Insira um CEP com 8 dígitos |
Referenciando outros campos em uma restrição
Use ${fieldname} para referenciar valores de outras perguntas:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | end_year | Ano de término | . >= ${start_year} | O ano de término deve ser após o ano de início |
| decimal | loan_repaid | Valor pago | . <= ${loan_amount} | Não é possível pagar mais do que o valor do empréstimo |
Alerta suave
Um alerta suave (também chamado de restrição suave ou aviso) avisa o entrevistador de que um valor parece incomum, mas ainda permite que ele prossiga. Isso é útil quando um valor é tecnicamente válido, mas estatisticamente improvável.
O padrão mais comum é usar uma nota com uma expressão relevant que sinaliza o valor suspeito, acompanhada de uma pergunta acknowledge para confirmar:
type | name | label | relevant |
|---|---|---|---|
| integer | children | Número de filhos | |
| note | children_warning | Aviso: Você informou ${children} filhos. Confirme se está correto. | . > 15 |
| trigger | children_confirm | Confirme que o número de filhos está correto | ${children} > 15 |
Alerta suave apenas com constraint_message
Para um aviso simples, você pode formular a restrição para avisar sobre valores extremos, mas ainda permitir uma ampla faixa:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | children | Número de filhos | . >= 0 and . <= 30 | Este valor parece muito alto. Por favor, verifique. |
A distinção entre restrições rígidas e suaves é importante para a qualidade dos dados. Use restrições rígidas para valores logicamente impossíveis (idades negativas, temperaturas acima de 100°C). Use alertas suaves para valores estatisticamente improváveis, mas não impossíveis — você não quer bloquear casos extremos legítimos.