البرنامج التعليمي: عرض الحالات الشاذة باستخدام الكشف عن الدُفعات و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.

An image of the

بعد ظهور مربع الحوار، انتقل إلى المجلد حيث قمت بتنزيل ملف xlsx. وحدده. بعد ظهور حوار Navigator، حدد Sheet1، ثم Edit.

An image of the data source

سيُحوّل Power BI الطوابع الزمنية الموجودة في العمود الأول إلى نوع بيانات Date/Time. يجب تحويل هذه الطوابع الزمنية إلى نص ليتم إرسالها إلى واجهة برمجة تطبيقات Anomaly Detector. إذا لم يفتح محرر Power Query تلقائيا، فحدد تحرير الاستعلامات على علامة التبويب الصفحة الرئيسية.

حدد شريط Transform في محرر Power Query. في مجموعة أي عمود افتح القائمة المنسدلة نوع البيانات: وحدد نص.

An image of the data type drop down

عندما تتلقى إشعارا حول تغيير نوع العمود، حدد استبدال الحالي. بعد ذلك، حدد إغلاق وتطبيق أو تطبيق في شريط الصفحة الرئيسية .

إنشاء دالة لإرسال البيانات وتنسيق الاستجابة

لتنسيق وإرسال ملف البيانات إلى واجهة برمجة تطبيقات Anomaly Detector، يمكنك استدعاء استعلام على الجدول الذي تم إنشاؤه أعلاه. في محرر Power Query، من شريط الصفحة الرئيسية، افتح القائمة المنسدلة مصدر جديد وحدد استعلام فارغ.

تأكد من تحديد الاستعلام الجديد، ثم حدد محرر متقدم.

An image of the

ضمن المحرر المتقدم استخدم مقتطف 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.

An image of the invoke function

هام

تذكر إزالة المفتاح من التعليمة البرمجية عند الانتهاء، وعدم توزيعها علناً. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. راجع مقالة أمان خدمات Azure الذكاء الاصطناعي للحصول على مزيد من المعلومات.

المصادقة وخصوصية مصدر البيانات

إشعار

كن على دراية بسياسات مؤسستك لخصوصية البيانات والوصول إليها. راجع مستويات خصوصية Power BI Desktop لمزيد من المعلومات.

قد تحصل على رسالة تحذير عند محاولة تشغيل الاستعلام نظرًا إلى أنه يستخدم مصدر بيانات خارجي.

An image showing a warning created by Power BI

لإصلاح ذلك، حدد ملف وخيارات وإعدادات. ثم حدد خيارات. أسفل الملف الحالي، حدد الخصوصية، وتجاهل مستويات الخصوصية واحتمال تحسين الأداء.

كما قد تحصل على رسالة تطلب منك تحديد كيفية الاتصال بواجهة برمجة التطبيقات.

An image showing a request to specify access credentials

لإصلاح ذلك، حدد تحرير بيانات الاعتماد في الرسالة. بعد ظهور مربع الحوار، حدد مجهول للاتصال بواجهة برمجة التطبيقات بشكل مجهول. وبعد ذلك حدد Connect.

بعد ذلك، حدد إغلاق وتطبيق في شريط الصفحة الرئيسية لتطبيق التغييرات.

عرض استجابة واجهة برمجة تطبيقات Anomaly Detector

في شاشة Power BI الرئيسية، ابدأ باستخدام الاستعلامات التي تم إنشاؤها أعلاه لعرض البيانات. حدد أولاً مخطط خطي في المرئيات. ثم أضف الطابع الزمني من الدالة التي تم استدعاؤها إلى محور المخطط الخطي. انقر بزر الماوس الأيمن عليه وحدد الطابع الزمني.

Right-clicking the Timestamp value

أضف الحقول التالية من الدالة المُستدعاة إلى حقل القيم للمخطط. استخدم لقطة الشاشة أدناه للمساعدة في إنشاء المخطط.

  • القيمة‬
  • UpperMargins
  • LowerMargins
  • ExpectedValues

An image of the chart settings

بعد إضافة الحقول، حدد على المخطط وقم بتغيير حجمه لإظهار جميع نقاط البيانات. سيبدو الرسم البياني مشابهًا للقطة الشاشة أدناه:

An image of the chart visualization

عرض نقاط بيانات الحالات الشاذة

على الجانب الأيسر من نافذة Power BI، أسفل جزء FIELDS، انقر بزر الماوس الأيمن فوق Value ضمن Invoked Function query، وحدد New quick measure.

An image of the new quick measure screen

على الشاشة التي تظهر، حدد القيمة المُصفّاة كالحسابات. عيّن القيمة الأساسية إلى Sum of Value. ثم اسحب IsAnomaly من حقول الدالة المُستدعاة إلى تصفية. حدّد True من القائمة المنسدلة تصفية.

A second image of the new quick measure screen

بعد تحديد موافق، سيكون لديك Value for True حقل، في أسفل قائمة الحقول. انقر بزر الماوس الأيمن فوقه وأعد تسميته إلى شذوذ. أضفه إلى قيم المخطط. ثم حدد أداة التنسيق وعيّن نوع المحور X إلى تصنيفي.

An image of the format x axis

يمكنك تطبيق الألوان على المخطط عن طريق تحديد أداة التنسيق وألوان البيانات. يجب أن يبدو المخطط كما يلي:

An image of the final chart