Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:
Databricks SQL
Databricks Runtime 19.0 és újabb
Számolja ki az egymást követő kumulatív számláló értékek különbségeit egy idősorban, az összesített számlálókat delta formátumra alakítva.
Szemantika
counter_diff( value [, start_time] ) OVER clause
Arguments
-
value: Egy nemnegatív numerikus kifejezés, amely egy kumulatív számlálót képvisel. -
start_time: Egy opcionálisTIMESTAMPvagyTIMESTAMP_NTZkifejezés, amely jelzi, mikor állították vissza utoljára a számlálót nullára. Használd arra, hogy jelezd a számláló visszaállítását függetlenül a számláló értéktől. -
OVER záradék: Az a záradék, amely leírja az ablakozást.
- Használd
PARTITION BYaz önálló számlálók szétválasztására. A tipikus partíciós oszlopok a metrika neve és az ehhez kapcsolódó attribútumok. - A sorrend meghatározására használjuk
ORDER BY. Ez általában egy időbélyegoszlop, amely a metrikához van kötve.
- Használd
Returns
Az eredmény típusa megegyezik value.
Visszaadja a jelenlegi számláló és az előző számláló érték közötti különbséget a záradékban OVER meghatározott ORDER BY sorrend szerint.
A függvény a következő eseteket kezeli:
- Ha
valueazNULL, az eredményNULL, és a sor nem kerül felhasználásra a későbbi sorok különbségeinek számításakor. - Ha
valuenegatív, vagystart_timekorábban van az előző sornálstart_time, akkor az Azure Databricks hibát ad ki. - A partíció első sorára az eredmény:
NULL. - Egy számláló visszaállításnál az eredmény .
NULL - Ha az előző vagy az áram
start_time,NULLez az érték nem a számláló visszaállítások észlelésére.
Az Azure Databricks akkor érzékel egy számláló visszaállítást, ha az alábbiak közül bármelyik igaz:
- Az előző
valuenagyobb, mint a jelenlegivalue. -
start_timemegadva van, és nagyobb, mint az előző sorokstart_time.
Önnek meg kell adnia egy ORDER BY záradékot.
Gyakori hibafeltételek
- SZÁMLÁLÓ_KÜLÖNBSÉG_NEGATÍV_SZÁMLÁLÓ_ÉRTÉK
- COUNTER_DIFF_START_TIME_DECREASED
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
- WINDOW_FUNCTION_FRAME_NOT_ORDERED
Példák
> 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