تقرير لوحة المعلومات - إحصاءات عرض الموضوع

هذا هو إصدار SQL لتقرير لوحة المعلومات لإحصائيات عرض الموضوع.

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

:discourse: تمت إضافة هذا الاستعلام وجدول قاعدة البيانات topic_view_stats هنا إلى Discourse في مايو 2024، ولن يعرض أي بيانات قبل هذا التاريخ.

-- [params]
-- date :start_date
-- date :end_date
-- int :category_id = 0
-- boolean :include_subcategories = false

WITH category_filter AS (
  SELECT
    id
  FROM categories
  WHERE
    (:category_id = 0 OR id = :category_id)
    OR (:include_subcategories AND parent_category_id = :category_id)
)

SELECT
  topic_view_stats.topic_id,
  topics.title AS topic_title,
  SUM(topic_view_stats.anonymous_views) AS total_anonymous_views,
  SUM(topic_view_stats.logged_in_views) AS total_logged_in_views,
  SUM(topic_view_stats.anonymous_views + topic_view_stats.logged_in_views) AS total_views
FROM topic_view_stats
INNER JOIN topics ON topics.id = topic_view_stats.topic_id
WHERE
  topic_view_stats.viewed_at BETWEEN :start_date AND :end_date
  AND (
    :category_id = 0
    OR topics.category_id IN (SELECT id FROM category_filter)
  )
GROUP BY topic_view_stats.topic_id, topics.title
ORDER BY total_views DESC
LIMIT 100

شرح استعلام SQL

المعلمات

  • :start_date (تاريخ): تاريخ بداية النطاق للتحليل (شامل).
  • :end_date (تاريخ): تاريخ نهاية النطاق للتحليل (شامل).
  • :category_id (عدد صحيح، اختياري): تصفية المواضيع حسب الفئة. استخدم:
    • 0 لتضمين جميع الفئات.
    • أي معرف فئة محدد للتصفية حسب تلك الفئة.
  • :include_subcategories (منطقي، اختياري): اختر ما إذا كنت تريد تضمين الفئات الفرعية للفئة المحددة.
    • false: الفئة المحددة فقط.
    • true: قم بتضمين الفئات الفرعية أيضًا.

تصفية الفئات
يسترد تعبير الجدول المشترك category_filter معرفات الفئات المحددة بناءً على المعلمة :category_id. إذا كانت المعلمة 0، يتم تضمين جميع الفئات. إذا كان سيتم تضمين الفئات الفرعية، فإنه يجد الفئات التي يتطابق فيها parent_category_id مع :category_id المحدد.

استرداد إحصائيات الموضوع
يتم تجميع إحصائيات عرض الموضوع من جدول topic_view_stats، مع الانضمام إلى جدول topics لاسترداد عناوين المواضيع.

تطبيق عوامل تصفية التاريخ والفئة
يقوم الاستعلام بتصفية بيانات topic_view_stats:

  • حسب النطاق الزمني المحدد (:start_date و :end_date).
  • حسب الفئة، مع المطابقة مقابل المعرفات الموجودة في category_filter.

حساب إجمالي المشاهدات
يجمع الاستعلام:

  • anonymous_views: مشاهدات من مستخدمين مجهولين.
  • logged_in_views: مشاهدات من مستخدمين مسجلين الدخول.
  • إجمالي المشاهدات كمجموع لكليهما.

الترتيب وتحديد العدد:
يقوم الاستعلام بترتيب المواضيع حسب total_views ويحد النتيجة إلى أفضل 100 موضوع.

نتائج الاستعلام
يعرض الاستعلام الأعمدة التالية:

اسم العمود الوصف
topic_id المعرف الفريد للموضوع.
topic_title عنوان الموضوع.
total_anonymous_views إجمالي المشاهدات من المستخدمين المجهولين.
total_logged_in_views إجمالي المشاهدات من المستخدمين المسجلين.
total_views إجمالي المشاهدات (مجهول + مسجل الدخول).

نتائج مثال

topic_id topic_title total_anonymous_views total_logged_in_views total_views
12345 “مثال الموضوع 1” 500 300 800
67890 “مثال الموضوع 2” 450 350 800
3 إعجابات