¿Herramientas para la detección automática de anomalías en una tabla SQL?


10

Tengo una gran tabla SQL que es esencialmente un registro. Los datos son bastante complejos y estoy tratando de encontrar alguna forma de identificar anomalías sin que comprenda todos los datos. He encontrado muchas herramientas para la detección de anomalías, pero la mayoría de ellas requieren una especie de "intermediario", es decir, Elastic Search, Splunk, etc.

¿Alguien sabe de una herramienta que pueda ejecutarse contra una tabla SQL que construya una línea base y alertas de anomalías de forma automática?

Esto puede sonar perezoso, pero he pasado docenas de horas escribiendo guiones de informes individuales a medida que aprendo lo que significa cada tipo de evento y qué otros campos van con cada evento y no me siento más cerca de poder alertar sobre problemas reales en un de manera significativa. La tabla tiene 41 columnas y acaba de llegar a 500 millones de filas (3 años de datos).


En realidad no, pero ordenar por cada columna y observar los valores mínimos y máximos, y establecer alertas para valores ridículos podría ser útil.
Barry Carter

En caso de que no tenga que ser súper sofisticado, puede usar la regresión lineal de la ventana móvil mlinreg y así identificar grandes desviaciones.
Diego

Respuestas:


3

Si desea abordar esto desde una perspectiva SQL, en términos generales, identificaría cualquier variable de clasificación que cause un comportamiento diferente. Luego realice algo como lo siguiente en varias variables de análisis.

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

Realizaría esto como un ejercicio único sobre, digamos, el valor de datos más reciente del año, luego, desde una perspectiva de velocidad, lo ejecutaría tan regularmente como sea necesario, para marcar datos excepcionales.

Un mejor enfoque, quizás, que significa aprender nuevas tecnologías es una solución HDFS / Spark y luego PIG / Python / R. Pero HDFS / Spark tiene algunas soluciones que salen de la caja para hacer análisis de registro. Es probable que 500 millones de registros estén llegando al alcance de los problemas de rendimiento con SQL, incluso con la partición de tablas y la indexación de columnas.


Debería haber notado que esto es técnicamente Intersystems Caché. Expone todas las clases como tablas SQL. Así es como hago todos mis informes, por el bien de la cordura.
Abogado del Diablo

3

Si necesita código SQL que ejecute varios métodos de detección de valores atípicos en una tabla arbitraria, consulte mi serie de artículos y ejemplos de códigoorientado a SQL Server. Proporciono algunos códigos preliminares para las pruebas de Grubb, las puntuaciones Z y las puntuaciones Z modificadas, el rango intercuartil, la prueba Q de Dixon, GESD, la prueba Tietjen-Moore, el criterio de Pierce, el criterio de Chauvenet, la prueba modificada de Thompson Tau, la distancia de Cook, Mahalanobis Distancia, Ley de Benford y varias tramas visuales. Tenga en cuenta que soy un aficionado a esto y que este es parte de mi código anterior, por lo que estoy seguro de que se necesitarán correcciones; esto al menos proporciona un punto de partida para que pueda ejecutar estas pruebas en cualquier tabla de base de datos para la que tenga permisos. También está en T-SQL, por lo que deberá ajustar el código para PL / SQL o cualquier otra marca de SQL que pueda estar utilizando, si se encuentra en alguna otra plataforma como Oracle o MySql. Sin embargo, esto debería ayudarte a comenzar. Simplemente resuelve los problemas y configura los procedimientos almacenados para que se ejecuten periódicamente en un horario y listo. Avíseme si tiene algún comentario sobre las rutinas, siempre estoy buscando mejorar mi escritura SQL.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.