<< Back

Macro Alteryx & API Tableau Server – partie 2

Bonjour à tous ! Le mois dernier nous avions commencé l’écriture d’une Macro Alteryx qui renvoyait un token d’authentification Tableau à partir des informations de connexions d’un utilisateur. Aujourd’hui, nous allons réutiliser ce travail afin de créer une mMacro Alteryx permettant de télécharger des informations depuis notre serveur Tableau. La macro du tutoriel précédent peut être téléchargée ici.

1/ Introduction

Comme souvent, je vais vous indiquer la documentation Tableau comme point de départ de notre tutoriel. Elle est très bien rédigée et très complète. https://onlinehelp.tableau.com/current/api/rest_api/en-us/help.htm.

L’idée de ce tutoriel visera à montrer comment utiliser Alteryx pour télécharger des données inhérentes à votre Serveur Tableau. Nous allons réutiliser la macro du tutoriel précédent pour l’appel de connexion. A partir de là, nous allons faire une petite Macro Alteryx qui nous permettra de télécharger les données à ce sujet :

  • Utilisateurs sur notre site,
  • Classeurs et Vues,
  • Groupes,
  • Projets,
  • Sources de données

Le tout sera présenté dans une macro simple d’utilisation. Vous pourrez même réutiliser cette Macro pour créer des utilisateurs si vous le souhaitez. Alors c’est parti ! 🙂

2/ Encapsulation de macros

Nous allons commencer par réutiliser la macro d’authentification du tutoriel précédent. J’espère ainsi pouvoir vous démontrer la puissance de l’encapsulation de macros. Commencez par glisser la macro login sur votre workflow. Ensuite, rajoutez un outil Macro Output en sortie de votre macro et enregistrez votre nouvel outil en tant que Pagination.yxmc. Ensuite, il nous faut pouvoir agir sur chacun des paramètres de la macro login. Il n’y a rien de plus simple ! Rajoutez des couples Text Box/Action pour chacun des champs suivants : server, username, password, site et rajoutez un couple Drop Down/Action pour la version de l’API. Chaque outil Action doit être paramétré en mode Update Value (default) sur la valeur. Voici ce à quoi votre nouveau branchement devrait ressembler : 

Nous allons permettre à l’utilisateur de récupérer les données correspondant aux Classeurs, Utilisateurs, Projets, Groupes, et Sources de données (ou la totalité des données citées). Je glisse donc un outil Text Input dans lequel je renseigne ces champs (en anglais pour me faciliter le travail plus tard).

Pour finir, je rajoute un Outil Drop Down pour demander à l’utilisateur les données à sélectionner. Un outil Filter paramétré permet de filtrer le champ Query correctement :

Ainsi, lorsque l’utilisateur sélectionnera Workbooks, seul la requête Workbooks sera exécutée. Et s’il sélectionne « * » alors toutes les requêtes seront exécutées.

3/ Téléchargement et pagination

3.1/ Premier téléchargement

La documentation Tableau nous indique qu’une pagination est mise en place pour renvoyer des résultats qui pourraient théoriquement être très nombreux. Je vous invite donc à lire la documentation, mais le concept est relativement simple. Quand les résultats sont trop nombreux pour être retournés en une seule fois, l’API renvoie uniquement les X premiers résultats (avec X inférieur à 100 suivant votre réglage). Ensuite, si vous souhaitez récupérer les résultats suivants, il faut relancer un appel à l’API en spécifiant la « page » où se trouvent les résultats.

Je commence donc par donner une entrée nommée pagination qui donnera la possibilité de régler le nombre de résultats renvoyés par l’API :

Ensuite, je construis l’URL qu’il faut appeler de la manière suivante :

Comme vous le voyez, je récupère tout d’abord la première page de résultats dont la taille est dictée par mon entrée Pagination. Ces paramètres sont ensuite ajoutés à l’url passée à l’outil Download.

3.2 Parsing des résultats

Les résultats renvoyés par l’API sont au format XML. Pour garder ce tutoriel court au possible, je ne vais pas décrire l’étape de récupération des résultats. Mais j’ai écrit un certain nombre d’articles sur le sujet du XML (si le sujet vous intéresse) :

Voici une vision de ce à quoi ressemble le parsing des résultats (vous voyez? c’est simplement une suite d’outils XML Parse :P):

NB : Vous êtes parfaitement libres de changer la manière dont vous récupérez les données, ma méthode est synthétique mais elle ne couvre pas tous les cas d’usages de l’API Tableau. Vous devrez adapter votre propre parsing suivant vos cas d’usages ;).

3.3/ Pagination

A ce stade, nous avons récupéré la première page mais il peut en avoir d’autres. Nous devons donc générer autant d’appels d’API qu’il n’y a de pages de résultats. Or, le premier appel nous a donné l’information concernant le nombre de pages. Nous pouvons donc générer autant d’appels que nécessaire ! Voici comment faire :

En résumé, les étapes sont les suivantes :

  1. Calculez le nombre de pages avec la formule FLOOR([pagination_totalAvailable]/[pagination_pageSize])
  2. Générez des lignes de données avec l’outil Generate Rows en commençant à 2 et en terminant au nombre de page précédemment calculé

Et voilà ! Vous avez généré autant de lignes qu’il ne fallait pour créer un appel à l’API pour chaque page ! Il ne vous reste plus qu’à réutiliser la portion de workflow de 3.2 à nouveau pour récupérer les résultats que renverront chaque page ! 🙂 Voici une vision globale de ce à quoi ressemble la macro une fois terminée :

Voici ce que peut renvoyer la macro (et un lien pour la télécharger ):

Bonne journée à tous ! 🙂

Julien Godenir

Anywhere

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *