Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime 19.0 and above
Berechent die Unterschiede zwischen aufeinanderfolgenden kumulativen Zählern in einer Zeitreihe und wandelt kumulative Zähler in das Delta-Format um.
Syntax
counter_diff( value [, start_time] ) OVER clause
Arguments
-
value: Ein nicht-negativer numerischer Ausdruck, der einen kumulativen Zähler darstellt. -
start_time: Ein optionalerTIMESTAMPoderTIMESTAMP_NTZAusdruck, der angibt, wann der Zähler zuletzt auf null zurückgesetzt wurde. Nutze es, um Zähler-Zurücksetzungen unabhängig vom Zählerwert zu signalisieren. -
OVER-Klausel: Die Klausel, die das Fenster beschreibt.
- Nutze es,
PARTITION BYunabhängige Zähler zu trennen. Typische Partitionsspalten sind der Metrikname und alle Attribute, die mit der Metrik verknüpft sind. - Benutze
ORDER BYsie, um die Reihenfolge zu definieren. Dies ist typischerweise eine Zeitstempelspalte, die an die Metrik gebunden ist.
- Nutze es,
Gibt zurück
Der Ergebnistyp entspricht value.
Gibt die Differenz zwischen dem aktuellen Zählerwert und dem vorherigen Zähler gemäß der durch in der Klausel OVER definierten ORDER BY Reihenfolge zurück.
Die Funktion behandelt folgende Fälle:
- Wenn
value,NULList das ErgebnisNULL, und die Zeile wird bei der Berechnung von Differenzen für spätere Zeilen nicht verwendet. - Wenn
valuenegativ ist oderstart_timefrüher als die vorherige Zeilestart_timeliegt, erzeugt Azure Databricks einen Fehler. - Für die erste Zeile in der Partition ist
NULLdas Ergebnis . - Bei einem Counter-Reset ergibt
NULLsich . - Wenn entweder der vorherige oder der Strom
start_timeistNULL, wird dieser Wert nicht zur Erkennung von Zähler-Zurücksetzungen verwendet.
Azure Databricks erkennt einen Zähler-Zurücksetzung, wenn eines der folgenden Kriterien zutrifft:
- Das vorherige
valueist größer als das aktuellevalue. -
start_timeist angegeben und ist größer als die vorherige Zeilestart_time.
Sie müssen eine ORDER BY-Klausel angeben.
Häufige Fehlerbedingungen
- COUNTER_DIFF_NEGATIVER_ZÄHLERWERT
- COUNTER_DIFF_START_TIME_DECREASED
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
- WINDOW_FUNCTION_FRAME_NOT_ORDERED
Beispiele
> 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