Strumenti per il rilevamento automatico delle anomalie su una tabella SQL?


10

Ho una grande tabella SQL che è essenzialmente un registro. I dati sono piuttosto complessi e sto cercando di trovare un modo per identificare le anomalie senza che io capisca tutti i dati. Ho trovato molti strumenti per il rilevamento di anomalie, ma la maggior parte di essi richiede una sorta di "intermediario", ad esempio Elastic Search, Splunk, ecc.

Qualcuno sa di uno strumento che può essere eseguito su una tabella SQL che costruisce una linea di base e avvisa automaticamente di anomalie?

Questo può sembrare pigro ma ho trascorso decine di ore a scrivere singoli script di report mentre apprendo cosa significa ogni tipo di evento e quali altri campi vanno con ogni evento e non mi sento più vicino alla possibilità di avvisare su problemi reali in un modo significativo. La tabella ha 41 colonne e ha appena raggiunto i 500 milioni di righe (3 anni di dati).


Non proprio, ma ORDINARE per ogni colonna e osservare i valori minimo e massimo e impostare avvisi per valori ridicoli potrebbe essere utile.
Barry Carter,

Nel caso in cui non debba essere super sofisticato, è possibile utilizzare la regressione lineare della finestra mobile di mlinreg e quindi identificare grandi deviazioni.
Diego,

Risposte:


3

Se si desidera approcciarlo da una prospettiva SQL, quindi in generale identificherei tutte le variabili di classificazione che causano comportamenti diversi. Quindi eseguire qualcosa di simile al seguente su una serie di variabili di analisi.

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

Eseguirò questo come un esercizio una tantum per dire i dati più recenti dell'anno, quindi da una prospettiva di velocità, lo eseguirò regolarmente come è necessario, per contrassegnare dati eccezionali.

Un approccio migliore, forse, che significa apprendere nuove tecnologie è una soluzione HDFS / Spark e PIG / Python / R. Ma HDFS / Spark ha alcune soluzioni che escono fuori dalla scatola per fare analisi dei log. 500 milioni di record probabilmente si stanno avvicinando ai problemi di prestazioni con SQL, anche con il partizionamento delle tabelle e l'indicizzazione delle colonne.


Avrei dovuto notare che questo è tecnicamente Intersystems Caché. Espone tutte le classi come tabelle SQL. È così che faccio tutte le mie segnalazioni, per ragioni di sanità mentale.
Devil's Advocate,

3

Se hai bisogno di codice SQL che esegue vari metodi di rilevamento anomali su qualsiasi tabella arbitraria, controlla la mia serie di articoli ed esempi di codiceorientato verso SQL Server. Fornisco alcuni codici preliminari per i test di Grubb, i punteggi Z e i punteggi Z modificati, l'intervallo interquartile, il test Q di Dixon, il GESD, il test Tietjen-Moore, il criterio Pierce, il criterio Chauvenet, il test Tau Thompson modificato, la distanza di Cook, Mahalanobis Distanza, legge di Benford e varie trame visive. Si prega di notare che sono un dilettante in questo e che questo è uno dei miei vecchi codici, quindi sono sicuro che saranno necessarie correzioni; questo almeno fornisce un punto di partenza in modo da poter eseguire questi test su qualsiasi tabella di database per cui si dispone delle autorizzazioni. È anche in T-SQL, quindi dovrai adattare il codice per PL / SQL o qualsiasi altra marca di SQL che potresti utilizzare, se ti trovi in ​​qualche altra piattaforma come Oracle o MySql. Questo dovrebbe iniziare però. Risolve semplicemente i nodi e imposta le procedure memorizzate per l'esecuzione periodica in base a una pianificazione e sei a posto. Fammi sapere se hai qualche feedback sulle routine, cerco sempre di migliorare la mia scrittura SQL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.