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).
fonte
Respostas:
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.
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.
fonte
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.
fonte