استكشاف أخطاء استعلامات Stream Analytics وإصلاحها
توضح هذه المقالة المشكلات الشائعة المتعلقة بتطوير استعلامات Stream Analytics وكيفية استكشافها وإصلاحها.
توضح هذه المقالة المشكلات الشائعة المتعلقة بتطوير استعلامات Azure Stream Analytics وكيفية استكشاف مشكلات الاستعلام وإصلاحها وكيفية تصحيح المشكلات. تتطلب العديد من خطوات استكشاف الأخطاء وإصلاحها تمكين سجلات الموارد لوظيفة Stream Analytics. إذا لم يتم تمكين سجلات الموارد، فراجع استكشاف أخطاء Azure Stream Analytics وإصلاحها باستخدام سجلات الموارد.
الاستعلام لا ينتج الإخراج المتوقع
افحص الأخطاء عن طريق الاختبار محلياً:
- في مدخل Microsoft Azure، في علامة التبويب Query، حدد Test. استخدم البيانات النموذجية التي تم تنزيلها لاختبار الاستعلام. افحص أي أخطاء وحاول تصحيحها.
- يمكنك أيضاً اختبار استعلامك محلياً باستخدام أدوات Azure Stream Analytics لبرنامج Visual Studio أو Visual Studio Code.
استعلامات تصحيح الأخطاء خطوة بخطوة محلياً باستخدام مخطط الوظيفة في أدوات Azure Stream Analytics لـ Visual Studio Code. يوضح مخطط الوظيفة كيف تتدفق البيانات من مصادر الإدخال (Event Hub، IoT Hub، إلخ) من خلال خطوات استعلام متعددة وأخيراً إلى أحواض الإخراج. يتم تعيين كل خطوة استعلام لمجموعة نتائج مؤقتة محددة في البرنامج النصي باستخدام عبارة WITH. يمكنك عرض البيانات والقياسات في كل مجموعة نتائج وسيطة للعثور على مصدر المشكلة.
إذا كنت تستخدم Timestamp By، فتحقق من أن الأحداث بها طوابع زمنية أكبر من وقت بدء المهمة.
تخلص من المزالق الشائعة، مثل:
- أدت عبارة WHERE في الاستعلام إلى تصفية جميع الأحداث، ما يمنع إنشاء أي ناتج.
- فشلت وظيفة CAST، ما تسبب في فشل المهمة. لتجنب حالات فشل إرسال الكتابة، استخدم TRY_CAST بدلاً من ذلك.
- عند استخدام وظائف النافذة، انتظر مدة النافذة بأكملها لترى ناتجاً من الاستعلام.
- الطابع الزمني للأحداث يسبق وقت بدء الوظيفة ويتم تجاهل الأحداث.
- JOINالشروط لا تتطابق. إذا لم تكن هناك مطابقات، فلن يكون هناك ناتج.
تأكد من تكوين نُهج ترتيب الأحداث كما هو متوقع. انتقل إلى Settings وحدد Event Ordering. النهج لا يتم تطبيقها عند استخدام الزر اختبار لاختبار الاستعلام. هذه النتيجة هي اختلاف واحد بين الاختبار في المتصفح مقابل تشغيل الوظيفة في الإنتاج.
تصحيح الأخطاء باستخدام سجلات النشاط والموارد:
- استخدم سجلات الأنشطة، وقم بالتصفية لتحديد الأخطاء وتصحيحها.
- استخدم سجلات موارد الوظائف لتحديد الأخطاء وتصحيحها.
استخدام الموارد مرتفع
تأكد من الاستفادة من الموازاة في Azure Stream Analytics. يمكنك تعلم كيفية التوسع باستخدام موازاة الاستعلام لوظائف Stream Analytics من خلال تكوين أقسام الإدخال وضبط تعريف استعلام التحليلات.
إذا كان استخدام الموارد يزيد باستمرار عن 80%، فإن تأخير العلامة المائية آخذ في الارتفاع، وعدد الأحداث المتراكمة في تزايد، ففكر في زيادة وحدات التدفق. يشير الاستخدام العالي إلى أن المهمة تستخدم بالقرب من الحد الأقصى للموارد المخصصة.
استعلامات التصحيح بشكل تدريجي
في معالجة البيانات في الوقت الحقيقي، قد يكون من المفيد معرفة شكل البيانات في منتصف الاستعلام. يمكنك رؤية ذلك باستخدام مخطط الوظيفة في Visual Studio. إذا لم يكن لديك Visual Studio، يمكنك اتخاذ خطوات إضافية لإخراج البيانات الوسيطة.
نظراً لأنه يمكن قراءة مدخلات أو خطوات مهمة Azure Stream Analytics عدة مرات، يمكنك كتابة عبارات SELECT INTO الإضافية. يؤدي القيام بذلك إلى إخراج البيانات الوسيطة إلى التخزين ويسمح لك بفحص صحة البيانات، تماماً كما تفعل متغيرات المشاهدة عند تصحيح أخطاء أحد البرامج.
يحتوي الاستعلام المثال التالي في مهمة Azure Stream Analytics على إدخال دفق واحد، وإدخالات مرجعية للبيانات، وإخراج إلى تخزين جدول Azure. يجمع الاستعلام البيانات من مركز الأحداث ونقطتين مرجعيتين للحصول على الاسم ومعلومات الفئة:
لاحظ أن الوظيفة قيد التشغيل، ولكن لم يتم إنتاج أي أحداث في الإخراج. في مربع Monitoring، الموضح هنا، يمكنك أن ترى أن الإدخال ينتج بيانات، لكنك لا تعرف أي خطوة في JOIN تسببت في إسقاط جميع الأحداث.
في هذه الحالة، يمكنك إضافة بعض عبارات SELECT INTO الإضافية لـ "تسجيل" نتائج JOIN الوسيطة والبيانات التي تتم قراءتها من الإدخال.
في هذا المثال، أضفنا "ناتجين مؤقتين" جديدين. يمكن أن تكون أي بالوعة تحبها. هنا نستخدم Azure Storage كمثال:
يمكنك بعد ذلك إعادة كتابة الاستعلام كما يلي:
الآن ابدأ المهمة مرة أخرى، واتركها تعمل لبضع دقائق. ثم استعلم عن temp1 وtemp2 باستخدام Visual Studio Cloud Explorer لإنتاج الجداول التالية:
جدول temp1
جدول temp2
كما ترى، يحتوي كل من temp1 وtemp2 على بيانات، ويتم ملء عمود الاسم بشكل صحيح في temp2. ومع ذلك، نظراً لعدم وجود بيانات في الإخراج حتى الآن، هناك خطأ ما:
من خلال أخذ عينات من البيانات، يمكنك أن تكون على يقين تقريباً من أن المشكلة تتعلق بـ JOIN الثاني. يمكنك تنزيل البيانات المرجعية من blob وإلقاء نظرة:
كما ترى، يختلف تنسيق GUID في هذه البيانات المرجعية عن تنسيق العمود [from] في temp2. لهذا السبب لم تصل البيانات في المخرجات 1 كما هو متوقع.
يمكنك إصلاح تنسيق البيانات، وتحميله للإشارة إلى blob، وحاول مرة أخرى:
هذه المرة، يتم تنسيق البيانات الموجودة في الإخراج وتعبئتها كما هو متوقع.
الحصول على المساعدة
لمزيد من المساعدة، جرب صفحة سؤال Microsoft Q&A الخاصة بنا ل Azure Stream Analytics.