TimescaleDB 하이퍼펑션

TimescaleDB 하이퍼펑션 (Hyperfunctions)

하이퍼펑션(Hyperfunctions)은 TimescaleDB에 내장된 시계열 분석 전용 SQL 함수 모음이에요. 시간 버케팅(time bucketing), 갭필링(gapfilling), 분포 분석, 비율 변화 등 시계열 분석에서 자주 필요한 연산을 SQL 한 줄로 처리할 수 있어요.

시계열 데이터는 단순 조회만으로는 유용한 인사이트를 얻기 어려워요. 하이퍼펑션은 복잡한 시계열 연산을 표준 SQL에서 바로 쓸 수 있게 만들어 줘요.

출처: https://docs.timescale.com/api/latest/hyperfunctions/

대표적인 하이퍼펑션

시간 버케팅 (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 을 설치하면 더 고급 하이퍼펑션(분포, 회귀, 상태 추적, 비트와이즈 분석 등)을 쓸 수 있어요.

더 알아보기