Partager via


Agréger des données de suivi de travail à l’aide d’Analytics

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

Vous pouvez obtenir une somme de vos données de suivi de travail de deux façons à l’aide d’Analytics avec OData. La première méthode retourne un nombre simple d’éléments de travail en fonction de votre requête OData. La deuxième méthode retourne un résultat au format JSON basé sur votre requête OData qui exerce l’extension d’agrégation OData.

Cet article génère des informations fournies dans Construire des requêtes OData pour Analytics et Définir des requêtes de base à l’aide d’OData Analytics. En outre, les requêtes sont axées sur la récupération des données d’élément de travail, mais les principes s’appliquent à l’interrogation d’autres ensembles d’entités.

Dans cet article, vous apprendrez ce qui suit :

  • À propos de l’extension d’agrégation OData
  • Utilisation de l’extension d’agrégation pour OData
  • Comment regrouper et filtrer les résultats agrégés
  • Comment agréger des données pour générer un diagramme de flux cumulatif

Pour savoir comment générer des nombres simples, consultez Renvoyer un nombre d’éléments (aucune autre donnée) et renvoyer un nombre d’éléments et de données.

Remarque

Le service Analytics est automatiquement activé et pris en charge en production pour tous les services Azure DevOps. L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles. Nous vous encourageons à l’utiliser et à nous faire part de vos commentaires. Les données disponibles dépendent de la version. La dernière version prise en charge est v2.0, et la dernière version d’évaluation est v4.0-preview. Pour plus d’informations, consultez gestion des versions de l’API OData.

Remarque

Le service Analytics est automatiquement installé et pris en charge en production pour toutes les nouvelles collections de projets pour Azure DevOps Server 2020 et versions ultérieures. L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles. Nous vous encourageons à l’utiliser et à nous faire part de vos commentaires. Si vous avez effectué une mise à niveau à partir d’Azure DevOps Server 2019, vous pouvez installer le service Analytics pendant la mise à niveau.

Les données disponibles dépendent de la version. La dernière version prise en charge est v2.0, et la dernière version d’évaluation est v4.0-preview. Pour plus d’informations, consultez gestion des versions de l’API OData.

Remarque

Le service Analytics est en préversion pour Azure DevOps Server 2019. Vous pouvez l’activer ou l’installer pour une collection de projets. L’intégration de Power BI et l’accès au flux OData du service Analytics sont en préversion. Nous vous encourageons à l’utiliser et à nous faire part de vos commentaires.

Les données disponibles dépendent de la version. La dernière version prise en charge est v2.0, et la dernière version d’évaluation est v4.0-preview. Pour plus d’informations, consultez gestion des versions de l’API OData.

Qu’est-ce que l’extension d’agrégation pour OData ?

L’analytique s’appuie sur OData pour créer des requêtes sur vos données de suivi du travail. Les agrégations dans OData sont obtenues à l’aide d’une extension qui introduit le $apply mot clé. Nous avons quelques exemples d’utilisation de ce mot clé ci-dessous. En savoir plus sur l’extension sur l’extension OData pour l’agrégation de données.

Agréger des données à l’aide de l’extension d’agrégation OData

Maintenant que vous avez vu comment effectuer des nombres simples, examinons comment déclencher des agrégations à l’aide du $apply jeton où le format de base à la fin de l’URL est le suivant :

/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})

Où :

  • {entitySetName} est l’entité qui doit être interrogée pour
  • {columnToAggregate} est la colonne d’agrégation
  • {aggregationType} spécifie le type d’agrégation utilisé
  • {newColumnName} spécifie le nom de la colonne ayant des valeurs après l’agrégation.

Données agrégées à l’aide de l’extension Appliquer

À l’aide de l’extension $apply , vous pouvez obtenir des nombres, des sommes et des informations supplémentaires lorsque vous interrogez vos données de suivi du travail.

Retourner la somme de tous les travaux restants

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(RemainingWork with sum as SumOfRemainingWork)

Retourner le dernier identificateur d’élément de travail

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(WorkItemId with max as MaxWorkItemId)

Résultats de groupe à l’aide de la clause groupby

L’extension d’agrégation OData prend également en charge une groupby clause identique à la clause SQL GROUP BY . Vous pouvez utiliser cette clause pour décomposer rapidement les nombres plus en détail.

Par exemple, la clause suivante retourne un nombre d’éléments de travail :

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate($count as Count)

Ajoutez la groupby clause pour retourner un nombre d’éléments de travail par type :

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType), aggregate($count as Count))

Elle retourne un résultat similaire à cet exemple :

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,Count)","value":[
    {
      "@odata.id":null,"WorkItemType":"Bug","Count":3
    },
    {
      "@odata.id":null,"WorkItemType":"Product Backlog Item","Count":13
    }
  ]
}

Vous pouvez également regrouper par plusieurs propriétés comme dans cet exemple :

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType, State), aggregate($count as Count))

Elle retourne un résultat similaire à cet exemple :

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Bug",
      "Count": 2
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Bug",
      "Count": 1
    },
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Product Backlog Item",
      "Count": 5
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Product Backlog Item",
      "Count": 8
    }
  ]
}

Vous pouvez également regrouper des entités, mais le regroupement OData diffère de la façon dont vous pouvez normalement y réfléchir.

Par exemple, supposons que vous vouliez savoir combien de zones se trouvent dans chaque projet d’une organisation ou d’un regroupement. Dans OData, « compter toutes les zones et les regrouper par projet » équivaut à « me donner tous les projets et un nombre de zones pour chaque projet ». Cela entraîne une requête similaire à :

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
  $apply=groupby((Project/ProjectName), aggregate($count as Count))

Filtrer les résultats agrégés

Vous pouvez également filtrer les résultats agrégés, mais ils sont appliqués légèrement différemment lorsque vous n’utilisez pas d’agrégation. Analytics évalue les filtres le long d’un canal afin qu’il soit toujours préférable d’effectuer d’abord le filtrage le plus discret.

Les filtres ressemblent à cet exemple :

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=
    filter(Iteration/IterationName eq 'Sprint 89')/
    filter(WorkItemType eq 'User Story')/
    groupby((State), aggregate($count as Count))

Remarque

Vous n’avez pas besoin de fournir la groupby clause. Vous pouvez simplement utiliser la aggregate clause pour retourner une valeur unique.

Générer plusieurs agrégations au sein d’un seul appel

Vous souhaiterez peut-être fournir plusieurs informations. Par exemple, la somme des travaux terminés et séparément la somme du travail restant. Dans ce cas, vous pouvez effectuer des appels distincts ou un seul appel comme suit :

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)

Il retourne un résultat qui ressemble à cet exemple :

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
    }
  ]
}

Générer des propriétés calculées à utiliser dans un seul appel

Vous devrez peut-être utiliser une expression mathématique pour calculer les propriétés à utiliser dans un jeu de résultats. Par exemple, la somme des travaux terminés est divisée par la somme des travaux terminés, ainsi que la somme des travaux restants pour calculer le pourcentage de travaux terminés. Dans ce cas, vous pouvez utiliser cet exemple :

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"DonePercentage":0.96760221857946638,"SumOfRemainingWork":50715.95,"SumOfCompletedWork":1514698.3400000033
    }
  ]
}

Générer un diagramme de flux cumulé à partir de données agrégées

Supposons que vous souhaitez créer un diagramme de flux cumulatif dans Power BI. Vous pouvez utiliser une requête similaire à celle ci-dessous :

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemBoardSnapshot?$apply=filter(DateValue gt 2015-07-16Z and DateValue le 2015-08-16Z)/filter(BoardName eq 'Stories' and Team/TeamName eq '{teamName}')/groupby((DateValue, ColumnName), aggregate(Count with sum as Count))&$orderby=DateValue

Elle retourne un résultat similaire à cet exemple. Vous pouvez ensuite l’utiliser directement dans votre visualisation de données de votre choix.

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemBoardSnapshot(DateValue,ColumnName,Count)",
  "value": [
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 324,
       "ColumnName": "Completed"
    },
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 5,
      "ColumnName": "In Progress"
    }
  ]
}

Examinons ce que fait réellement cette requête :

  • Filtre les données à une équipe spécifique
  • Filtre les données dans un backlog spécifique
  • Retourne un nombre d’éléments de travail.

Lorsque vous actualisez Power BI ou Excel, moins de lignes sont requises, plus l’actualisation se produit plus rapidement.

Étapes suivantes