Tools zur automatischen Erkennung von Anomalien in einer SQL-Tabelle?


10

Ich habe eine große SQL-Tabelle, die im Wesentlichen ein Protokoll ist. Die Daten sind ziemlich komplex und ich versuche einen Weg zu finden, um Anomalien zu identifizieren, ohne dass ich alle Daten verstehe. Ich habe viele Tools für die Erkennung von Anomalien gefunden, aber die meisten erfordern eine Art "Mittelsmann", z. B. Elastic Search, Splunk usw.

Kennt jemand ein Tool, das für eine SQL-Tabelle ausgeführt werden kann, die automatisch eine Basislinie und Warnungen vor Anomalien erstellt?

Das mag faul klingen, aber ich habe Dutzende von Stunden damit verbracht, einzelne Berichtsskripte zu schreiben, um zu erfahren, was jeder Ereignistyp bedeutet und welche anderen Felder zu jedem Ereignis gehören, und ich fühle mich nicht näher dran, auf echte Probleme in einem Ereignis aufmerksam zu machen sinnvoll. Die Tabelle hat 41 Spalten und hat gerade 500 Millionen Zeilen (3 Jahre Daten) getroffen.


Nicht wirklich, aber das Sortieren nach jeder Spalte und das Betrachten der Minimal- und Maximalwerte sowie das Festlegen von Warnungen für lächerliche Werte können hilfreich sein.
Barry Carter

Falls es nicht besonders ausgefeilt sein muss, können Sie die lineare Regression des mlinreg-Bewegungsfensters verwenden und so große Abweichungen identifizieren.
Diego

Antworten:


3

Wenn Sie dies aus einer SQL-Perspektive betrachten möchten, würde ich im Großen und Ganzen alle Klassifizierungsvariablen identifizieren, die ein anderes Verhalten verursachen. Führen Sie dann für eine Reihe von Analysevariablen Folgendes aus.

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

Ich würde dies als einmalige Übung für Daten im Wert des letzten Jahres durchführen und diese dann aus Geschwindigkeitssicht so regelmäßig wie nötig ausführen, um außergewöhnliche Daten zu kennzeichnen.

Ein besserer Ansatz, der das Erlernen neuer Technologien bedeutet, ist möglicherweise eine HDFS / Spark-Lösung als PIG / Python / R. HDFS / Spark bietet jedoch einige sofort einsatzbereite Lösungen für die Protokollanalyse. 500 Millionen Datensätze sind wahrscheinlich in die Reichweite von Leistungsproblemen mit SQL geraten, selbst bei der Tabellenpartitionierung und Spaltenindizierung.


Ich hätte beachten müssen, dass dies technisch Intersystems Caché ist. Es macht alle Klassen als SQL-Tabellen verfügbar. So mache ich alle meine Berichte, um der Vernunft willen.
Devil's Advocate

3

Wenn Sie SQL-Code benötigen, der verschiedene Ausreißererkennungsmethoden für eine beliebige Tabelle ausführt , lesen Sie meine Artikelserie und Codebeispieleauf SQL Server ausgerichtet. Ich biete einen vorläufigen Code für Grubbs Tests, Z-Scores und modifizierte Z-Scores, Interquartilbereich, Dixons Q-Test, GESD, den Tietjen-Moore-Test, das Pierce-Kriterium, das Chauvenet-Kriterium, den modifizierten Thompson-Tau-Test, die Cook-Distanz, Mahalanobis Entfernung, Benfords Gesetz und verschiedene visuelle Handlungen. Bitte beachten Sie, dass ich ein Amateur bin und dass dies ein Teil meines älteren Codes ist, daher bin ich sicher, dass Korrekturen erforderlich sind. Dies bietet zumindest einen Ausgangspunkt, damit Sie diese Tests für jede Datenbanktabelle ausführen können, für die Sie Berechtigungen haben. Es ist auch in T-SQL enthalten, daher müssen Sie den Code für PL / SQL oder eine andere SQL-Marke anpassen, wenn Sie sich auf einer anderen Plattform wie Oracle oder MySql befinden. Dies sollte Ihnen jedoch den Einstieg erleichtern. Berechnet einfach die Knicke und stellt die gespeicherten Prozeduren so ein, dass sie regelmäßig nach einem Zeitplan ausgeführt werden, und schon kann es losgehen. Lassen Sie mich wissen, wenn Sie Feedback zu den Routinen haben. Ich bin immer bemüht, mein SQL-Schreiben zu verbessern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.