هذا هو إصدار SQL لتقرير لوحة المعلومات لإحصائيات عرض الموضوع.
يجمع هذا التقرير ويجمع إحصائيات عرض الموضوع، بما في ذلك المشاهدات المجهولة والمشاهدات المسجلة الدخول، ضمن نطاق تاريخي محدد. كما يسمح بالتصفية حسب الفئات ويتضمن الفئات الفرعية اختياريًا.
تمت إضافة هذا الاستعلام وجدول قاعدة البيانات
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 |