응답 유효성 검사
데이터 품질을 보장하는 한 가지 방법은 양식의 데이터 필드에 제약을 추가하는 것입니다. 제약 조건은 사용자가 잘못되거나 불가능한 답변을 입력하는 것을 방지합니다. 예를 들어 소득을 물어볼 때 음수나 매우 높은 값과 같은 비현실적인 값을 피하려고 합니다. 양식에 데이터 제약을 추가하는 것은 쉽습니다. 아래 단계를 따르세요:
- 양식에 “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 | 응답자 나이 | . > 0 and . <= 120 | 나이는 1에서 120 사이여야 합니다 |
| decimal | temperature | 체온 (°C) | . >= 35 and . <= 42 | 체온은 35°C에서 42°C 사이여야 합니다 |
| text | phone | 전화번호 | regex(., '^[0-9]{10}$') | 10자리 전화번호를 입력하세요 |
다중 조건
조건을 and / or로 결합합니다:
. >= 0 and . <= 100
. = 'yes' or . = 'no'
패턴 유효성 검사를 위한 regex() 사용
regex(value, pattern) 함수는 정규 표현식에 대해 값을 테스트합니다:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| text | 이메일 주소 | regex(., '^[^@]+@[^@]+\.[^@]+$') | 유효한 이메일 주소를 입력하세요 | |
| text | zip_code | 우편번호 | regex(., '^[0-9]{5}$') | 5자리 우편번호를 입력하세요 |
제약에서 다른 필드 참조
다른 질문의 값을 참조하려면 ${fieldname}을 사용합니다:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | end_year | 종료 연도 | . >= ${start_year} | 종료 연도는 시작 연도 이후여야 합니다 |
| decimal | loan_repaid | 상환 금액 | . <= ${loan_amount} | 대출 금액보다 많이 상환할 수 없습니다 |
소프트 알림
소프트 알림 (소프트 제약 또는 경고라고도 함)은 값이 비정상적으로 보인다는 것을 조사원에게 경고하지만 진행을 허용합니다. 이는 기술적으로 유효하지만 통계적으로 가능성이 낮은 값일 때 유용합니다.
rtSurvey는 constraint 열의 특수 constraint_type 접근 방식을 사용하거나 메모 필드와 결합된 soft appearance를 통해 소프트 알림을 지원합니다.
가장 일반적인 패턴은 의심스러운 값에 플래그를 표시하는 relevant 표현식과 함께 note를 사용하고, 확인을 위한 acknowledge 질문을 짝지어 사용하는 것입니다:
type | name | label | relevant |
|---|---|---|---|
| integer | children | 자녀 수 | |
| note | children_warning | 경고: ${children}명의 자녀를 입력했습니다. 올바른지 확인해 주세요. | . > 15 |
| trigger | children_confirm | 자녀 수가 올바른지 확인하세요 | ${children} > 15 |
constraint_message만 있는 소프트 알림
더 간단한 소프트 경고의 경우 극단적인 값에 경고하지만 넓은 범위는 허용하도록 제약을 설정할 수 있습니다:
type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| integer | children | 자녀 수 | . >= 0 and . <= 30 | 이 값이 매우 높아 보입니다. 확인해 주세요. |
하드 제약과 소프트 제약의 구분은 데이터 품질에 중요합니다. 논리적으로 불가능한 값 (음수 나이, 100°C 이상의 체온)에는 하드 제약을 사용합니다. 통계적으로 가능성은 낮지만 불가능하지 않은 값에는 소프트 알림을 사용합니다 — 합법적인 엣지 케이스를 차단하고 싶지 않습니다.