TimescaleDB 하이퍼펑션
TimescaleDB 하이퍼펑션 (Hyperfunctions)
하이퍼펑션(Hyperfunctions)은 TimescaleDB에 내장된 시계열 분석 전용 SQL 함수 모음이에요. 시간 버케팅(time bucketing), 갭필링(gapfilling), 분포 분석, 비율 변화 등 시계열 분석에서 자주 필요한 연산을 SQL 한 줄로 처리할 수 있어요.
시계열 데이터는 단순 조회만으로는 유용한 인사이트를 얻기 어려워요. 하이퍼펑션은 복잡한 시계열 연산을 표준 SQL에서 바로 쓸 수 있게 만들어 줘요.
대표적인 하이퍼펑션
시간 버케팅 (time_bucket)
연속된 시간을 일정 간격의 버킷(bucket)으로 묶어요. 그룹별 집계의 기준이 돼요.
SELECT time_bucket('1 hour', time) AS bucket, count(*)
FROM metrics
GROUP BY bucket;
갭필링 (time_bucket_gapfill)
누락된 시간 버킷을 보간·채워서 연속된 시계열을 만들어요. 예를 들어 데이터가 안 들어온 시간대를 0으로 채우거나 이전 값으로 보간할 수 있어요.
SELECT time_bucket_gapfill('1 hour', time) AS bucket,
locf(avg(value)) AS value
FROM metrics
WHERE time > now() - INTERVAL '1 day'
GROUP BY bucket;
locf()(last observation carried forward) 같은 함수로 채울 수 있어요.
기타 유용한 함수
first()/last()— 시계열의 첫·마지막 값.delta()— 값의 총 변화량.time_weight()— 가중 시계열 평균(예: 지속 시간 기반).- 분포·백분위 분석 함수들.
사용 방식
하이퍼펑션은 TimescaleDB에 기본 내장돼 있어요. 추가로 TimescaleDB Toolkit 을 설치하면 더 고급 하이퍼펑션(분포, 회귀, 상태 추적, 비트와이즈 분석 등)을 쓸 수 있어요.