您可以通过汇总类别下所有主题的浏览量,从数据浏览器中获取_总_类别浏览量:
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 来查找类别。我正在使用 googleAnalyticsR 在 R 中执行此操作。请遵循手册中的说明授权您的 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
如果主题未分类,则“Category”将缺失。还有很多实用页面(“Latest topics”、“New topics”等)没有类别。(我没有将“Latest [category] topics”视为类别的一部分,尽管包含它们可能更好。)最后,主页使用 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 数据。