استخدام البيانات المرجعية لإجراء عمليات البحث في Stream Analytics

البيانات المرجعية هي مجموعة بيانات محدودة ثابتة أو متغيرة ببطء في طبيعتها. يستخدم لإجراء بحث أو لزيادة تدفقات البيانات. تُعرف البيانات المرجعية أيضاً بجدول بحث.

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

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

مثال

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

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

يدعم Stream Analytics Azure Blob Storage وAzure Data Lake Storage Gen2 وAzure SQL Database كطبقة تخزين للبيانات المرجعية. إذا كانت لديك البيانات المرجعية في مخازن البيانات الأخرى، فحاول استخدام Azure Data Factory لاستخراج البيانات وتحويلها وتحميلها إلى أحد مخازن البيانات المدعومة. لمزيد من المعلومات، راجع نسخ النشاط في نظرة عامة على Azure Data Factory.

Azure Blob Storage أو Azure Data Lake Storage Gen 2

يتم نمذجة البيانات المرجعية كسلسلة من الكائنات الثنائية كبيرة الحجم بترتيب تصاعدي للتاريخ/الوقت المحدد في اسم الكائنات الثنائية الكبيرة. يمكن إضافة الكائنات الثنائية كبيرة الحجم فقط إلى نهاية التسلسل باستخدام تاريخ/وقت أكبر من ذلك المحدد من قِبل الكيان الثنائي الكبير الأخير في التسلسل. يتم تعريف الكائنات الثنائية كبيرة الحجم في تكوين الإدخال.

لمزيدٍ من المعلومات، راجع استخدام البيانات المرجعية من Blob Storage لوظيفة Stream Analytics.

تكوين البيانات المرجعية blob

لتكوين بياناتك المرجعية، تحتاج أولاً إلى إنشاء إدخال من النوع بيانات مرجعية. يوضح الجدول أدناه كل خاصية ستحتاج إلى توفيرها خلال إنشاء إدخال البيانات المرجعية مع وصفها.

اسم الخاصية ‏‏الوصف
اسم الإدخال المستعار اسم مألوف سيتم استخدامه في استعلام الوظيفة للإشارة إلى هذا الإدخال.
حساب التخزين اسم حساب التخزين حيث توجد النقاط الكبيرة. إذا كان في نفس الاشتراك مثل وظيفة Stream Analytics، فقم باختيارها من القائمة المنسدلة.
مفتاح حساب السعة التخزينية المفتاح السري المرتبط بحساب السعة التخزينية. يتم ملء هذا المفتاح تلقائياً إذا كان حساب التخزين في الاشتراك نفسه مثل وظيفة Stream Analytics.
حاوية التخزين توفر الحاويات تجميعاً منطقياً للكائنات الثنائية الكبيرة المخزنة في خدمة Blob Storage. عندما تقوم بتحميل كائن ثنائي كبير الحجم إلى خدمة Blob Storage، يجب عليك تحديد حاوية لذلك الكائن.
نمط المسار يتم استخدام هذه الخاصية المطلوبة لتحديد موقع الكائنات الثنائية كبيرة الحجم داخل الحاوية المحددة. ضمن المسار، قد تختار تحديد مثيل واحد أو أكثر من المتغيرات {date} و{time}.
مثال 1: products/{date}/{time}/product-list.csv
مثال 2: products/{date}/product-list.csv
مثال 3: product-list.csv

في حالة عدم وجود كائن ثنائي كبير الحجم في المسار المحدد، ستنتظر وظيفة Stream Analytics إلى أجل غير مسمى حتى يصبح الكائن الثنائي كبير الحجم متاحاً.
تنسيق التاريخ [اختياري] إذا كنت قد استخدمت {تاريخ} ضمن نمط المسار الذي حددته، يمكنك تحديد تنسيق التاريخ الذي يتم فيه تنظيم الكائنات الثنائية كبيرة الحجم من القائمة المنسدلة للتنسيقات المدعومة.
مثال: YYYY/MM/DD، MM/DD/YYYY
تنسيق الوقت [اختياري] إذا كنت قد استخدمت {وقت} في نمط المسار الذي حددته، يمكنك تحديد تنسيق الوقت الذي يتم فيه تنظيم الكائنات الثنائية كبيرة الحجم من القائمة المنسدلة للتنسيقات المدعومة.
مثال: HH أو HH/mm أو HH-mm
تنسيق تسلسل الأحداث للتأكد من عمل استعلاماتك بالطريقة التي تتوقعها، يحتاج Stream Analytics إلى معرفة تنسيق التسلسل الذي تستخدمه لتدفقات البيانات الواردة. بالنسبة إلى البيانات المرجعية، التنسيقات المدعومة هي CSV وJSON.
الترميز UTF-8 هو تنسيق الترميز الوحيد المدعوم في الوقت الحالي.

بيانات مرجعية ثابتة

قد لا يُتوقع تغيير البيانات المرجعية. لتمكين دعم البيانات المرجعية الثابتة، حدد مسارا ثابتا في تكوين الإدخال.

يلتقط Stream Analytics البيانات الثنائية الكبيرة من المسار المحدد. الرموز المميزة لاستبدال {التاريخ} و{الوقت} غير مطلوبة. نظراً لأن البيانات المرجعية غير قابلة للتغيير في Stream Analytics، فلا يوصى بالكتابة فوق البيانات المرجعية الثابتة.

توليد البيانات المرجعية على جدول

قد تكون البيانات المرجعية الخاصة بك مجموعة بيانات متغيرة ببطء. لتحديث البيانات المرجعية، حدد نمط مسار في تكوين الإدخال باستخدام الرموز المميزة لاستبدال {التاريخ} و{الوقت}. يلتقط Stream Analytics تعريفات البيانات المرجعية المحدثة بناءً على نمط المسار هذا.

على سبيل المثال، يوجه نمط sample/{date}/{time}/products.csv بتنسيق التاريخ "YYYY-MM-DD" وتنسيق الوقت "HH-mm" Stream Analytics لالتقاط عينة الكائن الثنائي كبير الحجم المحدث sample/2015-04-16/17-30/products.csv في 16 أبريل 2015 الساعة 5:30 مساءً حسب التوقيت العالمي المنسق.

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

لتجنب مثل هذه السيناريوهات، قم بتحميل الكائن الثنائي كبير الحجم قبل الوقت الفعلي المستهدف، وهو 10:30:00 في هذا المثال. لدى وظيفة Stream Analytics الآن ما يكفي من الوقت لاكتشاف وتحميل الكائن الثنائي كبير الحجم في الذاكرة وتنفيذ العمليات.

إشعار

تبحث وظائف Stream Analytics حالياً عن تحديث الكائن الثنائي كبير الحجم فقط عندما يتقدم وقت الجهاز إلى الوقت المشفر في اسم الكائن الثنائي كبير الحجم. على سبيل المثال، تبحث الوظيفة عن sample/2015-04-16/17-30/products.csv في أقرب وقت ممكن ولكن ليس قبل 16 أبريل 2015 الساعة 5:30 مساءً بالتوقيت العالمي المتفق عليه. لن يبحث أبداً عن نقطة ذات وقت مشفر قبل آخر مرة تم اكتشافها.

على سبيل المثال، بعد أن تعثر الوظيفة على الكائن الثنائي كبير الحجم sample/2015-04-16/17-30/products.csv، فإنها تتجاهل أي ملفات ذات تاريخ مشفر أقدم من 16 أبريل 2015، في الساعة 5:30 مساء. إذا تم إنشاء كائن ثنائي كبير الحجم متأخر الوصول sample/2015-04-16/17-25/products.csv في نفس الحاوية، فلن تستخدمه الوظيفة.

في مثال آخر، sample/2015-04-16/17-30/products.csv يتم إنتاجه فقط في 16 أبريل 2015، في الساعة 10:03 مساء، ولكن لا يوجد كائن ثنائي كبير الحجم بتاريخ سابق في الحاوية. ثم تستخدم الوظيفة هذا الملف بدءا من 16 أبريل 2015، في الساعة 10:03 مساء وتستخدم البيانات المرجعية السابقة حتى ذلك الحين.

الاستثناء من هذا السلوك هو عندما تحتاج المهمة إلى إعادة معالجة البيانات في الوقت المناسب أو عند بدء المهمة لأول مرة.

في وقت البدء، تبحث الوظيفة عن أحدث كائن تم إنتاجه قبل وقت بدء المهمة المحدد. يضمن هذا السلوك وجود مجموعة بيانات مرجعية غير فارغة عند بدء المهمة. إذا تعذر العثور على أحدها، تعرض الوظيفة التشخيص التالي: Initializing input without a valid reference data blob for UTC time <start time>.

عند تحديث مجموعة بيانات مرجعية، يتم إنشاء سجل تشخيص: Loaded new reference data from <blob path>. لأسباب عديدة، قد تحتاج الوظيفة إلى إعادة تحميل مجموعة بيانات مرجعية سابقة. غالبا ما يكون السبب هو إعادة معالجة البيانات السابقة. يتم إنشاء نفس سجل التشخيص في ذلك الوقت. لا يعني هذا الإجراء أن بيانات الدفق الحالية تستخدم البيانات المرجعية السابقة.

يمكن استخدام Azure Data Factory لتنظيم مهمة إنشاء الكتل الثنائية الكبيرة المحدثة المطلوبة من قِبل Stream Analytics لتحديث تعريفات البيانات المرجعية.

Data Factory عبارة عن خدمة تكامل بيانات مستندة إلى السحابة تنسق حركة البيانات ونقلها وتجعل العملية تلقائية. يدعم Data Factory الاتصال بعدد كبير من مخازن البيانات القائمة على السحابة والمحلية. يمكنه نقل البيانات بسهولة على جدول منتظم تقوم بتحديده.

لمزيد من المعلومات بشأن كيفية إعداد البنية الأساسية لربط Data Factory لإنشاء بيانات مرجعية لStream Analytics التي يتم تحديثها على جدول محدد مسبقا، راجع نموذج GitHub.

تلميحات بشأن تحديث البيانات المرجعية لـ blob

  • لا تقم بالكتابة فوق الكائنات الثنائية كبيرة الحجم للبيانات المرجعية لأنها غير قابلة للتغيير.
  • الطريقة الموصى بها لتحديث البيانات المرجعية هي:
    • استخدم {date}/{time} في نمط المسار.
    • أضف كائن ثنائي كبير الحجم جديداً باستخدام الحاوية نفسها ونمط المسار المحدد في إدخال الوظيفة.
    • استخدم تاريخاً/وقتاً أكبر من التاريخ المحدد من قِبل آخر كائن في التسلسل.
  • لا يتم ترتيب الكائنات الثنائية كبيرة الحجم للبيانات المرجعية* حسب وقت آخر تعديل للكائن الثنائي كبير الحجم. يتم ترتيبها فقط حسب التاريخ والوقت المحددين في اسم الكائن الثنائي كبير الحجم باستخدام استبدالات {التاريخ} و{الوقت}.
  • لتجنب الاضطرار إلى سرد عدد كبير من الكائنات الثنائية كبيرة الحجم، ضع في اعتبارك حذف الكائنات القديمة جداً التي لن تتم معالجتها بعد الآن. لاحظ أنه قد يتعين على Stream Analytics إعادة معالجة كمية صغيرة في بعض السيناريوهات مثل إعادة التشغيل.

قاعدة بيانات Azure SQL

تسترد مهمة Stream Analytics البيانات المرجعية لقاعدة بيانات SQL وتخزنها كلقطة في الذاكرة للمعالجة. يتم أيضاً تخزين لقطة بياناتك المرجعية في حاوية في حساب تخزين تحدده في إعدادات التكوين. يمكنك تحديد حساب التخزين في إعدادات التكوين.

يتم إنشاء الحاوية تلقائياً عند بدء المهمة. إذا تم إيقاف المهمة أو الدخول في حالة فشل، فسيتم حذف الحاويات التي تمت معالجتها تلقائياً عند إعادة تشغيل الوظيفة.

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

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

يوفر Stream Analytics خيارين للاستعلام عن قاعدة بيانات SQL المثيلة. استعلام اللقطة إلزامي ويجب تضمينه في كل وظيفة. يقوم Stream Analytics بتشغيل استعلام اللقطة بشكلٍ دوري بناءً على الفاصل الزمني للتحديث. يستخدم نتيجة الاستعلام (اللقطة) كمجموعة بيانات مرجعية.

يجب أن يتناسب استعلام اللقطة مع معظم السيناريوهات. إذا واجهت مشكلات في الأداء مع مجموعات البيانات الكبيرة ومعدلات التحديث السريعة، فاستخدم خيار استعلام دلتا. ستؤدي الاستعلامات التي تستغرق أكثر من 60 ثانية لإرجاع نتيجة مجموعة البيانات المرجعية في نهاية المهلة.

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

تكوين مرجع قاعدة بيانات SQL

لتكوين بيانات مرجع قاعدة بيانات SQL، تحتاج أولاً إلى إنشاء إدخال البيانات المرجعية. يوضح الجدول أدناه كل خاصية ستحتاج إلى توفيرها خلال إنشاء إدخال البيانات المرجعية مع وصفها. لمزيدٍ من المعلومات، راجع استخدام البيانات المرجعية من قاعدة بيانات SQL لوظيفة Stream Analytics.

يمكنك استخدام مثيل مُدار لقاعدة بيانات SQL كإدخال بيانات مرجعي. يجب تكوين نقطة نهاية عامة في SQL Managed Instance. ثم تقوم بتكوين الإعدادات التالية يدوياً فيStream Analytics. يتم أيضاً دعم الجهاز الظاهري Azure الذي يقوم بتشغيل SQL Server مع قاعدة بيانات مرفقة عن طريق تكوين الإعدادات أدناه يدوياً.

اسم الخاصية ‏‏الوصف
اسم الإدخال المستعار اسم مألوف سيتم استخدامه في استعلام الوظيفة للإشارة إلى هذا الإدخال.
الاشتراك اشتراكك.
قاعدة البيانات قاعدة بيانات Azure SQL التي تحتوي على بياناتك المرجعية. بالنسبة إلى SQL Managed Instance، يجب تحديد المنفذ 3342. مثال على ذلك sampleserver.public.database.windows.net,3342 .
اسم مستخدم اسم المستخدم المرتبط بقاعدة بيانات مثيل SQL.
كلمة المرور كلمة المرور المرتبطة بقاعدة بيانات مثيل SQL.
قم بالتحديث بشكل دوري يتيح لك هذا الخيار اختيار معدل التحديث. حدد On لتحديد معدل التحديث في DD: HH: MM.
استعلام عن لقطة خيار الاستعلام الافتراضي هذا يسترد البيانات المرجعية من مثيل قاعدة بيانات SQL الخاصة بك.
استعلام عن دلتا بالنسبة للسيناريوهات المتقدمة ذات مجموعات البيانات الكبيرة ومعدل التحديث القصير، اختر إضافة استعلام دلتا.

قيود الحجم

استخدم مجموعات البيانات المرجعية التي تقل عن 300 ميغابايت للحصول على أفضل أداء. يتم دعم مجموعات البيانات المرجعية التي تبلغ 5 غيغابايت أو أقل في الوظائف التي تتضمن ست وحدات دفق أو أكثر. قد يؤثر استخدام مجموعة بيانات مرجعية كبيرة على زمن الانتقال من طرف إلى طرف لمهمتك.

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

إذا تعذر على Stream Analytics تحميل البيانات المرجعية وإجراء عمليات معقدة، فستنفد الذاكرة وتفشل المهمة. في مثل هذه الحالات، يصل مقياس استخدام النسبة المئوية لوحدة البث إلى 100٪.

عدد وحدات التدفق الحجم الموصى به
1 50 ميغابايت أو أقل
3 150 ميغابايت أو أقل
6 وما بعدها 5 غيغابايت أو أقل

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

انضم إلى مجموعات بيانات مرجعية متعددة في وظيفة

يمكنك فقط ضم إدخال بيانات مرجعية إلى إدخال دفق. لذلك للانضمام إلى مجموعات بيانات مرجعية متعددة، قم بتقسيم الاستعلام إلى خطوات متعددة. إليك مثال:

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

مركز IoT Edge

يتم دعم البيانات المرجعية المحلية فقط لمهام حافة Stream Analytics. عند نشر مهمة على جهاز IoT Edge، فإنها تقوم بتحميل البيانات المرجعية من مسار الملف المعرف من قبل المستخدم. جهز ملف بيانات مرجعي على الجهاز.

بالنسبة إلى حاوية Windows، ضع ملف البيانات المرجعية على محرك الأقراص المحلي وشارك محرك الأقراص المحلي مع حاوية Docker. بالنسبة لحاوية Linux، قم بإنشاء وحدة تخزين Docker وملء ملف البيانات إلى وحدة التخزين.

يتم تشغيل البيانات المرجعية على تحديث IoT Edge عن طريق التوزيع. بعد تشغيله، تختار الوحدة النمطية Stream Analytics البيانات المحدثة دون إيقاف مهمة التشغيل.

يمكنك تحديث البيانات المرجعية بطريقتين:

  • تحديث مسار البيانات المرجعية في مهمةStream Analytics من مدخل Azure.
  • تحديث توزيع IoT Edge.

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