طرق العرض المجسدة والوظائف المخزنة

مكتمل

الآن بعد أن فهمت تقنيات الاستعلام والتحسين الأساسية ل KQL ، دعنا نستكشف طرق العرض المادية والوظائف المخزنة في بيوت الأحداث.

فهم طرق العرض الملموسة

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

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

آلية عمل التحديثات التلقائية

تتكون طريقة العرض المادية من جزأين يعملان معا لتوفير نتائج دائمة الحداثة:

  • جزء مادي: ينتج التجميع المحسوبة مسبقا عن البيانات التي تمت معالجتها بالفعل
  • دلتا: البيانات الجديدة التي وصلت منذ آخر تحديث للخلفية

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

إنشاء طرق عرض ملموسة

تغلف طريقة العرض المادية عبارة تلخيص KQL التي يتم تحديثها تلقائيا عند وصول البيانات الجديدة. في ما يلي مثال يتتبع مقاييس الرحلة حسب المورد واليوم:

.create materialized-view TripsByVendor on table TaxiTrips
{
    TaxiTrips
    | summarize trips = count(), avg_fare = avg(fare_amount), total_revenue = sum(fare_amount)
    by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}

الاستعلام عن طرق العرض المادية

بمجرد إنشائها، يمكن الاستعلام عن طرق العرض المحققة مثل الجداول العادية:

TripsByVendor
| where pickup_date >= ago(7d)
| project pickup_date, vendor_id, trips, avg_fare, total_revenue
| sort by pickup_date desc, total_revenue desc

فهم الوظائف المخزنة

يتضمن KQL القدرة على تغليف استعلام كدالة، ما يسهل تكرار الاستعلامات الشائعة. يمكنك أيضا تحديد معلمات لدالة، بحيث يمكنك تكرار نفس الاستعلام مع قيم متغيرة.

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

إنشاء وظيفة

.create-or-alter function trips_by_min_passenger_count(num_passengers:long)
{
    TaxiTrips
    | where passenger_count >= num_passengers 
    | project trip_id, pickup_datetime
}

لاستدعاء الدالة، استخدمها كجدول. في هذا المثال، تستخدم الدالة trips_by_min_passenger_count للعثور على 10 رحلات مع ثلاثة ركاب على الأقل:

trips_by_min_passenger_count(3)
| take 10