변수 재계산과 데이터 갱신
재계산은 변수의 정의와 현재 입력으로 값을 다시 구하는 동작입니다. 예를 들어 수량 변수가 달라졌을 때 합계 비용을 바로 계산할지, 사용자가 계산을 요청할 때까지 기다릴지 정할 수 있습니다.
Variables에서 변수를 선택하고 Recompute variable value를 설정합니다.
세 가지 방식
| 선택 | 동작 | 사용 예 |
|---|---|---|
| Automatically | 기본값입니다. 값이 필요할 때 계산하고 입력이 바뀌면 다시 계산합니다. 입력값이 같아 보여도 데이터 갱신이 재계산을 일으킬 수 있습니다. | 선택에 맞춰 합계나 요약을 계속 갱신합니다. |
| Only when triggered by an event | 명시적인 Recompute 이벤트가 올 때까지 계산을 기다립니다. 입력 변경이나 상위 변수의 데이터 갱신으로 자동 계산하지 않습니다. | 여러 입력을 마친 뒤 버튼으로 계산합니다. |
| On module load, and when triggered by an event | 지연 로딩을 고려하여 초기값을 한 번 계산하고 이후에는 명시적인 Recompute 이벤트에서 다시 계산합니다. | 계산한 기본값을 제공한 뒤 사용자가 갱신 시점을 정합니다. |
이벤트 기반 방식에서는 입력이나 상위 데이터가 바뀌어도 결과가 자동으로 최신 상태가 되지 않습니다. 필요한 시점에 재계산 이벤트를 구성합니다.
이 설정은 변수 정의로부터 계산하는 시점을 제어합니다. 위젯 또는 Set variable value 이벤트가 변수값을 직접 바꾸는 동작까지 차단하지는 않습니다.
지원하는 정의 유형
Function, Object set aggregation, Object property, Variable transformation, Object set filter와 SQL query에서 설정할 수 있습니다.
Object set definition 자체는 이 설정을 직접 지원하지 않습니다. 객체 집합 필터처럼 지원되는 입력 변수의 재계산 방식을 바꾸거나, 함수를 사용하여 집합을 정의하는 경로를 사용할 수 있습니다.
이벤트로 계산 요청
Button Group 같은 위젯에 Recompute {variable name} 이벤트를 연결합니다. 어떤 재계산 방식을 선택했든 이 이벤트는 현재 입력과 정의로 새 값을 요청합니다.
이벤트로만 계산하는 변수에는 사용자가 결과를 필요로 하기 전에 실행할 수단을 제공합니다. 대상 변수를 다시 계산한다고 해서 이벤트가 필요한 상위 입력까지 강제로 다시 계산하지는 않습니다. 필요한 입력을 먼저 준비합니다.
지연 로딩과 데이터 갱신
지연 계산은 화면에 보이는 위젯이나 레이아웃, 또는 필요한 다른 변수가 값을 요구할 때까지 계산을 미룰 수 있습니다. On module load를 선택했어도 실제 초기 계산은 처음 값이 필요한 시점에 일어날 수 있습니다.
가시성 조건처럼 레이아웃을 제어하는 값은 해당 섹션이 숨겨져 있어도 필요할 수 있습니다. 섹션을 숨기는 것만으로 관련 계산 전체가 멈추지는 않습니다.
액션 제출, 모듈 데이터 새로고침과 자동 새로고침 결과의 반영은 자동 계산 변수의 재계산을 일으킬 수 있습니다. 함수, 집계, 객체 속성과 변환이 이에 해당하며 결과값이 같아도 계산을 다시 할 수 있습니다.
객체 집합 변수의 값과 위젯이 표시하는 객체 데이터는 별개입니다. 집합을 반환하는 함수의 재계산을 제어해도 표의 객체 데이터가 동결되지는 않습니다. 위젯은 액션이나 데이터 갱신 뒤에 데이터를 다시 읽을 수 있습니다.
사용자 변경과 순서
위젯이나 이벤트로 계산 변수의 값을 바꾼 뒤 재계산이 일어나면 정의에서 계산한 값으로 덮어씁니다. 세션 중 사용자가 입력한 값을 유지하려면 지원되는 이벤트 기반 방식을 사용하거나 별도 Static 변수에 입력을 보관합니다.
한 이벤트 목록에서 Recompute 다음에 Set variable value를 배치해도 새 계산 결과를 복사한다는 보장이 없습니다. 이전 값이나 loading 상태를 복사할 수 있습니다. 이벤트 실행 순서에 맞춰 종속 단계를 사용자 트리거로 나누고 계산이 완료된 뒤 진행하도록 합니다.
예상하지 않은 재계산은 변수 계보 그래프에서 입력과 소비 위젯, 값을 직접 바꾸는 위젯을 추적하여 확인합니다.
계산할 데이터 구성
조건에서 선택한 값을 별도 변수에 전달하려면 객체 집합 필터의 값 추출을 사용합니다. 여러 필드를 묶은 함수 입출력은 Struct 변수로 구성합니다. 연결 객체나 같은 객체의 속성에서 조회 시점에 값을 계산하는 기능은 Workshop 파생 속성에서 설명합니다.