نصائح بيانات Discourse الشائعة

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

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

إليك بعض النصائح حول كيفية تصفيتها:

يُستخدم استعلام SQL هذا للحصول على أفضل 10 مستخدمين (باستثناء مستخدمي النظام) الذين قاموا بأكبر عدد من المشاركات العامة، مع استبعاد أي مشاركات، أو مشاركات من مواضيع، تم حذفها.

-- تحديد user_id من جدول posts وعدّ عدد المشاركات التي قام بها كل مستخدم
SELECT 
    p.user_id,
    COUNT(p.id) AS "عدد المشاركات"
FROM posts p
  -- ربط يساري مع جدول topics بناءً على topic_id
  LEFT JOIN topics t ON t.id = p.topic_id
WHERE 
  -- استبعاد مواضيع الرسائل الخاصة
  t.archetype <> 'private_message'
  -- استبعاد المواضيع التي تم حذفها
  AND t.deleted_at ISNULL
  -- استبعاد المشاركات التي تم حذفها
  AND p.deleted_at ISNULL
  -- استبعاد الهمسات، مشاركات الإجراءات الصغيرة، ومشاركات المشرفين
  AND p.post_type = 1
  -- استبعاد المشاركات التي قام بها مستخدم النظام و discobot (user_id 0 و -1)
  AND p.user_id > 0
-- تجميع النتائج حسب user_id 
GROUP BY 1
-- ترتيب النتائج حسب عدد المشاركات بترتيب تنازلي 
ORDER BY 2 DESC
-- تحديد النتائج لأفضل 10 مستخدمين بأكبر عدد من المشاركات
LIMIT 10

وهنا بدون التعليقات المضمنة:

SELECT 
    p.user_id,
    COUNT(p.id) AS "عدد المشاركات"
FROM posts p
  LEFT JOIN topics t ON t.id = p.topic_id
WHERE t.archetype <> 'private_message'
  AND t.deleted_at ISNULL
  AND p.deleted_at ISNULL
  AND p.post_type = 1
  AND p.user_id > 0
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10

هذا مجرد استعلام بسيط لتوضيح الأمثلة، ولكن نأمل أن يساعدك هذا في البدء باستخدام مستكشف البيانات. :+1: إذا كانت لديك أي أسئلة، فيرجى طرحها أدناه. :slight_smile:

10 إعجابات

هل تقصد الرسائل هنا؟

أي منشورات، أو منشورات من […]

يبدو غريباً بالنسبة لي.

لا أعتقد ذلك؟ المقصود هو نقل أن المشاركات الموجودة في مواضيع محذوفة غير مدرجة. استخدام الرسائل يجعل الأمر يبدو وكأنه يشير إلى الرسائل الخاصة. لكنني سألقي نظرة أخرى على كيفية وصف ذلك بوضوح أكبر. :+1:


فكرة أخرى -

قد يكون تضمين AND p.post_type = 1 إضافة جيدة لهذا أيضًا. :thinking:

إعجاب واحد (1)

اعتقدت أنه قد يكون بسبب أنه يقوم بتصفية الرسائل الخاصة أيضًا، و

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

إعجاب واحد (1)