Partager via


Cumul des valeurs d’élément de travail enfant dans l’exemple de rapport parent

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

Le cumul fournit la prise en charge de l’affichage d’un nombre d’éléments de travail ou de la somme des points de récit, du travail restant ou d’un autre champ personnalisé d’éléments enfants. Cet article fournit plusieurs exemples de création d’un rapport cumulatif tabulaire pour les épopées, les fonctionnalités ou les récits utilisateurs qui contiennent des éléments de travail enfants. L’image suivante montre un exemple de points de récit cumulés pour leurs fonctionnalités parentes.

Capture d’écran du rapport de matrice de cumul des fonctionnalités.

Pour plus d’informations sur le cumul et les options d'affichage, consultez Afficher la progression ou les totaux cumulés dans Azure Boards.

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.

Catégorie Spécifications
Niveaux d’accès - Membre du projet.
- Au moins un accès de base (Basic).
Permissions 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 requêtes suivantes renvoient des données de l'ensemble d'entités WorkItems pour permettre de générer des rapports matriciels sur les cumuls.

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 en utilisant n'importe quelle valeur Property sous un EntityType ou parmi les valeurs NavigationPropertyBinding Path 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.

Cumuler des points de récit vers des fonctionnalités de récits utilisateurs enfants en fonction de chemins d'accès de zones

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir des données>Nouvelle requête. 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/WorkItems?"
            &"$filter=WorkItemType eq 'Feature'"
            &" and State ne 'Cut'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any()"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'User Story')"
                &"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

Chaînes de substitution et décomposition 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 {organization} par Fabrikam, et non par {Fabrikam}.

  • {organization} - Nom de votre organisation
  • {project} - Nom de votre projet d’équipe ou omettre entièrement « /{projet} » 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'

Renvoyez des fonctionnalités.

and State ne 'Cut'

Omettez les bogues fermés.

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

Renvoyer des éléments de travail sous un chemin d’accès à une zone spécifique, remplacer Area/AreaPath eq '{areapath}' renvoie des éléments vers 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()

Incluez toutes les fonctionnalités, même celles sans récits utilisateur. Remplacez par « any(d :d/WorkItemType eq 'User Story') » pour omettre les fonctionnalités qui n’ont pas de récits utilisateurs enfants.

&$select=WorkItemId, Title, WorkItemType, State

Permet de sélectionner les champs à retourner.

&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),

Sélectionnez les champs de propriété extensibles AssignedTo, Iteration, Area.

Descendants(

Développez la Descendants clause.

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

Filtrez les descendants pour inclure uniquement les récits utilisateur (omettez les tâches et les bogues).

/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)

Pour tous les descendants correspondant à la clause de filtre, comptez-les et additionnez la StoryPoints propriété.

)

Fermer Descendants().

Cumuler des points de récit à des fonctionnalités de récits utilisateurs enfants en fonction d’équipes

Les requêtes suivantes montrent comment générer des rapports cumulatifs filtrés 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 des données>Nouvelle requête. 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/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=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'User Story')"
                &"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Cumuler des points de récit à des épopées

Vous pouvez cumuler des points de récit à des épopées à l’aide des requêtes suivantes.

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir des données>Nouvelle requête. 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/WorkItems?"
            &"$filter=WorkItemType eq 'Epic'"
            &" and State ne 'Cut'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any(d:d/WorkItemType eq 'User Story')"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'User Story')"
                &"/aggregate(StoryPoints with sum as TotalStoryPoints)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

Cumuler le travail restant et le travail terminé des tâches à des récits utilisateurs

La requête suivante montre comment cumuler le travail restant et le travail terminé assigné aux tâches enfants aux récits utilisateurs de la hiérarchie. Ces requêtes supposent que les tâches sont assignées en tant qu’enfants d’un récit utilisateur dans le chemin d’accès de zone spécifié.

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir des données>Nouvelle requête. 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/WorkItems?"
            &"$filter=WorkItemType eq 'User Story'"
            &" and State ne 'Removed'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any()"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'Task')"
                &"/aggregate(RemainingWork with sum as TotalRemainingWork, CompletedWork with sum as TotalCompletedWork)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

Cumuler le nombre de bogues aux fonctionnalités

Les requêtes suivantes montrent comment cumuler le nombre de bogues affectés aux fonctionnalités. Ces requêtes supposent que les bogues sont définis en tant qu’enfants d’une fonctionnalité dans le chemin d’accès de zone spécifié.

Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir des données>Nouvelle requête. 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/WorkItems?"
            &"$filter=WorkItemType eq 'Feature'"
            &" and State ne 'Removed'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any()"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'Bug')"
                &"/aggregate($count as CountOfBugs)"
            &")", 
        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.

Agrandir des colonnes dans Power BI

La &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath) clause retourne des enregistrements qui contiennent plusieurs champs. Avant de créer le rapport, vous devez développer l’enregistrement pour l’aplatir en champs spécifiques. Dans ce cas, vous devez étendre les dossiers suivants :

  • AssignedTo
  • AreaPath
  • IterationPath

Pour en savoir plus, consultez Transformer les données d'Analytics pour générer des rapports Power BI.

(Facultatif) Renommer des champs

Une fois que vous avez développé les colonnes, vous pouvez renommer un ou plusieurs champs. Par exemple, vous pouvez renommer la colonne AreaPath en Area Path. Pour savoir comment procéder, consultez Renommer les champs de colonne.

Remplacer les valeurs Null dans les champs de cumul

Si un élément de travail n’a pas d’enfants, la valeur de cumul peut être null. Par exemple, Descendants.CountOfUserStories est « null » si une fonctionnalité n’a pas d’histoires utilisateur enfants.

Pour faciliter la création de rapports, remplacez toutes les valeurs Null par zéro en suivant ces étapes.

  1. Sélectionnez la colonne en cliquant sur l’en-tête de colonne.
  2. Sélectionnez le menu Transformer .
  3. Sélectionnez Remplacer les valeurs. La boîte de dialogue Remplacer les valeurs s’affiche.
  4. Entrez « null » dans La valeur à rechercher.
  5. Entrez « 0 » dans Remplacer par.
  6. Choisissez OK.

Répétez l’opération pour toutes les colonnes de cumul.

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 l'Éditeur Power Query, option « Fermer et appliquer ».

Créer le rapport de table

  1. Dans Power BI, choisissez le rapport Table sous Visualisations.

    Capture d'écran des visualisations Power BI et des sélections de champs pour le rapport sur les tables de cumuls.

  2. Ajoutez les champs suivants aux colonnes dans l’ordre indiqué :

    • WorkItemI, choisissez Ne pas résumer pour afficher l’ID si nécessaire
    • WorkItemType
    • Title
    • State
    • Count of User Stories
    • Total Story Points.

L’exemple de rapport s’affiche.

Capture d’écran de l’exemple de rapport matriciel de cumul des fonctionnalités.