XLSForm 및 rtSurvey의 calculate 질문은 양식의 다른 필드나 값을 기반으로 계산을 수행하는 데 사용됩니다. 이 질문은 사용자에게 표시되지 않고 백그라운드에서 실행되어 결과를 나중에 사용하거나 제출할 수 있도록 저장합니다.

구문

XLSForm에서 calculate 질문은 다음과 같이 정의됩니다:

typenamelabelcalculation
calculatecalc_q1${q1} + ${q2}
  • type: 이 질문 유형에는 항상 “calculate"를 사용합니다.
  • name: calculate 질문의 고유한 이름.
  • label: calculate 질문은 사용자에게 표시되지 않으므로 보통 비워 둡니다.
  • calculation: 평가할 수식.

용도

calculate 질문은 일반적으로 다음 용도로 사용됩니다:

  1. 산술 연산 수행
  2. 문자열 연결
  3. 복잡한 로직 또는 함수 적용
  4. 나중에 사용할 중간 결과 저장

예시

기본 산술

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | total    | ${price} * ${quantity} |
  

문자열 연결

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
  

함수 사용

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | age      | int((today() - ${date_of_birth}) / 365.25) |
  

rtSurvey 고급 사용

pulldata() 함수

rtSurvey는 calculate 필드에서 pulldata() 함수를 지원하며, 외부 CSV 파일에서 데이터를 가져올 수 있습니다:

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | city     | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
  

구문

pulldata()의 기본 구문은 다음과 같습니다:

  pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
  
  • ‘csv_filename’: CSV 파일 이름 (.csv 확장자 제외)
  • ‘column_to_return’: 가져올 데이터가 있는 열 이름
  • ‘key_column’: 일치 여부를 확인할 열 이름
  • ${matching_value}: 키 열에서 찾을 값 (종종 양식의 변수)

중요 참고 사항

  1. CSV 파일은 설문을 배포할 때 XLSForm과 함께 업로드해야 합니다.
  2. CSV 파일에서는 세미콜론이 아닌 쉼표를 구분자로 사용합니다.
  3. 파싱 문제를 방지하기 위해 CSV 데이터 필드 내에 쉼표를 사용하지 않습니다.
  4. pulldata()는 1대1 관계만 지원합니다. 여러 일치 항목이 발견되면 첫 번째 항목만 반환합니다.
  5. 가져올 수 있는 텍스트 길이에 제한이 있을 수 있습니다 (약 76자).
  6. CSV 데이터에 대한 항목을 유효성 검사하기 위해 제약 조건에서 pulldata()를 사용할 수 있습니다.

조건부 계산

조건부 계산에 if() 문을 사용할 수 있습니다:

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
  

모범 사례

  1. 양식 가독성을 높이기 위해 calculate 필드에 의미 있는 이름을 사용합니다.
  2. 단일 필드에서 지나치게 복잡한 계산을 피하고, 필요하다면 분리합니다.
  3. 복잡한 수식이나 외부 데이터를 사용할 때는 계산을 철저히 테스트합니다.
  4. calculate 필드는 양식이 평가될 때마다 실행되므로, 매우 복잡하거나 다수의 계산은 성능에 영향을 줄 수 있습니다.
  5. pulldata()를 사용할 때는 CSV 파일이 올바른 형식인지 확인하고, 특정 데이터와 양식 구조로 철저히 테스트합니다.

제한 사항

  • calculate 필드는 사용자가 직접 편집할 수 없습니다.
  • calculate 필드의 결과는 표시 필드에서 참조되거나 양식 로직에 사용되지 않으면 즉시 표시되지 않습니다.
이 페이지가 도움이 되었나요?