Sie können die Gesamtanzahl der Kategorieaufrufe aus dem Daten-Explorer abrufen, indem Sie die Aufrufe aller Themen einer Kategorie summieren:
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
Die Gesamtaufrufe nach Tag zu erhalten ist ähnlich:
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
Es gibt auch eine topic_views-Tabelle, die theoretisch verwendet werden könnte, um Aufrufe nach Benutzer und Datum aufzuteilen. Ich habe diese Tabelle jedoch nicht als besonders nützlich empfunden, da Abfragen mit vielen Aufrufen pro Thema zu Zeitüberschreitungen führen. Sie zeigt auch viel weniger Aufrufe pro Thema an, da sie, wenn ich es richtig verstehe, keine anonymen Aufrufe zählt. Ich glaube auch, dass topic.views möglicherweise nicht nur anonyme Aufrufe, sondern auch Bot-Traffic enthält? Es ist viel mehr, als ich in GA sehe.
Wo wir gerade von GA sprechen, es enthält alle benötigten Daten, aber es ist nicht einfach, sie nach Kategorie oder Tag zu gruppieren. Das Beste, was ich tun kann, ist zu versuchen, den pageTitle zu parsen, um Kategorien zu finden. Ich mache das in R mit googleAnalyticsR. Befolgen Sie die Anweisungen im Handbuch, um Ihr Google-Konto zu autorisieren und die gewünschten Metriken abzurufen. Stellen Sie sicher, dass Sie pageTitle als Dimension einschließen. Meine API-Aufrufe sehen ungefähr so aus:
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")
)
Der Schlüssel zum Verständnis des nächsten Teils ist zu sehen, dass pageTitles diesem allgemeinen Format entsprechen:
Topic title - Category - Site title
Wenn das Thema nicht kategorisiert ist, fehlt die Kategorie. Es gibt auch eine Reihe von Hilfeseiten (“Latest topics”, “New topics” usw.), die keine Kategorien haben. (Ich zähle “Latest [category] topics” nicht als Teil der Kategorie, obwohl es besser sein könnte, sie einzuschließen.) Schließlich verwendet die Homepage Site title - short site description für den Seitentitel. Von all diesen Dingen sind wir jedoch nicht betroffen. Daher ist der Regex, den ich verwende:
str_extract(pageTitle,
str_glue(".*? - (.*) - {sitename}"),
group=1)
Wenn ich dies in eine Funktion zusammenfasse, die nach Kategorie gruppiert, erhalte ich etwas wie das Folgende:
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)
(Ändern Sie offensichtlich “Meta Jon” in den Namen Ihrer eigenen Website.)
Ich weiß derzeit nicht, wie ich GA-Daten nach Tag extrahieren kann.