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
Important
Dieses Feature befindet sich in der Betaversion. Um sie zu nutzen, muss ein Workspace-Administrator die Predictive AI Functions auf der Vorschauenseite aktivieren. Siehe Manage Azure Databricks Previews.
ai_detect_anomalies() ist eine tabellenwertige Funktion, die anomale Werte in Zeitreihendaten identifiziert. Es verwendet die Historie vor jedem Wert, um den Erwartungswert und das Vorhersageintervall zu schätzen, und weist dann einen Anomaliewert zu.
Anforderungen
- Ein Pro- oder Serverless-SQL-Warehouse. Diese Funktion ist in einem klassischen SQL-Warehouse nicht verfügbar.
- Melden Sie Ihren Arbeitsbereich in der Vorschau der Predictive AI Functions an. Siehe Manage Azure Databricks Previews.
Syntax
ai_detect_anomalies(
observed,
time_col,
value_col
[, group_col]
[, anomaly_threshold]
[, covariate_col]
[, holiday_region]
[, only_last_n]
[, smoothing]
)
Argumente
-
observedist die tabellenwertige Eingabe, die die Zeitreihendaten enthält. -
time_colist eineSTRINGBenennung einerDATEoder SpalteTIMESTAMPinobserved. Zeitstempel müssen innerhalb jeder Zeitreihe einzigartig sein. -
value_colist eineSTRINGBenennung der numerischen Spalte, die analysiert werden soll. Du kannst pro Aufruf eine Wertspalte analysieren. -
group_col(optional) ist eineSTRINGoder eine NamensspalteARRAY<STRING>, die separate Zeitreihen kennzeichnet. Jede Gruppe wird unabhängig analysiert. Wenn ausgelassen, wird der gesamte Eingang als eine Zeitreihe behandelt. -
anomaly_threshold(optional) ist einDOUBLEWert zwischen 0 und 1, der steuert, wann ein Wert als anomal markiert wird. Eine Reihe ist anomal, wenn sieanomaly_scoregrößer als diese Schwelle ist. Der Standardwert lautet0.95. Niedrigere Werte signalisieren mehr Anomalien, während höhere Werte weniger Anomalien anzeigen. -
covariate_col(optional) ist eineSTRINGoder eineARRAY<STRING>Namens- oder Zeichenketten-Spalte, deren Werte helfen können, die Zeitreihe zu erklären, wie zum Beispiel Preis, Aktionen oder Wetter. -
holiday_region(optional) ist aSTRING, der einen Ländercode enthält, wie zum Beispiel'US'. Wenn angegeben, berücksichtigt die Funktion die Feiertagseffekte in den Erwartungswerten. -
only_last_n(optional) begrenzt die zurückgegebenen und bewerteten Reihen, während frühere Zeilen als historischer Kontext erhalten bleiben. Geben Sie eine ganze Zahl von 1 bis 8.192 an, um nur die aktuellste Anzahl von Zeilen in jeder Reihe zu analysieren, oder geben Sie ein oderTIMESTAMPCutoffDATEan, um Zeilen bei oder nach diesem Wert zu analysieren. Die Begrenzung des Wertungsbereichs kann Anomaliewerte verändern, da die Funktion über verschiedene Prognosefenster weniger Vorhersagen treffen kann. Lassen Sie dieses Argument weg, um die gesamte Serie zu analysieren. -
smoothing(optional) steuert, ob kurze Lücken zwischen Anomalien in derselben anomalen Episode enthalten sind. WennTRUE, markiert die Funktion Lücken von bis zu drei Reihen zwischen markierten Anomalien als anomal. Dies kann fragmentierte Anomalie-Episoden reduzieren, aber auch Normalwerte innerhalb dieser Lücken markieren. Glättung ändert nuris_anomaly; sie ändert keine erwarteten Werte, Grenzen oder Anomaliewerte. Der Standardwert lautetTRUE.
Rückkehr
Die Funktion liefert die Spalten für Eingabezeit, Gruppe und Wert, gefolgt von diesen Spalten:
| Column | Typ | Description |
|---|---|---|
expected |
DOUBLE |
Der Erwartungswert basiert auf der vorherigen Vorgeschichte. |
lower_bound |
DOUBLE |
Die untere Schranke des Vorhersageintervalls. |
upper_bound |
DOUBLE |
Die obere Schranke des Vorhersageintervalls. |
anomaly_score |
DOUBLE |
Ein Wert von 0 bis 1, der angibt, wie stark sich der beobachtete Wert von der Vorhersage unterscheidet. |
is_anomaly |
BOOLEAN |
Ob die Zeile aufgrund von anomaly_threshold und smoothinganomal ist. |
Die ersten acht Zeilen jeder Zeitreihe bieten historischen Kontext. Für diese Zeilen sind , , , und anomaly_score , NULLund is_anomaly ist FALSE. upper_boundlower_boundexpected
Beispiele
Das folgende Beispiel erzeugt eine Zeitreihe mit einem injizierten Spike und identifiziert deren Anomalien:
WITH observed AS (
SELECT
date_add(DATE '2026-01-01', CAST(id AS INT)) AS ds,
CASE
WHEN id = 45 THEN 200.0
ELSE 100.0 + 5.0 * sin(id / 3.0)
END AS metric
FROM range(60)
)
SELECT *
FROM ai_detect_anomalies(
TABLE(observed),
time_col => 'ds',
value_col => 'metric'
)
ORDER BY ds
Das folgende Beispiel analysiert jedes Gerät einzeln, berücksichtigt Temperatur und Feiertage in den USA und gibt nur die aktuellsten 100 Zeilen jeder Geräteserie zurück:
SELECT *
FROM ai_detect_anomalies(
TABLE(device_metrics),
time_col => 'event_time',
value_col => 'metric',
group_col => 'device_id',
anomaly_threshold => 0.98,
covariate_col => 'temperature',
holiday_region => 'US',
only_last_n => 100,
smoothing => FALSE
)
ORDER BY device_id, event_time
Limitations
Während der Beta gelten folgende Einschränkungen:
- Jede Zeitreihe kann höchstens 8.192 Eingabezeilen enthalten. Eine Abfrage mit einer längeren Serie schlägt fehl.
- Jede Zeitreihe muss mindestens einen endlichen beobachteten Wert enthalten.
- Zeitstempel müssen innerhalb jeder Zeitreihe einzigartig sein.
- Du kannst pro Aufruf eine Wertspalte analysieren.
- Fehlermeldungen werden über die Python UDTF-Engine übermittelt und können Python-Rückverfolgungsinformationen enthalten. Das Ende der Rückverfolgung enthält die eigentliche Fehlermeldung.