ai_detect_anomalies funkcja

Dotyczy:zaznacz pole wyboru oznaczone jako tak 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

Syntax

ai_detect_anomalies(
  observed,
  time_col,
  value_col
  [, group_col]
  [, anomaly_threshold]
  [, covariate_col]
  [, holiday_region]
  [, only_last_n]
  [, smoothing]
)

Argumenty

  • observed jest wejściem o wartości tabelowej, które zawiera dane szeregów czasowych.
  • time_coljest nazwaniem a DATE lub TIMESTAMP kolumną STRING w observed. Znaczniki czasowe muszą być unikalne w każdej serii czasowej.
  • value_col to STRING nazywanie kolumny liczbowej do analizy. Możesz analizować jedną kolumnę wartości na każde wywołanie.
  • group_col (opcjonalnie) to kolumny STRINGARRAY<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ł DOUBLE między 0 a 1, który kontroluje, kiedy wartość jest oznaczona jako anomalna. Rząd jest anomalią, gdy jest większy anomaly_score niż ten próg. Wartość domyślna to 0.95. Niższe wartości oznaczają więcej anomalii, podczas gdy wyższe oznaczają mniej anomalii.
  • covariate_col (opcjonalnie) to STRING kolumny ARRAY<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) zawiera STRING kod 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śl DATETIMESTAMP lub 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. Gdy TRUE, 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ę tylko is_anomaly; nie zmienia wartości oczekiwanych, ograniczeń ani wyników anomalii. Wartość domyślna to TRUE.

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.