Rapports d’exemples de sprint burndown

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

Les graphiques sprint burndown sont utiles pour surveiller l’exécution d’une équipe sur son plan de sprint. Plusieurs graphiques intégrés et widgets de tableau de bord prennent en charge la surveillance du burndown de sprint. Consultez Configurer et surveiller le burndown de sprint.

Toutefois, vous pouvez personnaliser un graphique sprint burndown à l’aide d’Analytics et de Power BI avec les requêtes fournies dans cet article. L’exemple suivant montre un burndown des user Stories et de leurs états.

Capture d’écran du rapport d’histogramme en cluster De Power BI Sprint.

Important

La suppression des chemins d’accès de zone ou la reconfiguration des chemins d’itération peuvent entraîner une perte de données et ne peuvent pas être rétablies. Par exemple, les graphiques de widgets burndown ou burnup, le sprint burndown et les graphiques de vitesse pour les équipes dont les chemins d’accès à la zone sont modifiés ne reflètent pas les données correctes. Les graphiques de tendance historique référencent le chemin d’accès à la zone et le chemin d’itération tels que définis à un point dans le passé pour chaque élément de travail. Lorsqu’un chemin d’accès à une zone ou un chemin d’itération est supprimé, les données historiques de ce chemin ne peuvent pas être récupérées.

Pour en savoir plus sur le burndown et le burnup, ainsi que sur les conseils de burndown et burnup.

Notes

Cet article suppose que vous avez lu Vue d’ensemble des exemples de rapports à l’aide de requêtes OData et que vous avez une compréhension de base de Power BI.

Prérequis

  • Pour afficher les données Analytics et interroger le service, vous devez être membre d’un projet avec un accès de base ou supérieur. Par défaut, tous les membres du projet sont autorisés à interroger Analytics et à définir des vues Analytics.
  • Pour en savoir plus sur d’autres prérequis concernant l’activation des services et des fonctionnalités et les activités générales de suivi des données, consultez Autorisations et prérequis pour accéder à Analytics.

Exemples de requêtes

Les graphiques burndown nécessitent l’interrogation du jeu d’entités WorkItemSnapshot pour obtenir des données historiques.

Notes

Pour déterminer les propriétés disponibles à des fins de filtre ou de rapport, consultez Informations de référence sur les métadonnées pour Azure Boards. Vous pouvez filtrer vos requêtes ou renvoyer des propriétés à l’aide de l’une Property des valeurs sous ou EntityType des NavigationPropertyBinding Path valeurs disponibles avec un EntitySet. Chaque EntitySet correspond à un EntityType. Pour en savoir plus sur le type de données de chaque valeur, passez en revue les métadonnées fournies pour le .EntityType

Burndown User Stories pour un chemin d’accès de zone et l’itération actuelle

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Chaînes de substitution et répartition des requêtes

Remplacez les chaînes suivantes par vos valeurs. N’incluez pas de crochets {} avec votre substitution. Par exemple, si le nom de votre organisation est « Fabrikam », remplacez par {organization}Fabrikam, et non {Fabrikam}par .

  • {areapath} - Chemin d’accès de votre zone. Exemple de format : Project\Level1\Level2.

Répartition des requêtes

Le tableau suivant décrit chaque partie de la requête.

Composant de requête

Description


$apply=filter(

Démarrer filter()

WorkItemType eq 'User Story'

Burndown sur les témoignages utilisateur

and startswith(Area/AreaPath,'{areapath}')

Éléments de travail sous un chemin d’accès de zone spécifique. Le remplacement par Area/AreaPath eq '{areapath}' renvoie des éléments à un chemin d’accès de zone spécifique.

Pour filtrer par nom d’équipe, utilisez l’instruction filter Teams/any(x:x/TeamName eq '{teamname})'

and StateCategory ne 'Completed'

Filtre les éléments terminés. Pour plus d’informations sur les catégories d’état, consultez Utilisation des états de flux de travail et des catégories d’état dans backlogs et tableaux.

and DateValue ge Iteration/StartDate

Commencez la tendance au début de l’itération.

and DateValue le Iteration/EndDate

Terminer la tendance à la fin de l’itération.

and Iteration/StartDate le now()

Sélectionnez Itération actuelle.

and Iteration/EndDate ge now()

Sélectionner l’itération actuelle

)

Fermer filter()

/groupby(

Démarrer groupby()

(DateValue, State, WorkItemType, Priority, Area/AreaPath, Iteration/IterationPath),

Regrouper par DateValue (utilisé pour les tendances) et tous les champs sur lesquels vous souhaitez créer un rapport

aggregate($count as Count, StoryPoints with sum as TotalStoryPoints)

Agrégation par nombre d’histoires d’utilisateurs et somme de points d’histoire

)

Fermer groupby()

Burndown User Stories pour une équipe et l’itération actuelle

Cette requête est identique à celle utilisée ci-dessus, sauf qu’elle filtre par nom d’équipe plutôt que par chemin d’accès à la zone.

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Burndown User Stories pour tous les sprints depuis le début d’une année

Vous souhaiterez peut-être afficher un burndown de tous les sprints dans un seul rapport. Ces requêtes extrayent les burndowns de sprint, et leur par points d’histoire, pour tous les sprints depuis le début de l’année 2022.

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate ge 2022-01-01Z "
        &") "
        &"/groupby( "
            &"(DateValue,Iteration/EndDate,Area/AreaPath,Iteration/IterationPath,State,WorkItemType,Priority,AreaSK), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Tâches de burndown et travail restant

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes OData.

Doc-ready Power BI Query (anonomized)
let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"startswith(Area/AreaPath,'{project}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
            &"and WorkItemType eq 'Task' "
        &") "
            &"/groupby( "
            &"(DateValue,State,WorkItemType,Activity,Priority,Area/AreaPath,Iteration/IterationPath,AreaSK), "
            &"aggregate($count as Count, RemainingWork with sum as TotalRemainingWork) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(Facultatif) Renommer la requête

Vous pouvez renommer l’étiquette de requête par défaut , Query1, en quelque chose de plus significatif. Entrez simplement un nouveau nom dans le volet Paramètres de requête .

Capture d’écran des options de menu de requête Power BI, renommer la requête.

Développer des colonnes dans Éditeur Power Query

Avant de créer le rapport, vous devez développer des colonnes qui retournent des enregistrements contenant plusieurs champs. Dans ce cas, vous devez développer les enregistrements suivants :

  • Area
  • Iteration
  • AssignedTo

Pour savoir comment développer des éléments de travail, consultez Transformer des données Analytics pour générer des rapports Power BI.

Fermez la requête et appliquez vos modifications

Une fois que vous avez terminé toutes vos transformations de données, choisissez Fermer & Appliquer dans le menu Accueil pour enregistrer la requête et revenir à l’onglet Rapport dans Power BI.

Capture d’écran de Éditeur Power Query’option Fermer et appliquer.

Créer le rapport d’histogramme empilé

  1. Dans Power BI, choisissez le rapport d’histogramme empilé sous Visualisations.

    Capture d’écran des sélections de champs et de visualisations Power BI pour le rapport Sprint Burndown.

  2. Ajouter DateValue à l’axe X, cliquez avec le bouton droit et sélectionnez DateValue, plutôt que Date Hierarchy

  3. Ajouter Count à l’axe Y.

  4. Ajouter State à l’axe Y.

L’exemple de rapport, qui affiche le burndown sur les points d’histoire et le nombre d’histoires.

Capture d’écran de l’exemple de rapport d’histogramme en cluster Power BI Sprint.