Free Trial

Blog

Les analyses et les idées des plus grands esprits de l'analyse.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index
StephaneP
Alteryx
Alteryx

Comment transposer un tableau croisé en une table simple ? Partie 2

 

(Retrouvez "Comment transposer un tableau croisé en une table simple ? Partie 1" juste ici!)  

StephaneP_0-1656584627987.png

 

Nous continuons dans les exemples avec cette fois-ci une montée en complexité.

 

Example 3 : Focus sur la transposition d'une en-tête de colonne multiligne en en-tête de ligne multi colonne

 

StephaneP_1-1656584628238.png

 

 

Avant d’attaquer un tableau plus complexe, focalisons nous sur la bascule de l’en-tête. Notez que cet en-tête a elle aussi subit l’effet « Fusion » d’Excel et porte des valeurs NULL entre chaque changement de valeur. Là aussi, il faudra répéter automatiquement les valeurs en remplacement des NULL. Mais ici, il faut travailler horizontalement ce que l’outil Formule à plusieurs lignes ne sait pas faire. Ne cherchez pas, l’outil Formule à plusieurs colonnes ne fait pas non plus.

 

Donc votre réflexe doit être de… transposer ces lignes en colonne. Bravo !

 

D’où ce workflow :

 

StephaneP_2-1656584628314.png

 

 

Le fait de transposer les en-têtes en colonne va permettre d’utiliser la technique de complétion de l’exemple 2.

 

StephaneP_3-1656584628458.png

 

Notez que, quelque soit le nombre de lignes d’en-têtes de colonnes, elles se retrouveront toutes à la sortie dans la colonne Value. Ici, on a les dates 2014-01-01 avec les indicateurs Nbr Contrats. Ceci est très pratique car la transformation sera donc dynamique et agile. Pas besoin de modifier le traitement si on a un format différent.

 

Gestion de l’identifiant unique des colonnes

 

Je n’en ai pas parlé jusqu’ici mais, Alteryx a besoin d’avoir des désignations de colonne unique. Par exemple, si votre fichier Excel d’entrée a 3 colonnes qui portent le même nom, il va automatiquement leur rajouter un compteur pour les différencier.

 

StephaneP_4-1656584628526.png

 

Dans notre contexte, on a justement énormément de répétitions. Cela rend l’identification et le traitement des colonnes complexes car elles sont renommées.

 

Astuce n° 1 : Contrairement à la règle par défaut, ne pas demander à Alteryx de prendre le nom des colonnes dans la 1ère ligne des données. Cela génèrera un identifiant unique sur les colonnes.

 

Ceci s’effectue ici dans les outils Entrée de donnée :

 

StephaneP_5-1656584628570.png

 

Il faut décocher l’option 6.

 

Comme en-tête de colonne, il place alors un compteur précédé de F. Et pour nous, c’est un avantage car on a ainsi un identifiant unique des colonnes sans rien avoir à faire !

 

Nous allons aussi ajouter un ID unique pour les lignes. Chaque cellule d’en-tête sera donc identifiée de manière unique par un ID de ligne et un de colonne.

 

StephaneP_6-1656584628588.png

 

Voyons à quoi cela va nous servir.

 

Concrètement, voila ce qu’on cherche à faire : basculer les portions verticales d’en-tête de colonne en portion horizontale d’en-tête de ligne.

 

StephaneP_7-1656584628617.png

 

Notez aussi la transposition des identifiants de lignes (les numéros) et de colonnes (les Fxx).

 

Astuce n° 2 : Combinaison de Transposer puis Tableau Croisé dynamique, suivant les 2 étapes suivantes :

 

StephaneP_8-1656584628689.png

 

Retenez bien cette technique de transposition c’est un MUST d’Alteryx. Il faut la maîtriser pour se simplifier la vie.

 

Au delà du principe de transposition, cette technique est très utilisée pour traiter des informations qui sont en colonnes et non en lignes. On bascule tout en ligne via le Transposer, on effectue le traitement avec les outils appropriés et on reconstruit le tableau initial via l’outil Tableau Croisé dynamique.

 

Notez qu’avec cette technique, une fois le format du tableau défini (nombre d’en-tête de lignes et de colonnes) quel que soit le nombre de colonnes ou de lignes votre traitement continu de fonctionner sans intervention.

Il ne faut intervenir que lorsque :

- Le nombre d’entête de ligne change (ici 3)

- Le nombre d’entête de colonne change (ici 3)

 

Example 4 : Transpose d'un tableau croisé (lignes et colonnes) en une table à en-tête de lignes multiples

 

StephaneP_9-1656584629198.png

 

Et voilà, le bouquet final avec toutes les options activées :

- Multi en-tête de lignes

- Multi en-tête de colonnes

- Valeurs NULL à combler en en-tête de lignes

- Valeurs NULL à combler en en-tête de colonnes

 

Même par peur !!

 

On va juste combiner tout ce qu’on a appris dans les étapes précédentes : 

- Placer des identifiants uniques sur les colonnes et les lignes,

- Séparer la partie en-tête de la partie données pour leur appliquer leurs propres transformations,

- Réunir les 2 via les ID uniques des colonnes (Fxx).

 

 

StephaneP_10-1656584629346.png

 

 

Concrètement, voici ce qu’on entend par séparation des en-têtes et des données :

 

StephaneP_11-1656584629648.png

 

 

Pour la partie données on n’a plus d’en-tête nommée mais comme on a notre identifiant Fxx unique, on a pas de souci à identifier de quelle colonne on parle.

 

Comme on ne veut plus du tout d’en-tête de colonne, la seule opération qui reste est de basculer cette dimension de ligne en colonne via un Transpose une fois de plus.

 

On obtient alors :

 

StephaneP_12-1656584629782.png

 

Avec notre identifiant Fxx dans la colonne Name.

 

 

Pour la partie en-tête suite au traitement de Transpose + Tableau croisé dynamique on obtient ce tableau :

 

StephaneP_13-1656584629925.png

 

 

On voit bien que pour les réunir, il nous suffit de faire un UNION sur notre identifiant de colonne Fxx, contenu des 2 cotés dans la colonne Name.

 

StephaneP_14-1656584630165.png

 

 

En résumé :

StephaneP_15-1656584630417.png

 

 

Et voilà ! Terminée la rigidité des tableaux, à vous la sculpture des données !

StephaneP_16-1656584630468.png

 

 

À vous le dynamisme sur les tableaux complexes 😊

 

Enjoy.

Stéphane Portier
Sales Engineer

Étiquettes