Công cụ phát hiện bất thường tự động trên bảng SQL?


10

Tôi có một bảng SQL lớn về cơ bản là một bản ghi. Dữ liệu khá phức tạp và tôi đang cố gắng tìm cách nào đó để xác định sự bất thường mà không cần tôi hiểu tất cả dữ liệu. Tôi đã tìm thấy rất nhiều công cụ để Phát hiện dị thường nhưng hầu hết trong số chúng yêu cầu một "người trung gian" các loại, ví dụ như Tìm kiếm đàn hồi, Splunk, v.v.

Có ai biết một công cụ có thể chạy trên bảng SQL xây dựng đường cơ sở và cảnh báo về sự bất thường tự động không?

Điều này nghe có vẻ lười biếng nhưng tôi đã dành hàng chục giờ để viết các tập lệnh báo cáo riêng lẻ khi tôi tìm hiểu ý nghĩa của từng loại sự kiện và các lĩnh vực khác đi với mỗi sự kiện và tôi không cảm thấy gần gũi hơn để có thể cảnh báo về các vấn đề thực sự trong cách ý nghĩa. Bảng này có 41 cột và chỉ đạt 500 triệu hàng (3 năm dữ liệu).


Không thực sự, nhưng Xếp hạng theo từng cột và xem xét các giá trị tối thiểu và tối đa và đặt cảnh báo cho các giá trị lố bịch có thể hữu ích.
Barry Carter

Trong trường hợp nó không phải là siêu tinh vi, bạn có thể sử dụng hồi quy tuyến tính cửa sổ di chuyển mlinreg và do đó xác định độ lệch lớn.
Diego

Câu trả lời:


3

Nếu bạn muốn tiếp cận điều này từ phối cảnh SQL, thì rộng rãi tôi sẽ xác định bất kỳ biến phân loại nào gây ra hành vi khác nhau. Sau đó thực hiện một cái gì đó như sau trên một số biến phân tích.

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

Tôi sẽ thực hiện điều này như một bài tập một lần để nói về giá trị dữ liệu gần đây nhất của năm, sau đó từ góc độ tốc độ, tôi sẽ chạy nó thường xuyên khi bạn cần, để gắn cờ dữ liệu đặc biệt.

Một cách tiếp cận tốt hơn, có lẽ, có nghĩa là học các công nghệ mới là giải pháp HDFS / Spark rồi PIG / Python / R. Nhưng HDFS / Spark có một số giải pháp được đưa ra để phân tích nhật ký. 500 triệu bản ghi có thể đang gặp phải các vấn đề về hiệu năng với SQL, ngay cả với phân vùng bảng và lập chỉ mục cột.


Tôi nên lưu ý rằng đây là kỹ thuật Intersystems Caché. Nó trưng ra tất cả các lớp dưới dạng các bảng SQL. Đó là cách tôi làm tất cả các báo cáo của mình, vì lợi ích của sự tỉnh táo.
Devil's Advocate

3

Nếu bạn cần mã SQL chạy các phương thức phát hiện ngoại lệ khác nhau đối với bất kỳ bảng tùy ý nào, hãy xem loạt bài viết và mẫu mã của tôihướng tới SQL Server. Tôi cung cấp một số mã sơ bộ cho các Bài kiểm tra của Grubb, Điểm Z và Điểm Z đã sửa đổi, Phạm vi liên mã hóa, Kiểm tra Q của Dixon, GESD, Thử nghiệm Tietjen-Moore, Tiêu chí của Pierce, Tiêu chuẩn của Chauvenet, Tiêu chuẩn của Tauvenet Khoảng cách, Luật Benford và các âm mưu hình ảnh khác nhau. Xin lưu ý rằng tôi là một người nghiệp dư về điều này và đây là một số mã cũ của tôi, vì vậy tôi chắc chắn sẽ cần sửa chữa; điều này ít nhất cung cấp một điểm khởi đầu để bạn có thể chạy các thử nghiệm này đối với bất kỳ bảng cơ sở dữ liệu nào mà bạn có quyền. Nó cũng có trong T-SQL, vì vậy bạn sẽ cần điều chỉnh mã cho PL / SQL hoặc bất kỳ nhãn hiệu SQL nào khác mà bạn có thể đang sử dụng, nếu bạn tình cờ ở trên một số nền tảng khác như Oracle hoặc MySql. Điều này sẽ giúp bạn bắt đầu mặc dù. Chỉ cần thực hiện các thao tác và thiết lập các thủ tục được lưu trữ để chạy định kỳ theo lịch trình và bạn sẽ ổn. Hãy cho tôi biết nếu bạn có bất kỳ phản hồi nào về các thói quen, tôi luôn tìm cách cải thiện việc viết SQL của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.