Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks
Databricks Runtime 19.0 en hoger
Berekent de verschillen tussen opeenvolgende cumulatieve tellerwaarden in een tijdreeks, waarbij cumulatieve tellers worden omgezet naar delta-formaat.
Syntax
counter_diff( value [, start_time] ) OVER clause
Arguments
-
value: Een niet-negatieve numerieke uitdrukking die een cumulatieve teller vertegenwoordigt. -
start_time: Een optioneleTIMESTAMPofTIMESTAMP_NTZexpressie die aangeeft wanneer de teller voor het laatst op nul is gezet. Gebruik het om teller te reseten onafhankelijk van de tellerwaarde. -
OVER-clausule: De clausule die de venstering beschrijft.
- Gebruik
PARTITION BYhet om onafhankelijke counters te scheiden. Typische partitiekolommen zijn de naam van de metriek en eventuele attributen die aan de metriek gekoppeld zijn. - Gebruik
ORDER BYom de volgorde te definiƫren. Dit is meestal een tijdstempelkolom die aan de metriek is gekoppeld.
- Gebruik
Returns
Het resultaattype komt overeen met value.
Geeft het verschil terug tussen de huidige tellerwaarde en de vorige tellerwaarde volgens de volgorde die in de OVER clausule is gedefinieerdORDER BY.
De functie behandelt de volgende gevallen:
- Als
valueisNULL, isNULLhet resultaat , en wordt de rij niet gebruikt bij het berekenen van verschillen voor latere rijen. - Als
valuenegatief is, ofstart_timeeerder is dan de vorige rijstart_time, levert Azure Databricks een foutmelding op. - Voor de eerste rij in de partitie is
NULLhet resultaat . - Bij een counterreset is
NULLhet resultaat . - Als de vorige of de huidige
start_timeisNULL, wordt die waarde niet gebruikt om counter-resets te detecteren.
Azure Databricks detecteert een tellerreset wanneer een van de volgende waar is:
- De vorige
valueis groter dan de huidigevalue. -
start_timeis gegeven en is groter dan de vorige rij .start_time
U moet een ORDER BY clausule opgeven.
Algemene foutvoorwaarden
- COUNTER_DIFF_NEGATIVE_COUNTER_VALUE
- COUNTER_DIFF_START_TIME_DECREASED
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
- WINDOW_FUNCTION_FRAME_NOT_ORDERED
Voorbeelden
> 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