time_bucket functie

Van toepassing op:vinkje gemarkeerd ja Databricks SQL vinkje gemarkeerd ja Databricks Runtime 19 en hoger

Geeft het begin terug van de tijdsbak met vaste breedte waarin een tijdstempel valt, uitgelijnd met een oorsprong.

Syntax

time_bucket(bucketSize, ts [, origin])

Arguments

  • bucketSize: Een INTERVAL constante expressie die de grootte van elke emmer specificeert. Ondersteunt dag- en jaar-maand-intervallen. Moet positief en niet-nul zijn.
  • ts: Een TIMESTAMP of uitdrukking TIMESTAMP_NTZ naar emmer.
  • origin: Een optionele TIMESTAMP of TIMESTAMP_NTZ constante uitdrukking die het uitlijnanker van het bucket grid definieert. Wordt standaard ingesteld op 1970-01-01 00:00:00. Moet hetzelfde type zijn als ts.

Returns

Een waarde van hetzelfde type als ts (TIMESTAMP of TIMESTAMP_NTZ). De waarde is het begin van de halfopen emmer [start, start + bucketSize) die bevat ts. Het begin is altijd kleiner dan of gelijk aan ts, en de volgende bucketgrens (start + bucketSize) is strikt groter dan ts.

Notes

  • time_bucket de tijdsas verdeelt in opeenvolgende, niet-overlappende intervallen van grootte bucketSize, verankerd in origin. Het geeft het begin van het interval dat bevat tsterug.
  • origin hoeft niet vooraf tste gaan . Het definieert alleen de uitlijning van het emmerrooster. Het rooster strekt zich oneindig uit in beide richtingen vanaf origin.
  • Voor TIMESTAMP_NTZ, time_bucket emmers in UTC. Voor TIMESTAMP, jaar-maand intervalemmers en de kalenderdagcomponenten van dagintervalemmers zijn uitgelijnd met de sessietijdzone.
  • Als een argument is NULL, is het resultaat NULL.
  • Gebruik date_trunc het voor kalender-uitgelijnde grenzen, zoals groeperen per kalendermaand. Gebruik time_bucket wanneer de bucketbreedte of uitlijning door de gebruiker is gedefinieerd.

Algemene foutvoorwaarden

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).