Afficher un message d’erreur personnalisé dans la visualisation R de Power BI

Par défaut dans Power BI, lorsqu’un élément visuel de script R plante, un message d’erreur apparaît dans la zone du graphique avec la possibilité d’afficher les détails techniques de l’erreur :

PowerBI_R_error_thumb4

Cela peut être pratique pour débugger son code R lors du développement du rapport. Mais dans certains cas, les graphiques R peuvent fonctionner sur un ensemble de données, puis ne plus fonctionner dans d’autres cas lorsque l’on filtre dynamiquement les données (via des filtres dans le rapport).

Par exemple, une prédiction réalisée avec la librairie R forecast, prédisant les ventes de produits avec une saisonnalité à la semaine, peut planter s’il y a moins de 2 périodes dans le jeu de données. Le script R fonctionnera avec certains produits, mais il plantera pour ceux qui ne justifient pas de la condition de la fonction de forecast. Dans ce cas la on préférera afficher un message customisé (par exemple “Nous sommes désolé mais le forecast n’est pas disponible pour ce produit”) à l’utilisateur plutôt qu’une erreur technique R.

Nous allons donc utiliser 2 principes de codes R :

  • Un try catch pour catcher l’erreur technique. Vous noterez que contrairement à beaucoup d’autres langages, le try catch de R fonctionne sous forme d’une fonction tryCatch() :

result = tryCatch({

#code à réaliser

}, warning = function(w) {

#ce qui se passe en cas de warning

}, error = function(e) {

#ce qui se passe en cas d’erreur

}, finally = {

#ce qui se passe à la fin dans tous les cas

})

  • Un bout de code affichant un plot avec un message. L’idée est de créer une zone de graphique vide avec par() et plot(), puis d’y afficher un texte avec la fonction text() :

par(mar = c(0,0,0,0))

plot(c(0, 1), c(0, 1), ann = F, bty = 'n', type = 'n', xaxt = 'n', yaxt = 'n')

text(x = 0.5, y = 0.5, paste("Texte du message"), cex = 1.6, col = "black")

Voici le code complet :

result = tryCatch({

  #bout de code R

}, error = function(e) {

  par(mar = c(0,0,0,0))

  plot(c(0, 1), c(0, 1), ann = F, bty = 'n', type = 'n', xaxt = 'n', yaxt = 'n')

  text(x = 0.5, y = 0.5, paste("Nous sommes désolé mais le forecast n’est pas disponible pour ce produit"),

        cex = 1.6, col = "black")

})

Ce qui donne :

PowerBI_R_error_catch_thumb2

Plus d’infos sur le try catch en R : http://mazamascience.com/WorkingWithData/?p=912

FADATA

Fabien Adato est Customer Engineer Data et AI chez Microsoft. Après avoir intégré la société CGI Business Consulting où il rejoint une équipe dédiée à la Business Intelligence, il fait ses premières armes sur la solution Microsoft SQL Server. Pendant plus de 4 ans, il acquiert des compétences techniques et fonctionnelles sur toute la chaîne de valeur de la BI (ETL, Base de Données, Cube Olap et Rapport). Il a pu se spécialiser également sur de nouvelles technologies de la Data et notamment Hadoop, Pig et Hive, ainsi que des technologies self-service BI, le No-SQL comme la base de données MongoDB et le moteur d’indexation ElasticSearch. Il entre chez AZEO en 2014 puis Avanade en 2021 puis Microsoft en 2021 pour y assurer le poste de CE DATA / AI, autour des technologies Microsoft SQL Server, Power BI et Azure Data.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.