Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 19.0 ve üzeri
Bir zaman serisinde ardışık kümülatif sayaç değerleri arasındaki farkları hesaplar, kümülatif sayaçları delta formatına dönüştürür.
Syntax
counter_diff( value [, start_time] ) OVER clause
Arguments
-
value: Kümülatif sayacı temsil eden negatif olmayan sayısal ifade. -
start_time: Sayacın en son sıfırlandığı zamanı gösteren isteğeTIMESTAMPbağlı bir ifadeTIMESTAMP_NTZveya ifade. Sayaç değerinden bağımsız olarak sayaç sıfırlamalarını sinyal etmek için kullanın. -
OVER maddesi: Pencere belirlemeyi tanımlayan madde.
- Bağımsız sayaçları ayırmak için kullanın
PARTITION BY. Tipik bölüm sütunları, metrik adı ve bu metrike bağlı herhangi bir özniteliktir. - Sırayı tanımlamak için kullanılır
ORDER BY. Bu genellikle metrike bağlı bir zaman damgası sütunudur.
- Bağımsız sayaçları ayırmak için kullanın
İadeler
Sonuç tipi value ile eşleşir.
Mevcut sayaç değeri ile önceki sayaç değeri arasındaki farkı, maddede OVER tanımlanan ORDER BY sıraya göre döndürür.
Fonksiyon aşağıdaki vakaları yönetir:
- Eğer
valueiseNULL, sonuç 'dirNULLve sonraki sıralar için farklar hesaplanırken satır kullanılmaz. - Eğer
valuenegatif ise veyastart_timeönceki satırdanstart_timedaha erken ise, Azure Databricks hata oluşturur. - Bölümdeki ilk satır için sonuç şudur:
NULL - Bir sayaç sıfırlamasında sonuç 'dir.
NULL - Önceki veya akım
start_timeNULLise, bu değer sayaç sıfırlamalarını tespit etmek için kullanılmaz.
Azure Databricks, aşağıdaki durumlardan biri doğruysa, sayac sıfırlamasını algılar:
- Önceki
valuemevcut olandanvaluebüyüktür. -
start_timeve önceki satırlardanstart_timedaha büyüktür.
Bir ORDER BY madde sağlamanız gerekir.
Yaygın hata koşulları
- COUNTER_DIFF_NEGATIVE_COUNTER_VALUE
- COUNTER_DIFF_START_TIME_DECREASED
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
- SIRALANMAMIŞ_PENCERE_İŞLEVİ_ÇERÇEVESİ
Örnekler
> SELECT m, t, counter_diff(c) OVER (PARTITION BY m ORDER BY t)
FROM VALUES
('http_requests', TIMESTAMP '2026-01-01T00:00:00', 100),
('http_requests', TIMESTAMP '2026-01-01T00:01:00', 200),
('http_requests', TIMESTAMP '2026-01-01T00:02:00', 400)
AS tab(m, t, c);
http_requests 2026-01-01 00:00:00 NULL
http_requests 2026-01-01 00:01:00 100
http_requests 2026-01-01 00:02:00 200
-- Counter reset detected by a decrease in value
> SELECT m, t, counter_diff(c) OVER (PARTITION BY m ORDER BY t)
FROM VALUES
('http_requests', TIMESTAMP '2026-01-01T00:00:00', 100),
('http_requests', TIMESTAMP '2026-01-01T00:01:00', 200),
('http_requests', TIMESTAMP '2026-01-01T00:02:00', 400),
('http_requests', TIMESTAMP '2026-01-01T00:04:00', 50)
AS tab(m, t, c);
http_requests 2026-01-01 00:00:00 NULL
http_requests 2026-01-01 00:01:00 100
http_requests 2026-01-01 00:02:00 200
http_requests 2026-01-01 00:04:00 NULL
-- Counter reset detected by a change in start_time
> SELECT m, t, counter_diff(c, st) OVER (PARTITION BY m ORDER BY t)
FROM VALUES
('http_requests', TIMESTAMP '2026-01-01T00:01:00', TIMESTAMP '2026-01-01T00:00:00', 100),
('http_requests', TIMESTAMP '2026-01-01T00:02:00', TIMESTAMP '2026-01-01T00:00:00', 200),
('http_requests', TIMESTAMP '2026-01-01T00:04:00', TIMESTAMP '2026-01-01T00:02:31', 400)
AS tab(m, t, st, c);
http_requests 2026-01-01 00:01:00 NULL
http_requests 2026-01-01 00:02:00 100
http_requests 2026-01-01 00:04:00 NULL