เครื่องมือสำหรับการตรวจจับความผิดปกติอัตโนมัติในตาราง SQL?


10

ฉันมีตาราง SQL ขนาดใหญ่ที่เป็นบันทึก ข้อมูลค่อนข้างซับซ้อนและฉันพยายามค้นหาวิธีการระบุความผิดปกติโดยที่ฉันไม่เข้าใจข้อมูลทั้งหมด ฉันพบเครื่องมือมากมายสำหรับการตรวจจับความผิดปกติ แต่ส่วนใหญ่ต้องการเครื่องมือ "คนกลาง" ประเภทต่าง ๆ เช่น Elastic Search, Splunk เป็นต้น

ไม่มีใครรู้เครื่องมือที่สามารถทำงานกับตาราง SQL ที่สร้างพื้นฐานและการแจ้งเตือนของความผิดปกติโดยอัตโนมัติ?

สิ่งนี้อาจฟังดูขี้เกียจ แต่ฉันใช้เวลาหลายสิบชั่วโมงในการเขียนสคริปต์การรายงานแต่ละรายการเนื่องจากฉันเรียนรู้ว่าแต่ละประเภทเหตุการณ์หมายถึงอะไรและฟิลด์อื่น ๆ ไปกับแต่ละกิจกรรมและฉันไม่รู้สึกใกล้ชิดกับความสามารถในการเตือนปัญหาจริง ๆ วิธีที่มีความหมาย ตารางมี 41 คอลัมน์และมีจำนวนถึง 500 ล้านแถว (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 มีโซลูชันบางอย่างที่ออกมาจากกล่องเพื่อทำการวิเคราะห์บันทึก 500 ล้านระเบียนน่าจะเป็นปัญหาที่เกิดขึ้นกับ SQL แม้ว่าจะมีการแบ่งตารางและการทำดัชนีคอลัมน์ก็ตาม


ฉันควรสังเกตว่านี่เป็นเทคนิค Intersystems Caché มันเปิดเผยคลาสทั้งหมดเป็นตาราง SQL นั่นคือวิธีที่ฉันทำรายงานทั้งหมดของฉันเพื่อเห็นแก่สติ
ผู้สนับสนุนของปีศาจ

3

หากคุณต้องการรหัส SQL ที่ใช้วิธีการตรวจหาค่าผิดปกติต่างๆกับตารางใด ๆ ให้ตรวจสอบชุดบทความและตัวอย่างโค้ดของฉันมุ่งสู่ SQL Server ฉันให้รหัสเบื้องต้นสำหรับการทดสอบของ Grubb, Z-Scores และ Z-Scores, Interquartile Range, Q-Test ของ Dixon, GESD, การทดสอบ Tietjen-Moore, การทดสอบเกณฑ์ของ Pierce, การทดสอบของ Thompson Tau, การดัดแปลงของ Thompson Tau ระยะทางกฎของเบ็นฟอร์ดและแผนการแปลงภาพต่างๆ โปรดทราบว่าฉันเป็นมือสมัครเล่นที่นี่และนี่คือรหัสเก่าของฉันดังนั้นฉันจึงมั่นใจว่าต้องมีการแก้ไข อย่างน้อยก็ให้จุดเริ่มต้นเพื่อให้คุณสามารถเรียกใช้การทดสอบเหล่านี้กับตารางฐานข้อมูลใด ๆ ที่คุณมีสิทธิ์ นอกจากนี้ยังอยู่ใน T-SQL ดังนั้นคุณจะต้องปรับเปลี่ยนรหัสสำหรับ PL / SQL หรือยี่ห้ออื่น ๆ ของ SQL ที่คุณอาจใช้หากเกิดขึ้นกับแพลตฟอร์มอื่นเช่น Oracle หรือ MySql สิ่งนี้จะช่วยให้คุณเริ่มต้นได้ เพียงแค่คิดค่า kinks และตั้งค่าโพรซีเดอร์ที่เก็บไว้เพื่อรันเป็นระยะตามกำหนดเวลาและคุณก็พร้อมที่จะไป แจ้งให้เราทราบหากคุณมีข้อเสนอแนะใด ๆ เกี่ยวกับการปฏิบัติฉันมักจะมองหาการปรับปรุงการเขียน SQL ของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.