Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks
Databricks Runtime 19.0 och senare
Beräknar skillnaderna mellan på varandra följande kumulativa räknarvärden i en tidsserie, och omvandlar kumulativa räknare till deltaformat.
Syntax
counter_diff( value [, start_time] ) OVER clause
Arguments
-
value: Ett icke-negativt numeriskt uttryck som representerar en kumulativ räknare. -
start_time: Ett valfrittTIMESTAMPellerTIMESTAMP_NTZuttryck som visar när räknaren senast återställdes till noll. Använd den för att signalera räknaråterställningar oberoende av räknarvärdet. -
OVER-klausul: Klausulen som beskriver fönsterintagningen.
- Använd
PARTITION BYdet för att separera oberoende räknare. Typiska partitionskolumner är metriknamnet och eventuella attribut kopplade till metriken. - Använd
ORDER BYför att definiera ordningen. Detta är vanligtvis en tidsstämpelkolumn kopplad till metriken.
- Använd
Returns
Resultattypen matchar value.
Returnerar skillnaden mellan det aktuella räknarvärdet och det föregående räknarvärdet enligt ordningen definierad av ORDER BY i klausulen OVER .
Funktionen hanterar följande fall:
- Om
valueärNULL, blirNULLresultatet , och raden används inte vid beräkning av skillnader för senare rader. - Om
valueär negativ, ellerstart_timeär tidigare än föregående radsstart_time, ger Azure Databricks ett fel. - För den första raden i partitionen är
NULLresultatet . - Vid en räknaråterställning blir
NULLresultatet . - Om antingen föregående eller den aktuella
start_timeärNULL, används inte det värdet för att upptäcka räknaråterställningar.
Azure Databricks upptäcker en räknaråterställning när någon av följande är sann:
- Den föregående
valueär större än den nuvarandevalue. -
start_timeges och är större än föregående rads .start_time
Du måste ange en ORDER BY-sats.
Vanliga felvillkor
- COUNTER_DIFF_NEGATIVE_COUNTER_VALUE
- STARTTID FÖR RÄKNARSKILLNAD MINSKADE
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
- WINDOW_FUNCTION_FRAME_NOT_ORDERED
Exempel
> 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