시간 윈도우 함수

시간 윈도우 함수 (Time window functions)

시간 윈도우 함수는 해당 윈도우의 포함하는 하한배타적인 상한을 반환해요. hop(점프) 윈도우와 tumble(회전) 윈도우를 다루는 함수들을 아래에서 살펴볼게요.

출처: 문서

본문

시간 윈도우 함수는 대응하는 윈도우의 포함하는 하한 경계와 배타적인 상한 경계를 반환합니다. 시간 윈도우를 다루는 함수는 다음과 같습니다.

hop

도입 버전: v21.12.0

호핑(hopping) 시간 윈도우는 고정된 지속 시간(window_interval)을 가지며, 지정된 홉 간격(hop_interval)만큼 도약합니다. hop_intervalwindow_interval보다 작으면 호핑 윈도우는 서로 겹칩니다. 따라서 하나의 레코드가 여러 윈도우에 할당될 수 있어요.

레코드 하나가 여러 hop 윈도우에 할당될 수 있으므로, 이 함수는 첫 번째 윈도우의 경계만 반환합니다.

구문

hop(time_attr, hop_interval, window_interval[, timezone])

인자

  • time_attr — 날짜와 시간. DateTime
  • hop_interval — 양수인 홉 간격. Interval
  • window_interval — 양수인 윈도우 간격. Interval
  • timezone — 선택 사항. 타임존 이름. String

반환 값

대응하는 호핑 윈도우의 포함하는 하한과 배타적인 상한을 반환합니다. Tuple(DateTime, DateTime)

예제 — 호핑 윈도우

Query

SELECT hop(toDateTime('2026-01-02 03:04:05', 'UTC'), INTERVAL '1' DAY, INTERVAL '2' DAY)

Response

('2026-01-01 00:00:00','2026-01-03 00:00:00')

hopEnd

도입 버전: v22.1.0

대응하는 호핑 윈도우의 배타적인 상한을 반환합니다. 레코드 하나가 여러 hop 윈도우에 할당될 수 있으므로, 이 함수는 첫 번째 윈도우의 경계만 반환해요.

구문

hopEnd(time_attr, hop_interval, window_interval[, timezone])

인자

  • time_attr — 날짜와 시간. DateTime
  • hop_interval — 양수인 홉 간격. Interval
  • window_interval — 양수인 윈도우 간격. Interval
  • timezone — 선택 사항. 타임존 이름. String

반환 값

대응하는 호핑 윈도우의 배타적인 상한을 반환합니다. DateTime

예제 — 호핑 윈도우 끝

Query

SELECT hopEnd(toDateTime('2026-01-02 03:04:05', 'UTC'), INTERVAL '1' DAY, INTERVAL '2' DAY)

Response

2026-01-03 00:00:00

hopStart

도입 버전: v22.1.0

대응하는 호핑 윈도우의 포함하는 하한을 반환합니다. 레코드 하나가 여러 hop 윈도우에 할당될 수 있으므로, 이 함수는 첫 번째 윈도우의 경계만 반환해요.

구문

hopStart(time_attr, hop_interval, window_interval[, timezone])

인자

  • time_attr — 날짜와 시간. DateTime
  • hop_interval — 양수인 홉 간격. Interval
  • window_interval — 양수인 윈도우 간격. Interval
  • timezone — 선택 사항. 타임존 이름. String

반환 값

대응하는 호핑 윈도우의 포함하는 하한을 반환합니다. DateTime

예제 — 호핑 윈도우 시작

Query

SELECT hopStart(toDateTime('2026-01-02 03:04:05', 'UTC'), INTERVAL '1' DAY, INTERVAL '2' DAY)

Response

2026-01-01 00:00:00

tumble

도입 버전: v21.12.0

터블링(tumbling) 시간 윈도우는 고정된 지속 시간(interval)을 가진, 겹치지 않으면서 연속적인 윈도우에 레코드를 할당합니다.

구문

tumble(time_attr, interval[, timezone])

인자

  • time_attr — 날짜와 시간. DateTime
  • interval — Interval 로 표현한 윈도우 간격. Interval
  • timezone — 선택 사항. 타임존 이름. String

반환 값

대응하는 터블링 윈도우의 포함하는 하한과 배타적인 상한을 반환합니다. Tuple(DateTime, DateTime)

예제 — 터블링 윈도우

Query

SELECT tumble(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))

Response

('2026-01-02 00:00:00','2026-01-03 00:00:00')

tumbleEnd

도입 버전: v22.1.0

대응하는 터블링 윈도우의 배타적인 상한을 반환합니다.

구문

tumbleEnd(time_attr, interval[, timezone])

인자

  • time_attr — 날짜와 시간. DateTime
  • interval — Interval 로 표현한 윈도우 간격. Interval
  • timezone — 선택 사항. 타임존 이름. String

반환 값

대응하는 터블링 윈도우의 배타적인 상한을 반환합니다. DateTime

예제 — 터블링 윈도우 끝

Query

SELECT tumbleEnd(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))

Response

2026-01-03 00:00:00

tumbleStart

도입 버전: v22.1.0

대응하는 터블링 윈도우의 포함하는 하한을 반환합니다.

구문

tumbleStart(time_attr, interval[, timezone])

인자

  • time_attr — 날짜와 시간. DateTime
  • interval — Interval 로 표현한 윈도우 간격. Interval
  • timezone — 선택 사항. 타임존 이름. String

반환 값

대응하는 터블링 윈도우의 포함하는 하한을 반환합니다. DateTime

예제 — 터블링 윈도우 시작

Query

SELECT tumbleStart(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))

Response

2026-01-02 00:00:00

더 알아보기 (Learn more)