Partager via


Données de tendance des requêtes

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

L’examen des tendances dans les données et la réalisation de comparaisons de périodes sur plusieurs périodes sont des aspects importants de la création de rapports et de l’analyse des données. Analytics prend en charge ces fonctionnalités.

Remarque

Le service Analytics est automatiquement activé et pris en charge en production pour tous les services dans Azure DevOps Services. L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles. Vous êtes encouragé à utiliser le flux OData Analytics et à fournir des commentaires.

Les données disponibles dépendent de la version. La dernière version prise en charge de l’API OData est v2.0, et la dernière version préliminaire 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. Vous êtes encouragé à utiliser le flux OData Analytics et à fournir des commentaires. Si vous effectuez 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 de l’API OData est v2.0, et la dernière version préliminaire est v4.0-preview. Pour plus d’informations, consultez gestion des versions de l’API OData.

Les données de tendance sont exposées dans les jeux d’entités WorkItemSnapshot et WorkItemBoardSnapshot. Ils sont construits de sorte que chaque élément de travail, du jour où il a été créé jusqu’à aujourd’hui, existe pour chaque jour. Pour une organisation avec un seul élément de travail créé il y a un an, il existe 365 lignes dans cette entité. Pour les grands projets, ces entités ne sont pas pratiques à utiliser avec les outils clients.

Qu’est-ce que la solution ? Utilisez les extensions d’agrégation.

À l’aide des extensions d’agrégation OData, vous pouvez retourner des données agrégées à partir d’Azure DevOps qui sont propices à la création de rapports. Par exemple, vous pouvez afficher la tendance des bugs pour le mois de mars. Les tendances des bugs sont une partie courante et critique de la gestion de tout projet, afin d'en tirer parti immédiatement.

Remarque

Les exemples présentés dans ce document sont basés sur une URL Azure DevOps Services. Remplacez l’URL de votre serveur Azure DevOps en fonction des besoins.

https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

Conditions préalables

Catégorie Spécifications
Niveaux d’accès - Membre du projet.
- 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.

Construire une requête de base pour les données de tendance

Pour interroger efficacement la table WorkItemSnapshot, procédez comme suit :

  • Filtrez les données par date.
  • Regroupez l’agrégation par au moins la date. Si ce n’est pas le cas, la réponse inclut un avertissement.

La requête permettant de créer un rapport de tendance de bogue ressemble à l’exemple suivant :

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(DateValue ge 2016-03-01Z and DateValue le 2016-03-31Z and WorkItemType eq 'Bug')/
    groupby((DateValue,State), aggregate($count as Count))
  &$orderby=DateValue

Elle retourne un résultat similaire à l’exemple suivant :

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 2666
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 51408
    }
  ]
}

Cette requête produit au maximum 31 * (number of bug states). Le bogue par défaut a trois états :

  • Actif
  • Résolu
  • Fermé

Au maximum, cette requête retourne 93 lignes, quel que soit le nombre de milliers d’enregistrements réellement présents. Il fournit une forme beaucoup plus compacte de retour de données.

Examinons une variante de cet exemple. Vous souhaitez voir la tendance des bogues pour une itération ou une version qui commence par une itération et se termine par une autre.

Pour construire cette requête, procédez comme suit :

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(WorkItemType eq 'Bug')/
    filter(Iteration/IterationName eq 'Sprint 99')/
    filter(DateValue ge Iteration/StartDate and (Iteration/EndDate eq null or DateValue le Iteration/EndDate))/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

Elle retourne un résultat similaire à l’exemple suivant :

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 320
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 38
    }
  ]
}

Dans cette requête, il existe deux différences clés. Nous avons ajouté une clause de filtre pour filtrer les données à une itération spécifique et les dates sont désormais comparées aux dates de début et de fin de l’itération par rapport à une date codée en dur.

Remarque

Si votre requête sur les tables d’instantanés n’utilise pas l’agrégation, la réponse affiche l’avertissement : « La requête spécifiée n’inclut pas de clause $select ni de clause $apply, ce qui est recommandé pour toutes les requêtes. »