Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Runtime 19 et supérieur
Retourne le début du compartiment temporel à largeur fixe dans lequel se trouve un horodatage, aligné sur une origine.
Syntaxe
time_bucket(bucketSize, ts [, origin])
Les arguments
-
bucketSize: UneINTERVALexpression constante qui spécifie la taille de chaque seau. Prend en charge les intervalles de jour et d’année-mois. Doit être positif et non nul. -
ts: Expression de A ouTIMESTAMP_NTZà bucketTIMESTAMP. -
origin: Une expression optionnelleTIMESTAMPouTIMESTAMP_NTZconstante qui définit l’ancrage d’alignement de la grille à seau. La valeur par défaut est1970-01-01 00:00:00. Doit être du même type quets.
Retours
Une valeur du même type que ts (TIMESTAMP ou TIMESTAMP_NTZ). La valeur est le début du seau [start, start + bucketSize) demi-ouvert qui contient ts. Le début est toujours inférieur ou égal à ts, et la frontière suivante du seau (start + bucketSize) est strictement supérieure à ts.
Remarques
-
time_bucketdivise l’axe du temps en intervalles consécutifs et non chevauchants de taillebucketSize, ancrés enorigin. Elle retourne le début de l’intervalle qui contientts. -
originn’a pas besoin de précéderts. Cela ne définit que l’alignement de la grille à seau. La grille s’étend à l’infini dans les deux directions à partir deorigin. - Pour
TIMESTAMP_NTZ,time_bucketdes seaux dans UTC. PourTIMESTAMP, les segments annuel-mois et les composantes jour du calendrier des intervalles jour-temps s’alignent avec le fuseau horaire de la session. - Si un argument est
NULL, le résultat estNULL. - À utiliser
date_truncpour des limites alignées sur le calendrier, comme le regroupement par mois du calendrier. À utilisertime_bucketlorsque la largeur ou l’alignement du seau est défini par l’utilisateur.
Conditions d’erreur courantes
- DATATYPE_MISMATCH. NON_FOLDABLE_INPUT
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- DATATYPE_MISMATCH. VALUE_OUT_OF_RANGE
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).