用于在SQL表上进行自动异常检测的工具?


10

我有一个基本上是日志的大型SQL表。数据非常复杂,我试图在不了解所有数据的情况下找到某种方法来识别异常。我发现了很多用于异常检测的工具,但其中大多数都需要某种“中间人”,例如Elastic Search,Splunk等。

是否有人知道可以针对可建立基线并自动发出异常警报的SQL表运行的工具?

这听起来有些懒惰,但是当我了解每种事件类型的含义以及每种事件所涉及的其他字段时,我已经花了数十个小时编写个人的报告脚本,而且我不觉得自己能够更进一步地警告实际事件有意义的方式。该表有41列,仅触及5亿行(3年数据)。


并非如此,但按每一列排序并查看最小值和最大值,并为可笑的值设置警报可能会有所帮助。
巴里·卡特

如果不需要非常复杂,可以使用mlinreg移动窗口线性回归,从而确定较大的偏差。
迭戈

Answers:


3

如果您想从SQL的角度来解决这个问题,那么从广义上讲,我将找出引起不同行为的任何分类变量。然后对许多分析变量执行以下操作。

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

我将一次性执行此操作,例如说说最近一年的数据,然后从速度角度来看,我将根据需要定期运行此操作,以标记出异常数据。

一种更好的方法,也许意味着学习新技术是HDFS / Spark然后是PIG / Python / R解决方案。但是HDFS / Spark提供了一些现成的解决方案来进行日志分析。即使使用表分区和列索引,也有5亿条记录可能正在涉及SQL的性能问题。


我应该注意到,从技术上讲,这是IntersystemsCaché。它将所有类公开为SQL表。为了理智,这就是我所有报告的方式。
魔鬼的拥护者

3

如果您需要对任意表运行各种异常检测方法的SQL代码,请检查 我的系列文章和代码示例面向SQL Server。我为Grubb测试,Z分数和修改后的Z分数,四分位数间距,Dixon的Q测试,GEESD,Tietjen-Moore检验,Pierce的判据,Chauvenet的判据,修改的Thompson Tau检验,Cook的距离,Mahalanobis提供了一些初步代码距离,本福德定律和各种视觉图。请注意,我是一个业余爱好者,这是我的一些旧代码,因此我确定需要更正。这至少提供了一个起点,以便您可以对拥有权限的任何数据库表运行这些测试。它也在T-SQL中,因此,如果您碰巧在Oracle或MySql等其他平台上,则需要调整PL / SQL或可能使用的其他任何品牌的SQL的代码。不过,这应该可以帮助您入门。只需解决问题并设置存储过程以按计划定期运行,就可以了。如果您对例程有任何反馈,请告诉我,我一直在寻求改进我的SQL编写。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.