Partage via


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 de chemins d’accès de zone ou la reconfiguration des chemins d’itération entraîne une perte de données irréversible. Par exemple, les graphiques de widgets burndown et burnup, sprint burndown et les graphiques de vélocité pour les équipes avec des chemins d’accès de zone modifiés n’affichent pas de données précises . Les graphiques de tendance historique référencent le chemin d’accès à la zone et le chemin d’itération, car ils ont été définis au moment de chaque élément de travail. Une fois supprimé, vous ne pouvez pas récupérer les données historiques pour ces chemins d’accès.
  • Vous ne pouvez supprimer que des chemins d’accès de zone et d’itération qui ne sont plus utilisés par des éléments de travail.

Pour plus d’informations sur le burndown et le burnup, et les conseils sur burndown et burnup.

Remarque

Cet article part du principe que vous lisez la 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

  • 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.

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 plus d’informations sur le type de données de chaque valeur, passez en revue les métadonnées fournies pour le type de données correspondant EntityType.

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

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de 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.

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de 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.

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de 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

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de requêtes OData.

Doc-ready Power BI Query (anonymized)
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.