البرنامج التعليمي: عرض الحالات الشاذة باستخدام الكشف عن الدُفعات وPower BI (أحادي المتغير)
هام
اعتبارا من 20 سبتمبر 2023، لن تتمكن من إنشاء موارد Anomaly Detector جديدة. يتم إيقاف خدمة Anomaly Detector في 1 أكتوبر 2026.
يهدف هذا البرنامج التعليمي للعثور على الحالات الشاذة ضمن مجموعة بيانات السلاسل الزمنية كدُفعة. باستخدام Power BI Desktop، سوف تأخذ ملف Excel، وإعداد البيانات لواجهة برمجة تطبيقات Anomaly Detector، وعرض إحصائية الحالات الشاذة في جميع أنحاء ذلك.
ستتعلم في هذه البرنامج التعليمي كيفية:
- استخدام Power BI Desktop لاستيراد مجموعة بيانات السلاسل الزمنية وتحويلها
- دمج Power BI Desktop مع واجهة برمجة تطبيقات Anomaly Detector للكشف عن دُفعات الحالات الشاذة
- عرض الحالات الشاذة الموجودة في بياناتك، بما في ذلك القيم الحالية والمُتوقعة، وحدود الكشف عن الحالات الشاذة.
المتطلبات الأساسية
- اشتراك Azure
- Microsoft Power BI Desktop، متاح مجانًا.
- ملف excel (.xlsx) يحتوي على نقاط بيانات السلاسل الزمنية.
- بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Anomaly Detector في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية.
- ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تنشئه؛ لتوصيل التطبيق الخاص بك بواجهة برمجة تطبيقات Anomaly Detector API. سوف تقوم بهذا لاحقًا في التشغيل السريع.
إشعار
للحصول على أفضل النتائج عند استخدام واجهة برمجة التطبيقات للكشف عن الشذوذ، يجب أن تتضمن بيانات السلسلة الزمنية المنسقة من JSON ما يلي:
- نقاط بيانات مفصولة بالفترة الزمنية نفسها، مع عدم وجود أكثر من 10% من العدد المتوقع من النقاط المفقودة.
- 12 نقطة بيانات على الأقل في حالة عدم وجود نمط موسمي واضح لديك.
- وجود 4 تكرارات نمط على الأقل في حالة كان لدى بياناتك نمط موسمي واضح.
تحميل بيانات السلاسل الزمنية وتنسيقها
للبدء، افتح Power BI Desktop وحمّل بيانات السلاسل الزمنية التي قمت بتنزيلها من خطوة المتطلبات الأساسية. يحتوي ملف Excel على مجموعة من الطابع الزمني وأزواج القيم بالتوقيت العالمي المتفق عليه (UTC).
إشعار
يمكن لـ Power BI استخدام البيانات من مجموعة متنوعة من المصادر، مثل ملفات csv. وقواعد بيانات SQL وتخزين Azure blob وغيرهم.
في نافذة Power BI Desktop الرئيسية، انقر فوق شريط الصفحة الرئيسية. في مجموعة البيانات الخارجية على الشريط، افتح القائمة المنسدلة الحصول على البيانات وحدد Excel.
بعد ظهور مربع الحوار، انتقل إلى المجلد حيث قمت بتنزيل ملف xlsx. وحدده. بعد ظهور حوار Navigator، حدد Sheet1، ثم Edit.
سيُحوّل Power BI الطوابع الزمنية الموجودة في العمود الأول إلى نوع بيانات Date/Time
. يجب تحويل هذه الطوابع الزمنية إلى نص ليتم إرسالها إلى واجهة برمجة تطبيقات Anomaly Detector. إذا لم يفتح محرر Power Query تلقائيا، فحدد تحرير الاستعلامات على علامة التبويب الصفحة الرئيسية.
حدد شريط Transform في محرر Power Query. في مجموعة أي عمود افتح القائمة المنسدلة نوع البيانات: وحدد نص.
عندما تتلقى إشعارا حول تغيير نوع العمود، حدد استبدال الحالي. بعد ذلك، حدد إغلاق وتطبيق أو تطبيق في شريط الصفحة الرئيسية .
إنشاء دالة لإرسال البيانات وتنسيق الاستجابة
لتنسيق وإرسال ملف البيانات إلى واجهة برمجة تطبيقات Anomaly Detector، يمكنك استدعاء استعلام على الجدول الذي تم إنشاؤه أعلاه. في محرر Power Query، من شريط الصفحة الرئيسية، افتح القائمة المنسدلة مصدر جديد وحدد استعلام فارغ.
تأكد من تحديد الاستعلام الجديد، ثم حدد محرر متقدم.
ضمن المحرر المتقدم استخدم مقتطف Power Query M التالي لاستخراج الأعمدة من الجدول وإرسالها إلى واجهة برمجة التطبيقات. بعد ذلك، سيقوم الاستعلام بإنشاء جدول من استجابة JSON ثم يُعيده. استبدل المتغير apiKey
بمفتاح واجهة برمجة تطبيقات Anomaly Detector، واستبدل endpoint
بنقطة النهاية. بعد إدخال الاستعلام في المحرر المتقدم، حدد تم.
(table as table) => let
apikey = "[Placeholder: Your Anomaly Detector resource access key]",
endpoint = "[Placeholder: Your Anomaly Detector resource endpoint]/anomalydetector/v1.0/timeseries/entire/detect",
inputTable = Table.TransformColumnTypes(table,{{"Timestamp", type text},{"Value", type number}}),
jsontext = Text.FromBinary(Json.FromValue(inputTable)),
jsonbody = "{ ""Granularity"": ""daily"", ""Sensitivity"": 95, ""Series"": "& jsontext &" }",
bytesbody = Text.ToBinary(jsonbody),
headers = [#"Content-Type" = "application/json", #"Ocp-Apim-Subscription-Key" = apikey],
bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody, ManualStatusHandling={400}]),
jsonresp = Json.Document(bytesresp),
respTable = Table.FromColumns({
Table.Column(inputTable, "Timestamp")
,Table.Column(inputTable, "Value")
, Record.Field(jsonresp, "IsAnomaly") as list
, Record.Field(jsonresp, "ExpectedValues") as list
, Record.Field(jsonresp, "UpperMargins")as list
, Record.Field(jsonresp, "LowerMargins") as list
, Record.Field(jsonresp, "IsPositiveAnomaly") as list
, Record.Field(jsonresp, "IsNegativeAnomaly") as list
}, {"Timestamp", "Value", "IsAnomaly", "ExpectedValues", "UpperMargin", "LowerMargin", "IsPositiveAnomaly", "IsNegativeAnomaly"}
),
respTable1 = Table.AddColumn(respTable , "UpperMargins", (row) => row[ExpectedValues] + row[UpperMargin]),
respTable2 = Table.AddColumn(respTable1 , "LowerMargins", (row) => row[ExpectedValues] - row[LowerMargin]),
respTable3 = Table.RemoveColumns(respTable2, "UpperMargin"),
respTable4 = Table.RemoveColumns(respTable3, "LowerMargin"),
results = Table.TransformColumnTypes(
respTable4,
{{"Timestamp", type datetime}, {"Value", type number}, {"IsAnomaly", type logical}, {"IsPositiveAnomaly", type logical}, {"IsNegativeAnomaly", type logical},
{"ExpectedValues", type number}, {"UpperMargins", type number}, {"LowerMargins", type number}}
)
in results
قم باستدعاء الاستعلام على ورقة البيانات عن طريق تحديد Sheet1
أسفل Enter Parameter، وحدد Invoke.
هام
تذكر إزالة المفتاح من التعليمة البرمجية عند الانتهاء، وعدم توزيعها علناً. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. راجع مقالة أمان خدمات Azure الذكاء الاصطناعي للحصول على مزيد من المعلومات.
المصادقة وخصوصية مصدر البيانات
إشعار
كن على دراية بسياسات مؤسستك لخصوصية البيانات والوصول إليها. راجع مستويات خصوصية Power BI Desktop لمزيد من المعلومات.
قد تحصل على رسالة تحذير عند محاولة تشغيل الاستعلام نظرًا إلى أنه يستخدم مصدر بيانات خارجي.
لإصلاح ذلك، حدد ملف وخيارات وإعدادات. ثم حدد خيارات. أسفل الملف الحالي، حدد الخصوصية، وتجاهل مستويات الخصوصية واحتمال تحسين الأداء.
كما قد تحصل على رسالة تطلب منك تحديد كيفية الاتصال بواجهة برمجة التطبيقات.
لإصلاح ذلك، حدد تحرير بيانات الاعتماد في الرسالة. بعد ظهور مربع الحوار، حدد مجهول للاتصال بواجهة برمجة التطبيقات بشكل مجهول. وبعد ذلك حدد Connect.
بعد ذلك، حدد إغلاق وتطبيق في شريط الصفحة الرئيسية لتطبيق التغييرات.
عرض استجابة واجهة برمجة تطبيقات Anomaly Detector
في شاشة Power BI الرئيسية، ابدأ باستخدام الاستعلامات التي تم إنشاؤها أعلاه لعرض البيانات. حدد أولاً مخطط خطي في المرئيات. ثم أضف الطابع الزمني من الدالة التي تم استدعاؤها إلى محور المخطط الخطي. انقر بزر الماوس الأيمن عليه وحدد الطابع الزمني.
أضف الحقول التالية من الدالة المُستدعاة إلى حقل القيم للمخطط. استخدم لقطة الشاشة أدناه للمساعدة في إنشاء المخطط.
- القيمة
- UpperMargins
- LowerMargins
- ExpectedValues
بعد إضافة الحقول، حدد على المخطط وقم بتغيير حجمه لإظهار جميع نقاط البيانات. سيبدو الرسم البياني مشابهًا للقطة الشاشة أدناه:
عرض نقاط بيانات الحالات الشاذة
على الجانب الأيسر من نافذة Power BI، أسفل جزء FIELDS، انقر بزر الماوس الأيمن فوق Value ضمن Invoked Function query، وحدد New quick measure.
على الشاشة التي تظهر، حدد القيمة المُصفّاة كالحسابات. عيّن القيمة الأساسية إلى Sum of Value
. ثم اسحب IsAnomaly
من حقول الدالة المُستدعاة إلى تصفية. حدّد True
من القائمة المنسدلة تصفية.
بعد تحديد موافق، سيكون لديك Value for True
حقل، في أسفل قائمة الحقول. انقر بزر الماوس الأيمن فوقه وأعد تسميته إلى شذوذ. أضفه إلى قيم المخطط. ثم حدد أداة التنسيق وعيّن نوع المحور X إلى تصنيفي.
يمكنك تطبيق الألوان على المخطط عن طريق تحديد أداة التنسيق وألوان البيانات. يجب أن يبدو المخطط كما يلي: