Gestion des erreurs
Tout comme Excel et le langage DAX possèdent une fonction IFERROR
, Power Query a sa propre syntaxe pour tester et intercepter les erreurs.
Comme mentionné dans l’article sur la gestion des erreurs dans Power Query, les erreurs peuvent apparaître au niveau de l’étape ou de la cellule. Cet article se concentre sur la façon dont vous pouvez intercepter et gérer les erreurs en fonction de votre propre logique spécifique.
Remarque
Pour illustrer ce concept, cet article utilise un classeur Excel comme source de données. Les concepts présentés ici s’appliquent à toutes les valeurs de Power Query et non uniquement à celles provenant d’un classeur Excel.
L’exemple de source de données de cette démonstration est un classeur Excel avec le tableau suivant.
Ce tableau d’un classeur Excel contient des erreurs Excel telles que #NULL!, #REF!, et #DIV/0! dans la colonne Taux standard . Lorsque vous importez cette table dans l’éditeur Power Query, l’image suivante montre à quoi elle ressemble.
Notez comment les erreurs du classeur Excel sont affichées avec la valeur [Error]
dans chacune des cellules.
Dans cet article, vous apprenez à remplacer une erreur par une autre valeur. En outre, vous apprenez également à intercepter une erreur et à l’utiliser pour votre propre logique spécifique.
Fournir une autre valeur lors de la recherche d’erreurs
Dans ce cas, l’objectif est de créer une nouvelle colonne Taux final qui utilise les valeurs de la colonne Taux standard. S’il existe des erreurs, elle utilise la valeur de la colonne de Taux spécial correspondant.
Pour créer une colonne personnalisée, accédez au menu Ajouter une colonne et sélectionnez Colonne personnalisée. Dans la fenêtre Colonne personnalisée, entrez la formule try [Standard Rate] otherwise [Special Rate]
. Nommez ce nouveau Taux final de colonne.
Cette formule tente d’évaluer la colonne Taux standard et génère sa valeur si aucune erreur n’est trouvée. Si des erreurs sont trouvées dans la colonne Taux standard, la sortie est la valeur définie après l’instruction otherwise
, qui, dans ce cas, est la colonne Taux spécial.
Après avoir ajouté les types de données corrects à toutes les colonnes du tableau, l’image suivante montre ce à quoi la table finale ressemble.
Remarque
En guise d’approche alternative, vous pouvez également entrer la formule try [Standard Rate] catch ()=> [Special Rate]
, qui équivaut à la formule précédente, mais en utilisant le mot clé catch avec une fonction qui ne nécessite aucun paramètre.
Le mot clé catch
a été introduit dans Power Query en mai 2022.
Fournir votre propre logique d’erreur conditionnelle
À l’aide de l’exemple de source de données comme dans la section précédente, le nouvel objectif est de créer une colonne pour le Taux final. Si la valeur du Taux standard existe, alors cette valeur est utilisée. Sinon, la valeur de la colonne Tarif spécial est utilisée, à l’exception des lignes ayant une erreur #REF!
.
Remarque
Le seul objectif de l’exclusion de l’erreur #REF!
est à des fins de démonstration. Avec les concepts présentés dans cet article, vous pouvez cibler tous les champs de votre choix à partir de l’enregistrement d’erreur.
Lorsque vous sélectionnez l’un des espaces blancs en regard de la valeur d’erreur, vous obtenez le volet d’informations en bas de l’écran. Le volet d’informations contient à la fois la raison de l’erreur DataFormat.Error
et le message d’erreur Invalid cell value '#REF!'
:
Vous ne pouvez sélectionner qu’une seule cellule à la fois. Vous pouvez donc examiner efficacement les composants d’erreur d’une seule valeur d’erreur à la fois. C’est à ce stade que vous créez une colonne personnalisée et utilisez l’expression try
.
Utiliser try
avec une logique personnalisée
Pour créer une colonne personnalisée, accédez au menu Ajouter une colonne et sélectionnez Colonne personnalisée. Dans la fenêtre Colonne personnalisée, entrez la formule try [Standard Rate]
. Nommez cette nouvelle colonne Toutes les erreurs.
L’expression try
convertit les valeurs et les erreurs en une valeur d’enregistrement qui indique si l’expression try
a géré une erreur ou non, de même que la valeur appropriée ou l’enregistrement d’erreur.
Vous pouvez développer cette colonne nouvellement créée avec des valeurs d’enregistrement et examiner les champs disponibles à développer en sélectionnant l’icône en regard de l’en-tête de colonne.
Cette opération expose trois nouveaux champs :
- All Errors.HasError indique si la valeur de la colonne Taux standard a une erreur ou non.
- All Errors.Value : si la valeur de la colonne Taux standard n’a pas d’erreur, cette colonne affiche la valeur de la colonne Taux standard. Pour les valeurs avec des erreurs, ce champ n’est pas disponible, et pendant l’opération de développement, cette colonne comportera les valeurs
null
. - All Errors.Error : si la valeur de la colonne Taux standard a une erreur, cette colonne affiche l’enregistrement de l’erreur pour la valeur de la colonne Taux standard. Pour les valeurs sans erreur, ce champ n’est pas disponible, et pendant l’opération de développement, cette colonne comportera les valeurs
null
.
Pour plus d’informations, vous pouvez développer la colonne All Errors.Error pour obtenir les trois composants de l’enregistrement d’erreur :
- Motif de l’erreur
- Message d’erreur
- Détail d’erreur
Après avoir effectué l’opération de développement, le champ All Errors.Error.Message affiche le message d’erreur spécifique qui vous indique exactement quelle erreur Excel possède chaque cellule. Le message d’erreur est dérivé du champ Message d’erreur de l’enregistrement d’erreur.
Maintenant, avec chaque message d’erreur dans une nouvelle colonne, vous pouvez créer une colonne conditionnelle avec le nom Taux final et les clauses suivantes :
- Si la valeur de la colonne All Errors.Errors.Message est égale à
null
, la sortie sera la valeur de la colonne Taux standard. - Sinon, si la valeur dans la colonne All Errors.Errors.Message n’est pas égale
Invalid cell value '#REF!'.
, la sortie est la valeur de la colonne Taux spécial. - Sinon, vide.
Après avoir conservé uniquement les colonnes Compte, Taux standard, Taux spécialet Taux final, et ajouté du type de données correct pour chaque colonne, l’image suivante montre à quoi ressemble la table finale.
Utiliser try
et catch
avec une logique personnalisée
Vous pouvez également créer une colonne personnalisée à l’aide des mots clés try
et catch
.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null