Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
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 1

 

 

StephaneP_0-1656583414418.png

 

C’est un grand classique souvent demandé. Il y a 3 raisons à cela :

1. Filtrer ou exploiter vos données sur la base d’informations portées par les en-têtes. Basculer les entêtes de colonnes en en-têtes de ligne permet d’exploiter pleinement la puissance des outils qui travaillent sur les lignes (la majorité).

 

2. Fusionner plusieurs tableaux multi en-tête qui n’ont pas forcément le même format à la base. Si vous avez plusieurs tableaux croisés en entrée qui utilisent les mêmes axes métiers mais présentés différemment, on ne peut pas simplement utiliser l’outil Union car les colonnes n’ont pas le même contenu métier.

StephaneP_1-1656583414516.png

 

Si vous souhaiter fusionner leurs données et les analyser ensemble, le seul moyen est de les transformer individuellement en une table simple. Vous pourrez alors les consolider en une table de même format et analyser la fusion.

 

StephaneP_2-1656583414874.png

 

 

Et lorsque vous saurez le faire, cela vous permettra aussi d’automatiser l’extraction de tous les tableaux Excel que vous recevez même si leur taille évolue.

 

3. Préparer une sortie pour un outil de Dataviz ou un Datamart. Vous devez générer une table simple pour alimenter une solution de Dataviz. Généralement ces solutions attendent des formats de type table de fait (1 colonne par dimension d’analyse dont les indicateurs puis une colonne de valorisation)

 

Pour bien comprendre la logique des traitements à venir il faut se rappeler 2 spécificités d’Alteryx.

1 - Les tables de travail d’Alteryx n’ont qu’une et un seul entête de colonne. On ne peut emplier les entêtes comme dans un tableau croisé. Ceci impose des contraintes, notamment de ne pouvoir afficher/traiter simplement les tableaux mutli entête de colonne.

2- Il faut aussi comprendre que dans la logique Alteryx, la majorité des outils sont conçus pour travailler dynamiquement sur les valeurs des lignes.

 

StephaneP_3-1656583414902.png

 

 

Exemple : L’outil filtre permet de filtrer les lignes sur la valeur d’une colonne données (je veux les lignes dont la valeur de la colonne CustomerID > 30). Mais il n’existe pas de filtre pour filtrer les colonnes sur la valeur d’une ligne donnée. (je veux les colonnes dont la valeur de la 3ème ligne est France). Même si on peut le faire, ce n’est ni dynamique ni en une opération comme avec l’outil Filtre.

Ce qui explique que la méthode de bascule d’un tableau croisé est à la fois un mouvement de base de tout bon utilisateur Alteryx mais n' est pas spécialement intuitive. On le fait souvent « en dur » et laborieusement. Pourtant, une fois compris le principe cela ira tout seul.😊

 

Il est même possible d’automatiser ce processus et de le rendre dynamique ( = acceptant la variation du nombre de lignes ou de colonnes).

 

Cet article décrit 4 méthodes de la plus simple à la plus dynamique.

 

Vous y trouverez aussi des exemples d’utilisation de l’objet Table pour formater et colorer ce type de tableau.

 

Allez hop, action, faisons voltiger les petites cellules colorées dans tous les sens !

 

StephaneP_4-1656583414995.jpeg

 

 

Example 1: En-tête de ligne simple avec valorisation à chaque cellule

 

StephaneP_5-1656583415196.png

 

Cas simple, avec juste une en-tête de colonne qu’on veut basculer en colonne de donnée.

 

StephaneP_6-1656583415206.png

 

 

Tout vient donc du Transposer :

 

StephaneP_7-1656583415265.png

 

On précise nos 2 colonnes d’en-tête de ligne qui ne doivent pas être transposées et les autres qui vont l’être.

 

A noter que le fait de cocher « Colonnes dynamiques ou inconnues » permet d’intégrer au traitement toute nouvelle colonne qui apparaîtrait. => Dynamisme sur le nombre de colonnes à transposer.

 

Aucun challenge ne vous résistera désormais. 😊

 

StephaneP_8-1656583415398.jpeg

 

En revanche, toute nouvelle colonne d’en-tête de ligne, elle, doit être déclarée manuellement dans cet outil.

 

Example 2: Les entêtes de lignes sont fusionnées et contiennent des valeurs Null problématiques à combler

 

StephaneP_9-1656583415615.png

 

Généralement, les tableaux croisés proviennent d’Excel et parfois des fusions/merges ont été réalisées sur les en-têtes de ligne pour plus de lisibilité. Mais à la lecture, dans Alteryx, ces « vides » sont interprétés comme des NULL ce qui pose problème lorsqu’on veut basculer en table car on perd l’information.

 

StephaneP_10-1656583415657.png

 

Pour traiter cela, il suffit de rajouter l’objet Formule à plusieurs lignes.

 

Cet objet travaille par colonne. Pour celle spécifiée (ici Business Unit), il balaye toutes les lignes de haut en bas et permet de tester les valeurs d’une ligne par rapport à l’autre. On va ici tester la valeur de chaque ligne de notre dimension avec des NULL.

- Si elles sont valorisées on les laisse telle quelle.

- Si elles sont à NULL on va chercher la valeur de la ligne précédente.

 

Comme le traitement est effectué de haut en bas cela va diffuser les valeurs sur toutes les lignes.

 

StephaneP_11-1656583415716.png

 

On obtient bien pour nos 2 colonnes la complétion des valeurs manquantes :

 

StephaneP_12-1656583415826.png

 

La suite du workflow est la même que pour l’exemple 1.

 

Dans le prochaine article on monte en gamme avec des entêtes plus complexes (plusieurs lignes d'entêtes de colonnes à basculer !!).


Enjoy !

 

Retrouvez la suite : "Comment transposer un tableau croisé en une table simple ? Partie 2" juste ici!

Stéphane Portier
Sales Engineer

Étiquettes