من الممكن الحصول على إجمالي مشاهدات الفئات من مستكشف البيانات عن طريق جمع مشاهدات جميع المواضيع ضمن فئة:
SELECT
c.id as category_id,
SUM(views) as "total views"
FROM categories c
JOIN topics t ON t.category_id = c.id
WHERE read_restricted is false
GROUP BY c.id
order by sum(views) desc
الحصول على إجمالي المشاهدات حسب العلامة مشابه:
SELECT tags.name,
sum(views)
from topics t
join topic_tags tt on t.id = topic_id
join tags on tags.id = tt.tag_id
group by tags.name
order by sum(views) desc
يوجد أيضًا جدول topic_views والذي يمكن، من الناحية النظرية، استخدامه لتقسيم المشاهدات حسب المستخدم والتاريخ. لم أجد هذا الجدول مفيدًا بشكل خاص، ومع ذلك، لأن الاستعلامات تنتهي بمهلة عندما يكون للمواضيع عدد كبير من المشاهدات. كما أنه يعرض عددًا أقل بكثير من المشاهدات لكل موضوع لأنه، إذا فهمت بشكل صحيح، فهو لا يحسب المشاهدات المجهولة. أعتقد أيضًا أن topic.views قد يشمل المشاهدات المجهولة بالإضافة إلى حركة مرور الروبوتات؟ إنه أكثر بكثير مما أراه في GA.
بالحديث عن GA، فهو يحتوي على جميع البيانات التي تحتاجها، ولكنه ليس من السهل تجميعها حسب الفئة أو العلامة. أفضل ما يمكنني فعله هو محاولة تحليل pageTitle للعثور على الفئات. أقوم بذلك في R باستخدام googleAnalyticsR. اتبع التعليمات في الدليل لتفويض حساب Google الخاص بك والحصول على المقاييس التي تريدها. تأكد من تضمين pageTitle كبعد. تبدو استدعاءات API الخاصة بي شيئًا كهذا:
ga_this_year <- ga_data(ga_id,
date_range = c("2023-01-01", "2023-05-30" ),
metrics=c("screenPageViews","averageSessionDuration", "sessions"),
dimensions = c("pageTitle", "deviceCategory")
)
المفتاح لفهم الجزء التالي هو رؤية أن pageTitles تتناسب مع هذا التنسيق العام:
Topic title - Category - Site title
إذا لم يكن الموضوع مصنفًا، فإن الفئة مفقودة. هناك أيضًا مجموعة من صفحات الأدوات المساعدة (“أحدث المواضيع”، “مواضيع جديدة”، إلخ) التي لا تحتوي على فئات. (أنا لا أحسب “أحدث مواضيع [الفئة]” كجزء من الفئة، على الرغم من أنه قد يكون من الأفضل تضمينها.) أخيرًا، تستخدم الصفحة الرئيسية Site title - short site description لعنوان الصفحة. نحن لا نهتم بأي من هذه، ومع ذلك. لذا فإن التعبير العادي الذي أستخدمه هو:
str_extract(pageTitle,
str_glue(".*? - (.*) - {sitename}"),
group=1)
بوضع كل شيء معًا في دالة تجمع حسب الفئة، أحصل على شيء كهذا:
category_views <- function(data, sitename = "Meta Jon") {
data %>%
mutate(category = str_extract(
pageTitle,
str_glue(".*? - (.*) - {sitename}"),
group=1
)) %>%
group_by(category) %>%
summarise(views = sum(screenPageViews)) %>%
arrange(desc(views)) #%>% head(20)
}
category_views(ga_this_year)
(من الواضح أن تغيير “Meta Jon” لاسم موقعك الخاص.)
لا أعرف حاليًا كيفية استخراج بيانات GA بناءً على العلامة.