Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks SQL
Ważna
Ta funkcja jest dostępna w wersji beta. Aby z niego korzystać, administrator przestrzeni roboczej musi włączyć Predykcyjne Funkcje AI na stronie Podglądów . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
ai_detect_anomalies() jest funkcją tabelową, która identyfikuje anomalne wartości w danych szeregów czasowych. Wykorzystuje historię poprzedzającą każdą wartość do oszacowania wartości oczekiwanej i przedziału predykcji, a następnie przypisuje wynik anomalii.
Wymagania
- Pro lub bezserwerowy magazyn SQL. Ta funkcja nie jest dostępna w klasycznym magazynie SQL.
- Zarejestruj swoje miejsce pracy w podglądzie Predictive AI Functions . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
Syntax
ai_detect_anomalies(
observed,
time_col,
value_col
[, group_col]
[, anomaly_threshold]
[, covariate_col]
[, holiday_region]
[, only_last_n]
[, smoothing]
)
Argumenty
-
observedjest wejściem o wartości tabelowej, które zawiera dane szeregów czasowych. -
time_coljest nazwaniem aDATElubTIMESTAMPkolumnąSTRINGwobserved. Znaczniki czasowe muszą być unikalne w każdej serii czasowej. -
value_coltoSTRINGnazywanie kolumny liczbowej do analizy. Możesz analizować jedną kolumnę wartości na każde wywołanie. -
group_col(opcjonalnie) to kolumnySTRINGARRAY<STRING>lub nazewnicze identyfikujące oddzielne szeregi czasowe. Każda grupa jest analizowana niezależnie. Jeśli zostanie pominięty, pełne wejście traktowane jest jako jednorazowy szereg czasowy. -
anomaly_threshold(opcjonalnie) to przedziałDOUBLEmiędzy 0 a 1, który kontroluje, kiedy wartość jest oznaczona jako anomalna. Rząd jest anomalią, gdy jest większyanomaly_scoreniż ten próg. Wartość domyślna to0.95. Niższe wartości oznaczają więcej anomalii, podczas gdy wyższe oznaczają mniej anomalii. -
covariate_col(opcjonalnie) toSTRINGkolumnyARRAY<STRING>liczbowe lub ciągowe nazwy, których wartości mogą pomóc wyjaśnić szeregi czasowe, takie jak cena, promocje czy pogoda. -
holiday_region(opcjonalnie) zawieraSTRINGkod kraju, taki jak'US'. Gdy jest określona, funkcja uwzględnia efekty świąteczne w oczekiwanych wartościach. -
only_last_n(opcjonalnie) ogranicza liczbę zwróconych i ocenianych wierszy, zachowując wcześniejsze wiersze jako kontekst historyczny. Określ liczbę całkowitą od 1 do 8 192, aby analizować tylko najnowszą liczbę wierszy w każdej serii, lub określDATETIMESTAMPlub cutoff, aby analizować wiersze przy lub po tej wartości. Ograniczenie zakresu punktacji może zmieniać wyniki anomalii, ponieważ funkcja może dokonywać mniej prognoz w różnych oknach prognozy. Pomiń ten argument, by przeanalizować całą serię. -
smoothing(opcjonalnie) kontroluje, czy krótkie przerwy między anomaliami są uwzględnione w tym samym anomaliowym epizodzie. GdyTRUE, funkcja oznacza przerwy do trzech wierszy między oznaczonymi anomaliami jako anomaliami. Może to zmniejszyć liczbę epizodów anomalii fragmentarnych, ale także oznaczać wartości normalne wewnątrz tych szczelin. Wygładzanie zmienia się tylkois_anomaly; nie zmienia wartości oczekiwanych, ograniczeń ani wyników anomalii. Wartość domyślna toTRUE.
Zwroty
Funkcja zwraca kolumny czasu wejściowego, grupy i wartości, a następnie następują następujące kolumny:
| Column | Typ | Description |
|---|---|---|
expected |
DOUBLE |
Wartość oczekiwana oparta na wcześniejszej historii. |
lower_bound |
DOUBLE |
Dolna granica przedziału predykcji. |
upper_bound |
DOUBLE |
Górna granica przedziału predykcji. |
anomaly_score |
DOUBLE |
Wynik od 0 do 1 wskazujący, jak bardzo zaobserwowana wartość różni się od przewidywania. |
is_anomaly |
BOOLEAN |
Czy wiersz jest anomalią na podstawie anomaly_threshold i smoothing. |
Pierwsze osiem wierszy każdej serii czasowej dostarcza kontekstu historycznego. Dla tych wierszy expected, lower_bound, upper_bound, i anomaly_score są , NULLa is_anomaly jest .FALSE
Examples
Poniższy przykład generuje szereg czasowy z wstrzykniętym impulsem i identyfikuje jego anomalie:
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
Poniższy przykład analizuje każde urządzenie niezależnie, uwzględnia temperaturę i święta w Stany Zjednoczone oraz zwraca tylko najnowsze 100 wierszy z każdej serii urządzeń:
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
Ograniczenia
Podczas bety obowiązują następujące ograniczenia:
- Każda seria czasowa może zawierać maksymalnie 8 192 wiersze wejściowe. Zapytanie z dłuższą serią kończy się niepowodzeniem.
- Każdy szereg czasowy musi zawierać co najmniej jedną skończoną zaobserwowaną wartość.
- Znaczniki czasowe muszą być unikalne w każdej serii czasowej.
- Możesz analizować jedną kolumnę wartości na każde wywołanie.
- Komunikaty o błędach są dostarczane przez silnik Python UDTF i mogą zawierać informacje o tracebacku Python. Na końcu tracebacku znajduje się rzeczywisty komunikat o błędzie.