식 형성

식은 현장조사에서 질문의 기본 동작을 제어하는 데 사용할 수 있습니다. 관련 열의 식을 사용하면 이전 답변을 기반으로 하나의 질문이나 여러 질문을 표시하거나 숨길 수 있습니다. 질문이 관련 열의 식을 통해 숨겨진 경우 해당 질문에 대해 데이터가 제출되지 않습니다.

비고:

ArcGIS Survey123 현장 앱에서 관련 식으로 인해 이후에 숨겨진 질문에 대한 답변을 입력하는 경우 해당 답변은 지워집니다. 질문이 다시 관련 질문이 된 경우 새 답변을 입력해야 합니다. 웹 앱에서는 답변이 지워지지 않으므로 질문이 다시 관련 질문이 된 경우 이전에 입력한 답변이 사용됩니다.

식은 읽기 전용 열에도 적용할 수 있습니다. 해당 열은 식의 결과에 따라 질문이나 그룹에 대한 입력을 비활성화할 수 있습니다. 또한 필수 열은 식을 지원하므로 사용자가 현장조사를 통해 특정 조건에서만 질문에 답변하도록 할 수 있습니다.

비고:

읽기 전용 식은 웹 앱에서 지원되지 않습니다.

이전 질문은 ${field_name} 형식이 있는 식에서 항상 참조되어야 합니다.

질문 표시 여부

body::esri:visible 열을 사용하면 식이 포함된 질문을 뷰에서 숨길 수 있습니다. 이 열은 질문에 포함된 식이 true로 평가되지 않는 경우 질문을 숨기는 동시에 질문의 콘텐츠는 유지합니다. 예를 들어, ${edit_location}='yes' 식으로 인해 edit_location 질문이 yes와 동일한 경우에만 질문이 표시됩니다.

이 동작은 관련 열과 유사하며 두 열 모두 열의 식이 true로 평가될 때까지 질문을 숨깁니다. 주요 차이점은 body::esri:visible은 식에 의해 보이지 않게 된 질문의 값을 지우지 않으며 피처 레이어에 기존 값을 제출한다는 점입니다. 관련이 없을 때 질문의 값이 계산되거나 저장되지 않도록 하려면 body::esri:visible 대신 관련 열을 사용합니다.

body::esri:visible 또는 관련 열을 사용하여 질문 표시 여부를 제어하는 경우, 필수, 기본값, 제약 조건, 입력 마스크는 질문이 보이는 경우에만 적용됩니다.

숨겨진 질문 유형숨겨진 모양을 사용하여 질문의 표시 여부를 제어할 수도 있지만, 식으로 제어할 수는 없습니다.

비고:

이미지, 오디오, 파일 질문은 body::esri:visible 열로 숨김 기능을 지원하지 않습니다.

간단한 식

이러한 식에 대한 최적의 사용 방법은 이전 질문에서 특정 답변이 제공되지 않았다면 질문의 동작이나 가시성을 변경하는 것입니다. 예를 들어 다음 식은 이전 질문의 답변이 true였는지 확인합니다.

${previous_question} = 'true'

다음 예시에서는 이전 질문의 답변이 100 이상이었는지 확인합니다.

${previous_question} < 100

선다형 질문 유형의 값은 다른 질문 유형과 다르게 저장됩니다. 즉, 각각의 답변은 선택된 순서로 입력되며 쉼표로 구분됩니다. 예를 들어 답변 A와 B를 순서대로 선택하면 A,B 응답이 제공됩니다. 선다형 질문을 식의 일부로 사용하려면 selected 함수를 사용해야 합니다. 다음 예시는 사용자가 이전 질문에 A로 답변했는지 확인하며 선택한 다른 답변에 관계없이 작동합니다.

selected(${previous_question}, 'A')

count-selected 함수는 선다형 질문에서 선택된 옵션의 수를 세며 그 수와 함께 연산자로 사용할 숫자를 제공합니다. 다음 예시에서는 이전 질문이 2개 이상의 선택된 옵션을 가지고 있는지 확인합니다.

count-selected(${previous_question}) > 2

count-selected 함수를 multiline 모양의 이미지 또는 파일 질문에 대한 제약 조건으로 사용하여 제출된 파일 수를 제어할 수 있습니다.

수학식

다음 예시에는 여러 연산자와 질문이 합쳐져 있습니다.

${previous_question} + ${other_previous_question} <= 100

수학 연산자를 사용할 때는 값을 숫자로 캐스팅해야 할 수 있습니다. 위의 예시에서 previous_questionother_previous_question은 정수나 소수로 간주되었지만 질문 유형이 문자열이었다면 다음과 같이 캐스팅합니다.

int(${previous_question}) + int(${other_previous_question}) <= 100

수학 식을 날짜 질문에 수행하여 1970년 1월 1일 이후의 경과 시간을 밀리초 단위로 나타낸 에포크로 저장할 수도 있습니다. 다음 식은 이전 질문의 답변이 오늘부터 15일 이전 날짜보다 오래된 경우에만 질문을 표시합니다.

if( ${previous_question}='',false,today() - ${previous_question} > 1000*60*60*24*15)

정규식

정규식은 문자열에서 패턴을 일치시키는 데 사용되는 문자의 시퀀스입니다. Survey123에서 패턴이 일치하면 식이 true를 반환하고 패턴이 일치하지 않으면 식이 false를 반환합니다.

식을 수용하는 열에 정규식을 사용하여 다른 질문에서 제공된 문자열이 주어진 서식에 해당되지 않으면 질문의 동작을 변경할 수 있습니다. 다음 예시는 다른 질문의 답변이 문자로 구성된 경우 관련 열에 배치될 때만 질문을 표시합니다.

regex(${question},'[A-Za-z]')

다음 예시는 도로 이름에 대한 단답형 질문의 choice_filter 열에 배치될 때만 도시라는 이전 질문에서 선택된 도시 이름과 일치하는 citystreets 목록 내에 포함된 도로의 선택 항목을 보여줍니다.

regex(citystreets,${city})

정규식에 대한 자세한 내용은 수식을 참고하세요.