스케줄 트리거 참조
트리거는 스케줄을 실행할 조건입니다. 시간 트리거는 지정한 순간에만 충족되고 그 순간이 지나면 충족 상태가 사라집니다. 이벤트 트리거는 이벤트가 발생한 뒤 전체 조건이 충족되어 스케줄이 실행될 때까지 충족 상태를 유지합니다. Foundry는 AND와 OR를 임의 깊이로 중첩하여 이 조건들을 결합할 수 있습니다.
시간 트리거와 cron
시간 트리거는 cron 표현식과 시간대로 정의합니다. 단순한 반복 일정은 편집기에서 선택할 수 있고, 복잡한 일정은 사용자 지정 cron 표현식을 입력합니다. 스케줄 편집기의 필드는 왼쪽부터 분, 시, 일, 월, 요일인 5필드 형식입니다.
분 시 일 월 요일
* * * * *
Data Health는 맨 앞에 초가 있는 6필드 Quartz 형식을 사용합니다. 스케줄의 5필드 표현식을 Data Health 설정에 그대로 넣지 않습니다. 스케줄 편집기는 다음 값과 확장 문자를 지원합니다.
| 필드 | 허용 값 | 허용 특수 문자 |
|---|---|---|
| 분 | 0~59 | *, -, /, , |
| 시 | 0~23 | *, -, /, , |
| 일 | 1~31 | *, -, /, ,, L |
| 월 | 1~12 또는 JAN~DEC | *, -, /, , |
| 요일 | 0~6 또는 SUN~SAT; 7도 일요일입니다. | *, -, /, ,, L, # |
특수 문자
| 문자 | 의미와 예시 |
|---|---|
* | 필드의 모든 값입니다. 분 필드의 *는 매분을 뜻합니다. |
- | 양 끝을 포함한 범위입니다. 분의 10-20은 10분부터 20분까지입니다. |
/ | 지정한 범위를 일정 간격으로 선택합니다. 시작 값만 쓰면 그 값부터 필드 최댓값까지가 범위입니다. |
, | 값, 범위 또는 간격 범위를 나열합니다. |
L | 마지막 값을 뜻하며 사용한 필드와 결합 값에 따라 의미가 달라집니다. |
# | 그달의 n번째 특정 요일을 뜻합니다. |
| 입력 위치와 값 | 선택되는 값 또는 시점 |
|---|---|
분 25/10 | 25, 35, 45, 55분입니다. |
분 25-45/10 | 25, 35, 45분입니다. |
분 10,20,30 | 10, 20, 30분입니다. |
분 10,20-30 | 10분과 20분부터 30분까지입니다. |
분 10,25-45/10 | 10, 25, 35, 45분입니다. |
일 L | 그달의 마지막 날입니다. |
요일 L | 주의 마지막 요일인 토요일입니다. |
요일 2L | 그달의 마지막 화요일입니다. |
요일 2#4 | 그달의 네 번째 화요일입니다. |
일과 요일 필드가 모두 *가 아니면 두 조건 중 하나만 일치해도 날짜 조건을 충족합니다. 예를 들어 0 9 20 * 4는 매월 20일이 목요일일 때만 실행하는 표현식이 아닙니다. 매월 20일과 매주 목요일의 09:00에 실행합니다.
전체 표현식 예시
아래 시각은 트리거에서 선택한 시간대를 기준으로 합니다.
| cron 표현식 | 실행 시각 |
|---|---|
30 9 * * 1 | 매주 월요일 09:30 |
30 17 * 2 1 | 2월의 매주 월요일 17:30 |
0 9-17 10 * * | 매월 10일 09:00부터 17:00까지 매시간 |
0 9-17/2 10 * * | 매월 10일 09:00, 11:00, 13:00, 15:00, 17:00 |
0 9,17 10 * * | 매월 10일 09:00과 17:00 |
0/5 9-17 15 3 * | 3월 15일 09:00부터 17:55까지 5분 간격 |
0/5 9,17 15 3 * | 3월 15일 09:00~09:55와 17:00~17:55에 각각 5분 간격 |
0 9 L * * | 매월 마지막 날 09:00 |
0 9 L 2 * | 2월 마지막 날 09:00 |
0 9 * * L | 매주 토요일 09:00 |
0 9 * * 2L | 매월 마지막 화요일 09:00 |
0 9 * 4 3#1 | 4월 첫 번째 수요일 09:00 |
0 9 20 * 4 | 매월 20일과 매주 목요일 09:00 |
일광 절약 시간 등 시계 변경
시간 트리거는 선택한 시간대의 현지 시계 시각을 사용합니다. 시계가 앞으로 이동하여 특정 시각이 생략되면 그 시각의 트리거도 발생하지 않습니다. 시계가 뒤로 이동하여 같은 시각이 두 번 나타나면 트리거도 두 번 충족됩니다.
예를 들어 시계가 01:00에서 02:00으로 건너뛰면 01:30 트리거는 발생하지 않습니다. 02:00에서 01:00으로 되돌아가면 01:30이 두 번 나타나므로 두 번 충족됩니다.
이벤트 트리거
이벤트 트리거는 지정한 이벤트가 발생하면 참 상태가 됩니다. 전체 트리거가 충족되어 스케줄이 실행될 때까지 그 상태를 유지합니다.
| 이벤트 | 충족 조건 |
|---|---|
New logic | 데이터셋을 계산하는 로직이 변경됩니다. |
Data updated | 데이터셋을 갱신하는 트랜잭션이 커밋됩니다. |
Job succeeded | 실행 작업이 성공적으로 완료됩니다. 트랜잭션을 커밋하지 않은 성공한 작업도 해당합니다. |
Media set updated | 트랜잭션형 미디어 집합은 트랜잭션 커밋 시 발생합니다. 트랜잭션을 사용하지 않는 미디어 집합은 갱신 후 발생하지만 즉시 발생한다고 보장하지 않습니다. |
Schedule ran successfully | 예약한 빌드가 성공적으로 완료됩니다. |
Schedule run failed | 예약한 빌드가 실패합니다. |
Table updated | 테이블을 갱신하는 트랜잭션이 커밋됩니다. |
Schedule ran successfully 이벤트의 빌드 완료 조건은 스케줄 실행 이력의 Succeeded 상태와 구분합니다. 이력의 Succeeded는 빌드를 시작했다는 뜻이며 그 빌드가 나중에 실패할 수도 있습니다.
복합 트리거
AND는 구성 조건을 모두 요구하고, OR는 하나 이상을 요구합니다. 다음 표에서 T1과 T2는 시간 트리거, E1과 E2는 이벤트 트리거입니다.
| 결합 | 실행 조건 |
|---|---|
AND(T1, E1) | E1이 이미 발생했다면 T1 시각에 충족됩니다. |
OR(T1, E1) | T1 시각 또는 E1 발생 시 충족됩니다. |
AND(T1, T2) | T1과 T2가 같은 순간에 모두 충족되어야 합니다. |
OR(T1, T2) | T1 또는 T2 시각에 충족됩니다. |
AND(E1, E2) | E1과 E2가 모두 발생하면 충족됩니다. |
OR(E1, E2) | E1 또는 E2가 발생하면 충족됩니다. |
AND(T1, OR(E1, E2)) | E1과 E2 중 하나 이상이 먼저 발생했다면 T1 시각에 충족됩니다. |
OR(T1, AND(E1, E2)) | T1 시각 또는 E1과 E2가 모두 발생한 시점에 충족됩니다. |
여러 시간 트리거를 AND로 묶으면 모든 시각 조건이 일치하는 순간만 남습니다. 매일 한 번인 조건과 매시간 조건을 AND로 묶어도 매일 한 번만 충족되므로, 같은 의미의 단일 시간 트리거로 표현하는 편이 명확합니다.
이벤트가 참 상태를 유지한다는 특성 때문에 시간과 이벤트의 AND는 최근 몇 분 이내의 데이터 갱신을 뜻하지 않습니다. 실제 시각별 동작은 스케줄 구성 예시에서 확인할 수 있습니다.