2017-03-23 3 views
3

Par ex. Je souhaite que les trois pages les plus visitées des 30 derniers jours soient triées en fonction du nombre de sessions.Récupère les principaux éléments google analytics d'une dimension triée par une mesure des X derniers jours

Donc, pour chaque jour, je veux les trois meilleurs articles ga:pagePath triés pour chaque jour par ga:sessions. Est-ce possible dans une seule requête?

Cette requête devrait renvoyer 90 articles, 3 ga:pagePath articles par jour.

Un autre exemple est-il possible d'obtenir les trois pages de chargement les plus rapides (ga: pageLoadTime) au lieu des pages les plus visitées pour chaque jour? Cela ne nécessite pas de tri ASC mais DESC en ce qui concerne la métrique de tri.

Je peux utiliser l'API v4 si nécessaire.

+1

Je viens avec quelques idées, vous ne pouvez utiliser un maximum de plages de dates par requête, donc vous ne pouvez pas faire cela de cette façon. L'option est donc de jouer avec la ligne et les colonnes. Ce que je devrais faire, ma dimension sera la page et la date, la visualisation des pages métriques (limite 9999), l'ordre par page vue. Après cela, avec une fonction qui lit le json jusqu'au fond, déplacer les données vers un nouveau tableau final (ou json). Pourquoi de cette façon? Parce qu'il n'est pas possible de le faire uniquement avec une requête. –

Répondre

2

1) Donc, pour chaque jour, je veux que les trois éléments ga: pagePath soient triés pour chaque jour par ga: sessions. Est-ce possible dans une seule requête?

Oui, cela est possible. Cela peut être fait grâce à des pages vues uniques. Les états de Google: Unique Pageviews is the number of sessions during which the specified page was viewed at least once. A unique pageview is counted for each page URL + page Title combination.

La mise en garde évidente est la combinaison d'URL + page Titre, mais cela pourrait fonctionner en votre faveur en fonction de l'application.

Dans Google Analytics:

Aller à Comportement> Contenu du site> Toutes les pages. Trier par Pages vues uniques.

Dans GAv4 API

{ 
    "reportRequests": [ 
    { 
     "viewId": "VIEW_ID", 
     "dateRanges": [ 
     { 
      "startDate": "30daysAgo", 
      "endDate": "yesterday" 
     } 
     ], 
     "metrics": [ 
     { 
      "expression": "ga:uniquePageViews" 
     } 
     ], 
     "dimensions": [ 
     { 
      "name": "ga:pagePath" 
     } 
     ], 
     "pageSize": 3, 
     "orderBys": [ 
     { 
      "fieldName": "ga:uniquePageViews", 
      "sortOrder": "DESCENDING" 
     } 
     ] 
    } 
    ] 
} 

2) Aussi est-il possible d'obtenir les trois plus rapide chargement (ga: pages pageLoadTime) au lieu de le plus visité pour chaque jour? Cela ne nécessite pas de tri ASC mais DESC en ce qui concerne la métrique de tri.

Oui, c'est également possible. Cependant, vous voulez probablement utiliser ga:avgPageLoadTime comme ga:pageLoadTime est le temps total (à partir de toutes les pages vues).

Dans Google Analytics:

Aller à Comportement> Vitesse du site> Page synchronisations. Changer la colonne numérique pour être moy. Temps de chargement de la page (sec) et tri par cette colonne.

Dans GAv4 API

{ 
    "reportRequests": [ 
    { 
     "viewId": "VIEWID", 
     "dateRanges": [ 
     { 
      "startDate": "30daysAgo", 
      "endDate": "yesterday" 
     } 
     ], 
     "metrics": [ 
     { 
      "expression": "ga:uniquePageViews" 
     } 
     ], 
     "dimensions": [ 
     { 
      "name": "ga:pagePath" 
     } 
     ], 
     "pageSize": 3, 
     "orderBys": [ 
     { 
      "fieldName": "ga:avgPageLoadTime", 
      "sortOrder": "ASCENDING" 
     } 
     ] 
    } 
    ] 
} 

Toutefois, ce rapport ne peut pas être trop utile car il sera principalement ramasser des valeurs aberrantes, plutôt que des pages d'intérêt. Je combinerais cet appel avec un autre appel pour récupérer, 1) le haut n pages par pages vues uniques, et 2) l'utiliser comme un filtre pour l'appel de temps de chargement de la page.

Par exemple (en R, en utilisant googleAnalyticsR):

1) 
#retrieve the top 100 pages (ranked via unique pageviews) 
test <- google_analytics_4(VIEW_ID, 
    date_range = c("30daysAgo", "yesterday"), 
    metrics = "uniquePageviews", 
    dimensions = "pagePath", 
    max=100, #this is the top n pages 
    order = order_type("uniquePageviews", sort_order=c("DESCENDING"),orderType = c("VALUE"))) 

2) 
#call the top 3 pages via avgPageLoadTime 
test2 <- google_analytics_4(VIEW_ID, 
    date_range = c("30daysAgo", "yesterday"), 
    metrics = "avgPageLoadTime", 
#But only for the top 100 pages (ranked via unique pageviews). 
#filterExpression = uniquePageViews is greater then the unique pageviews 
#of the 100th ranked page. 
    filtersExpression=paste("ga:uniquePageViews>",tail(test$uniquePageviews, 1), sep=""), 
    dimensions = "pagePath", 
    max=3, 
    order = order_type("avgPageLoadTime", sort_order=c("ASCENDING"),orderType = c("VALUE"))) 

Mise à jour:

Ce que vous essayez d'atteindre est impossible dans une seule requête.

Le problème est que l'ordre des résultats est réactif au jour que vous essayez d'interroger. Un tableau croisé dynamique ne fonctionnera pas, même si vous pouvez pivoter page par page et avoir 30 colonnes, il vous montrera le trafic quotidien pour les trois premières pages, plutôt que les trois premières pages par jour.

Pour obtenir les résultats que vous recherchez, vous devez exécuter une boucle pour les x derniers jours, en appelant les 3 premiers résultats de la mesure d'intérêt.

+0

Merci pour votre réponse, mais la première requête ne renvoie que trois éléments (puisque la taille de la page est 3). Mais je voulais interroger les 3 meilleurs éléments par jour, ce qui donne 90 lignes pour un mois. Je dois éviter la pagination. Désolé pour la description confuse de mon problème. J'ai aussi fourni '': pagePath'' comme simple exemple, je veux interroger pour différentes métriques compatibles triées par une autre métrique pour chaque jour (avec une limite par exemple 3) séparément dans une seule requête (si possible). –

+0

J'ai fourni une mise à jour. Comment essayez-vous de mettre en œuvre cela? – sdhaus

+0

Je vais soit interroger pour chaque jour ou tous les nième jour et interpoler. Merci pour votre temps et votre patience! Je laisserai cette question ouverte jusqu'à la fin de la prime, et si personne d'autre ne peut fournir une solution, acceptez votre réponse. –