Ferramentas para detecção automática de anomalias em uma tabela SQL?


10

Eu tenho uma tabela SQL grande que é essencialmente um log. Os dados são bastante complexos e estou tentando encontrar uma maneira de identificar anomalias sem que eu entenda todos os dados. Encontrei muitas ferramentas para a detecção de anomalias, mas a maioria delas exige um tipo de "intermediário", como Elastic Search, Splunk, etc.

Alguém sabe de uma ferramenta que pode ser executada em uma tabela SQL que cria uma linha de base e alerta automaticamente de anomalias?

Isso pode parecer preguiçoso, mas passei dezenas de horas escrevendo scripts de relatórios individuais à medida que aprendi o que significa cada tipo de evento e quais outros campos se encaixam em cada evento, e não me sinto mais perto de poder alertar sobre problemas reais em um evento. maneira significativa. A tabela possui 41 colunas e atingiu apenas 500 milhões de linhas (3 anos de dados).


Não realmente, mas classificar por cada coluna e examinar os valores mínimo e máximo e definir alertas para valores ridículos podem ser úteis.
Barry Carter,

Caso não precise ser super sofisticado, você pode usar a regressão linear da janela móvel do mlinreg e, assim, identificar grandes desvios.
13136 Diego Diego

Respostas:


3

Se você quiser abordar isso da perspectiva do SQL, identificarei amplamente todas as variáveis ​​de classificação que causam comportamentos diferentes. Em seguida, execute algo como o seguinte em várias variáveis ​​de análise.

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

Eu faria isso como um exercício único, digamos, o valor mais recente do ano, e, sob uma perspectiva de velocidade, eu o executaria com a regularidade necessária, para sinalizar dados excepcionais.

Uma abordagem melhor, talvez, que signifique aprender novas tecnologias é uma solução HDFS / Spark e PIG / Python / R. Porém, o HDFS / Spark possui algumas soluções prontas para análise de log. Provavelmente, 500 milhões de registros estão chegando aos problemas de desempenho do SQL, mesmo com o particionamento de tabelas e a indexação de colunas.


Eu deveria ter notado que este é tecnicamente o Intersystems Caché. Expõe todas as classes como tabelas SQL. É assim que faço todos os meus relatórios, pelo bem da sanidade.
Advogado do diabo

3

Se você precisar de código SQL que execute vários métodos de detecção de outlier em qualquer tabela arbitrária, confira minha série de artigos e exemplos de códigovoltado para o SQL Server. Eu forneço algum código preliminar para os testes de Grubb, Z-Scores e Z-Scores modificados, Intervalo interquartil, Q-Test de Dixon, GESD, Teste de Tietjen-Moore, Critério de Pierce, Critério de Chauvenet, Teste de Thompson Tau Modificado, Distância de Cook, Mahalanobis Distância, Lei de Benford e vários enredos visuais. Observe que sou um amador nisso e que esse é um dos meus códigos mais antigos, portanto, tenho certeza de que serão necessárias correções; isso fornece pelo menos um ponto de partida para que você possa executar esses testes em qualquer tabela de banco de dados para a qual tenha permissões. Também está em T-SQL, então você precisará ajustar o código para PL / SQL ou qualquer outra marca de SQL que possa estar usando, se estiver em alguma outra plataforma como Oracle ou MySql. Isso deve ajudá-lo a começar. Apenas elabora as dobras e define os procedimentos armazenados para serem executados periodicamente de acordo com um cronograma, e você estará pronto. Deixe-me saber se você tem algum feedback sobre as rotinas, estou sempre procurando melhorar minha escrita em SQL.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.