time_bucket fonksiyon

Geçerlidir:işaretli evet, Databricks SQL işaretli evet, Databricks Runtime 19 ve üzeri

Bir zaman damgasının düştüğü sabit genişlikli zaman kovasının başlangıcını, bir orijina hizalanmış olarak döndürür.

Syntax

time_bucket(bucketSize, ts [, origin])

Arguments

  • bucketSize: Her kovanın boyutunu belirten sabit bir INTERVAL ifade. Gündüz ve yıl-ay aralıklarını destekler. Pozitif ve sıfır olmayan olmalı.
  • ts: A TIMESTAMP veya TIMESTAMP_NTZ ifadesi kovaya ifade.
  • origin: Kova ızgarasının hizalama çapını tanımlayan isteğe bağlı TIMESTAMP veya TIMESTAMP_NTZ sabit bir ifade. Varsayılan değer 1970-01-01 00:00:00’dır. Aynı tip olmalı ts.

İadeler

(TIMESTAMP veya TIMESTAMP_NTZile aynı türde ts bir değer. Değer, yarı tsaçık kovanın [start, start + bucketSize) başlangıcıdır ve içinde . Başlangıç her zaman 'den küçük veya eşittir ts, ve sonraki kova sınırı (start + bucketSize) kesinlikle 'den tsbüyüktür.

Notlar

  • time_bucket zaman eksenini ardışık, örtüşmeyen boyutlu bucketSizearalıklara böler, bu aralıklar , üzerinde originsabitlenir. Aralığın başlangıcını döndürür, tsiçerdiği aralığın başlangıcını döndürür.
  • origin önünde belirtilmesine gerek tsyok. Sadece kova ızgarasının hizalanmasını belirler. Şebeke, her iki yönde de sonsuz şekilde uzanır.origin
  • Çünkü TIMESTAMP_NTZ, time_bucket UTC'deki kovalar. For TIMESTAMP, yıl-ay aralık kovaları ve gün-saat aralığı kovalarının takvim-gün bileşenleri oturum saat dilimiyle hizalanır.
  • Herhangi bir argüman iseNULL, sonuç .NULL
  • date_trunc Takvime göre hizalanmış sınırlar için kullanım, örneğin takvim ayına göre gruplama. Kova genişliği veya hizalama kullanıcı tarafından tanımlandığında kullanılır time_bucket .

Yaygın hata koşulları

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