Tout ce que vous devez savoir sur les valeurs « null » dans Power Query

Publié le 07 septembre 2020
par Kim Leblanc
Null diff cas Excel 2

Tout ce que vous devez savoir sur les valeurs « null » dans Power Query

Avez-vous remarqué, dans Power Query, que le comportement des valeurs null n’est pas toujours le même selon la le type de fonction utilisée? Mais qu’est-ce que la valeur null au fait? Pourquoi voit-on apparaître des null dans Power Query? Quels sont les comportements des null selon la situation? Quand faut-il être vigilant avec les null? Cet article vise à répondre à ces questions.

 

Si on regarde la définition du terme null sur Wikipédia, on y retrouve ceci : « En termes de bases de données, ce mot clef exprime le fait que la valeur d’une donnée n’est pas connue. Il ne s’agit donc pas d’une valeur mais de l’état dans lequel la donnée se trouve, et signifie l’absence de valeur » .  Donc, null signifie une absence de valeur et non pas une valeur de zéro ou un blanc. Ceci étant dit, pour les utilisateurs qui viennent d’Excel, la valeur null est souvent associée à la valeur zéro. En fait, si vous comparez la valeur 0 à une cellule vide, le résultat donnera VRAI dans Excel, mais il n’en sera pas ainsi dans Power Query car null signifie l’absence de valeur et non pas zéro.

 

 

Comprendre quand Power Query affiche des null 

Pour indiquer qu’il n’y a pas de valeur pour une ligne précise, dans une colonne, Power Query va afficher une valeur null. Cette valeur null sera toujours inscrite du côté droit de la cellule, comme pour un nombre et elle sera toujours inscrite en minuscule et en italique, comme ceci: null.

 

Si vos données proviennent d’Excel, les cellules vides seront importées avec des valeurs null puisqu’elles ne contiennent pas de données. Dans l’exemple ci-dessous, le tableau qui provient d’Excel indique qu’il n’y a pas de ventes du produit B pour Sylvain, la cellule est vide. Une fois dans Power Query, cette valeur est transformée en null.

 

 

Si vos données proviennent d’une base de données, par exemple SQL, les cellules « vides » sont déjà considérées comme des null et donc continues à être des null lorsqu’importées dans Power Query.

 

 

Il peut arriver également que les valeurs null apparaissent lors d’une étape appliquée dans Power Query comme par exemple, à l’utilisation de la fonction Pivoter la colonne (menu Transformer). Ici, on obtient les produits A et B en colonne, à l’aide de cette fonction. Puisque Valérie n’a pas de vente pour le produit A, lorsque l’on pivote la colonne, il y a une valeur null pour Valérie dans la colonne A (Produit A).

 

 

Jusqu’à maintenant c’est relativement simple n’est-ce pas? Oui mais…

 

Étudier plus en détails les valeurs null de Power Query…

Essayons maintenant d’importer des données d’Excel, mais cette fois-ci, à partir d’un fichier qui comprend des cellules dans lesquelles il est inscrit null, parfois en minuscule, parfois en majuscule.

 

Exemple A :

Dans mon tableau Excel, il y a la valeur null pour les Ventes C, pour Johanne. Lors de l’importation dans Power Query, avant la modification des Type de données des colonnes, la valeur null est considérée comme du texte donc comme le mot null (remarquez que le mot null apparaît à la gauche de la cellule).  À l’étape suivante, le type de données de la colonne Ventes C est modifiée en numérique et on obtient alors une « vraie » valeur null.

 

Exemple B :

Il y a la valeur NULL (tout en majuscule) pour les Ventes D de Sylvain, on obtient alors le même comportement que dans l’exemple A, lorsque nous modifions le type de données en numérique, on obtient un « vrai » null.

 

Exemple C :

Dans la colonne Comments, la cellule est vide pour Éric alors qu’il est inscrit null sur la ligne de Johanne. Vous remarquerez que, puisque cette colonne est une colonne de type texte, la cellule vide est bien transférée en valeur null alors que le mot null de la cellule de Johanne demeure un mot « null ». Remarquez aussi qu’il se trouve à gauche de la cellule et qu’il n’est pas en italique.

 

 

On commence déjà à s’apercevoir que le comportement du null n’est pas toujours le même! Utilisons donc ces valeurs null dans différents contextes pour voir leur comportement à l’intérieur de Power Query.

 

Explorer les valeurs null de Power Query dans divers contextes

Commençons avec une simple somme pour une colonne donnée. Avec la fonction Regrouper par, on fait la somme des la colonnes Ventes B de tous les vendeurs. On obtient bien le résultat escompté de 6,800.

 

 

Essayons ensuite de faire une addition entre 2 colonnes soit les Ventes A et les Ventes B.  Pour Sylvain nous devrions obtenir 2,000 alors que l’on voit la valeur null dans notre nouvelle colonne.

 

 

On s’imagine alors qu’on aura le même comportement pour une soustraction de 2 colonnes… Effectivement, en effectuant la soustraction des ventes D par les ventes A on obtient des null pour Sylvain et Éric.

 

 

Essayons alors de fusionner 2 colonnes de type texte soit les Vendeurs et les Commentaires (Comments), en utilisant l’option Ajout de colonne personnaliséee dans le menu Ajouter un colonne.  Encore une fois, pour Éric, on obtient la valeur null au lieu de la combinaison des deux colonnes puisque la colonne Comments comprend un null.

 

 

Et qu’arrive t-il avec une formule du type =, > ou <?

Vérifions maintenant si la valeur des Ventes C est null, si oui, on inscrit 0, si non, on inscrit le montant des ventes. On devrait alors obtenir un 0 pour les ventes de Johanne. Et cette fois-ci nous avons bien le résultat escompté. Pourquoi? Parce qu’on demande à Power Query de vérifier si la cellule est vide (null) et oui effectivement elle est vide puisque le null est l’absence de valeur.

 

 

Ajoutons une colonne personnalisée où on regarde si Ventes A est plus grand que Ventes C, si oui on inscrit « ok », si non « non ok ». Et bien dans ce cas-ci, lorsqu’il y a un null impliquée, comme pour la ligne de Johanne où les ventes C sont null, on obtient maintenant une erreur… qui nous dit, Désolé… nous n’avons pas pu convertir la valeur null en type Logical. Comme null est une absence de valeur, Power Query n’est pas en mesure de la comparer avec un nombre ce qui résulte en une erreur.

 

 

Apprendre à travailler avec les valeurs null

Alors, que fait-on avec les valeurs null? Et bien, tout dépend de l’action que l’on désire faire.

 

Parfois il suffira de choisir une autre fonction pour arriver à nos fins.  Il existe des fonctions qui vont prendre en charge les null comme pour combiner deux colonnes, on pourrait utiliser la fonction Text.Combine comme suit:

 

 

Si vous ajoutez une colonne conditionnelle, vous pouvez toujours insérer, en première étape, de regarder si les valeurs sont égales à null, si oui, mettre null, si non passer à l’étape suivante. Ça évitera alors les erreurs dû à des test logique (>,>=,<,<=).

 

 

Vous pouvez également remplacer vos null par 0 lorsqu’il s’agit de valeur numérique et ainsi être en mesure de faire des soustractions ou additions de colonnes.

 

Soyez vigilants!

Il faut donc être vigilant quand il y a des valeurs null dans nos données. Nous venons de constater que parfois, les résultats ne sont pas ceux souhaités, mais ne génèrent pas non plus nécessairement une erreur.  Ils peuvent donc passer inaperçus, comme c’est le cas de notre exemple où l’on combinait deux colonnes. Cela peut être embêtant si nous utilisons ensuite cette colonne pour fusionner des tables… ça pourrait prendre un certain temps avant de s’apercevoir que notre combinaison de colonnes ne donne pas le résultat escompté surtout si votre table contient plusieurs milliers de lignes de données!

 

Mais n’oubliez pas que les null sont également nos alliés dans certaines situations comme dans le cas où l’on voudra utiliser la fonction remplir vers le bas ou remplir vers le haut disponible dans le menu transformer! Vous en avez un bel exemple dans l’article suivant : Importez et analysez vos fichiers PDF dans Excel.

 

Formation complémentaire

Afin d’approfondir vos connaissances avec Power Query, nous vous recommandons notre formation Excel – Introduction à Power Query et au langage M.

 

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Bertrand Fortin
Écrit il y a 1 an
Simplement un gros WOW.

Je suis totalement satisfait de la formation. Je ne pouvais demandé mieux.

Stephanie Lambert
Écrit il y a 2 ans
Enfin du contenu que je ne connaissais presque pas

J'ai enfin pu avoir l'expérience d'un nouvel apprenant et comme je m'y attendais, elle fut très positive. Les notions sont bien expliquées et illustrées avec des exemples concrets. Il est très utile d'avoir les mêmes tables de données pour pouvoir reproduire les exemples. Les documents pdf fournis sont clairs et bien faits.

Daniel Harvey
Écrit il y a 2 ans
J'ai adoré.

Comme introduction a l'outil, pour avoir un aperçu de ce qu'il est possible de faire, je pense que la formation est vraiment géniale.

CFO-Masque_Formations-en-ligne_FB Le CFO masqué offre un vaste choix de formations en informatique décisionnelle avec Excel et Power BI, via un portail en ligne et à distance en temps réel, selon un calendrier. Si vous désirez organiser des formations privées, faites nous simplement parvenir un courriel à info@lecfomasque.com . Des certificats convenant aux normes de formation continue des divers ordres professionnels du Québec sont offerts pour l'ensemble des formations.  

Découvrez quelles formations vous conviennent

 

1 réflexion sur “Tout ce que vous devez savoir sur les valeurs « null » dans Power Query”

  1. Merci Kim pour ces infos sur « null »
    En complément, je préciserai que la fonction Value.Compare est pratique pour gérer la comparaison de valeur avec des « null »
    Cette fonction renvoie -1, 0 ou 1 pour
    Value.Compare(2,null) // renverra 1 pour 2 plus grand que null
    Value.Compare(null, 2) // renverra -1 pour null plus petit que 2
    Value.Compare(null,null) // renverra 0 pour null égale null
    Value.Compare(« a »,null) // renverra 1 pour « a » plus grand que null
    Value.Compare(null, « a ») // renverra -1 pour null plus petit que « a »

    et évidemment,
    Value.Compare(2,4) // renverra -1 pour 2 plus petit que 4
    Value.Compare(« b », »a ») // renverra 1 pour « b » plus grand que « a »

    mais aussi
    Value.Compare( » « ,1) // renverra 1 pour « espace » plus grand que 1
    Value.Compare(1, »a ») // renverra -1 pour 1 plus petit que « a »
    Stéphane

Laisser un commentaire

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

Scroll to Top