
Geolocalisation d’IP dans Alteryx
Bonjour à tous !
Aujourd’hui, nous allons créer un script Alteryx pour récupérer des coordonnées géographiques utilisables basées sur des IPs. Si vous avez un site web fréquenté par des utilisateurs, il est très probable que vous souhaitiez savoir d’où viennent vos visiteurs. Si la seule donnée à votre disposition est une liste d’IPs vous pouvez toujours récupérer très simplement les coordonnées géographiques approximatives de vos visiteurs.
1/ Fournisseurs d’IPs
Il existe une multitude d’APIs afin d’effectuer un geocodage d’IP. Les services peuvent être payants ou gratuits suivant le niveau de qualité, d’accès, de richesse et de limite du service en question. Les services gratuits sont généralement limités en nombre d’appels par minute/heure/etc.
Voici une liste non-exhaustive des services que j’ai pu trouver ci-dessous :
- https://db-ip.com/ (payant)
- https://ipstack.com/ (payant)
- http://geoip.nekudo.com/ (gratuit)
- http://www.geoplugin.com/ (gratuit)
- http://ip-api.com/ (gratuit)
- https://ipinfo.io/ (payant)
- https://www.ip2location.com/ (payant)
- http://ipinfodb.com/ (gratuit avec clé d’API)
- https://www.maxmind.com/fr/geoip-demo (gratuit avec formule payante)
- … autres 😉
Comme vous le voyez il existe un certain nombre de services proposant le géocodage des IPs. J’ai retenu 3 services qui me paraissaient intéressants : nekudo, geoplugin et ip-api. J’ai choisi ces fournisseurs principalement car ils sont gratuits et qu’ils ne requièrent pas de clé d’API. Cependant, rien ne vous empêche d’opter pour un service payant qui sera peut-être plus riche en informations et plus précis.
2/ Le workflow :
L’inconvénient principal de l’utilisation des versions gratuites de ces APIs est qu’elles sont souvent limités en quota. Les versions payantes vous donneront probablement plus de quota, c’est à vous de voir. Alteryx nous permet néanmoins de limiter le nombre de requêtes effectuées grâce à l’outil Throttle :
Créez un champ url avec l’outil Formula suivant ce que spécifie la documentation du service concerné. Je vais prendre l’exemple de geoplugin. L’url spécifiée est http://www.geoplugin.net/json.gp?ip=<votre-ip>. N’hésitez pas à reproduire cette formule pour d’autres services si vous le souhaitez.
Les requêtes que vous aurez à créer sont généralement très simples et ne requièrent pas de payload. Si vos projets d’appels d’API nécessitent un payload, vous pouvez vous référer à ces tutoriels : https://www.theinformationlab.fr/2018/03/29/creation-de-xml-alteryx/ https://www.theinformationlab.fr/2018/03/23/api-rest-tableau-alteryx/
Ensuite, nous pouvons utiliser directement l’outil Download de manière très simple : choisissez l’url que vous avez généré et gardez l’option GET sélectionnée (elle l’est par défaut).
Le contenu renvoyé par l’API étant au format JSON vous pouvez rajouter l’outil JSON Parse sur le champ DownloadData (généré par l’outil Download) suivi d’un outil Cross Tab afin de lire les résultats en tableau.
L’outil JSON Parse renvoie des résultats au format Clé/Valeur, la clé étant JSON_Name et la valeur JSON_ValueString. N’oubliez donc pas de bien spécifier JSON_Name pour New Column Headers et JSON_ValueString sur pour Values for New Columns. Il est également important de grouper les résultats pour chaque IP comme sur l’image ci-dessus.
Voici le workflow que j’ai réalisé, vous pouvez le télécharger ici.
Comme vous le voyez, j’ai simplement répété la même approche pour les APIs Geoplugin, Nekudo et ip-api pour enrichir d’autant mes résultats (et potentiellement analyser la qualité des données entre différents fournisseurs).
3/ Résultats :
J’ai ici géocodé les résultats d’un milliers d’adresses IPs provenant de mon site internet. Pour vérifier les résultats j’ai créé une formule précision qui calcule la qualité des résultats entre fournisseurs pour une IP donnée afin de montrer en priorité les résultats avec une bonne précision :
Voici le résultat que nous obtenons après visualisation dans Tableau :
Et voilà ! Dans un prochain tutoriel, je vous montrerai comment utiliser Alteryx avec wget pour générer un grand nombre d’adresses à partir de coordonnées géographiques ! 🙂
Bonne journée ! 🙂