time_bucket 함수

적용 대상:체크 체크 완료 예 데이터브릭스 SQL 체크 완료 데이터브릭스 런타임 19 이상

타임스탬프가 들어가는 고정 폭 시간 버킷의 시작점을 원점에 정렬하여 반환합니다.

구문

time_bucket(bucketSize, ts [, origin])

인수

  • bucketSize: INTERVAL 각 버킷의 크기를 지정하는 상수 표현식입니다. 주간 및 연-월 간격을 지원합니다. 반드시 양수이고 0이 아님을 의미합니다.
  • ts: A TIMESTAMP 또는 TIMESTAMP_NTZ 표현에서 양동이로.
  • origin: 버킷 그리드의 정렬 앵커를 정의하는 선택적 TIMESTAMP 또는 TIMESTAMP_NTZ 상수 표현식입니다. 기본값은 1970-01-01 00:00:00입니다. 와 같은 타입 ts이어야 합니다.

Returns

( 또는 TIMESTAMP_NTZ)와 tsTIMESTAMP 같은 유형의 값입니다. 값은 를 포함하는 ts반열린 버킷 [start, start + bucketSize) 의 시작이다. 시작은 항상 보다 작 ts고, 다음 버킷 경계(start + bucketSize)는 엄격히 보다 큽 ts니다.

노트

  • time_bucket 시간 축을 연속적이고 겹치지 않는 크기 bucketSize의 구간으로 나누며, 에 고정합니다 origin. 이 단어는 를 포함하는 ts구간의 시작을 반환합니다.
  • origin 는 반드시 앞에 ts있을 필요가 없습니다. 이는 버킷 그리드의 정렬만 정의합니다. 격자는 에서 양방향 origin으로 무한히 확장된다.
  • 에 대해 TIMESTAMP_NTZ, time_bucket UTC에서 양동이. 에 대해 TIMESTAMP연-월 간격 버킷과 일-시간 간격 버킷의 달력 일 성분은 세션 시간대에 정렬됩니다.
  • 임의의 인수 가 이면 NULL결과는 입니다.NULL
  • 달력별 그룹화와 같은 달력에 맞춘 경계 설정에 사용됩니다 date_trunc . 버킷 너비나 정렬이 사용자가 정의할 때 사용합니다 time_bucket .

일반적인 오류 조건

Examples

-- 15-minute buckets (default origin at epoch)
> SELECT time_bucket(INTERVAL '15' MINUTE, TIMESTAMP '2024-01-01 11:27:00');
 2024-01-01 11:15:00

-- 1-hour buckets
> SELECT time_bucket(INTERVAL '1' HOUR, TIMESTAMP '2024-01-01 11:27:00');
 2024-01-01 11:00:00

-- Custom origin shifts bucket alignment to :05 past the hour
> SELECT time_bucket(INTERVAL '1' HOUR, TIMESTAMP '2024-01-01 11:27:00', TIMESTAMP '1970-01-01 00:05:00');
 2024-01-01 11:05:00

-- TIMESTAMP_NTZ variant
> SELECT time_bucket(INTERVAL '15' MINUTE, TIMESTAMP_NTZ '2024-01-01 11:27:00');
 2024-01-01 11:15:00

-- ts exactly on a bucket boundary returns itself
> SELECT time_bucket(INTERVAL '15' MINUTE, TIMESTAMP '2024-01-01 11:15:00');
 2024-01-01 11:15:00

-- Origin after ts: grid extends backward
> SELECT time_bucket(INTERVAL '1' HOUR, TIMESTAMP '2024-01-01 11:27:00', TIMESTAMP '2025-01-01 00:30:00');
 2024-01-01 10:30:00

-- Monthly buckets (default epoch origin: 1st of month)
> SELECT time_bucket(INTERVAL '1' MONTH, TIMESTAMP '2024-03-15 11:27:00');
 2024-03-01 00:00:00

-- Quarterly buckets
> SELECT time_bucket(INTERVAL '3' MONTH, TIMESTAMP '2024-05-15 10:00:00');
 2024-04-01 00:00:00

-- Monthly buckets with origin on the 15th
> SELECT time_bucket(INTERVAL '1' MONTH, TIMESTAMP '2024-03-20 09:00:00', TIMESTAMP '1970-01-15 00:00:00');
 2024-03-15 00:00:00

-- Origin on 31st: day clamping in short months
> SELECT time_bucket(INTERVAL '1' MONTH, TIMESTAMP '2024-03-01 12:00:00', TIMESTAMP '1970-01-31 00:00:00');
 2024-02-29 00:00:00

-- Zero bucket width is rejected
> SELECT time_bucket(INTERVAL '0' SECOND, TIMESTAMP '2024-01-01 11:00:00');
 [DATATYPE_MISMATCH.VALUE_OUT_OF_RANGE] The bucketSize must be between (0, inf) (current value = INTERVAL '00' SECOND).