مشاركة عبر


مقدمة في وظائف النوافذ في تحليلات التدفق

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

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

استخدم وظائف النافذة في عبارة GROUP BY في صياغة الاستعلام في وظائف تحليلات التدفق الخاصة بك. يمكنك أيضا تجميع الأحداث عبر عدة نوافذ باستخدام دالة Windows().

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

مخطط يوضح مفهوم وظائف نافذة تحليلات التدفق.

نافذة متدحرجة

استخدم وظائف نافذة Tumbling لتقسيم تدفق البيانات إلى مقاطع زمنية منفصلة، وأداء وظيفة ضدها.

الفروق الرئيسية في نافذة الانهيار هي:

  • لا تتكرر.
  • لا يتداخلان.
  • لا يمكن أن يكون الحدث من نافذة واحدة متدحرجة.

مخطط يوضح مثال نافذة متقلبة لتحليل التدفق.

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

الطابع إنشاء قاعدة بيانات المنطقة الزمنية
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)

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

ويندودإند تايم المنطقة الزمنية عد
2021-10-26T10:15:10 PST 5
2021-10-26 10:15:20 PST 2
2021-10-26 T10:15:30 PST 4

نافذة القفز

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

رسم توضيحي يوضح مثالا على نافذة القفز.

إليكم بيانات العينة:

الطابع إنشاء قاعدة بيانات موضوع
1 2021-10-26T10:15:01 Streaming
5 2021-10-26T10:15:03 Streaming
4 2021-10-26T10:15:06 Streaming
... ... ...

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

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

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

ويندودإند تايم موضوع عد
2021-10-26T10:15:10 Streaming 5
2021-10-26T10:15:15 Streaming 3
2021-10-26 10:15:20 Streaming 2
2021-10-26T10:15:25 Streaming 4
2021-10-26 T10:15:30 Streaming 4

نافذة منزلقة

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

رسم بياني يوضح مثالا على نافذة منزلقة.

إليكم بيانات الإدخال:

الطابع إنشاء قاعدة بيانات موضوع
1 2021-10-26T10:15:10 Streaming
5 2021-10-26T10:15:12 Streaming
9 2021-10-26T10:15:15 Streaming
7 2021-10-26T10:15:15 Streaming
8 2021-10-26T10:15:27 Streaming

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

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

إخراج:

ويندودإند تايم موضوع عد
2021-10-26T10:15:15 Streaming 4
2021-10-26 10:15:20 Streaming 3

نافذة الجلسة

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

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

مخطط يوضح نافذة جلسة تحليل التدفق النموذجية.

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

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

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

إليكم بيانات الإدخال:

الطابع إنشاء قاعدة بيانات موضوع
1 2021-10-26T10:15:01 Streaming
2 2021-10-26T10:15:04 Streaming
3 2021-10-26T10:15:13 Streaming
... ... ...

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

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

إخراج:

ويندودإند تايم موضوع عد
2021-10-26T10:15:09 Streaming 2
2021-10-26T10:15:24 Streaming 4
2021-10-26T10:15:31 Streaming 2
2021-10-26T10:15:39 Streaming 1

نافذة اللقطة

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

مخطط يوضح نافذة لمحة نموذجية من Steam Analytics.

إليكم بيانات الإدخال:

الطابع إنشاء قاعدة بيانات موضوع
1 2021-10-26T10:15:04 Streaming
2 2021-10-26T10:15:04 Streaming
3 2021-10-26T10:15:04 Streaming
... ... ...

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

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

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

ويندودإند تايم موضوع عد
2021-10-26T10:15:04 Streaming 4
2021-10-26T10:15:10 Streaming 2
2021-10-26T10:15:13 Streaming 1
2021-10-26 T10:15:22 Streaming 2

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

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