Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Power Query et M
  3. Gérer les erreurs au chargement
Extrait - Power Query et M Extraire et préparer les données en vue de leur exploitation dans Excel ou Power BI
Extraits du livre
Power Query et M Extraire et préparer les données en vue de leur exploitation dans Excel ou Power BI
13 avis
Revenir à la page d'achat du livre

Gérer les erreurs au chargement

Introduction

Ce chapitre a pour objectif de prendre en compte les erreurs directement liées à Power Query et au chargement des données, de comprendre comment se signalent des erreurs, comment les ignorer, ou au contraire, comment les capter pour être en mesure de les corriger (le plus souvent au niveau de la source de données).

Nous verrons notamment comment construire un rapport spécifique où lister précisément les erreurs.

Nous évoquerons aussi les messages d’erreur les plus courants, et comment les corriger.

Comment repérer les erreurs

Power Query offre différents indicateurs visuels pour signaler les erreurs. Avant d’apprendre à traiter les cas les plus courants, allons donc voir où se trouvent ces indicateurs.

Dans Power Query

Le premier indicateur peut apparaître au niveau de la table elle-même, dans le volet Requêtes :

images/05sob022.png

La table transactions (2) est en erreur

Le deuxième indicateur se situe sur l’en-tête de la colonne :

images/05sob023.png

Le trait rouge signale des erreurs

Passez la souris sur le bandeau coloré pour voir le nombre d’erreurs :

images/05sob024.png

Je vous déconseille la fonctionnalité Supprimer les erreurs : il vaut mieux les capter et les corriger, comme nous le verrons dans la section Construire un rapport d’erreur lors du chargement.

Si vous cliquez dans la cellule où est signalée l’erreur (mais attention, pas sur le mot Error lui-même), vous verrez s’afficher un cadre détaillant la nature de l’erreur :

images/05sob025.png

Enfin, naviguer dans les étapes appliquées, de préférence de haut en bas, permet de voir à quel moment se produit une erreur :

images/05sob026.png

Jusque là, tout va bien…

L’erreur survient à l’étape suivante :

images/05sob027.png

Enfin une autre possibilité est que l’étape vous signale une erreur et vous propose de vous y amener :

images/05sob028.png

La fonctionnalité...

Supprimer les erreurs sur une colonne

Dans le cadre de la gestion des erreurs, le premier choix est de les ignorer complètement (ce qui n’encourage pas à la corriger !).

Power Query offre une fonctionnalité permettant d’écarter la ligne où se trouve l’erreur, accessible par clic droit sur l’en-tête de la colonne ou à l’aide du menu déroulant Supprimer les lignes puis Supprimer les erreurs :

images/05sob033.png
images/05sob034.png

Mais attention, c’est bien toute la ligne qui est supprimée.

Une alternative consiste à conserver la ligne mais à remplacer l’erreur par une autre valeur (pour les colonnes numériques, zéro ou null (vide), pour les dates null). Vous accédez à cette fonctionnalité par clic droit sur l’en-tête de la colonne :

images/05sob035.png
images/05sob036.png

L’avantage c’est qu’ici, la ligne est conservée, et la cellule où se trouve l’erreur contient une valeur nulle.

Construire un rapport d’erreur lors du chargement

Les causes d’erreur lors du chargement sont nombreuses, mais la plus courante est certainement l’erreur de conversion de type.

Il existe une démarche pour capter les erreurs lors du chargement complet et les afficher dans un tableau précisant les lignes où elles se trouvent et leurs causes, dans un souci de qualité de données et de rectification des causes d’erreur.

Prenons l’exemple volontairement exagéré d’un fichier présentant des erreurs de saisie (ce fichier se trouve dans le répertoire sources, erreurs.xlsx) :

images/05sob001.png

Je fais figurer sur fond noir les cinq cellules qui vont générer une erreur (des dates mal saisies et du texte dans une colonne numérique).

Une autre précision importante : les données générant les erreurs peuvent se trouver dans l’échantillon, ou n’apparaître qu’au moment du chargement complet des données. Cela fait une petite différence sur les premiers moments du processus.

Si les données de l’échantillon présentent des types différents ou incohérents (par exemple, du texte dans une colonne majoritairement numérique, ou une date erronée dans une colonne date), la colonne est typée ABC123 (ou type null) :

images/05sob002.png

C’est lorsque nous allons affecter le type Nombre entier à la colonne volume et Date à la colonne...

Erreurs liées aux paramètres régionaux

Ce type d’erreur concerne les dates (format « français » JJ/MM/AAAA opposé au format «  US » MM/JJ/AAAA) et les nombres décimaux (séparateur point ou séparateur virgule). 

Imaginez que vous souhaitiez importer un ensemble de fichiers ou de tables dont l’une présente des caractéristiques régionales différentes des autres.

Power Query s’en sort plutôt bien et convertit en général automatiquement le format US au format FR.

Si toutefois ce n’était pas le cas, vous pouvez localement (au niveau du type de la colonne elle-même), modifier les paramètres régionaux :

images/05sob019.png

Il suffit ensuite de choisir le bon paramètre régional pour cette colonne :

images/05sob020.png

La même opération est possible avec une colonne de nombres décimaux.

Le changement de paramètre régional peut aussi être affecté à tout le fichier Power BI (lorsque le problème touche toutes les tables que vous importez) : la modification peut alors être faite dans Fichier, puis Options et paramètres, puis Options, au niveau de la zone FICHIER ACTIF et de la rubrique Paramètres régionaux :

images/05sob021.png

Utiliser la fonction TRY localement

Dans la section Construire un rapport d’erreur lors du chargement, nous avons évoqué try. Nous avons également vu qu’une fonctionnalité de Power Query permet de remplacer les erreurs sur une colonne par une valeur (null ou autre).

C’est précisément ce que permet de faire try : mais là où la fonctionnalité de remplacement des erreurs ne vous permet que de saisir des valeurs précises, try bénéficie de toute la puissance des expressions M et permet donc des remplacements plus complexes.

Avant d’illustrer ce point à travers deux exemples, quelques mots sur la fonction elle-même.

Try évalue une expression et retourne un enregistrement de deux lignes, HasError, qui prend les valeurs True ou False, et un deuxième enregistrement qui contient le résultat de l’expression, à savoir le message d’erreur si HasError est vrai, ou la valeur de l’expression dans le cas contraire :

images/05sob037.png

Dans cet exemple, la colonne prenom n’existe pas dans la table Source, try retourne donc une erreur (HasError = true) et un enregistrement (Record) qui contient la raison de l’erreur, son message et le détail (partie inférieure de l’écran).

Là où try est intéressante, c’est que cette fonction peut être accompagnée d’une...

Les messages d’erreurs courants

Expression.Error : La clé ne correspondait à aucune ligne dans la table

Dans la section Importer plusieurs fichiers avec des feuilles de noms différents du chapitre Nettoyer et transformer les données, nous avons rencontré et expliqué une erreur courante :

images/05sob042.png

Ce message indique que la feuille indiquée dans l’étape générant l’erreur (c’est le texte apparaissant entre guillemets en rouge dans la barre de formule ou l’éditeur) est introuvable, a changé de nom, ou n’existe plus.

Dans la section mentionnée, je vous propose une solution. De manière plus générale, il s’agit de corriger le nom de la feuille.

Expression.Error : Désolé... Nous n’avons pas trouvé la colonne « nom » de la table

De part ses options par défaut, Power Query crée automatiquement une étape Type modifié lors de la connexion à une source : attention, cette étape, pourtant pratique, recèle un piège.

En effet, si vous en regardez le code M généré automatiquement, vous constaterez que chaque colonne est mentionnée explicitement par son nom. Or si le fichier source change (si les colonnes sont renommées, ou même si une seule colonne est renommée)...