시간 윈도우 함수
시간 윈도우 함수 (Time window functions)
시간 윈도우 함수는 해당 윈도우의 포함하는 하한과 배타적인 상한을 반환해요. hop(점프) 윈도우와 tumble(회전) 윈도우를 다루는 함수들을 아래에서 살펴볼게요.
출처: 문서
본문
시간 윈도우 함수는 대응하는 윈도우의 포함하는 하한 경계와 배타적인 상한 경계를 반환합니다. 시간 윈도우를 다루는 함수는 다음과 같습니다.
hop
도입 버전: v21.12.0
호핑(hopping) 시간 윈도우는 고정된 지속 시간(window_interval)을 가지며, 지정된 홉 간격(hop_interval)만큼 도약합니다. hop_interval이 window_interval보다 작으면 호핑 윈도우는 서로 겹칩니다. 따라서 하나의 레코드가 여러 윈도우에 할당될 수 있어요.
레코드 하나가 여러 hop 윈도우에 할당될 수 있으므로, 이 함수는 첫 번째 윈도우의 경계만 반환합니다.
구문
hop(time_attr, hop_interval, window_interval[, timezone])
인자
time_attr— 날짜와 시간.DateTimehop_interval— 양수인 홉 간격.Intervalwindow_interval— 양수인 윈도우 간격.Intervaltimezone— 선택 사항. 타임존 이름.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— 날짜와 시간.DateTimehop_interval— 양수인 홉 간격.Intervalwindow_interval— 양수인 윈도우 간격.Intervaltimezone— 선택 사항. 타임존 이름.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— 날짜와 시간.DateTimehop_interval— 양수인 홉 간격.Intervalwindow_interval— 양수인 윈도우 간격.Intervaltimezone— 선택 사항. 타임존 이름.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— 날짜와 시간.DateTimeinterval— Interval 로 표현한 윈도우 간격.Intervaltimezone— 선택 사항. 타임존 이름.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— 날짜와 시간.DateTimeinterval— Interval 로 표현한 윈도우 간격.Intervaltimezone— 선택 사항. 타임존 이름.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— 날짜와 시간.DateTimeinterval— Interval 로 표현한 윈도우 간격.Intervaltimezone— 선택 사항. 타임존 이름.String
반환 값
대응하는 터블링 윈도우의 포함하는 하한을 반환합니다. DateTime
예제 — 터블링 윈도우 시작
Query
SELECT tumbleStart(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))
Response
2026-01-02 00:00:00