하트비트 감지
| 항목 | 값 |
|---|---|
| 화면 이름 | Heartbeat detection |
| 식별자 | heartbeatDetectionV2 |
| 지원 실행 방식 | Streaming |
| 범주 | 열, 행과 실행 제어 (Other) |
키 집합마다 설정한 시간 동안 레코드가 관찰되지 않는 상태를 감지합니다. 키마다 독립 상태와 타이머를 가지지만 전역 워터마크는 공유합니다. 다른 키의 레코드가 워터마크를 진행시켜 이전 키의 만료를 발생시킬 수 있습니다.
입력 인자
| 이름 | 지정 여부 | 자료형 | 의미와 조건 |
|---|---|---|---|
Dataset | 필수 | Table | 입력 데이터셋입니다. |
Heartbeat time unit | 필수 | Enum<Days, Hours, Milliseconds, Minutes, Seconds, Weeks> | 특정 키의 데이터를 기다릴 시간 단위입니다. |
Heartbeat time value | 필수 | Literal<Long> | 특정 키의 데이터를 기다릴 기간 값입니다. |
Partition by columns | 필수 | Set<Column<AnyType>> | 하트비트 감지의 키로 사용할 열 집합입니다. |
입출력 예시
예시 1: 기본 동작
sensor_1의 00:00:00 첫 레코드가 alive 감지를 출력합니다. 00:00:05 레코드는 timeout을 연장하지만 새 감지는 출력하지 않습니다. sensor_2의 00:00:20 레코드가 워터마크를 00:00:15 이후로 진행시켜 sensor_1의 타이머가 만료하고 missed가 됩니다. sensor_2 자체의 alive 감지도 출력합니다.
인자 값:
Dataset: ri.foundry.main.dataset.testHeartbeat time unit:SECONDSHeartbeat time value: 10Partition by columns: {sensor_id}
입력:
| row_order | sensor_id | temperature | measurement_timestamp |
|---|---|---|---|
| 3 | sensor_2 | 19.8 | 2024-09-30T00:00:20 |
| 2 | sensor_1 | 21.0 | 2024-09-30T00:00:05 |
| 1 | sensor_1 | 20.5 | 2024-09-30T00:00:00 |
출력:
| sensor_id | alive | detection_time |
|---|---|---|
| sensor_1 | true | 2024-09-30T00:00:00Z |
| sensor_1 | false | 2024-09-30T00:00:15Z |
| sensor_2 | true | 2024-09-30T00:00:20Z |
예시 2: 기본 동작
키별 상태와 타이머는 독립적이지만 전역 워터마크를 공유합니다. sensor_1은 00:00:00, sensor_2는 00:00:05에 데이터를 보냅니다. sensor_3의 00:00:20 레코드가 두 만료 경계를 지나도록 워터마크를 진행시켜 00:00:10과 00:00:15 타이머가 차례로 발동하고 두 키가 missed가 됩니다.
인자 값:
Dataset: ri.foundry.main.dataset.testHeartbeat time unit:SECONDSHeartbeat time value: 10Partition by columns: {sensor_id}
입력:
| row_order | sensor_id | temperature | measurement_timestamp |
|---|---|---|---|
| 3 | sensor_3 | 22.1 | 2024-09-30T00:00:20 |
| 2 | sensor_2 | 18.3 | 2024-09-30T00:00:05 |
| 1 | sensor_1 | 20.5 | 2024-09-30T00:00:00 |
출력:
| sensor_id | alive | detection_time |
|---|---|---|
| sensor_1 | true | 2024-09-30T00:00:00Z |
| sensor_2 | true | 2024-09-30T00:00:05Z |
| sensor_1 | false | 2024-09-30T00:00:10Z |
| sensor_2 | false | 2024-09-30T00:00:15Z |
| sensor_3 | true | 2024-09-30T00:00:20Z |