타임스탬프와 워터마크 지정
| 항목 | 값 |
|---|---|
| 화면 이름 | Assign timestamps and watermarks |
| 식별자 | assignTimestampsAndWatermarksV1 |
| 지원 실행 방식 | Streaming |
| 범주 | 열, 행과 실행 제어 (Other) |
입력에 타임스탬프와 워터마크를 지정합니다. 타임스탬프가 null인 레코드는 제외합니다.
입력 인자
| 이름 | 지정 여부 | 자료형 | 의미와 조건 |
|---|---|---|---|
Dataset | 필수 | Table | 타임스탬프와 워터마크를 지정할 데이터셋입니다. |
Timestamp expression | 필수 | Expression<Timestamp> | 지정할 타임스탬프를 계산하는 표현식입니다. |
Emit watermark on every record | 선택 | Literal<Boolean> | true이면 스트림의 모든 레코드마다 워터마크를 전파합니다. 성능 부담이 생기지만 재생 시 결정적인 동작을 제공합니다. 대부분의 경우 false가 권장됩니다. |
Idleness timeout unit | 선택 | Enum<Days, Hours, Milliseconds, Minutes, Seconds, Weeks> | 하위 작업을 유휴 상태로 판단할 시간 단위입니다. |
Idleness timeout value | 선택 | Literal<Long> | 레코드가 들어오지 않는 하위 작업을 유휴 상태로 판단할 기간입니다. 유휴 작업은 전역 워터마크 진행을 막지 않으므로 시간 기반 상태가 무한히 커지거나 윈도가 출력하지 않는 문제를 줄일 수 있습니다. 다만 느린 작업의 늦은 레코드는 허용 지연이 있는 하위 연산에서 예상치 못하게 제외될 수 있습니다. |
입출력 예시
예시 1: 기본 동작
인자 값:
Dataset: ri.foundry.main.dataset.aTimestamp expression:timestampEmit watermark on every record: nullIdleness timeout unit: nullIdleness timeout value: null
입력:
| timestamp | temperature | sensor_id |
|---|---|---|
| 1969-12-31T23:59:50Z | 28 | sensor_1 |
| 1969-12-31T23:59:40Z | 30 | sensor_2 |
| 1969-12-31T23:59:35Z | 29 | sensor_1 |
출력:
| timestamp | temperature | sensor_id |
|---|---|---|
| 1969-12-31T23:59:50Z | 28 | sensor_1 |
| 1969-12-31T23:59:40Z | 30 | sensor_2 |
| 1969-12-31T23:59:35Z | 29 | sensor_1 |
예시 2: null 처리
인자 값:
Dataset: ri.foundry.main.dataset.aTimestamp expression:timestampEmit watermark on every record: nullIdleness timeout unit: nullIdleness timeout value: null
입력:
| timestamp | temperature | sensor_id |
|---|---|---|
| 1969-12-31T23:59:50Z | 28 | sensor_1 |
| null | 30 | sensor_2 |
| null | 29 | sensor_1 |
출력:
| timestamp | temperature | sensor_id |
|---|---|---|
| 1969-12-31T23:59:50Z | 28 | sensor_1 |