Partager via


Ajouter une mesure de délai d’état à votre rapport Power BI

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Le temps passé par un élément de travail dans un état ou une série d’états de workflow spécifique est un aspect important pour comprendre l’efficacité. Les widgets Time Time et Lead Time Analytics fournissent des mesures de délai d’entrée dans l’état. Toutefois, ces widgets peuvent ne pas avoir le niveau de détail souhaité.

Cet article fournit des recettes à l’aide d’expressions DAX (Data Analysis Expressions) pour évaluer le temps passé par les éléments de travail dans une combinaison d’états. Plus précisément, vous allez apprendre à ajouter la mesure et les colonnes calculées suivantes à vos rapports Power BI et à les utiliser pour générer différents graphiques de tendance. Tous les champs sont des colonnes calculées à l’exception de la première répertoriée.

Count Description
Nombre d’éléments de travail (mesure) Calcule le nombre d’éléments de travail distincts en fonction de l’entrée du dernier jour pour l’élément de travail
Ordre de tri d’état Ajoute une colonne à utiliser pour trier les états du flux de travail en fonction de la séquence Catégorie d’état
Date précédente Ajoute une colonne qui calcule la date précédente en fonction de la colonne Date
Différences de date en jours Ajoute une colonne qui calcule le nombre de jours entre les colonnes Date et Date Précédente
Est le dernier jour dans l’état Ajoute une colonne qui détermine si la valeur Date est le dernier jour où l’élément de travail était dans un état
Heure d’état en jours Ajoute une colonne qui calcule le nombre de jours passés par l’élément de travail dans chaque état
État précédent Ajoute une colonne qui identifie l’état précédent pour chaque ligne de la table de données
État modifié Ajoute une colonne qui détermine la date à laquelle un élément de travail est passé d’un état à un autre
Flux d’état Ajoute une colonne qui illustre le flux d’état pendant la transition d’un élément de travail d’un état à un autre
Nombre de modifications d'état Ajoute une colonne qui calcule le nombre de fois où un élément de travail est passé d’un état à un autre
Nombre de modifications d’état - Premier terminé Ajoute une colonne qui détermine le nombre de fois où un élément de travail passe à l’état Terminé pour la première fois. En d’autres termes, lorsqu’il passe d’un autre état à l’état Terminé.
Nombre de modifications d’état - Dernière proposition Ajoute une colonne qui détermine si un élément de travail était à l’état Proposé précédemment après sa transition vers un état ultérieur
Heure de redémarrage de l’état en jours Ajoute une colonne qui calcule les jours passés par un élément de travail dans un état de redémarrage
Temps de retravail d’état en jours Ajoute une colonne qui calcule les jours passés par un élément de travail dans un état autre que Terminé

Important

  • Lors de l’ajout d’une colonne ou d’une mesure calculée conformément aux exemples présentés dans cet article, remplacez View Name par le nom de la table de la vue analytics ou de la table de données. Par exemple, remplacez Nom de l’affichage par Les bogues actifs.
    Capture d’écran de l’onglet Outils de table Power BI, Nom de la table de données.
  • Analytics ne prend pas en charge les révisions intrajournaux. Ces exemples ont la plus grande précision lors de l’utilisation d’un intervalle quotidien lors du référencement d’une vue Analytics.
  • Toutes les révisions intra-quotidiennes ou intra-période (hebdomadaires/mensuelles) sont ignorées par les calculs. Cela peut entraîner des résultats inattendus pour des scénarios spécifiques tels qu’un élément de travail qui n’affiche pas de temps « En cours » lorsqu’un élément de travail est « en cours » pendant moins d’un jour.
  • Les agrégations par défaut Power BI sont utilisées chaque fois que possible au lieu de créer des mesures.
  • Certains calculs incluent +0 pour garantir qu’une valeur numérique est incluse pour chaque ligne au lieu de BLANK.
  • Vous devrez peut-être réviser certaines des définitions de colonnes calculées en fonction des états de flux de travail utilisés par votre projet. Par exemple, si votre projet utilise New, Active et Closed à la place de Proposé, En cours et Terminé.
  • La colonne Date mentionnée dans cet article n’est pas une colonne native dans Azure DevOps ; Il s’agit d’une colonne dérivée créée dans PowerBI pour faciliter le rapport Time in State . Vous pouvez générer cette colonne à l’aide des colonnes existantes liées à la date, telles que « Date modifiée » ou « Date de modification de l’état ».

Prérequis

  • Accès : être membre d’un projet avec au moins un accès de base .
  • Autorisations : par défaut, les membres du projet ont l’autorisation d’interroger Analytics et de créer des vues.
  • Pour plus d’informations sur les autres prérequis concernant l’activation du service et des fonctionnalités et les activités de suivi des données générales, consultez Autorisations et conditions préalables pour accéder à Analytics.

Remarque

Pour exercer toutes les mesures de délai d’état décrites dans cet article, veillez à inclure les champs suivants dans vos vues Analytics, Power Query ou requête OData : Date de création et Catégorie d’état en plus des champs par défaut : Chemin de zone, Affecté à, Chemin d’itération, État, Titre, ID d’élément de travail et Type d’élément de travail.

Envisagez également d’utiliser une vue Analytics basée sur une granularité quotidienne . Les exemples de cet article sont basés sur l’affichage Analyse des bogues actifs défini dans Créer un rapport de bogues actif dans Power BI basé sur une vue Analytique personnalisée, à l’exception du fait que 60 jours d’historique et de granularité quotidienne sont sélectionnés. Déterminez également si vous souhaitez passer en revue les éléments de travail terminés ou fermés.

Ajouter une mesure Nombre d’éléments de travail

Pour simplifier la génération rapide de rapports, nous avons conçu des vues Analytics pour qu’elles fonctionnent avec les agrégations par défaut dans Power BI. Pour illustrer la différence entre une agrégation par défaut et une mesure, nous commençons par une mesure simple du nombre d’éléments de travail.

  1. Chargez votre vue Analytics dans Power BI Desktop. Pour plus d’informations, consultez Se connecter avec Power BI Data Connector, Se connecter à une vue Analytique.

  2. Sélectionnez la table de données, puis, sous l’onglet Outils de table, section Calculs du ruban, choisissez Nouvelle mesure.

    Capture d’écran de l’onglet Outils de tableau Power BI, Nouvelle mesure.

  3. Remplacez le texte par défaut par le code suivant, puis cochez la case.

    Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))
    

    La mesure Nombre d’éléments de travail utilise les CALCULATEfonctions , COUNTROWSet LASTDATE DAX décrites plus en détail plus loin dans cet article.

    Notes

    N’oubliez pas de remplacer View Name par le nom de la table de la vue Analytics. Par exemple, ici, nous remplaçons Le nom de l’affichage par les bogues actifs.

    Capture d’écran de l’onglet Outils de mesure Power BI, syntaxe du nombre d’éléments de travail.

En quoi une mesure diffère-t-elle d’une colonne calculée

Une mesure évalue toujours la table entière dans laquelle une colonne calculée est spécifique à une seule ligne. Pour plus d’informations, consultez Colonnes et mesures calculées dans DAX.

Comparez la mesure Nombre d’éléments de travail avec l’agrégation de nombre par défaut en fonction de l’ID d’élément de travail. L’image suivante est créée en ajoutant le visuel Carte et la mesure Nombre d’éléments de travail à la première carte, et la propriété ID d’élément de travail à la deuxième carte.

Capture d’écran de la page de rapport Power BI, deux cartes montrant la mesure Nombre d’éléments de travail et la propriété ID d’élément de travail.

Pour obtenir le nombre correct à l’aide d’une agrégation par défaut, vous appliquez le filtre « True ». Ce modèle d’application de filtres à une agrégation par défaut est la base de nombreux exemples fournis dans cet article.

Capture d’écran de la page de rapport Power BI, nombre d’ID d’élément de travail filtré.

Ajouter un ordre de tri d’état

Par défaut, Power BI affiche les états triés par ordre alphabétique dans une visualisation. Il peut être trompeur lorsque vous souhaitez visualiser l’heure dans l’état et proposé s’affiche après En cours. Les étapes suivantes vous aident à résoudre ce problème.

  1. Vérifiez que le champ Catégorie d’état est inclus dans la vue Analytique. Ce champ est inclus dans toutes les vues partagées par défaut.

  2. Sélectionnez la table de données, puis, sous l’onglet Outils de table, section Calculs du ruban, choisissez Nouvelle colonne.

    Capture d’écran de l’onglet Outils power BI Table, Nouvelle colonne.

  3. Remplacez le texte par défaut par le code suivant, puis cochez la case.

    State Sort Order =  
    SWITCH (  
        'View Name'[State Category],  
        "Proposed", 1,  
        "InProgress", 2,  
        "Resolved", 3,  
        4  
    )  
    

    Voir l’exemple suivant :

    Capture d’écran de l’onglet Outils de table Power BI, entrée de catégorie d’état.

    Notes

    Vous devrez peut-être réviser la définition si vous avez besoin de plus de granularité que la catégorie d’état fournit. La catégorie d’état fournit un tri correct sur tous les types d’éléments de travail, quelles que soient les personnalisations d’état .

  4. Ouvrez la vue Données et sélectionnez la colonne État .

  5. Sous l’onglet Outils de colonne , choisissez Trier par colonne , puis sélectionnez le champ Ordre de tri d’état .

    Capture d’écran de l’onglet Outils de colonne Power BI, Tri par sélection de colonne.

Ajouter la date précédente

L’étape suivante pour calculer le délai d’état nécessite le mappage de l’intervalle précédent (jour, semaine, mois) pour chaque ligne de données du jeu de données. Il s’agit d’un calcul simple à l’aide d’une colonne calculée. En règle générale, vous définissez cette colonne comme indiqué.

Date Previous  = 
PREVIOUSDAY ( 'View Name'[Date] )

Toutefois, cette approche présente deux principaux problèmes :

  • Il fonctionne uniquement pour les périodes quotidiennes.
  • Il ne gère pas les lacunes dans les données. Par exemple, si un élément de travail est déplacé entre des projets.

Pour résoudre ces problèmes, la colonne calculée doit trouver le jour précédent en analysant le champ Date .

Pour ajouter la colonne calculée Date précédente , sous l’onglet Outils de tableau , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

Date Previous =
CALCULATE (
    MAX ( 'View Name'[Date] ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)

La colonne calculée Date précédente utilise trois fonctions DAX, MAX, ALLEXCEPTet EARLIER, décrites plus en détail plus loin dans cet article. Étant donné que la colonne est calculée, elle s’exécute pour chaque ligne de la table et chaque fois qu’elle s’exécute, elle a le contexte de cette ligne spécifique.

Capture d’écran du graphique de tableau Power BI et de l’onglet Visualisation pour Date et Date précédente.

Conseil

Dans le menu contextuel des champs Date et Date précédente , choisissez Date (au lieu de Hiérarchie de date) pour afficher une date unique pour ces champs.

Ajouter une différence de date en jours

Date Précédente calcule la différence entre la date précédente et la date actuelle pour chaque ligne. Avec la différence de date en jours, nous calculons le nombre de jours entre chacune de ces périodes. Pour la plupart des lignes d’un instantané quotidien, la valeur est égale à 1. Toutefois, pour de nombreux éléments de travail qui ont des lacunes dans le jeu de données, la valeur est supérieure à 1.

Important

Nécessite que vous ayez ajouté la colonne calculée Date précédente à la table.

Il est important de prendre en compte le premier jour du jeu de données où Date précédente est vide. Dans cet exemple, nous donnons à cette ligne une valeur standard de 1 pour maintenir la cohérence du calcul.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

Date Diff in Days =
IF (
    ISBLANK ( 'View Name'[Date Previous] ),
    1,
    DATEDIFF (
        'View Name'[Date Previous],
        'View Name'[Date],
        DAY
    )
)

Cette colonne calculée utilise les ISBLANK fonctions et DATEDIFF DAX décrites plus loin dans cet article.

Ajouter Is Last Day dans l’état

À l’étape suivante, nous calculons si une ligne donnée représente le dernier jour où un élément de travail spécifique était dans un état. Il prend en charge les agrégations par défaut dans Power BI que nous ajoutons dans la section suivante où nous ajoutons la colonne Heure d’état en jours .

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

Is Last Day in State = 
ISBLANK (CALCULATE (
    COUNTROWS ( 'View Name' ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] > EARLIER ( 'View Name'[Date] ),
        'View Name'[State] = EARLIER ( 'View Name'[State] )
))

Ajouter l’heure d’état en jours

Le temps passé par un élément de travail dans un état spécifique peut désormais être calculé en additionnant la différence de date en jours pour chaque élément de travail. Ce calcul inclut tout le temps passé dans un état spécifique, même s’il a changé d’état plusieurs fois. Il est possible d’évaluer chaque ligne en tant que tendance à l’aide de Date ou des informations les plus récentes à l’aide de Est le dernier jour dans l’état.

Important

Nécessite que vous ayez ajouté les colonnes calculées Date Diff in Days et Is Last Day in State à la table.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = EARLIER ( 'View Name'[State] )
) + 0

Créer des graphiques de tendance en colonnes empilées en fonction de l’heure d’état en jours

Pour illustrer la colonne Heure d’état en jours , les histogrammes empilés suivants sont créés. Le premier graphique montre le nombre d’éléments de travail dans chaque état au fil du temps.

Capture d’écran de l’histogramme empilé Power BI et de l’onglet Visualisation qui illustre le nombre de titres d’élément de travail par date et état.

Le deuxième graphique illustre la tendance des jours moyens pendant lesquels les éléments de travail actifs sont dans un état particulier.

Capture d’écran de l’histogramme empilé Power BI et de l’onglet Visualisation qui illustre la moyenne des jours dans l’état des éléments de travail par date.

Ajouter l’heure d’état en jours - Dernière (est le dernier jour dans l’état)

Lors de l’évaluation du délai d’état pour chaque élément de travail d’une table ou lorsqu’il est filtré par un champ tel que Le chemin d’accès à la zone, n’utilisez pas la colonne Heure d’état en jours dans une agrégation. L’agrégation utilise la valeur pour chaque jour où l’élément de travail était dans l’état. Par exemple, si un élément de travail était en cours le lundi et déplacé vers Terminé le jeudi, l’heure dans l’état est de trois jours, mais la somme de l’heure d’état dans la colonne Jours est de six jours, 1+2+3ce qui est incorrect.

Ajoutez l’heure d’état en jours - Dernier.

Pour résoudre ce problème, utilisez l’heure d’état en jours et appliquez le filtre Is Last Day In State égal à « True ». Il élimine toutes les données historiques nécessaires à une tendance et se concentre plutôt sur la valeur la plus récente pour chaque état.

Utilisez l’heure d’état en jours et appliquez le filtre Est le dernier jour dans l’état est égal à « True ».

Ajouter l’heure d’état en jours - En cours

Dans les exemples précédents, l’heure d’état en jours d’un élément de travail donné est comptabilisée uniquement lorsque l’élément de travail était dans cet état spécifique. Si votre objectif est d’avoir le temps d’entrée dans l’état pour un nombre d’éléments de travail donné pour une moyenne en continu, vous devez modifier le calcul. Par exemple, si nous voulons suivre l’état « En cours », nous ajoutons la colonne calculée Heure d’état en jours - En cours .

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Time in Days - In Progress = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] = "In Progress"
) + 0

Notes

Vous devrez peut-être réviser la définition en fonction des états de flux de travail utilisés par votre projet. Par exemple, le projet utilisé dans les exemples de cet article utilise l’état de workflow « En cours », mais les processus Agile, Scrum et CMMI utilisent généralement les états « Actif » ou « Engagé » pour représenter le travail en cours. Pour obtenir une vue d’ensemble, consultez États de flux de travail et catégories d’état.

L’image suivante montre l’effet de la prise en compte de tout le temps dans l’état pour chaque élément de travail existant (indiqué à gauche) par rapport à ces éléments de travail dans un état spécifique dans un jour donné (indiqué à droite).

Comparaison des tendances du temps moyen dans l’état

Tendance heure d’état en jours de plusieurs états

L’analyse des performances dans plusieurs états est également possible à l’aide du modèle « Continu ». Toutefois, cette approche ne fonctionne qu’avec un graphique de tendance.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Time in Days - Working States = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] IN { "Committed", "In Progress" }
) + 0

Notes

Vous devrez peut-être réviser la définition en fonction des états de flux de travail utilisés par votre projet. Par exemple, si votre projet utilise « Active » à la place de « Committed » ou « Proposed ».

Le graphique de gauche montre la moyenne combinée, tandis que le côté droit affiche chaque état individuel.

Comparaison des tendances de plusieurs états

Obtenir l’heure d’état en jours - Le plus récent pour plusieurs états

Vous utilisez la colonne Heure d’état en jours - Dernier calcul lors de la création d’une tendance. Avec un filtre sur les états, la colonne State Time in Days et Is Last Day in State permet d’obtenir le temps total de tout élément de travail ou groupe d’éléments de travail dépensés dans un ensemble d’états.

Heure la plus récente dans les états

Ajouter l’état précédent

La colonne calculée Date précédente peut également être utilisée pour rechercher des valeurs passées telles que l’état précédent pour chaque élément de travail.

Important

Nécessite que vous ayez ajouté la colonne calculée Date précédente à la table.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Previous =
LOOKUPVALUE (
    'View Name'[State],
    'View Name'[Work Item Id], 'View Name'[Work Item Id],
    'View Name'[Date], 'View Name'[Date Previous]
)

Cette colonne calculée utilise le LOOKUPVALUE, décrit plus loin dans cet article.

Le premier LOOKUPVALUE paramètre, 'View Name'[State], spécifie de retourner la valeur de [State].

Le paramètre suivant, 'View Name'[Work Item Id], 'View Name'[Work Item Id], spécifie que seules les lignes avec un ID d’élément de travail correspondant à la ligne actuelle doivent être prises en compte.

Et, le dernier paramètre, 'View Name'[Date], 'View Name'[Date Previous], spécifie que la date de la ligne retournée doit avoir une [Date] qui correspond à la [Date précédente] de la ligne actuelle. Dans un instantané, une seule ligne peut répondre à ce critère.

Ajouter un état modifié

À l’aide de la colonne État précédent , nous pouvons marquer les lignes de chaque élément de travail où une transition d’état s’est produite. La colonne calculée de modification d’étape comporte deux considérations particulières :

  • Valeurs vides de *State Previous, que nous définissons sur la date de création de l’élément de travail
  • La création d’un élément de travail est considérée comme une transition d’état

Important

Nécessite que vous ayez ajouté la colonne calculée État précédent à la table.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Changed =
IF (
    ISBLANK ( 'View Name'[State Previous] ),
    'View Name'[Created Date].[Date] = 'View Name'[Date],
    'View Name'[State Previous] <> 'View Name'[State]
)

La colonne calculée est une valeur booléenne qui identifie si la ligne est une transition d’état. En utilisant l’opérateur Not Equal To , vous interceptez correctement les lignes où l’état précédent ne correspond pas à l’état actuel, ce qui signifie que la comparaison retourne True comme prévu.

Ajouter un flux d’état

Avec les colonnes calculées État précédent et État modifié , vous pouvez créer une colonne qui illustre le flux d’état pour un élément de travail donné. La création de cette colonne est facultative pour les besoins de cet article.

Important

Nécessite que vous ayez ajouté les colonnes calculées État précédent et État modifié à la table.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Flow = 
IF([State Changed], [State Previous], [State]) & " => " & [State]

Ajouter un nombre de modifications d’état

À mesure que nous passons aux mesures plus complexes, nous devons avoir une représentation du nombre total de changements d’état pour comparer les lignes d’une donnée pour un élément de travail donné. Nous obtenons la représentation en ajoutant une colonne calculée Nombre de modifications d’état .

Important

Nécessite que vous ayez ajouté la colonne calculée State Changed à la table.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Change Count = 
CALCULATE (
    COUNTROWS ( 'View Name' ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Changed]
) + 0

Ajouter le nombre de modifications d’état - Dernière proposition et heure de redémarrage d’état en jours

L’heure de redémarrage de l’état en jours est un calcul assez complexe. La première étape consiste à rechercher la dernière fois qu’un élément de travail était dans un état proposé. Ajoutez la colonne Nombre de modifications d’état - Dernière colonne calculée proposée.

Remarque

Vous devrez peut-être réviser les définitions suivantes en fonction des états de flux de travail utilisés par votre projet. Par exemple, si votre projet utilise « Nouveau » à la place de « Proposé ».

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Change Count - Last Proposed = 
CALCULATE (
    MAX ( 'View Name'[State Change Count] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = "Proposed"
)

Ensuite, regardez plus loin dans le passé et voyez s’il y avait des états actifs avant cet état proposé. Enfin, résumez tous les jours où l’élément de travail était à l’état actif avant la dernière proposition.

Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

State Restart Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Change Count] < EARLIER('View Name'[State Change Count - Last Proposed] ),
    'View Name'[State] <"Proposed"
) + 0

Étant donné que l’heure de redémarrage d’état en jours est mise à jour pour chaque ligne de données, vous pouvez soit créer une tendance pour évaluer les remaniements sur des sprints spécifiques, soit examiner les remaniements d’éléments de travail individuels à l’aide de Is Current.

Ajouter un temps de travail d’état en jours

Comme pour l’heure de redémarrage de l’état en jours, l’heure de rework d’état en jours recherche la première fois qu’un élément de travail était dans la catégorie État Terminé. Après ce temps, chaque jour où un élément de travail passe dans un état autre que Terminé, compte comme rework.

  1. Créez la colonne « Nombre de modifications d’état - Premier terminé ». Cette colonne suit le nombre de fois où un élément de travail passe à l’état Terminé à partir d’un autre état.

    State Change Count - First Completed =
    VAR CompletedState = "Completed"
    RETURN
    CALCULATE(
       COUNTROWS('YourTable'),
       FILTER(
           'YourTable',
           'YourTable'[State] = CompletedState
           && 'YourTable'[State Change Date] = MIN('YourTable'[State Change Date])
       )
    )
    
  2. Sous l’onglet Modélisation , choisissez Nouvelle colonne , puis remplacez le texte par défaut par le code suivant, puis cochez la case.

    State Rework Time in Days = 
    IF (
        ISBLANK ( 'View Name'[State Change Count - First Completed] ),
        0,
        CALCULATE (
            SUM ( 'View Name'[Date Diff in Days] ),
            ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
            'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
            'View Name'[State Change Count] <= EARLIER ( 'View Name'[State Change Count - First Completed] ),
            'View Name'[State] IN {"Completed", "Closed", "Cut" } = FALSE()
        ) + 0
    )
    

    Remarque

    Vous devrez peut-être réviser la définition précédente en fonction des états de flux de travail utilisés par votre projet. Par exemple, si votre projet utilise Terminé à la place de Fermé, et ainsi de suite.

Fonctions DAX

Des informations supplémentaires sont fournies dans cette section pour les fonctions DAX utilisées pour créer les colonnes calculées et la mesure ajoutées dans cet article. Voir aussi DAX, Fonctions Time Intelligence.

Fonction Description
ALLEXCEPT Supprime tous les filtres de contexte dans la table, à l’exception des filtres appliqués aux colonnes spécifiées. ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) Réduit essentiellement les lignes de la table à celles qui partagent le même ID d’élément de travail que la ligne active.
CALCULATE Cette fonction est la base de presque tous les exemples. La structure de base est une expression suivie d’une série de filtres appliqués à l’expression.
COUNTROWS Cette fonction, COUNTROWS ( 'View Name' ), compte simplement le nombre de lignes qui restent après l’application des filtres.
DATEDIFF Retourne le nombre de limites d’intervalle franchies entre deux dates. DATEDIFF soustrait Date précédente de Date pour déterminer le nombre de jours entre eux.
EARLIER Retourne la valeur actuelle de la colonne spécifiée dans un test d’évaluation externe de la colonne mentionnée. Par exemple, 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) le jeu de données réduit uniquement les lignes qui se sont produites avant la date de la ligne actuelle référencée à l’aide de la EARLIER fonction. EARLIER ne fait pas référence à des dates précédentes ; il définit spécifiquement le contexte de ligne de la colonne calculée.
ISBLANK Vérifie si une valeur est vide et retourne TRUE ou FALSE. ISBLANK évalue la ligne active pour déterminer si Date précédente a une valeur. Si ce n’est pas le cas, l’instruction If définit Date Diff dans Jours sur 1.
LASTDATE Nous appliquons le LASTDATE filtre à une expression, par exemple LASTDATE ( 'View Name'[Date] ), pour rechercher la date la plus récente sur toutes les lignes de la table et éliminer les lignes qui ne partagent pas la même date. Avec la table d’instantanés générée par une vue Analytics, ce filtre sélectionne efficacement le dernier jour de la période sélectionnée.
LOOKUPVALUE Retourne la valeur présente dans result_columnName pour la ligne qui remplit tous les critères spécifiés par search_columnName et search_value.
MAX Retourne la plus grande valeur numérique d’une colonne ou entre deux expressions scalaires. Nous appliquons MAX ( 'View Name'[Date] ), pour déterminer la date la plus récente après l’application de tous les filtres.