Інструменти для автоматичного виявлення аномалії в таблиці SQL?


10

У мене є велика таблиця SQL, яка по суті є журналом. Дані є досить складними, і я намагаюся знайти спосіб виявити аномалії, не розуміючи всіх даних. Я знайшов безліч інструментів для виявлення аномалії, але для більшості з них потрібен "середній чоловік", тобто Elastic Search, Splunk тощо.

Хтось знає про інструмент, який може працювати проти таблиці SQL, яка автоматично будує базову лінію та попереджує про аномалії?

Це може здатися ледачим, але я витратив десятки годин на написання окремих сценаріїв звітування, коли я дізнаюся, що означає кожен тип події та які інші поля входять до кожної події, і я не відчуваю себе ближчим до того, щоб мати можливість попередити про реальні проблеми змістовний спосіб. У таблиці розміщено 41 стовпчик і всього лише 500 мільйонів рядків (3 роки даних).


Насправді, але СОРТИРОВАННЯ за кожним стовпцем і перегляд мінімальних та максимальних значень, а також встановлення сповіщень про смішні значення може бути корисним.
Баррі Картер

У випадку, якщо це не повинно бути надто складним, ви можете використовувати лінійну регресію рухомого вікна mlinreg і таким чином виявити великі відхилення.
Дієго

Відповіді:


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 мають деякі рішення, які виходять із коробки для аналізу журналів. 500 мільйонів записів, ймовірно, стикаються з проблемами продуктивності в SQL, навіть при розділенні таблиць та індексації стовпців.


Я повинен зазначити, що це технічно Intersystems Caché. Він відкриває всі класи як таблиці SQL. Ось так я роблю всі свої звіти, заради здоровості.
Адвокат диявола

3

Якщо вам потрібен код SQL, який використовує різні способи виявлення зовнішніх даних проти будь-якої довільної таблиці, перегляньте мою серію статей та зразків кодуспрямована на SQL Server. Я надаю попередній код для тестів Грубба, Z-Scores та модифікованих Z-Scores, міжквартирний діапазон, Q-тест Діксона, GESD, тест Тітьєна-Мура, критерій Пірса, критерій Шовента, модифікований тест Томпсона Тау, відстань Кука, махаланобіс Відстань, Закон Бенфорда та різні візуальні сюжети. Зверніть увагу, що я любитель цього і що це мій старіший код, тому я впевнений, що потрібні будуть виправлення; це принаймні дає вихідну точку, щоб ви могли запустити ці тести на будь-якій таблиці бази даних, для якої у вас є дозволи. Він також є в T-SQL, тому вам потрібно буде відкоригувати код для PL / SQL або будь-якої іншої марки SQL, яку ви можете використовувати, якщо ви потрапили на якусь іншу платформу, наприклад Oracle або MySql. З цього варто почати. Просто випрацьовуйте перешкоди та встановлюйте збережені процедури, щоб періодично запускатись за розкладом, і ви готові йти. Повідомте мене, якщо у вас є якісь відгуки про підпрограми, я завжди прагну вдосконалити свою програму SQL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.