반복

XLSForm에는 질문 컬렉션을 여러 번 반복할 수 있습니다. 반복은 다음과 같은 예시에서 사용할 수 있습니다.

  • 하나의 현장조사에서 동일한 질문에 대한 여러 답변을 취득합니다.
  • 한 가구 내의 각 구성원에 대해 이름, 나이, 성별과 같이 더 작은 규모의 레코드 컬렉션을 각각 취득합니다.
  • 하나의 현장조사에서 여러 맵 질문을 취득합니다.

단일 질문에 대해 여러 응답을 제공하기 위한 반복

반복이 포함된 현장조사를 발행하면 각 반복은 피처 레이어의 릴레이트 테이블 또는 관련 레이어(반복에 지오포인트, 지오추적, 지오쉐이프 질문이 포함된 경우)로 생성됩니다.

반복 사용

질문 컬렉션을 반복하여 여러 응답을 취득하려면 스프레드시트의 현장조사 탭에서 다음 단계를 완료합니다.

  1. 반복을 시작할 행의 유형 열에 반복 시작을 입력합니다.
  2. 반복의 이름을 Name 열에 제공합니다.
  3. 이 항목 아래의 행에서 반복에 포함하려는 질문을 입력합니다.
  4. 질문을 입력한 직후에 반복 종료Type 열에 입력합니다.

현장조사에 질문 컬렉션이 생성되며 이러한 질문 컬렉션은 현장조사 결과에 반복적으로 추가할 수 있습니다. 기본 설정에 따라 질문을 반복할 수 있는 횟수에는 제한이 없습니다.

반복 내 첫 번째 지오포인트 질문의 포인트 위치는 현장조사의 모든 맵에 표시될 수 있습니다. 자세한 내용은 맵의 포인트 중첩을 참고하세요.

모양

반복 시작 질문의 모양 열을 숨김으로 설정하면 시작할 때 질문 컬렉션이 표시되지 않습니다. 반복의 질문을 보려면 사용자가 추가 버튼을 클릭해야 합니다. 이 버튼은 현장조사에서 반복된 질문을 완료할 필요가 없는 경우에 유용합니다. 이 모양은 시작 반복 질문에 정의됩니다.

현장 앱의 반복 질문에 대한 숨김 모양

반복이 숨김으로 설정되어 있고 반복 수가 0인 경우 반복 컨트롤과 해당 레이블이 표시되지 않습니다.

반복 시작 질문의 모양을 축소로 설정하면 시작할 때 반복이 축소된 상태로 나타나며 사용자가 확장할 수 있습니다. 이는 사용자가 읽고 탐색하기에 어려울 수 있는 대규모 현장조사에 유용합니다. 이 모양은 시작 반복 질문에 정의됩니다.

다른 모양과는 달리 반복은 모양을 숨김 축소로 설정하여 숨김과 축소를 모두 동시에 사용할 수 있습니다. 이는 질문을 축소된 방식과 숨겨진 방식 둘 다로 반복에 표시합니다.

반복 시작 질문의 모양을 테이블 형식으로 설정하면 반복에 포함된 질문이 테이블로 표시됩니다. 자세한 내용은 테이블 형식 반복을 참고하세요.

비고:

Survey123 Connect에서는 Survey123 현장 앱 또는 Survey123 웹 앱에서 사용하는 현장조사의 반복에 대해 다음 모양도 설정할 수 있습니다.

  • 설정 시트의 스타일 열을 페이지로 설정하고 각 반복 시작 질문의 모양을 현장 목록으로 설정하면 반복 가능한 질문 컬렉션이 각각 별도의 현장조사 페이지에 표시됩니다. 이 동작은 그룹에서도 동일합니다.
  • 설정 시트의 스타일 열을 고정 격자 또는 동적 격자로 설정하면 현장조사의 반복에 포함된 질문이 격자 레이아웃으로 표시되도록 설정할 수 있습니다. 이 동작은 그룹에서도 동일합니다.

테이블 형식 반복

비고:

이 섹션에서는 Survey123 StudioSurvey123 Mobile에서만 사용할 수 있는 기능을 설명합니다.

Survey123 Connect, Survey123 현장 앱, Survey123 웹 앱에서는 테이블 형식 모양 및 관련 XLSForm 매개변수가 무시됩니다.

반복 시작 질문의 모양을 테이블 형식으로 설정하면 반복에 포함된 질문이 테이블로 표시됩니다. 테이블 형식 뷰에서는 반복의 레코드가 행으로 표시되고, 반복의 질문은 열로 표시됩니다. 테이블 형식 뷰에서는 셀에서 직접 데이터를 편집하고 반복에 포함된 레코드를 정렬하거나 탐색할 수 있습니다.

테이블 형식 뷰는 다음 이미지에 표시되어 있습니다.

반복의 테이블 형식 뷰

위 이미지의 설명선은 아래에 나와 있습니다.

  1. 각 행의 메뉴 버튼을 눌러 양식 뷰에서 편집, 새 레코드로 복사, 삭제 옵션에 접근합니다.
  2. 읽기 전용 아이콘은 해당 질문(열)을 테이블 형식 뷰에서 편집할 수 없음을 나타냅니다.
  3. 열 머리글을 눌러 테이블 뷰를 오름차순으로 정렬하고, 필요에 따라 다음 작업을 수행합니다.
    • 열 머리글을 다시 누르면 내림차순으로 정렬됩니다.
    • 열 머리글을 세 번째로 누르면 정렬이 해제됩니다(기존 행 순서로 돌아감). 또는 다른 열 머리글을 눌러 해당 열을 기준으로 정렬할 수 있습니다.
  4. 셀을 눌러 해당 값을 편집합니다. 일부 질문 유형만 테이블 형식 뷰에서 편집할 수 있습니다.
  5. 셀의 지우기 버튼을 눌러 값을 삭제합니다.

양식 뷰에서도 개별 레코드를 편집할 수 있습니다. 양식 뷰에서는 개별 반복 레코드를 모든 기능을 갖춘 별도의 현장조사 양식으로 표시됩니다.

테이블 형식 모양은 숨김축소 모양과 함께 사용할 수 있습니다.

테이블 형식 반복을 시작하려면 Survey123 Studio에서 다음 단계를 완료하세요.

  1. 반복 시작 질문의 모양을 테이블 형식으로 설정합니다.

    질문을 추가할 때까지는 테이블 형식 뷰는 비어 있습니다.

  2. 각 질문의 body::esri:style 열에 showInTabularView=true를 입력하여 테이블 형식 뷰에 하나 이상의 질문을 추가합니다.
  3. 선택적 매개변수를 사용하여 테이블 형식 뷰를 구성합니다.

테이블 형식 뷰에 질문 추가

반복에 포함된 질문의 body::esri:style 열에 showInTabularView=true를 입력하여 테이블 형식 뷰에 질문을 추가할 수 있습니다. 테이블 형식 뷰에서 다음 질문 유형을 편집할 수 있습니다.

  • 텍스트
  • 정수
  • 소수
  • 날짜
  • 시간
  • 날짜 및 시간

그 외의 모든 질문 유형은 테이블 형식 뷰에서 읽기 전용 열로 표시됩니다.

주의:

테이블 형식 뷰에 질문을 추가할 때는 다음 사항을 고려하세요.

  • 반복에서 읽기 전용 열에 식(yes 포함)이 있는 질문은 테이블 형식 뷰에서 편집할 수 없습니다.
  • 반복에서 body::esri:visible 열에 식이 있거나 숨김 모양이 설정된 질문은 테이블 형식 뷰에 표시되지 않습니다.
  • 반복에서 관련 열에 식이 있는 질문은 테이블 형식 뷰에 표시되지 않습니다.
  • 반복에서 필수 열에 식(yes 포함)이 있거나 제약 조건 열에 식이 있는 질문은 테이블 형식 뷰에 표시됩니다. 필수 조건이나 제약 조건이 하나 이상 충족되지 않으면 테이블 형식 뷰 위에 일반 경고가 표시되며, 오류가 있는 각 레코드(행) 옆에 경고 아이콘이 표시됩니다. 이러한 문제가 해결될 때까지는 현장조사를 제출할 수 없습니다. 양식 뷰에서 레코드를 편집하여 개별 질문에 대한 제약 조건 및 필수 경고 메시지를 확인할 수 있습니다. 반복에 오류가 있는 경우, body::esri:style 열의 editInFormView 매개변수가 false로 설정되어 있는 경우에도 양식 뷰에서 편집 옵션을 사용할 수 있습니다.

테이블 형식 뷰 옵션

반복 시작 질문의 body::esri:style 열에 매개변수를 지정하여 테이블 형식 뷰의 레코드(행)와 관련된 옵션을 구성할 수 있습니다. 이러한 선택적 매개변수는 아래 테이블에 설명되어 있습니다. 여러 매개변수를 공백으로 구분하여 추가할 수 있습니다. 예를 들면 다음과 같습니다.

addRecordMode=form copyToNewRecord=false

반복 시작 질문의 모양을 테이블 형식으로 설정하고 이 질문의 body::esri:style 열에 어떠한 매개변수도 지정하지 않으면 기본 설정에 따라 테이블 형식 뷰에서 양식 뷰에서 편집, 새 레코드로 복사, 삭제 옵션을 사용할 수 있습니다.

매개변수설명
addRecordMode

테이블 형식 뷰에서 레코드 추가 버튼 및 새 레코드로 복사 옵션의 모드를 지정합니다. 기본값은 row입니다. 값이 row이면 새 레코드가 테이블 형식 뷰에 추가됩니다. 값이 form이면 새 레코드가 양식 뷰에서 열립니다.

값: row | form

예:

addRecordMode=form
editInFormView

테이블 형식 뷰에서 양식 뷰에서 편집 옵션을 표시하거나 숨깁니다. 기본값은 true입니다.

비고:

반복에 오류가 있는 경우, editInFormView 매개변수가 false로 설정되어 있는 경우에도 양식 뷰에서 편집 옵션이 활성화됩니다.

값: true | false

예:

editInFormView=false
copyToNewRecord

테이블 형식 뷰에서 새 레코드로 복사 옵션을 표시하거나 숨깁니다. 이 옵션을 사용하면 사용자가 반복에 포함된 레코드를 복제할 수 있습니다. 기본값은 true입니다. addRecordMode 매개변수는 복제된 레코드가 추가되는 방식을 결정합니다.

값: true | false

예:

copyToNewRecord=true
editInTabularView

테이블 형식 뷰에서 편집 기능을 활성화하거나 비활성화합니다. 기본값은 true입니다. 값이 false이면 테이블 형식 뷰의 모든 셀이 읽기 전용이 됩니다.

값: true | false

예:

editInTabularView=false

테이블 형식 반복 사용 시 제한 사항

테이블 형식 반복에는 다음 제한 사항이 적용됩니다.

  • 테이블 형식 모양은 중첩 반복에서 지원되지 않습니다.
  • 새 레코드로 복사 옵션은 첨부 파일 또는 중첩 반복을 새 레코드로 복사하지 않습니다. 이는 발신함 폴더 또는 수신함에서 현장조사 레코드를 새 레코드로 복사할 때의 작동 방식과 일치합니다.
  • 테이블 형식 뷰가 정렬된 상태에서는 키를 입력할 때마다 정렬이 즉시 업데이트되므로 정렬이 적용된 열의 값을 편집하지 않는 것을 권장합니다.
  • 테이블 형식 반복이 관련식이 있는 그룹 안에 있는 경우, 해당 그룹이 관련 조건을 충족하면 테이블 형식 뷰가 비어 있게 됩니다.
  • 오른쪽에서 왼쪽으로 쓰는 언어에서는 테이블 형식 뷰의 열 순서가 반대로 바뀌지 않으며, 열 머리글이 항상 오른쪽에 정렬되지는 않습니다.

반복 레코드 수 지정

비고:

이 섹션에서는 Survey123 ConnectSurvey123 현장 앱에서만 사용할 수 있는 기능을 설명합니다. 이 기능은 Survey123 Studio 또는 Survey123 Mobile에서는 사용할 수 없습니다.

반복에 포함할 레코드 수를 지정하려면 다음 단계를 완료하여 반복 수를 설정합니다.

  1. 반복을 시작할 행에서 현장조사 탭의 유형 열에 반복 시작을 입력합니다.
  2. 반복 수에 대한 숫자 값을 repeat_count 열에 제공합니다.

    필요에 따라 숫자 값을 반환하는 질문 이름 또는 계산을 제공할 수 있습니다.

  3. 반복의 이름을 Name 열에 제공합니다.
  4. 이 항목 아래의 행에서 반복에 포함하려는 질문을 입력합니다.
  5. 마지막 행에서 반복 종료Type 열에 입력합니다.

사용자가 현장조사를 열면 repeat_count 열에 설정된 반복 횟수가 생성되어 있습니다. 사용자는 반복을 생성하거나 삭제할 수 없습니다.

사용자는 설문 응답이 제출되기 전에 repeat_count 값으로 정의된 모든 반복 레코드를 탐색해야 합니다. 그렇지 않으면 사용자가 레코드를 탐색할 때까지 식 및 기본값을 반복에 적용할 수 없으므로 일부 반복 레코드가 제출되지 않습니다. 모든 반복이 제출되도록 하려면 반복 내 필수 질문을 만들어야 합니다. 관련 문 또는 조건부 필수 문이 적용된 반복 내 질문은 제출 시 평가되지 않습니다.

비고:

반복 수 변경에 따른 반복 동작은 사용자가 현장조사 응답을 작성하는지 아니면 이전에 제출한 응답을 편집하는지에 따라 다음과 같이 달라집니다.

  • 설문 응답을 작성하는 경우 데이터가 있고 새 반복 수보다 높은 값을 가진 모든 레코드를 삭제하는 버튼이 현장 앱에서 반복 상단에 표시되며 비어 있는 레코드는 자동으로 삭제됩니다. 해당 버튼을 눌렀는지와 관계없이 현장조사 응답을 제출하면 비어 있는 레코드를 제외한 모든 레코드가 전송됩니다.
  • 기존 설문 응답을 편집하는 경우 레코드 수가 반복 수와 일치하지 않음을 나타내는 메시지가 현장 앱에서 반복 상단에 표시됩니다. 새 반복 레코드는 bind::esri:parameters 열에 allowAddstrue로 설정된 경우에만 추가할 수 있습니다. 현장 앱은 기존 반복 레코드 삭제를 지원하지 않으므로 반복 수를 초과하는 레코드는 삭제할 수 없습니다. 반복 레코드 수가 반복 수와 일치하지 않더라도 편집된 설문 응답을 제출할 수 있습니다.

집계 함수

비고:

이 섹션에서는 Survey123 ConnectSurvey123 현장 앱에서만 사용할 수 있는 기능을 설명합니다. 이 기능은 Survey123 Studio 또는 Survey123 Mobile에서는 사용할 수 없습니다.

집계 함수를 사용하여 반복 전반의 응답에서 파생된 값을 반환할 수 있습니다. 이렇게 하려면 반복 내부의 질문이 반복 외부의 질문에서 참조됩니다. 예를 들어 다음 수식에서는 반복 전반의 단일 질문에 대한 응답 수를 계산합니다.

count(${repeated_question})

다음 함수를 사용하여 응답을 집계할 수 있습니다.

  • count
  • sum
  • min
  • max
  • join

이러한 함수는 현재 현장조사 응답에만 적용되며 피처 레이어의 다른 레코드는 고려하지 않습니다. 또한 반복 내 sumcount를 사용하는 질문을 포함할 수 있습니다. 그러나 sumcount 값은 반복에 새로 추가되는 각 레코드에 대해 계산되지만, 반복의 기존 항목에 대한 계산은 자동으로 업데이트되지 않습니다. 이러한 계산은 질문 옆의 새로 고침 버튼을 사용하여 수동으로 새로 고침할 수 있습니다. minmax는 반복 외부에서만 사용할 수 있습니다.

비고:

Survey123 현장 앱에서 사용하는 경우 sum, count, join 함수는 반복 내부 또는 외부에 배치할 수 있습니다. sum, count, joinSurvey123 웹 앱에서 사용하려는 경우 반복 외부에 배치해야 합니다. 반복 외부의 sum, count, join 값은 반복 내부의 계산에서 참조할 수 있습니다.

join 함수를 사용하여 문자열이 반환되는 질문을 연결할 수 있습니다. 또한 sum 함수를 사용하여 반복 내부의 지오포인트 질문을 반복 외부에 있는 지오추적 또는 지오쉐이프 질문으로 연결할 수 있습니다.

해당 함수를 사용하는 방법에 대한 자세한 내용은 수식을 참고하세요.

반복 레코드의 색인 반환

position(..) 함수를 사용하여 반복에서 반복 레코드의 색인을 반영하는 정수를 반환할 수 있습니다. 예를 들어, 반복에서 첫 번째 레코드는 1을 반환하며, 두 번째는 2를 반환합니다. 다음 예시에서 position(..) 함수는 반복의 숨겨진 정수 질문에 사용됩니다.

XLSForm에서 position(..) 함수의 예

주의:

position(..) 함수는 반복 외부 또는 반복 내 그룹에서 사용될 때 Survey123 MobileSurvey123 현장 앱에서는 항상 0을 반환하는 반면, Survey123 웹 앱에서는 1을 반환합니다.

식에서 position(..) 함수를 사용할 수도 있습니다. 다음 예시에서 selected-at() 함수는 position(..)을(를) 사용하여 현재 반복 레코드와 같은 위치에 선다형(select_multiple) 질문에서 선택된 선택 항목을 반환하며 반복의 선택 항목을 참고 사항으로 표시합니다. selected-at() 함수는 선택 항목의 인덱스를 0부터 매기므로, 두 인덱스가 일치하도록 다음과 같이 position(..)에서 1을 뺍니다.

selected-at(${issues}, position(..)-1)

XLSForm의 position(..) 및 selected-at() 함수 예시

position(..) 함수를 indexed-repeat()과(와) 조합해 사용하여 특정 반복 레코드에서 질문 값을 추출할 수 있습니다.

색인된 반복의 값 사용

비고:

이 섹션에서는 Survey123 ConnectSurvey123 현장 앱에서만 사용할 수 있는 기능을 설명합니다. 이 기능은 Survey123 Studio 또는 Survey123 Mobile에서는 사용할 수 없습니다.

indexed-repeat() 함수를 사용하여 반복 레코드에서 특정 질문의 값을 반환할 수 있습니다. 순서대로 질문 이름, 반복 이름 및 반복의 색인 번호가 필요합니다. 다음 예시에서는 반복 floor의 세 번째 레코드에서 질문 room_no에 대한 답변을 반환합니다.

indexed-repeat(${room_no}, ${floor}, 3)

indexed-repeat() 함수를 반복 내의 반복에 사용할 수 있습니다. 이렇게 사용하면 현재 표시되는 상위 반복에서 접근 가능한 값만 받게 됩니다.

주의:

indexed-repeat() 함수는 순환 참조가 발생하기 때문에 참조하는 반복 내에서 사용할 수 없습니다. 예를 들어 다음 식은 defects라는 반복 내 계산에 사용할 수 없습니다.

indexed-repeat(${defect_type}, ${defects}, 3)

제한 사항

Survey123에서 반복 사용 시 알려진 제한 사항과 예기치 않은 동작은 다음과 같습니다.

  • 현장조사에 여러 개의 반복이 포함되어 있고 이러한 반복 중 하나에 지오포인트, 지오추적, 지오쉐이프 질문이 있으면 관계 이름이 순서대로 발행되지 않을 수 있습니다.
  • 중첩된 반복은 일대다 관계만 지원하며 각 하위 관계는 하나의 상위 관계만 가질 수 있습니다.
  • 관련 열의 식 및 repeat_count 열의 식이 모두 포함된 중첩 반복은 첫 번째 반복 레코드의 저장된 기존 데이터를 모두 지웁니다. 이를 방지하려면 반복의 관련 조건이 충족되지 않을 때 반복 레코드가 생성되지 않도록 관련식을 repeat_count 식에 포함합니다.
  • 중첩 반복이 포함된 현장조사의 경우 Survey123 웹 앱 또는 Survey123 웹사이트에서 개별 응답 편집이 지원되지 않습니다.