Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexCharger de multiples fichiers est un grand classique avec Alteryx. On rêve de l’automatiser mais il y a toujours un petit grain de sable…
Rassurez-vous, vous aurez toutes les cartes en main à la fin de cet article.
Des outils standards lui sont donc dédiées mais ils ont certaines limites face aux réalités de vos projets.
Il faut alors passer à d’autres techniques plus puissantes.
Il est donc important de bien comprendre ces méthodes et lesquelles utiliser en fonction de ce que l’on recherche :
Les 4 options par ordre de complexité croissante :
1. Consolidation manuelle des fichiers via l'outil UNION
2. Consolidation automatique via l'outil INPUT/ ENTREE DE DONNEE et les "wildcards"
3. Consolidation automatique via l'outil DYNAMIC INPUT / ENTREE DYNAMIQUE
4. Consolidation automatique via une macro packageant l'outil INPUT
Synthèse de leurs forces/faiblesses :
|
Dynamisme |
Simplicité |
Robustesse aux changements de format |
Customisation pour gestion des cas particuliers |
1. Consolidation manuelle des fichiers via l'outil UNION |
X |
XXX |
XXX |
X |
2. Consolidation automatique via l'outil INPUT/ ENTREE DE DONNEE et les "wildcards" |
XXX |
XXX |
X |
X |
3. Consolidation automatique via l'outil DYNAMIC INPUT / ENTREE DYNAMIQUE |
XXX |
XX |
X |
XX |
4. Consolidation automatique via une macro packageant l'outil INPUT |
XXX |
X |
XXX |
XXX |
Description du cas d’étude
Pour démontrer les nuances nous allons essayer de consolider 4 fichiers censés être identiques. Comme nous sommes dans la vrai vie, ces fichiers ne sont pas réellement identiques et comportent en fait 3 formats distincts qui peuvent poser problème aux outils standards.
FinanceData_APAC.xlx et FInanceData_Europe.xlxs sont identiques suivant ce format :
FinanceData_USA.xlx à 2 différences.
D'abord la colonne "Production Price" a été renommées en "Manufacturing Price" mais a le même format numérique.
Ensuite, une colonne additionnelle "Comment" a été ajoutée la fin.
Finance_USA2.xlsx a lui les mêmes colonnes mais le format de la colonne "Production Price" est de type V_String (texte) au lieu de Double (numérique).
Nous allons donc voir comment réagissent les différentes méthodes face à ces "petites" différences qui sont celles qui nous consomment du temps au quotidien. Il est important de bien les maîtriser pour savoir vers quelle technique s'orienter.
1 - Consolidation manuelle des fichiers via l'outil UNION
Le UNION propose automatiquement le format de sortie qui permet d'absorber tous les fichiers. En termes de format et aussi de nombre de colonnes.
Le nom des colonnes de sortie est imposé par le 1er fichier lu.
Il existe 3 options de consolidation. Par position, par nom ou "à la main de l'utilisateur".
Ici c’est l’option « Par position » qui a été retenue, elle permet donc d’absorber le fait que la même colonne à 2 noms différents d’un fichier à l’autre (Production Price / Manufacturing price). C’est le nom de la colonne du 1er fichier qui fera fois. L’option par nom est aussi très pratique lorsque les colonnes ne sont pas dans le même ordre.
Les PLUS :
Les MOINS :
2 - Consolidation automatique via l'outil INPUT/ ENTREE DE DONNEE et les "wildcards"
Le INPUT va donc essayer de charger tous les fichiers listés en partant du principe qu'ils ont tous exactement le même format. Toute divergence amène au non-chargement (colonne ou format)
Attention, Cela ne sort pas des erreurs mais des warnings.
Voici les messages d'erreur type:
- "…has a different number of fields that the 1st file in the set and will be skipped”
- “…has a different schema than the 1st file in the set and will be skipped”
Les PLUS :
Les MOINS :
3 - Consolidation automatique via l'outil DYNAMIC INPUT / ENTREE DYNAMIQUE
On précise le répertoire où se trouvent les fichiers.
Et sur le même principe que le cas précédent, on précise les caractéristiques des fichiers à charger.
Dans la désignation du fichier on peut utiliser les wildcards :
FinanceData_*.xlsx représente donc tous les fichiers qui commencent par "Finance_Data_" puis n'importe quel nombre de caractère puis qui se terminent par ".xlsx"
Cela scanne donc le répertoire et nous ramène nos 4 fichiers.
En sortie, l'objet ramène toutes les caractéristiques des fichiers dont le chemin complet qu'on utilise à l'étape suivante.
Cet outil permet, sur la base d'une liste de fichier, de charger dynamiquement tous les fichiers concernés en 1 seul objet.
Il faut lui préciser un exemple de format de fichier et une liste de chemin d'accès à ces fichiers.
Ce fichier exemple IMPOSE le format attendu. Tout fichier qui ne respecte pas ce 1er format sera rejeté.
L'ENTREE DYNAMIQUE va donc essayer de charger tous les fichiers de la liste. Sa référence de format est celle du template (ici Europe). Ceux en écart sont écartés.
Les lignes OK des autres fichiers sont tout de même traitées et continues dans le flux.
ATTENTION, le non-chargement pour colonne supplémentaire ne sort pas en erreur mais en warning. Mais le changement de format lui déclenche l'erreur.
Voici les messages d'erreur type :
- "has a different number of fields that the 1st file in the set and will be skipped"
- has a different schema than the 1st file in the set and will be skipped
Les PLUS :
Les MOINS :
4 - Consolidation automatique via une macro packageant l'outil INPUT
Une macro batch est une combinaison d'outil que l'on package et à qui l'on fournit une liste d'entrées. Elle va effectuer N fois le traitement packagé pour toutes les entrées de la liste.
Dans notre cas, on package un objet ENTREE DE DONNEES à qui on va fournir la liste des fichiers à charger. La force de cette méthode est qu'à chaque itération, la macro considère qu'elle ne traite qu'une et une seule entrée sans tenir compte de l'historique. C'est comme si on avait N fois un input avec 1 fichier et non pas un Input avec N fichiers.
Ainsi, on a plus le problème de divergence de format entre le 1er et le Nème. Chaque fichier étant considéré comme unique il est forcément cohérent avec lui-même.
Et c'est là que le 2ème effet Kiss Cool apparait. La macro à la sortie consolide les résultats comme le ferait l'objet UNION.
Et donc gère tous les problèmes de format ou de nombre de colonne distinct. On n’a ainsi pas de rejet et des formats uniformisés et optimisés.
2 spécificités sur cette macro :
Attention, le non-chargement pour colonne supplémentaire ne sort pas en erreur mais en warning. Mais le changement de format lui déclenche l'erreur.
Note : Le menu des macros est un menu dédié qu’on fait apparaitre via le menu Afficher/ Concepteur d’interface, puis dernier onglet paramètre en bas à gauche (la roue).
C’est ici que l’on détermine si à la sortie la macro va consolider les données sur la base de leur position (la 1ère avec la 1ère, la 2ème avec la 2ème…) ou sur la base de leur nom (quel que soit l’ordre, elle recherche les noms et les aligne).
Les PLUS :
Les MOINS :
Astuces :
Pour pouvoir visualiser si un objet est une macro il faut activer l'option "Options" / "Paramètres utilisateur" / "Canevas" / "Afficher les indicateurs de macro sur les outils"
Cela fait apparaitre un (+) sur les outils qui sont des macros.
Il suffit alors de cliquer droit dessus et de lancer l'option "Ouvrir la macro" pour ouvrir un onglet dédié pour cette macro.
Pour plus d'information sur les macros, voir les leçons Interactives Macros dans la Community:
Voilà, maintenant plus d’excuse pour charger dynamiquement tous ce qui bouge et gérer automatiquement tous ces cas sans n’avoir plus rien à toucher d’un lancement à l’autre ou.. au contraire rester simple lorsqu’on a pas besoin de complexité.
Elle n’est pas belle la vie ? 😊
Enjoy !
Pour ajouter un commentaire ici, vous devez être inscrit. Si vous êtes déjà inscrit, connectez-vous. Dans le cas contraire, inscrivez-vous puis connectez-vous.