Exemple de rapport cumulatif de progression des fonctionnalités

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

Cet article vous montre comment créer un rapport de barre empilée pour afficher la progression des fonctionnalités en fonction des récits utilisateur enfants terminés. Le rapport affiche le pourcentage terminé par cumul des points d’article pour un ensemble donné de fonctionnalités actives. L’image suivante en contient un exemple.

Capture d’écran du rapport de graphique à barres empilées de progression des fonctionnalités.

Vous pouvez afficher des graphiques à barres de progression similaires à partir de votre backlog en ajoutant une colonne de cumul. Pour savoir comment afficher la progression ou les totaux du cumul.

Remarque

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

La progression des fonctionnalités interroge l’entité WorkItems pour obtenir l’état actuel de progression.

Remarque

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

Passer en revue la progression des fonctionnalités en fonction d’un chemin d’accès à une 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/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Descendants/any()"
            &"&$select=WorkItemId,Title,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
            &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') " 
                &"/groupby((StateCategory), "
                &"aggregate(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 .

  • {organization} - Nom de votre organisation
  • {project} - Nom de votre projet d’équipe ou omettre /{project} entièrement, pour une requête inter-projets
  • {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


$filter=WorkItemType eq 'Feature'

Renvoyer des fonctionnalités.

and State ne 'Cut'

Omettez les fonctionnalités marquées comme Cut.

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

Retournez des é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 Teams/any(x:x/TeamName eq '{teamname})'de filtre .

and Descendants/any()

Filtrez les éléments de travail qui ont au moins un ou « n’importe quel » descendant. Inclut toutes les fonctionnalités avec au moins un élément de travail enfant. Pour obtenir tous les éléments de travail avec leurs descendants, même s’ils n’en ont pas, exécutez une requête sans le Descendants/any() filtre. Pour omettre les fonctionnalités qui n’ont pas d’histoires utilisateur enfants, remplacez par any(d:d/WorkItemType eq 'User Story').

Pour tous les éléments de travail avec et sans descendants :

$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

Pour tous les éléments de travail avec au moins un descendant :

$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

&$select=WorkItemId, Title, WorkItemType, State

Sélectionnez les propriétés à retourner.

&$expand=Descendants(

Début de la clause expand Descendants

$apply=filter(WorkItemType eq 'User Story')

Filtrez les descendants. Incluez uniquement les récits utilisateur (omettre les tâches et les bogues).

/groupby((StateCategory),

Regroupez le cumul par StateCategory. 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.

aggregate(StoryPoints with sum as TotalStoryPoints))

Somme agrégée des points d’histoire.

)

Clause Close Descendants() .

Passer en revue la progression des fonctionnalités pour une équipe

La requête suivante est la même que 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/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Cut' "
            &"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 Descendants/any() "
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') "
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Transformer les données dans Éditeur Power Query

La requête retourne plusieurs colonnes que vous devez développer avant de pouvoir les utiliser pour créer un rapport. Toute entité extraite à l’aide d’une instruction OData $expand retourne un enregistrement avec potentiellement plusieurs champs. Développez l’enregistrement pour aplatir l’entité dans ses champs.

Pour le rapport de progression des fonctionnalités, vous devez effectuer les transformations suivantes :

  • Développez la Descendants colonne en deux colonnes : Descendants.StateCategory et Descendants.TotalStoryPoints
  • Appliquer la transformation de colonne pivote sur Descendants.StateCategory la colonne pour séparer les catégories d’état individuelles
  • Remplacez les valeurs Null dans toutes les colonnes pivotées.
  • Ajoutez une colonne personnalisée pour représenter le pourcentage terminé. La colonne personnalisée affiche des erreurs s’il existe des colonnes Null dans les colonnes d’état croisé dynamique.

Pour savoir comment procéder, consultez les sections suivantes des données Transform Analytics pour générer des rapports Power BI :

Remarque

Dans cet exemple, les valeurs d’état de l’article utilisateur incluent Proposé, En cours et Terminé.

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 de graphique à barres empilées

  1. Dans Power BI, choisissez Rapport de graphique à barres empilées sous Visualisations.

    Capture d’écran des sélections de visualisations et de champs Power BI pour le rapport de graphique à barres empilées de progression des fonctionnalités.

  2. Ajouter Title à l’axe Y.

  3. Ajoutez PercentComplete à l’axe X, cliquez avec le bouton droit et sélectionnez Somme.

L’exemple de rapport s’affiche.

Capture d’écran de l’exemple de rapport de graphique à barres empilées de progression des fonctionnalités.