فهم وظائف النافذة
يتمثل الهدف الشائع لمعالجة الدفق في تجميع الأحداث في فواصل زمنية، أو النوافذ. على سبيل المثال، لحساب عدد منشورات وسائل التواصل الاجتماعي في الدقيقة أو لحساب متوسط هطول الأمطار في الساعة.
يتضمن Azure Stream Analytics الدعم الأصلي خمسة أنواع من وظائف النوافذ الزمنية. تمكنك هذه الدالات من تحديد الفواصل الزمنية التي يتم فيها تجميع البيانات في استعلام. يتم دوال النوافذ المدعومة، hopping، المنزلقة، جلسة، لقطة.
تراجع
تعمل وظائف النافذة الهابطة على تقسيم دفق البيانات إلى سلسلة متجاورة من مقاطع زمنية ثابتة الحجم وغير متداخلة وتعمل مقابلها. لا يمكن أن تنتمي الأحداث إلى أكثر من نافذة واحدة متقلبة.
النوافذ المتقلبة
يبحث مثال النافذة الهابطة، ممثلا بالاستعلام التالي، عن الحد الأقصى لقيمة القراءة في كل نافذة مدتها دقيقة واحدة. يتم تطبيق دوال النوافذ في وظائف Stream Analytics باستخدام عبارة GROUP BY من بناء جملة الاستعلام. تحتوي عبارة GROUP BY في الاستعلام التالي على الدالة TumblingWindow()، والتي تحدد حجم نافذة لمدة دقيقة واحدة.
SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY TumblingWindow(minute, 1)
التنقل
نموذج وظائف النافذة المجدولة النوافذ المتراكبة، والقفز إلى الأمام في الوقت المناسب لفترة محددة. من الأسهل التفكير فيها على أنها نوافذ متقلبة يمكن أن تتداخل وتبعث بشكل متكرر أكثر من حجم النافذة. في الواقع، النوافذ الهابطة هي ببساطة نافذة القفز التي hop تساوي size. عند استخدام نوافذ Hopping، يمكن أن تنتمي الأحداث إلى أكثر من مجموعة نتائج نافذة واحدة.
النوافذ المقفزة
لإنشاء نافذة القفز، يجب تحديد ثلاث معلمات. تشير المعلمة الأولى إلى الوحدة الزمنية، مثل الثانية أو الدقيقة أو الساعة. تعين المعلمة التالية حجم النافذة، والتي تحدد المدة التي تستمر فيها كل نافذة. المعلمة النهائية المطلوبة هي حجم القفزة، والذي يحدد مقدار تقدم كل نافذة بالنسبة إلى النافذة السابقة. يمكن أيضا استخدام معلمة رابعة اختيارية تدل على حجم الإزاحة.
يوضح الاستعلام التالي استخدام HoppingWindow() حيث يتم تعيين timeunit إلى second.
windowsize 60 ثانية، hopsize 30 ثانية. يقوم هذا الاستعلام بإخراج حدث كل 30 ثانية يحتوي على الحد الأقصى لقيمة القراءة التي حدثت خلال آخر 60 ثانية.
SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY HoppingWindow(second, 60, 30)
انزلاق
تنشئ النوافذ المنزلقة أحداثا للنقاط الزمنية التي يتغير فيها محتوى النافذة فعليا. يحد نموذج الدالة هذا من عدد النوافذ التي تحتاج إلى النظر فيها. يقوم Azure Stream Analytics بمخرجات الأحداث لتلك النقاط في الوقت المناسب فقط عندما يدخل حدث أو يخرج من النافذة. على هذا النحو، تحتوي كل نافذة على حدث واحد على الأقل. يمكن أن تنتمي الأحداث في النوافذ المنزلقة إلى أكثر من نافذة منزلقة واحدة، على غرار نوافذ القفز.
يوضح الرسم التخطيطي دفق مع سلسلة من الأحداث المعينة في نوافذ منزلقة لمدة دقيقة واحدة.Sliding windows النوافذ المنزلقة
يستخدم الاستعلام التالي الدالة SlidingWindow() للعثور على الحد الأقصى لقيمة القراءة في كل نافذة مدتها دقيقة واحدة وقع فيها حدث.
SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SlidingWindow(minute, 1)
جلسة
تعمل نافذة جلسة على تجميع الأحداث التي تصل في أوقات مماثلة، وتصفية فترات زمنية لا توجد فيها بيانات. يحتوي على ثلاث معلمات أساسية: المهلة والحد الأقصى للمدة ومفتاح التقسيم (اختياري).
يوضح الرسم التخطيطي دفق مع سلسلة من الأحداث المعينة في نوافذ الجلسة مع مهلة 20 ثانية ومدة قصوى 60 ثانية.Session windows جلسة عمل
يبدأ حدوث الحدث الأول نافذة جلسة عمل. لنفترض أن حدثا آخر يقع ضمن المهلة المحددة من آخر حدث تم استيعابه. في هذه الحالة، سيتم توسيع النافذة لتضمين الحدث الجديد. ومع ذلك، إذا لم تحدث أحداث أخرى خلال فترة المهلة المحددة، إغلاق النافذة في المهلة. إذا استمر وقوع الأحداث خلال المهلة المحددة، فستمتد نافذة الجلسة حتى يتم الوصول إلى الحد الأقصى للمدة.
يقيس الاستعلام التالي طول جلسة عمل المستخدم عن طريق إنشاء SessionWindow عبر بيانات النقر مع timeoutsize من 20 ثانية maximumdurationsize من 60 ثانية.
SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SessionWindow(second, 20, 60)
لقطه
يقوم Snapshot windows بتجميع الأحداث بقيم الطابع الزمني المتطابقة. على عكس أنواع النوافذ الأخرى، لا يلزم وجود دالة نافذة معينة. يمكنك استخدام نافذة لقطة عن طريق تحديد الدالة System.Timestamp() إلى عبارة GROUP BY للاستعلام.
يوضح الرسم التخطيطي دفق مع سلسلة من الأحداث المعينة في نوافذ اللقطة.Snapshot windows نوافذSnapshot
على سبيل المثال، يبحث الاستعلام التالي عن الحد الأقصى لقيمة القراءة للأحداث التي تحدث في نفس الوقت بالضبط.
SELECT System.TimeStamp() AS WindowTime,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY System.Timestamp()
يعتبر System.Timestamp() في عبارة GROUP BY كتعريف نافذة لقطة لأنه يجمع الأحداث في نافذة استنادا إلى المساواة بين الطوابع الزمنية.