Afficher une durée au format DD HH::MM::SS avec Power BI

Article : afficher-temps-dd-hh-mm-ss-pbi
Afficher une durée au format DD HH::MM::SS avec Power BI

Comment afficher un format heure minute seconde avec Power BI ?

Pour l'élaboration de vos tableaux de bord, vous avez certainement manipulé des données de temps ou de durée notamment si vous travaillez sur la donnée web analytics (temps passé / visites, durée session etc.). Sachez qu'avec Power BI il est possible d'afficher ces métriques au format DD HH::MM::SS. Découvrons dans cet article comment procéder !

Power BI - Tips - DD HH-MM-SS

Avant de commencer, voici des exemples de mise en forme qu'il sera possible d'obtenir.

Exemples de métriques personnalisées au format temps

Import du jeu de donnée AT Internet (Piano) - PowerQuery

Pour illustrer ce guide, nous allons nous baser sur la structure d'un flux provenant de la solution analytics AT Internet (Piano). Nous appellerons cette table : « Temps et durée (ex) »

Structure des données AT Internet dans Power BI

Structure de notre table « Temps et durée (ex) » (flux généré au travers de l'outil Data Query).

  • Dimension supports
  • Métriques visites
  • Métrique temps passé / visites (valeur en millisecondes)
  • Métrique temps passé / visiteurs (valeur en millisecondes)
  • Métrique temps passé (total temps passé) (valeur en millisecondes)

Pour obtenir une table exploitable et pouvoir personnaliser l'affichage de nos métriques de temps, quelques étapes sont nécessaires :

  • Remplacez le séparateur décimal point (« . ») par une virgule (« , »). Power BI (configuré en FR) pourra ainsi accepter le format décimal.
  • Valeur en seconde : Pour passer d'une valeur en millisecondes à secondes, créez une nouvelle colonne personnalisée et appliquez la formule suivante :
    #Nom_Table = Number.RoundUp([#"Temps passé / visites"] / 1000)
  • Supprimez ensuite les colonnes 3, 4 et 5 pour ne garder que les colonnes qui affichent des durées en secondes.
  • Modifiez le type de chaque colonne (Texte, Nombre entier)
  • Renommez vos colonnes.
Table d'exemple avec nos métriques de durée en secondes

Table d'exemple avec nos métriques de durée en secondes

Power BI - Interface de conception

Pour la suite, nous passons sur l'interface de conception.

Dans notre premier tableau (1), nous pouvons retrouver les valeurs actuelles de notre table « Temps et durée (ex) ».

Comme on peut l'apercevoir, les valeurs sont au format « secondes ». Ce n'est pas très lisible et parlant.

Pour obtenir un affichage personnalisé (tableau 2), nous allons nous appuyer sur des métriques personnalisées en DAX ainsi que leurs formats de sorties.

Interface de conception Power BI

DAX - Métriques calculées

Créez une nouvelle mesure et indiquez la formule suivante :

Métrique calculée format : Heure : Minutes : Seconde (hh::mm::ss)

Format hh::mm::ss =
//Calcul durée total
VAR Duree = SUM('Temps et durée (ex)'[Tps passé / visites (sec)])
//Calcul heure
VAR Heures = INT(Duree/3600)
//Calcul minutes
VAR Minutes = INT(MOD(Duree-(Heures*3600),3600)/60)
//Calcul secondes
VAR Secondes = MOD(MOD(Duree-(Heures*3600),3600),60)
RETURN
Heures * 10000 + Minutes * 100 + Secondes

Explication avec exemple :

  • Calculez le total en seconde de la table « Temps et durée » colonne « Tps passé visites (sec) » : 54 902 secondes
  • A partir du total, nous pouvons calculer le nombre d'heures en divisant par 3 600 ( 3 600 secondes = 1 heure). Nous encapsulons le résultat avec la fonction INT qui permet d'arrondir à l'entier proche (2.1, 2.2 … 2.9 deviendra 2) : 54 902 secondes = 15h
  • Pour les minutes, procédons par étape :
    • Utilisez le modulo (fonction qui retourne le reste d'une division d'un nombre par un diviseur) :
    • Fonction : MOD(<number>, <divisor>)
    • Résultat : (54 902 – (15 * 3 600) ) mod 3 600 = 902 mod 3 600 = 902.
    • On divise le résultat par 60 (60 secondes = 1 min) et on applique la fonction INT.
    • Résultat : 902 / 60 = 15 min
  • Pour les secondes :
    • Utiliser le modulo :
    • Résultat : (54 902 – (15 * 3 600) ) mod 3 600 = 902 mod 3 600 = 902.
    • Utilisez de nouveau un modulo :
    • Résultat : 902 mod 60 = 2 (détail 60 × 15 = 902 il reste donc 2 qui correspond aux secondes).
  • Récapitulatif : HH::MM::SS donnera 15::15::02
  • Valeur de retour de la fonction : Heures * 10000 + Minutes * 100 + Secondes (nous verrons un peu plus bas pourquoi nous avons multiplié par 100 et 10000)

Affichage du résultat dans une carte Power BI

Sélectionnez la visualisation « carte » ainsi que la métrique calculée « Format hh::mm::ss ».

Pour fonctionner, assurez vous que votre visuel est correctement configuré. Pour cela, il doit pouvoir afficher la totalité du résultat. Vérifier ce paramètre dans la partie : Visuel > Valeur de la légende > Unité d'affichage : choisir : aucun.

Affichage par défaut du format temps

Comme on peut l'apercevoir, nous obtenons à présent 15(.)15(.)02. (150 000 + 1 500 + 2). Ce résultat correspond à nos heures, minutes et secondes que nous avons passé comme valeur de retour à notre métrique calculée : Format hh::mm::ss.

Pour rendre plus esthétique ce résultat, nous allons devoir modifier le format de notre métrique calculée. Pour modifier le format, cliquez sur votre métrique personnalisée > Outils de mesure > Format > Saisir 00h 00m 00s puis cliquez sur « Entrée ». Le format est conditionné par la valeur de retour de notre métrique calculée. Dans notre exemple, en modifiant le format par 00h 00m 00s nous allons obtenir 15h 15m 02s.

Configuration du format d'affichage

Résultat après modification du format :

Résultat final du format temps

Autres exemples

Si vous avez bien compris le fonctionnement, vous pouvez créer d'autres métriques personnalisées :

  • Format : 00a 000j 00h 00m 00s (année / jours / heures / minutes et secondes).
  • Format : 00 minutes 00 secondes (minutes et secondes avec affichage long)
  • Format 00j 00h00m00s (Jours / heures / minutes et secondes)

Voici un autre exemple pour un format 00 jrs 00h00m (jours, heures et minutes) :

Format J hh:mm =
VAR Duree = SUM('Temps et durée (ex)'[Temps passé (sec)])
VAR Heures = INT(Duree/3600)
VAR Minutes = INT(MOD(Duree-(Heures*3600),3600)/60)
VAR Jours = ROUNDDOWN(Heures/24,0)
VAR Heure_restante = MOD(Heures,24)
RETURN
Jours * 10000 + Heure_restante * 100 + Minutes

Cette métrique personnalisée affichera le format suivant :

Exemple de format personnalisé
Autres exemples de formats de temps

Avec cette méthode, vous pouvez également effectuer une multitude de calculs sur vos métriques de temps (SUM, AVERAGE etc.).