Tutorial pour migrer ses données de Google Analytics vers Piwik

écrit par Aymeric

piwik google analyticsAprès quelques discussions avec d'autres SEO concernant l'utilisation d'applications autres que Google Analytics big brother is watching you pour la mesure d’audience de sites Web, j'ai décidé de me tourner récemment vers une solution Open-Source du nom de Piwik dont @rudy_som avait d'ailleurs parlé au Barcamp BlackHat 2012.
Le problème? Repartir de zéro sans avoir les données précédentes de Google Analytics intégrées à Piwik...
Heureusement, l'API de Google Analytics est là ainsi qu'un script en Python que nous allons adapter afin de pouvoir tout récupérer.

Avant de commencer

Sur http://clearcode.cc/offer/open-source-projects/google2piwik/, vous trouverez un script d'importation qui fera le travail comme un grand. Son seul inconvénient est qu'il utilise une ancienne version de l'API ce qui provoque rapidement des "rate limit exceeded" en raison des quots de l'API d'Analytics.
La nouvelle API autorise 50 000 requêtes par jour et va nous demander quelques modifications dans les différents scripts utilisés.

Ce tutorial a été réalisé sous Debian Squeeze, il s'adaptera facilement aux différentes distributions.

1 - Installation des applications requises

Voici les différents ingrédients nécessaires pour la bonne importation de nos données de Google Analytics vers Piwik:

install software- Une instance de Piwik
- Un compte Google Analytics
- Python et son module python-mysqldb pour se connecter à la base de données
- La librairie Google Python API (gdata-python-client)
- Le script d'importation Google2piwik
- Un projet dans l'API de Google Analytics
et un accès SSH (of course!)

A - Python et son module Mysqldb:

Si Python n'est pas encore installé sur votre serveur, voici les commandes à lancer pour l'installer

apt-get install python

ainsi que le module Mysql

apt-get install python-mysqldb

B - Gdata python client:

Il nous faudra également installer la librairie Python gdata-python-client pour accéder à l'API Google, la dernière version étant la 2.0.17. (http://code.google.com/p/gdata-python-client/)

cd /tmp
wget http://gdata-python-client.googlecode.com/files/gdata-2.0.17.zip
tar xvzf gdata-2.0.17.tar.gz
cd gdata-2.0.17
./setup.py install

C - Script d'importation Google2Piwik:

Le script est disponible à cette adresse: Google2Piwik, merci à la société http://clearcode.cc qui l'a développé au passage 🙂

cd /home/aymeric
wget http://clearcode.cc/google2piwik-1.2.5.tgz
tar xvzf google2piwik-1.2.5.tgz

(pensez à changer le chemin vers votre home)

2 - Adaptation du script d'importation Google2Piwik

faison fonctionner API avec le script importAfin d'utiliser le script d'import et le client Gdata avec l'API v2.4, quelques modifications dans le code sont nécessaires afin d'utiliser une API key.

Plusieurs fichiers vont subir des corrections:
- google2piwik.conf (infos de connexion)
- config.py (fichier de configuration du script)
- google2piwik.py (script d'importation)

A - Le fichier de configuration google2piwik.conf

Il faut ajouter les identifiants de votre compte ayant accès à Analytics en modifiant les paramètres user + password

[google]
user_login = user
user_pass  = password
table_id   = ga:XXXXXXXX

et juste en dessous (sous table_id) la ligne suivante:

api_key = xxxxxxxxxxxxxxxxxxxxxxxx

On pourra compléter l'API Key à la fin du tutorial, quand votre projet sera configuré dans la console Google Code API.

Il faut ensuite ajouter les informations de connexion à la base de données MySQL de Piwik avec vos paramètres

# MySQL Piwik Database configuration
[mysql]
db = piwik
host = localhost
port = 3306
user = piwik
passwd = xxxxxxxxxxxxxxxxxxx
table_prefix = piwik

A la fin du fichier, renseigner la date de début -> date de fin des données à importer ainsi que l'ID du site Piwik et son URL

# Set export date range
[export]
start = 2012-06-01
end   =  2012-07-29
## Piwik configuration of site.
# For default Piwik installation with one website, site_id should be set to 1
[piwik]
site_id  = 3
site_url = http://www.yapasdequoi.com

B - Le fichier config.py

Ensuite, il faut cherche les lignes suivantes (l.13 à 15):

MYSQL_CREDENTIALS = {}
GOOGLE_USER = ""
GOOGLE_PASS = ""

et y ajouter cette ligne

GOOGLE_KEY = ""

On modifiera également cette ligne (l.20):

global MYSQL_CREDENTIALS, GOOGLE_USER, GOOGLE_PASS

en la remplaçant par

global MYSQL_CREDENTIALS, GOOGLE_USER, GOOGLE_PASS, GOOGLE_KEY

enfin, il est nécessaire d'ajouter sous ces lignes (l.30 à 32):

GOOGLE_TABLE_ID = conf.get("google", "table_id")
GOOGLE_USER = conf.get("google", "user_login")
GOOGLE_PASS = conf.get("google", "user_pass")

la ligne suivante

GOOGLE_KEY = conf.get("google", "api_key")

C - Script d'import google2piwik.py

Par défaut, le script vérifie la présence de "@gmail.com" dans le nom d'utilisateur du fichier de configuration google2piwik.conf. Nous n'avons plus besoin de cette vérification puisque le nom d'utilisateur suffit pour se connecter avec l'API key.

Il faut commenter les lignes suivantes en mettant un # en debut de ligne (l.577 à 579):

#        if not config.GOOGLE_USER.split("@")[1] == "gmail.com":
#            print "Your e-mail address should be ending with @gmail.com"
#            exit()

Maintenant, il va falloir passer la clé (Api Key) dans différents appels à l'API. Cela sera possible en spécifiant un paramètre supplémentaire dans la fonction de requête datafeed.

Il faut donc remplacer ces lignes (l.471 à 477)

data_query = gdata.analytics.client.DataFeedQuery({
'ids': self.table_id,
'start-date': day_start,
'end-date': day_end,
'dimensions': dimensions,
'metrics': metrics,
'max-results': '10000'})

par

data_query = gdata.analytics.client.DataFeedQuery({
'ids': self.table_id,
'start-date': day_start,
'end-date': day_end,
'dimensions': dimensions,
'metrics': metrics,
'max-results': '10000',
'key': config.GOOGLE_KEY})

et faire cette modification à nouveau pour la fonction FeedFetch à partir de la ligne 482.

Malheureusement, l'interrogation des Table-IDs ne fonctionne plus de la même manière. Ils sont nécessaires pour l'importation, afin que le script sache quelles données exporter. Afin de permettre la lecture des Table-ID, une autre partie du script doit être adaptée (env. à la ligne 518):

Il faut remplacer:

def PrintTableIDs(self):
account_query = gdata.analytics.client.AccountFeedQuery()
table_feed = self.client.GetAccountFeed(account_query)
print "Google Analytics Table IDs for your Account\n"
for entry in table_feed.entry:
print "Site: %30s \t table_id: %s" % (entry.title.text, entry.table_id.text)

par

def PrintTableIDs(self):
account_query = gdata.analytics.client.ProfileQuery('~all', '~all', {'key': config.GOOGLE_KEY})
table_feed = self.client.GetManagementFeed(account_query)
print "Google Analytics Table IDs for your Account\n"
for entry in table_feed.entry:
print "Site: %30s \t table_id: %s" % (entry.GetProperty('ga:profileName').value, entry.GetProperty('dxp:tableId').value)

3 - Modification de la librairie Gdata en Python

gdata python clientDans ce module Google, il ne faut pas modifier trop de choses, juste le nom du serveur (hôte) et les chemins pour les requêtes qui doivent être ajustés.

Voici une liste des modifications apportées au fichier gdata-python-client client.py. Le fichier se trouve dans mon installation /usr/local/lib/python2.6/dist-packages/gdata/analytics/client.py

Ligne 116:

host = 'www.google.com'

par

host = 'www.googleapis.com'

Ligne 135:

path = '/analytics/feeds/accounts/default'

par

path = '/analytics/v2.4/management/accounts'

Ligne 158:

path = '/analytics/feeds/data'

par

path = '/analytics/v2.4/data'

Ligne 179:

path = '/analytics/feeds/datasources/ga/accounts'

par

path = '/analytics/v2.4/management/accounts'

Ligne 248:

return ('/analytics/feeds/datasources/ga/accounts/%s/webproperties'

par

return ('/analytics/v2.4/management/accounts/%s/webproperties'

D'autres lignes utilisent les anciens chemins mais comme elles ne sont pas utilisées par le script d'importation Google2Piwik, il est inutile de les modifier.

4 - Création d'un projet pour l'API

Pour accéder à la nouvelle API, nous avons besoin d'une clé API. Vous allez pouvoir la créer dans la console des API Google:
https://code.google.com/apis/console/ -> Accès à l'API

Créez d'abord un nouveau projet que vous pourrez nommer "google2piwik" par exemple à l'aide du menu déroulant:

new-project-google-api

Ensuite, une fois votre nouveau projet sélectionner, il faudra activer l'API de Google Analytics en la mettant sur Position Marche (en passant par le lien "Services"):

analytics-api-on

Vous trouverez maintenant votre clé d'API via le lien "Api Access"

Api Key Google Analytics

Il ne vous reste plus qu'à rajouter la clé d'API dans dans le fichier de configuration google2piwik.conf déjà modifié précédemment.

5 - Importation des données

Notre fichier de config est bientôt complet afin de procéder à l'exportation des données de GA suivie de l'importation dans Piwik: il ne manque plus que la table_id correspondant à votre site dans Google Analytics.
Pour trouver la valeur ga: XXXXXXXX, il suffit de lancer la commande qui permettra de lister les ID de toutes les sites Analytics reliées au compte

./google2piwik.py -p

Il ne reste plus qu'à reporter la valeur correspondante dans le fichier google2piwik.conf qui est maintenant complet.

A - Vérification

Pour vérifier que tous les paramètres sont correctes, la commande -c vérifira que les connexions à l'API Analytics ainsi qu'à votre base de données Piwik sur MySQL sont bien OK (croisez les doigts!!)

./google2piwik.py -c

Vous devriez obtenir quelque chose comme ça:

google2piwik

Go!

Nous pouvons enfin lancer le script d'importation, ça peut être assez long.......soyez patients!

./google2piwik.py

Vous verrez ensuite dans la console d'API Google un joli pic apparaître dans la section "Reports", it works !

google api reports

Bonne importation à tous 😉


Sources et ressources utiles

Ce tutorial est en partie une adaptation de cet article : Import von Google Analytics Daten zu Piwik Analytik mit google2piwik mit der Google API v2.4 und API Key, merci à son auteur: Marius Cramer.

Pour une installation de Piwik, je vous recommande de suivre cet article de @nicolargo à cette adresse: Remplacer Google Analytics par Piwik.

écrit dans Outils par Aymeric | 16 commentaires

16 commentaires "Tutorial pour migrer ses données de Google Analytics vers Piwik"

  • Yoann dit:
  • evenstood dit:
  • Thomas dit:
  • patrick dit:
  • François dit:
    • Yoann dit:
      • François dit:
  • Guillaume dit:
    • Toto23 dit:
  • Patrice dit:
  • AnalyticsPro dit:
  • referencement seo dit:
  • Ploufside dit:
    • Aymeric dit:
  • offre d'emlpoi à toulouse dit:
  • Piéce mobile dit:
Ajoutez un nouveau commentaire