Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
funkce analytického okna
Platí pro:
Databricks SQL
Databricks Runtime 19.0 and above
Vypočítá rozdíly mezi po sobě jdoucími kumulativními hodnotami čítačů v časové řadě a převede kumulativní čítače do delta formátu.
Syntaxe
counter_diff( value [, start_time] ) OVER clause
Arguments
-
value: Nezáporný číselný výraz, který představuje kumulativní čítač. -
start_time: VolitelnýTIMESTAMPvýraz neboTIMESTAMP_NTZvýraz, který označuje, kdy byl čítač naposledy resetován na nulu. Použijte ho k signalizaci resetování čítače nezávisle na hodnotě čítače. -
Klauzule OVER: Klauzule, která popisuje windowing.
- Použijte
PARTITION BYk oddělení nezávislých žetonů. Typické sloupce oddílu jsou název metriky a všechny atributy spojené s metrikou. - Použijte
ORDER BYk definování pořadí. Obvykle jde o sloupec časového razítka vázaný na tuto metriku.
- Použijte
Returns
Typ výsledku odpovídá value.
Vrátí rozdíl mezi aktuální hodnotou čítače a předchozí hodnotou čítače podle pořadí definovaného v ORDER BY klauzuli OVER .
Funkce řeší následující případy:
- Pokud
valueje ,NULLvýsledkem jeNULL, a řádek se nepoužívá při výpočtu rozdílů pro pozdější řádky. - Pokud
valueje zápornástart_timenebo je dříve než v předchozím řádkustart_time, Azure Databricks vyvolá chybu. - Pro první řádek v rozkladu je
NULLvýsledek . - Při resetování čítače je
NULLvýsledek . - Pokud je předchozí nebo aktuální
start_time,NULLtato hodnota se nepoužívá k detekci resetování čítače.
Azure Databricks detekuje reset čítače, když je pravda některá z následujících skutečností:
- Předchozí
valueje větší než aktuálnívalue. -
start_timeje dáno a je větší než předchozí řádkustart_time.
Musíte zadat klauzuli ORDER BY.
Běžné chybové podmínky
- COUNTER_DIFF_NEGATIVE_COUNTER_VALUE
- Počáteční čas rozdílu čítače byl snížen
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
- WINDOW_FUNCTION_FRAME_NOT_ORDERED
Příklady
> 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