SQL 테이블에서 자동 이상 탐지 도구?


10

본질적으로 로그 인 큰 SQL 테이블이 있습니다. 데이터는 매우 복잡하며 모든 데이터를 이해하지 않고 이상을 식별하는 방법을 찾으려고합니다. 이상 탐지를위한 많은 도구를 찾았지만 대부분 "중간자"(예 : Elastic Search, Splunk 등)가 필요합니다.

누구나 기준을 세우고 이상 징후를 자동으로 알려주는 SQL 테이블에 대해 실행할 수있는 도구를 알고 있습니까?

이것은 게으른 것처럼 들릴 수 있지만 각 이벤트 유형의 의미와 각 이벤트와 관련된 다른 필드를 배우고 실제 문제에 대해 경고 할 수있는 느낌이 들지 않을 때 개별보고 스크립트를 작성하는 데 수십 시간을 보냈습니다. 의미있는 방법. 이 테이블에는 41 개의 열이 있고 5 억 개의 행 (3 년 동안의 데이터)을 기록했습니다.


실제로는 아니지만 각 열을 정렬하고 최소값과 최대 값을보고 어리석은 값에 대한 경고를 설정하면 도움이 될 수 있습니다.
Barry Carter

매우 정교하지 않아도되는 경우 mlinreg 이동 창 선형 회귀를 사용하여 큰 편차를 식별 할 수 있습니다.
Diego

답변:


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의 성능 문제에 도달 할 수 있습니다.


이것이 기술적으로 Intersystems Cach입니다. 모든 클래스를 SQL 테이블로 노출합니다. 그것이 제 정신을 위해 모든보고를하는 방법입니다.
악마의 옹호자

3

임의의 테이블에 대해 다양한 이상치 탐지 방법을 실행하는 SQL 코드가 필요한 경우 일련의 기사 및 코드 샘플을 확인하십시오.SQL Server를 지향합니다. 나는 Grubb의 테스트, Z- 점수 및 수정 된 Z- 점수, 사 분위 범위, 딕슨의 Q- 테스트, GESD, Tietjen-Moore 테스트, 피어스의 기준, Chauvenet의 기준, 수정 된 Thompson Tau 테스트, 요리사의 거리, Mahalanobis에 대한 예비 코드를 제공합니다. 거리, 벤 포드 법칙 및 다양한 시각적 도표. 나는 이것에 대한 아마추어이고 이것은 나의 오래된 코드 중 하나이므로 수정이 필요할 것이라고 확신합니다. 이것은 최소한 시작점을 제공하므로 권한이있는 데이터베이스 테이블에 대해 이러한 테스트를 실행할 수 있습니다. 또한 T-SQL에도 포함되어 있으므로 Oracle 또는 MySql과 같은 다른 플랫폼을 사용하는 경우 PL / SQL 또는 사용중인 다른 SQL 브랜드에 대한 코드를 조정해야합니다. 그래도 시작해야합니다. 문제를 해결하고 저장 프로 시저를 일정에 따라 주기적으로 실행하도록 설정하면 좋습니다. 루틴에 대한 의견이 있으면 언제든지 SQL 작성을 개선하기 위해 노력하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.