Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

시간 범위 내 중복 제거

항목값
화면 이름Time bounded drop duplicates
식별자timeBoundedDropDuplicatesV3
지원 실행 방식Streaming
범주열, 행과 실행 제어 (Other)

지정한 열 부분집합의 중복 행을 제거하고, 관찰한 행의 상태는 설정한 이벤트 시간 뒤에 만료합니다. 설정한 이벤트 시간보다 더 늦게 도착한 행은 항상 제외합니다. 키별로 분할하여 서로 다른 키 값마다 중복 제거를 수행합니다. 상태 정리는 eviction 윈도 경계에서 이루어지므로 timeout 이후에도 중복으로 제외되는 구간이 생길 수 있습니다.

입력 인자

이름지정 여부자료형의미와 조건
Dataset필수Table중복 행을 제거할 데이터셋입니다.
Key expiration time unit필수Enum<Days, Hours, Milliseconds, Minutes, Seconds>중복 제거에서 데이터를 기다릴 시간 단위입니다.
Key expiration time value필수Literal<Long>중복 제거에서 데이터를 기다릴 기간 값입니다.
Column subset선택Set<Column<AnyType>>열을 지정하면 해당 열만 유일성 판단에 사용합니다. 지정하지 않으면 스트림에 설정된 키 부분집합을 사용합니다.
Eviction window slide선택Tuple<Literal<Long>, Enum<Days, Hours, Milliseconds, Minutes, Seconds, Weeks>>오래된 상태를 제거하는 tumbling 윈도의 주기입니다. 지정한 이벤트 시간 timeout을 넘으면 오래된 상태로 봅니다. 마지막 중복 관찰 이후 (key_expiry, key_expiry + eviction_slide] 구간에도 중복을 제거합니다. 값을 바꾸면 상태 호환성이 깨져 재생이 필요합니다.
Key by columns선택Set<Column<Binary | Boolean | Byte | Double | Float | Integer | Long | Short | String | Timestamp>>입력을 분할할 키 열입니다. 고유 키마다 중복 제거를 별도로 병렬 계산합니다.

입출력 예시

예시 1: 기본 동작

00:00:00 첫 레코드를 출력하고 eviction slide가 정하는 다음 tumbling 윈도 경계에 상태 제거를 예약합니다. 기본 slide는 1분입니다. timeout이 10초여도 워터마크가 제거 시점에 도달하지 않아 00:00:09, 00:00:18, 00:00:28 레코드는 모두 중복으로 제외됩니다. 키 만료와 만료+slide 사이에도 중복 제거가 이어집니다.

인자 값:

  • Dataset: ri.foundry.main.dataset.test
  • Key expiration time unit: SECONDS
  • Key expiration time value: 10
  • Column subset: null
  • Eviction window slide: null
  • Key by columns: null

입력:

row_orderdaytemperaturemeasurement_timestamp
4Monday10.42024-09-30T00:00:28
3Monday10.32024-09-30T00:00:18
2Monday10.22024-09-30T00:00:09
1Monday10.12024-09-30T00:00:00

출력:

daytemperaturemeasurement_timestamp
Monday10.12024-09-30T00:00:00

예시 2: 기본 동작

day 열로 분할하면 키별 상태가 독립적입니다. Monday의 00:00:20 첫 레코드는 출력하고 워터마크를 진행시킵니다. Tuesday의 00:00:05 레코드는 timeout 10초를 더한 00:00:15가 약 00:00:20인 워터마크보다 과거이므로 이전 기록이 없어도 제외됩니다. Wednesday의 00:00:25 레코드는 늦지 않아 해당 키의 첫 행으로 출력합니다.

인자 값:

  • Dataset: ri.foundry.main.dataset.test
  • Key expiration time unit: SECONDS
  • Key expiration time value: 10
  • Column subset: null
  • Eviction window slide: null
  • Key by columns: {day}

입력:

row_orderdaytemperaturemeasurement_timestamp
3Wednesday22.12024-09-30T00:00:25
2Tuesday18.32024-09-30T00:00:05
1Monday20.52024-09-30T00:00:20

출력:

daytemperaturemeasurement_timestamp
Monday20.52024-09-30T00:00:20
Wednesday22.12024-09-30T00:00:25