Il est possible d’obtenir les vues totales par catégorie à partir de l’Explorateur de données en additionnant les vues de tous les sujets d’une catégorie :
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
Obtenir les vues totales par tag est similaire :
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
Il existe également une table topic_views qui pourrait, en théorie, être utilisée pour diviser les vues par utilisateur et par date. Je n’ai cependant pas trouvé cette table particulièrement utile, car les requêtes expirent lorsque les sujets ont beaucoup de vues. Elle affiche également beaucoup moins de vues par sujet car, si je comprends bien, elle ne compte pas les vues anonymes. Je pense aussi que topic.views inclut non seulement les vues anonymes mais aussi le trafic des bots ? C’est beaucoup plus que ce que je vois sur GA.
En parlant de GA, il contient toutes les données dont vous avez besoin, mais il n’est pas facile de les regrouper par catégorie ou par tag. Le mieux que je puisse faire est d’essayer d’analyser le pageTitle pour trouver les catégories. Je le fais en R en utilisant googleAnalyticsR. Suivez les instructions du manuel pour autoriser votre compte Google et obtenir les métriques souhaitées. Assurez-vous d’inclure pageTitle comme dimension. Mes appels API ressemblent un peu à ceci :
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")
)
La clé pour comprendre la partie suivante est de voir que les pageTitles suivent ce format général :
Titre du sujet - Catégorie - Titre du site
Si le sujet n’est pas catégorisé, la Catégorie est manquante. Il y a aussi un tas de pages utilitaires (“Derniers sujets”, “Nouveaux sujets”, etc.) qui n’ont pas de catégories. (Je ne compte pas les “Derniers sujets [catégorie]” comme faisant partie de la catégorie, bien qu’il serait peut-être préférable de les inclure.) Enfin, la page d’accueil utilise Titre du site - courte description du site comme titre de page. Nous ne nous intéressons cependant à aucune de celles-ci. Le regex que j’utilise est donc :
str_extract(pageTitle,
str_glue(".*? - (.*) - {sitename}"),
group=1)
En le regroupant dans une fonction qui regroupe par catégorie, j’obtiens quelque chose comme ceci :
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)
(Changez évidemment “Meta Jon” pour le nom de votre propre site.)
Je ne sais pas actuellement comment extraire les données GA basées sur les tags.