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

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

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

إضافة بيانات مرجعية لقاعدة بيانات SQL باستخدام بوابة Azure

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

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

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

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

    هام

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

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

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

  1. في وظيفتك في Stream Analytics، حدد Inputs ضمن Job topology. اختر إضافة إدخال المرجع، ثم اختر قاعدة بيانات SQL.

    لقطة شاشة للوحة مدخلات تحليلات التدفق مع إضافة مدخلات مرجعية محددة، وتظهر قائمة منسدلة تحتوي على قيم تخزين Blob وقاعدة بيانات SQL.

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

    لمزيد من المعلومات، راجع استعلام دلتا.

    لقطة شاشة لصفحة الإدخال الجديدة في قاعدة بيانات SQL مع نموذج تكوين في اللوحة اليسرى واستعلام لقطة في اللوحة اليمنى.

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

حدد حساب التخزين في إعدادات المهمة

اذهب إلى إعدادات حساب التخزين تحت الإعدادات، ثم اختر إضافة حساب تخزين.

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

بدء الوظيفة

  1. بعد أن تقوم بتكوين المدخلات والمخرجات والاستعلام الأخرى، ابدأ وظيفة تحليلات التدفق.

إضافة بيانات مرجعية لقاعدة بيانات SQL باستخدام Visual Studio

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

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

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

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

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

    هام

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

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

استخدم SQL Server Management Studio لإنشاء جدول لتخزين بياناتك المرجعية. راجع تصميم أول قاعدة بيانات Azure SQL باستخدام 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. اختر ملف>Project جديد.

  2. في قائمة القوالب، اختر Stream Analytics، ثم اختر Azure Stream Analytics Application.

  3. أدخل اسم المشروع، الموقع، واسم الحل، ثم اختر موافقا.

    لقطة شاشة لحوار New Project مع قالب Stream Analytics وتطبيق Azure Stream Analytics محدد، وتم تمييز مربعات أسماء الاسم، الموقع، والحل.

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

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

    لقطة شاشة لحوار إضافة عنصر جديد مع اختيار الإدخال.

  2. افتح Input.json في مستكشف الحلول.

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

    لقطة شاشة لتكوين إدخال تحليلات التدفق مع القيم المدخلة أو المختارة من القوائم المنسدلة.

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

    لقطة شاشة مستكشف الحلول مع ملف SQL CodeBehind Chemicals.snapshot.sql مميزا.

    إذا اخترت تحديث دوري باستخدام دلتا، Visual Studio يولد ملفي SQL CodeBehind اثنين: [Input alias].snapshot.sql و[Input alias].delta.sql.

    لقطة شاشة مستكشف الحلول مع ملفات SQL CodeBehind Chemicals.delta.sql و Chemicals.snapshot.sql مميزة.

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

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

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

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

لقطة شاشة لتكوين وظيفة تحليلات التدفق معروضة مع القيم الافتراضية وإعدادات التخزين العالمية المميزة.

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

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

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

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

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

       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 لتوجيه وقت تشغيل تحليلات التدفق للحصول على مجموعة البيانات المرجعية من جدول قاعدة بيانات SQL الزمني الصالح في وقت النظام. إذا لم تقدم هذا المعامل، فإنك تخاطر بالحصول على مجموعة بيانات مرجعية أساسية غير دقيقة بسبب انحرافات الساعة. المثال التالي يوضح استعلام لقطة كاملة:

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

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

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

       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
    

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

    هام

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

     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);
    

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

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

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

اختبر استعلامك باستخدام تعليمة Visual Studio برمجية

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

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

    لقطة شاشة لعلامة تبويب محرر تعليمة Visual Studio برمجية تعرض ملف ReferenceSQLDatabase.json.

  2. اختر أيقونة SQL Server واختر إضافة الاتصال.

    لقطة شاشة لللوحة اليسرى مع خيار إضافة الاتصال مميز.

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

    لقطة شاشة لنموذج الاتصال مع تمييز صناديق معلومات قاعدة البيانات والخادم.

  4. اختر واضغط باستمرار (أو انقر بزر الفأرة الأيمن) في SQL المرجعي ثم اختر تنفيذ الاستعلام.

    لقطة شاشة لقائمة السياق مع خيار تنفيذ الاستعلام مميز.

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

    لقطة شاشة لمربع حوار يقول إنشاء ملف تعريف اتصال من القائمة أدناه، مع تمييز إدخال القائمة الواحد.

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

    لقطة شاشة لنتائج البحث في علامة التبويب في محرر تعليمة Visual Studio برمجية.

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

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

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

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

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

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

معا، تشير المقياسان إلى ما إذا كانت المهمة تستعن قاعدة بيانات SQL لجلب مجموعة البيانات المرجعية ثم تحملها إلى الذاكرة.

هل أحتاج إلى نوع خاص من قاعدة بيانات Azure SQL؟

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

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

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