استخدام البيانات المرجعية من SQL Database لوظيفة Azure Stream Analytics

يدعم Azure Stream Analytics Azure SQL Database كمصدر لإدخال البيانات المرجعية. يمكنك استخدام SQL Database كبيانات مرجعية لوظيفة Stream Analytics في مدخل Microsoft Azure وفي Visual Studio باستخدام أدوات Stream Analytics. توضح هذه المقالة كيفية القيام بكلتا الطريقتين.

مدخل Azure

استخدم الخطوات التالية لإضافة Azure SQL Database كمصدر إدخال مرجعي باستخدام مدخل Microsoft Azure:

المتطلبات الأساسية للمدخل

  1. إنشاء وظيفة تحليلات البث.

  2. أنشئ حساب تخزين لتستخدمه وظيفة Stream Analytics.

    هام

    يحتفظ Azure Stream Analytics باللقطات داخل حساب التخزين هذا. عند تكوين نهج الاستبقاء، من الضروري التأكد من أن الفترة الزمنية المختارة تشمل بشكل فعال مدة الاسترداد المطلوبة لمهمة Stream Analytics.

  3. أنشئ Azure SQL Database باستخدام مجموعة بيانات لاستخدامها كبيانات مرجعية بواسطة وظيفة Stream Analytics.

تحديد إدخال بيانات مرجع SQL Database

  1. في وظيفتك في Stream Analytics، حدد Inputs ضمن Job topology. انقر فوق Add reference input واختر SQL Database.

    Inputs is selected in the left navigation pane. On Inputs, + Add reference input is selected, revealing a drop-down list that shows the values Blob storage and SQL Database.

  2. املأ تكوينات إدخال Stream Analytics. اختر اسم قاعدة البيانات واسم الخادم واسم المستخدم وكلمة المرور. إذا كنت تريد تحديث إدخال البيانات المرجعية بشكل دوري، فاختر "تشغيل" لتحديد معدل التحديث في DD: HH: MM. إذا كانت لديك مجموعات بيانات كبيرة بمعدل تحديث قصير. يمكّنك استعلام دلتا من تتبع التغييرات داخل البيانات المرجعية عن طريق استعادة كافة الصفوف في SQL Database التي تم إدراجها أو حذفها خلال وقت البدء، @deltaStartTime، ووقت الانتهاء @deltaEndTime.

الرجاء مراجعة استعلام دلتا.

When SQL Database is selected, the SQL Database New input page appears. There is a configuration form in the left pane, and a Snapshot query in the right pane.

  1. اختبر استعلام اللقطة في محرر استعلام SQL. لمزيد من المعلومات، راجع استخدام محرر استعلام SQL للمدخل Microsoft Azure للاتصال والاستعلام عن البيانات

حدد حساب التخزين في تكوين الوظيفة

انتقل إلى Storage account settings ضمن تكوين وحدد Add storage account.

Storage account settings is selected in the left pane. There is an Add storage account button in the right pane.

بدء الوظيفة

بمجرد تكوين المدخلات والمخرجات والاستعلام الأخرى، يمكنك بدء وظيفة Stream Analytics.

أدوات لـ Visual Studio

استخدم الخطوات التالية لإضافة Azure SQL Database كمصدر إدخال مرجعي باستخدام Visual Studio:

المتطلبات الأساسية لبرنامج Visual Studio

  1. تثبيت أدوات Stream Analytics لبرنامج Visual Studio. الإصدارات التالية من Visual Studio مدعومة:

    • Visual Studio 2015
    • Visual Studio 2019
  2. التعرف على كيفية بدء التشغيل السريع لأدوات Stream Analytics لبرنامج Visual Studio.

  3. قم بإنشاء حساب تخزين.

    هام

    يحتفظ Azure Stream Analytics باللقطات داخل حساب التخزين هذا. عند تكوين نهج الاستبقاء، من الضروري التأكد من أن الفترة الزمنية المختارة تشمل بشكل فعال مدة الاسترداد المطلوبة لمهمة Stream Analytics.

قم بإنشاء جدول SQL Database

استخدم SQL Server Management Studio لإنشاء جدول لتخزين بياناتك المرجعية. راجع تصميم أول Azure SQL Database باستخدام Management Studio للحصول على التفاصيل.

تم إنشاء الجدول النموذجي المستخدم في المثال التالي من العبارة التالية:

create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));

اختر اشتراكك

  1. في Visual Studio، في القائمة عرض، حدد مستكشف الخادم.

  2. انقر بزر الماوس الأيمن على Azure، وحدد Connect to Microsoft Azure Subscription، وقم بتسجيل الدخول باستخدام حساب Azure الخاص بك.

قم بإنشاء مشروع Stream Analytics

  1. حدد File > New Project.

  2. في قائمة القوالب على اليمين، حدد Stream Analytics، ثم حدد تطبيق Azure Stream Analytics.

  3. أدخل المشروع Name، وLocation، وSolution name، وحدد OK.

    The Stream Analytics template is selected, Azure Stream Analytics Application is selected, and the Name, Location, and Solution names boxes are highlighted.

تحديد إدخال بيانات مرجع SQL Database

  1. قم بإنشاء مدخلات جديدة.

    On Add New Item, Input is selected.

  2. انقر نقراً مزدوجاً فوق Input.json في مستكشف الحلول.

  3. املأ تكوين إدخال Stream Analytics. اختر اسم قاعدة البيانات واسم الخادم ونوع التحديث ومعدل التحديث. حدد معدل التحديث بالتنسيق DD:HH:MM.

    In Stream Analytics Input Configuration, values are entered or selected from drop-down lists.

    إذا اخترت "التنفيذ مرة واحدة فقط" أو "التنفيذ بشكل دوري"، فسيتم إنشاء ملف SQL CodeBehind واحد باسم [Input Alias].snapshot.sql في المشروع ضمن ملف Input.json العقدة.

    The SQL CodeBehind file Chemicals.snapshot.sql is highlighted.

    إذا اخترت "التحديث دورياً باستخدام دلتا"، فسيتم إنشاء ملفي SQL CodeBehind: [Input Alias].snapshot.sql و[Input Alias].delta.sql.

    The SQL CodeBehind files Chemicals.delta.sql and Chemicals.snapshot.sql are highlighted.

  4. افتح ملف SQL في المحرر واكتب استعلام SQL.

  5. إذا كنت تستخدم Visual Studio 2019، وقمت بتثبيت أدوات بيانات Microsoft SQL Server، يمكنك اختبار الاستعلام بالنقر فوق Execute. ستظهر نافذة معالج لمساعدتك على الاتصال بـ SQL Database وستظهر نتيجة الاستعلام في النافذة في الأسفل.

حدد حساب التخزين

افتح JobConfig.json لتحديد حساب التخزين لتخزين لقطات مرجع SQL.

Stream Analytics Job Configure Configuration is shown with default values. The Global Storage Settings are highlighted.

اختبر محلياً وقم بتوزيعها في Azure

قبل توزيع المهمة على Azure، يمكنك اختبار منطق الاستعلام محلياً مقابل بيانات الإدخال المباشر. لمزيد من المعلومات بشأن هذه الميزة، راجع اختبار البيانات المباشرة محلياً باستخدام أدوات Azure Stream Analytics لبرنامج Visual Studio (إصدار أولي). عند الانتهاء من الاختبار، انقر فوق Submit to Azure. راجع البداية السريعة إنشاء تحليلات البث باستخدام أدوات Azure Stream Analytics لبرنامج Visual Studio لمعرفة كيفية بدء المهمة.

استعلام عن دلتا

عند استخدام استعلام دلتا، يوصى باستخدام الجداول الزمنية في Azure SQL Database.

  1. قم بإنشاء جدول زمني في Azure SQL Database.

       CREATE TABLE DeviceTemporal
       (
          [DeviceId] int NOT NULL PRIMARY KEY CLUSTERED
          , [GroupDeviceId] nvarchar(100) NOT NULL
          , [Description] nvarchar(100) NOT NULL
          , [ValidFrom] datetime2 (0) GENERATED ALWAYS AS ROW START
          , [ValidTo] datetime2 (0) GENERATED ALWAYS AS ROW END
          , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
       )
       WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DeviceHistory));  -- DeviceHistory table will be used in Delta query
    
  2. تأليف استعلام اللقطة.

    استخدم المعلمة snapshotTime لإرشاد وقت تشغيل Stream Analytics للحصول على مجموعة البيانات المرجعية من الجدول الزمني لـ SQL Database الصالحة في وقت النظام. إذا لم تقدم هذه المعلمة، فإنك تخاطر بالحصول على مجموعة بيانات مرجعية أساسية غير دقيقة بسبب انحرافات الساعة. فيما يلي مثال على استعلام لقطة كاملة:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. تأليف استعلام دلتا.

    يسترد هذا الاستعلام جميع الصفوف في SQL Database التي تم إدراجها أو حذفها خلال وقت البدء وdeltaStartTimeووقت الانتهاء deltaEndTime. يجب أن يُرجع استعلام دلتا نفس الأعمدة مثل استعلام اللقطة، بالإضافة إلى العمود العملية. يحدد هذا العمود ما إذا كان الصف قد تم إدراجه أو حذفه بين deltaStartTime وdeltaEndTime. يتم وضع علامة على الصفوف الناتجة كـ 1 إذا تم إدراج السجلات، أو 2 إذا تم حذفها. يجب أن يضيف الاستعلام أيضاً علامة مائية من جانب SQL Server لضمان تسجيل كافة التحديثات في فترة دلتا بشكل مناسب. قد ينتج عن استخدام استعلام دلتا دون علامة مائية مجموعة بيانات مرجعية غير صحيحة.

    بالنسبة للسجلات التي تم تحديثها، يقوم الجدول الزمني بمسك الدفاتر من خلال التقاط عملية الإدراج والحذف. سيطبق وقت تشغيل Stream Analytics نتائج استعلام دلتا على اللقطة السابقة للحفاظ على البيانات المرجعية محدثة. فيما يلي مثال على استعلام دلتا:

       SELECT DeviceId, GroupDeviceId, Description, ValidFrom as _watermark_, 1 as _operation_
       FROM dbo.DeviceTemporal
       WHERE ValidFrom BETWEEN @deltaStartTime AND @deltaEndTime   -- records inserted
       UNION
       SELECT DeviceId, GroupDeviceId, Description, ValidTo as _watermark_, 2 as _operation_
       FROM dbo.DeviceHistory   -- table we created in step 1
       WHERE ValidTo BETWEEN @deltaStartTime AND @deltaEndTime     -- record deleted
    

    لاحظ أن وقت تشغيل Stream Analytics قد يقوم بشكل دوري بتشغيل استعلام اللقطة بالإضافة إلى استعلام دلتا لتخزين نقاط التفتيش.

    هام

    عند استخدام استعلامات دلتا البيانات المرجعية، لا تقم بإجراء تحديثات متطابقة لجدول البيانات المرجعية الزمنية عدة مرات. قد يؤدي هذا إلى إنتاج نتائج غير صحيحة. فيما يلي مثال قد يؤدي إلى نتائج غير صحيحة للبيانات المرجعية:

     UPDATE myTable SET VALUE=2 WHERE ID = 1;
     UPDATE myTable SET VALUE=2 WHERE ID = 1;      
    

    المثال الصحيح:

     UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
    

    يضمن هذا عدم تنفيذ أي تحديثات مكررة.

اختبار الاستعلام

من المهم التحقق من أن استعلامك يقوم بإرجاع مجموعة البيانات المتوقعة التي ستستخدمها وظيفة Stream Analytics كبيانات مرجعية. لاختبار استعلامك، انتقل إلى الإدخال ضمن قسم طوبولوجيا الوظيفة على المدخل. يمكنك بعد ذلك تحديد نموذج البيانات في إدخال مرجع SQL Database. بعد أن يصبح النموذج متاحاً، يمكنك تنزيل الملف والتحقق لمعرفة ما إذا كانت البيانات التي يتم إرجاعها كما هو متوقع. إذا كنت ترغب في تحسين التطوير واختبار التكرارات، فمن المستحسن استخدام أدوات Stream Analytics لبرنامج Visual Studio. يمكنك أيضاً أي أداة أخرى تفضلها للتأكد أولاً من أن الاستعلام يعيد النتائج الصحيحة من Azure SQL Database ثم استخدمها في وظيفة Stream Analytics.

اختبر استعلامك باستخدام Visual Studio Code

قم بتثبيت Azure Stream Analytics Tools وSQL Server (mssql) على Visual Studio Code وقم بإعداد مشروع ASA الخاص بك. لمزيد من المعلومات، راجع التشغيل السريع: إنشاء مهمة Azure Stream Analytics في Visual Studio Code والبرنامج التعليمي بشأن إضافة SQL Server (mssql).

  1. تكوين إدخال البيانات المرجعية SQL الخاص بك.

    A Visual Studio Code editor (tab) shows ReferenceSQLDatabase.json.

  2. حدد رمز SQL Server وانقر على Add Connection.

    + Add Connection appears in the left pane and is highlighted.

  3. املأ معلومات الاتصال.

    The two boxes for database and server information are highlighted.

  4. انقر بزر الماوس الأيمن في مرجع SQL وحدد Execute Query.

    Execute Query is highlighted in the context menu.

  5. اختر الاتصال الخاص بك.

    The dialog box says

  6. مراجعة والتحقق من نتيجة الاستعلام الخاص بك.

    The query search results are in a VS Code editor tab.

الأسئلة المتداولة حول

هل سأتحمل تكلفة إضافية باستخدام إدخال بيانات مرجع SQL في Azure Stream Analytics؟

لا توجد تكلفة إضافية لكل وحدة بث في وظيفة Stream Analytics. ومع ذلك، يجب أن يكون لوظيفة Stream Analytics حساب تخزين Azure مرتبط. تستعلم مهمة Stream Analytics عن قاعدة بيانات SQL (خلال بدء المهمة والفاصل الزمني للتحديث) لاسترداد مجموعة البيانات المرجعية وتخزين تلك اللقطة في حساب التخزين. سيؤدي تخزين هذه اللقطات إلى تحميل تكاليف إضافية مفصلة في صفحة الأسعار لحساب التخزين Azure.

كيف أعرف أنه يتم الاستعلام عن لقطة البيانات المرجعية من قاعدة بيانات SQL واستخدامها في وظيفة Azure Stream Analytics؟

هناك مقياسان تمت تصفيتهما حسب الاسم المنطقي (ضمن مدخل Metrics Azure) والتي يمكنك استخدامها لمراقبة صحة إدخال بيانات مرجع SQL Database.

  • InputEvents: يقيس هذا المقياس عدد السجلات التي تم تحميلها من مجموعة البيانات المرجعية لـ SQL Database.
  • InputEventBytes: يقيس هذا المقياس حجم لقطة البيانات المرجعية التي تم تحميلها في ذاكرة مهمة Stream Analytics.

يمكن استخدام مزيج من هذين المقياسين لاستنتاج ما إذا كانت المهمة هي الاستعلام عن SQL Database لجلب مجموعة البيانات المرجعية ثم تحميلها في الذاكرة.

هل سأطلب نوعاً خاصاً من Azure SQL Database؟

سيعمل Azure Stream Analytics مع أي نوع من Azure SQL Database. ومع ذلك، من المهم أن تفهم أن معدل التحديث المحدد لإدخال البيانات المرجعية يمكن أن يؤثر على تحميل الاستعلام الخاص بك. لاستخدام خيار استعلام دلتا، يوصى باستخدام الجداول الزمنية في Azure SQL Database.

لماذا يخزن Azure Stream Analytics اللقطات في حساب Azure Storage؟

يضمن Stream Analytics معالجة الحدث مرة واحدة تماماً وعلى الأقل مرة واحدة في تسليم الأحداث. في الحالات التي تؤثر فيها المشكلات العابرة على وظيفتك، يلزم قدر ضئيل من إعادة العرض لاستعادة الحالة. لتمكين إعادة التشغيل، يلزم تخزين هذه اللقطات في حساب Azure Storage. لمزيد من المعلومات بشأن إعادة تشغيل نقاط التحقق، راجع مفاهيم نقاط التحقق وإعادة التشغيل في وظائف Azure Stream Analytics.

الخطوات التالية