Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexBonjour,
Pour la 4ème semaine de cette nouvelle année, je vous propose une nouvelle astuce que j'ai apprise au travers de plusieurs sessions avec nos clients.
Voici le cas :
Jeu de données : Contient 24 colonnes dont 9 contenant des valeurs vides.
Objectif : Nous souhaitons garder uniquement 15 colonnes non vides.
Astuce :
Etape 1 : Utiliser l'outil Auto-field.
L'outil "Auto field" va "typer" la colonne ne contenant que des valeurs vides par "Bool".
Etape 2 : Utiliser Dynamic Select
L'outil "Dynamic Select" vous permet de selectionner uniquement les colonnes que vous souhaitez garder sur la base de leurs formats
Précaution : Assuez vous juste de ne pas avoir de champ de type "Bool" dès le début dans votre jeu de données. que vous souhaitez garder. Vous pouvez le "typer" en string pour éviter que le dynamic select le supprime aussi.
CI joint le workflow.
Bonne semaine à tous,
Enjoy the Thrill of Solving !
Merci @zakellaoui ! Très utile !
Merci Zak pour cette solution.
La magie d’Alteryx c’est qu’il y a toujours plusieurs façons de réaliser une tâche sans forcément d’ailleurs qu’il y en ai une meilleure que d’autres. Il faut se faire plaisir. 😊
Du coup j’en propose une autre et je vous laisserai choisir en fonction des contextes.
Pour cette 2ème technique l’idée est de basculer toutes les colonnes en ligne via l’outil Transpose
On passe de ceci:
A cela:
puis de supprimer toutes les lignes à NULL via un filtre. On obtient:
Si une colonne n’était constituée que de NULL alors elle va disparaitre lorsqu’on reconstitue le tableau initial via l’outil Pivot.
Et voila.
Alors pourquoi une technique plutôt qu’une autre ?
Ben déjà, le feeling 😊
Ensuite, les 2 techniques ont l’avantage d’être dynamiques ce qui est un très bon point.
Je dirai que cela dépend du workflow global. Généralement, avec Alteryx pour faire des traitements sur des colonnes on bascule souvent via l’outil Transpose car la majorité des outils travaillent sur les lignes plutôt que sur les colonnes, notamment le filtre (pour les Null). Donc si dans le cadre de vos traitements vous devez passer par cette étape transpose, il est finalement plus simple d’embarquer ce filtre pour supprimer des colonnes Null.
Il est aussi intéressant dès le début de filtrer les colonnes inutiles pour ne pas complexifier la suite du workflow. Ainsi si il n’y a pas d’enjeu de perfs ou de volumétrie le filtre sur le type de donnée Bool est alors plus pertinent. C’est fait, on peut passer à autre chose. La technique 1 est super rapide à mettre en place (2 objets et 3 clics 😊 ).
Si vous utilisez d’autres techniques n’hésitez pas à les poster dans ce fil.
Enjoy the thrill of solving !
Et voila avec les dernières versions d'Alteryx tous nos beaux tips deviennent caduques 😞
Mais non c'est génial !!
Désormais en 1 clic vous pouvez supprimer toutes les lignes ou colonnes à NULL.
Ceci est une nouvelle fonctionnalité du bloc "Nettoyage de données"
Elle n'est pas belle la vie ?
Enjoy.
Mais elle est très belle la vie (et toujours plus simple !) avec la dernière version d'Alteryx. Merci @StephaneP de nous donner tous tes Tips !
On en veut encore !
Bonjour
malgré votre aide je n'arrive toujours pas à faire disparaître les colonnes dont les champs est vide de ma sortie
ex supprimer les 3 premières colonnes pour lesquelles la valeur est vide
Bonjour @Tasnime ,
Est il possible d'avoir un exemple du fichier ?
Car théoriquement cela devrait fonctionner.
Merci
Salut Stéphane comment t'envoyer un exemple ?
en complément les vides dans les cellules de ces colonnes proviennent d'un champ calculé ex ci-dessous
Tu peux déplcer un exemple de ton fichier dans cette zone sous la fenetre de commentaire:
Mais de toute manière ce n'est plus la peine, j'ai ma réponse.
En effet tu génère des " ". C'est donc un espace qui est différent d'un NULL. Un NULL est une réelle absence de caractère. Un Espace est un caractère et n'est donc pas considéré comme une cellule Null.
Il faut donc rempalcer le " " par Null() ainsi: If IsEmpty(xxx) then Null() else "1" endif
Tu verras que dans ta colonne apparaitront des NULL
Bye
Vraiment top Stéphane ça focntionne
Je voulais savoir comment se passait les formations avec mon employeur et à titre personnel ? aurais tu un contact direct