Utilisation appropriée des fonctions d’erreur
En tant que modélisateur de données, lorsque vous écrivez une expression DAX susceptible de déclencher une erreur d’évaluation, vous pouvez envisager d’utiliser deux fonctions DAX utiles.
- La fonction ISERROR, qui prend une seule expression et retourne TRUE si cette expression génère une erreur.
- Fonction IFERROR, qui prend deux expressions. Si la première expression entraîne une erreur, la valeur de la deuxième expression est retournée. Il s’agit en fait d’une implémentation plus optimisée de l’imbrication de la fonction ISERROR à l’intérieur d’une fonction IF.
Toutefois, bien que ces fonctions puissent être utiles et contribuer à l’écriture d’expressions faciles à comprendre, elles peuvent également dégrader considérablement les performances des calculs. Cela peut se produire, car ces fonctions augmentent le nombre d’analyses du moteur de stockage requises.
La plupart des erreurs de temps d’évaluation sont dues à des BLANK inattendus ou à des valeurs nulles ou à une conversion de type de données non valide.
Recommandations
Il est préférable d’éviter d’utiliser les fonctions ISERROR et IFERROR. Au lieu de cela, appliquez des stratégies défensives lors du développement du modèle et de l’écriture d’expressions. Les stratégies peuvent inclure :
S’assurer que les données de qualité sont chargées dans le modèle : utiliser des transformations Power Query pour supprimer ou remplacer des valeurs non valides ou manquantes, et pour définir des types de données corrects. Une transformation Power Query peut également être utilisée pour filtrer les lignes lorsque des erreurs, telles que la conversion de données non valide, se produisent.
La qualité des données peut également être contrôlée en désactivant la propriété Is Nullable de la colonne du modèle, ce qui entraînera l’échec de l’actualisation des données si des valeurs vides (BLANK) sont détectées. Si cette défaillance se produit, les données chargées à la suite d’une actualisation réussie restent dans les tables.
Utilisation de la fonction IF : l’expression de test logique de la fonction IF peut déterminer si un résultat d’erreur pourrait se produire. Notez que, comme les fonctions ISERROR et IFERROR, cette fonction peut entraîner des analyses supplémentaires du moteur de stockage, mais elle fonctionnera probablement mieux qu’elles, car aucune erreur n'a besoin d'être signalée.
Utiliser des fonctions à tolérance d’erreur : certaines fonctions DAX testent et compensent les conditions d’erreur. Ces fonctions vous permettent d’entrer un autre résultat qui serait retourné à la place. La fonction DIVIDE est un exemple de ce type. Pour obtenir des conseils supplémentaires sur cette fonction, lisez l'article DAX: DIVIDE fonction vs opérateur de division (/).
Exemple
L'expression de mesure suivante teste si une erreur s’affichera. Elle retourne BLANK dans cette instance (c’est-à-dire lorsque vous ne fournissez pas la fonction IF avec une expression value-if-false).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Cette version suivante de l’expression de mesure a été améliorée à l’aide de la fonction IFERROR à la place des fonctions IF et ISERROR.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Toutefois, cette version finale de l’expression de mesure obtient le même résultat, mais plus efficacement et élégantement.
Profit Margin
= DIVIDE([Profit], [Sales])
Contenu connexe
- Parcours d’apprentissage : Utiliser DAX dans Power BI Desktop
- Des questions ? Essayez de demander à la communauté Power BI
- Avez-vous des suggestions ? Contribuer aux idées d’amélioration de Power BI