Narzędzia do automatycznego wykrywania anomalii w tabeli SQL?

10

Mam dużą tabelę SQL, która jest w zasadzie dziennikiem. Dane są dość złożone i staram się znaleźć sposób na zidentyfikowanie anomalii bez zrozumienia wszystkich danych. Znalazłem wiele narzędzi do wykrywania anomalii, ale większość z nich wymaga „pośredniego człowieka”, tj. Elastic Search, Splunk itp.

Czy ktoś wie o narzędziu, które można uruchomić w oparciu o tabelę SQL, która automatycznie tworzy linię bazową i ostrzega o anomaliach?

Może to zabrzmieć leniwie, ale spędziłem kilkadziesiąt godzin, pisząc indywidualne skrypty raportowania, gdy dowiaduję się, co oznacza każdy typ zdarzenia i które pola towarzyszą każdemu zdarzeniu, i nie czuję się bliżej możliwości ostrzegania o prawdziwych problemach w znaczący sposób. Tabela ma 41 kolumn i osiągnęła 500 milionów wierszy (3 lata danych).

Adwokat diabła
źródło
Nie bardzo, ale SORTOWANIE według każdej kolumny i patrzenie na wartości minimalne i maksymalne oraz ustawianie alertów dla śmiesznych wartości może być pomocne.
Barry Carter,
W przypadku, gdy nie musi to być bardzo wyrafinowane, można użyć regresji liniowej ruchomego okna mlinreg, a tym samym zidentyfikować duże odchylenia.
Diego

Odpowiedzi:

3

Jeśli chcesz podejść do tego z perspektywy SQL, to ogólnie zidentyfikowałbym wszelkie zmienne klasyfikacyjne, które powodują różne zachowanie. Następnie wykonaj następujące czynności na wielu zmiennych analizy.

SELECT ClassificationVar1, 
    ClassificationVar2, 
    MIN(AnalysisVar1) as Min_AnalysisVar1, 
    MAX(AnalysisVar1) as Max_AnalysisVar1, 
    MEAN(AnalysisVar1) as Mean_AnalysiVar1, 
    STDEV(AnalysisVar1) as Std_AnalysisVar1,
    MIN(AnalysisVar2) as Min_AnalysisVar2, 
    MAX(AnalysisVar2) as Max_AnalysisVar2, 
    MEAN(AnalysisVar2) as Mean_AnalysiVar2, 
    STDEV(AnalysisVar2) as Std_AnalysisVar2,
    etc.
    FROM YourDataFile
GROUP BY ClassificationVar1, ClassificationVar2
ORDER BY ClassificationVar1, ClassificationVar2

Wykonałbym to jako jednorazowe ćwiczenie, powiedzmy, dane z ostatniego roku, a następnie, z perspektywy szybkości, przeprowadzałbym to tak regularnie, jak to konieczne, aby zgłosić wyjątkowe dane.

Być może lepszym podejściem, które oznacza uczenie się nowych technologii, jest rozwiązanie HDFS / Spark, a następnie PIG / Python / R. Ale HDFS / Spark ma kilka rozwiązań, które są gotowe do analizy dzienników. 500 milionów rekordów prawdopodobnie dociera do zakresu problemów z wydajnością SQL, nawet przy partycjonowaniu tabel i indeksowaniu kolumn.

Marcus D.
źródło
Powinienem zauważyć, że technicznie jest to Intersystems Caché. Odsłania wszystkie klasy jako tabele SQL. Tak robię wszystkie moje raporty, dla zachowania rozsądku.
Adwokat diabła
3

Jeśli potrzebujesz kodu SQL, który uruchamia różne metody wykrywania wartości odstających w stosunku do dowolnej dowolnej tabeli, sprawdź moją serię artykułów i próbek kodunastawiony na SQL Server. Zapewniam wstępny kod dla testów Grubba, wyników Z i zmodyfikowanych wyników Z, zakresu międzykwartylowego, testu Q Dixona, testu GESD, testu Tietjen-Moore, kryterium Pierce'a, kryterium Chauveneta, testu Tau Thompsona zmodyfikowanego, odległości Cooka, Mahalanobis Odległość, prawo Benforda i różne fabuły. Pamiętaj, że jestem w tym amatorem i to jest mój starszy kod, więc jestem pewien, że potrzebne będą poprawki; zapewnia to przynajmniej punkt początkowy, dzięki czemu można uruchomić te testy dla dowolnej tabeli bazy danych, do której masz uprawnienia. Jest również w T-SQL, więc musisz dostosować kod dla PL / SQL lub jakiejkolwiek innej marki SQL, której używasz, jeśli zdarzy się, że korzystasz z innej platformy, takiej jak Oracle lub MySql. To powinno wystartować. Po prostu rozwiązuje problemy i ustawia procedury składowane, aby uruchamiały się okresowo zgodnie z harmonogramem i możesz zacząć. Daj mi znać, jeśli masz jakieś uwagi na temat procedur, zawsze staram się poprawić pisanie w języku SQL.

SQLServerSteve
źródło