مقدمة إلى وظائف نوافذ Stream Analytics

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

هناك خمسة أنواع من النوافذ الزمنية للاختيار من بينها:

يمكنك استخدام وظائف النافذة في عبارة GROUP BY من بناء جملة الاستعلام في مهام Stream Analytics. يمكنك أيضًا تجميع الأحداث عبر نوافذ متعددة باستخدام وظيفة Windows().

تظهر كافة نتائج إخراج عمليات النوافذ في نهاية النافذة. عند بدء مهمة تحليلات الدفق، يمكنك تحديد وقت بدء إخراج الوظيفة، ويجلب النظام تلقائيا الأحداث السابقة في التدفقات الواردة لإخراج النافذة الأولى في الوقت المحدد؛ على سبيل المثال، عند البدء بالخيار الآن ، يبدأ في إرسال البيانات على الفور. سيكون ناتج النافذة حدثًا منفردًا بناءً على الوظيفة التجميعية المستخدمة. يحتوي حدث الإخراج على الطابع الزمني لنهاية النافذة ويتم تعريف جميع وظائف النافذة بطول ثابت.

Diagram that shows the concept of Stream Analytics window functions.

النافذة الهابطة

استخدم دالات النافذة الهابطة لتقسيم دفق البيانات إلى مقاطع زمنية مميزة، وتنفيذ دالة مقابلها.

المفاضلات الرئيسية للنافذة الهابطة هي:

  • إنهم لا يكررون.
  • إنها لا تتداخل.
  • لا يمكن أن ينتمي الحدث إلى أكثر من نافذة واحدة متقلبة.

Diagram that shows an example Stream Analytics tumbling window.

فيما يلي بيانات الإدخال للمثال:

خوادم مخصصة CreatedAt TimeZone
1 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 PST
4 2021-10-26T10:15:06 PST
... ... ...

فيما يلي نموذج الاستعلام:

SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)

هذا هو نموذج الإخراج:

WindowEndTime TimeZone عدد
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 4

النافذة الواثبة

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

Diagram that shows an example of the hopping window.

فيما يلي عينة البيانات:

خوادم مخصصة CreatedAt الموضوع
1 2021-10-26T10:15:01 الدفق
5 2021-10-26T10:15:03 الدفق
4 2021-10-26T10:15:06 الدفق
... ... ...

فيما يلي نموذج الاستعلام:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)

هذا هو نموذج الإخراج:

WindowEndTime الموضوع عدد
2021-10-26T10:15:10 الدفق 5
2021-10-26T10:15:15 الدفق 3
2021-10-26T10:15:20 الدفق 2
2021-10-26T10:15:25 الدفق 4
2021-10-26T10:15:30 الدفق 4

النافذة المنزلقة

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

Diagram that shows an example of a sliding window.

فيما يلي نموذج بيانات الإدخال:

خوادم مخصصة CreatedAt الموضوع
1 2021-10-26T10:15:10 الدفق
5 2021-10-26T10:15:12 الدفق
9 2021-10-26T10:15:15 الدفق
7 2021-10-26T10:15:15 الدفق
8 2021-10-26T10:15:27 الدفق

فيما يلي نموذج الاستعلام:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3

إخراج:

WindowEndTime الموضوع عدد
2021-10-26T10:15:15 الدفق 4
2021-10-26T10:15:20 الدفق 3

نافذة الجلسة

تعمل نافذة جلسة العمل على تجميع الأحداث التي تصل في أوقات مماثلة، وتصفية فترات زمنية لا توجد فيها بيانات. يحتوي على ثلاث معلمات رئيسية:

  • المهلة
  • المدة القصوى
  • مفتاح التقسيم (اختياري).

Diagram that shows a sample Stream Analytics session window.

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

إذا استمرت الأحداث في الحدوث خلال المهلة المحددة، تستمر نافذة الجلسة في التمديد حتى يتم الوصول إلى الحد الأقصى للمدة. تم تعيين الحد الأقصى لفترات التحقق من المدة ليكون بنفس حجم الحد الأقصى للمدة المحددة. على سبيل المثال، إذا كانت المدة القصوى هي 10، فإن التحقق من تجاوز النافذة للمدة القصوى يحدث عند t = 0، 10، 20، 30، إلخ.

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

فيما يلي نموذج بيانات الإدخال:

خوادم مخصصة CreatedAt الموضوع
1 2021-10-26T10:15:01 الدفق
2 2021-10-26T10:15:04 الدفق
3 2021-10-26T10:15:13 الدفق
... ... ...

فيما يلي نموذج الاستعلام:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)

إخراج:

WindowEndTime الموضوع عدد
2021-10-26T10:15:09 الدفق 2
2021-10-26T10:15:24 الدفق 4
2021-10-26T10:15:31 الدفق 2
2021-10-26T10:15:39 الدفق 1

نافذة اللقطة

نوافذ اللقطةتقوم بتجميع الأحداث التي لها الطابع الزمني نفسه. على عكس أنواع النوافذ الأخرى، التي تتطلب دالة نافذة معينة (مثل SessionWindow())، يمكنك تطبيق نافذة لقطة عن طريق إضافة System.Timestamp() إلى عبارة GROUP BY.

Diagram that shows a sample Steam Analytics snapshot window.

فيما يلي نموذج بيانات الإدخال:

خوادم مخصصة CreatedAt الموضوع
1 2021-10-26T10:15:04 الدفق
2 2021-10-26T10:15:04 الدفق
3 2021-10-26T10:15:04 الدفق
... ... ...

فيما يلي نموذج الاستعلام:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

هذا هو نموذج الإخراج:

WindowEndTime الموضوع عدد
2021-10-26T10:15:04 الدفق 4
2021-10-26T10:15:10 الدفق 2
2021-10-26T10:15:13 الدفق 1
2021-10-26T10:15:22 الدفق 2

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

راجع المقالات التالية: