Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Analytics stocke les instantanés quotidiens de chaque élément de travail dans deux ensembles d’entités : WorkItemSnapshot (effectue le suivi des valeurs de champ comme l’état et l’effort) et WorkItemBoardSnapshot (effectue le suivi des positions de colonne de tableau). Étant donné que chaque entité contient une ligne par élément de travail par jour, ces tables augmentent rapidement. Utilisez des extensions d’agrégation OData pour filtrer par date et regrouper les résultats avant de retourner des données à un outil client.
Cet article montre comment générer des requêtes de tendance par plage de dates et par itération, à l’aide $apply de filter, groupbyet aggregate.
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.
Remarque
Les exemples présentés dans cet article 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}/
Conseil / Astuce
Vous pouvez utiliser l’IA pour vous aider à effectuer cette tâche plus loin dans cet article, ou voir Activer l’aide à l’IA avec Azure DevOps MCP Server pour commencer.
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. |
Interroger les données de tendance par plage de dates
Lorsque vous interrogez des tables d’instantanés, suivez deux règles :
- Filtrer par date : chaque table contient une ligne par élément de travail par jour. Par conséquent, une requête non filtrée retourne un jeu de résultats très volumineux.
- Regrouper par date : si vous omettez le regroupement de dates, la réponse inclut un avertissement.
La requête suivante retourne un nombre quotidien de bogues par état pour mars 2016 :
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
Returns:
{
"value": [
{ "DateValue": "2016-03-01T00:00:00-08:00", "State": "Active", "Count": 2666 },
{ "DateValue": "2016-03-01T00:00:00-08:00", "State": "Closed", "Count": 51408 }
]
}
Cette requête retourne un maximum de 93 lignes, correspondant à 31 jours multipliés par le nombre d'états de bogue (Actif, Résolu, Fermé), quel que soit le nombre d'éléments de travail.
Interroger les données de tendance par itération
Au lieu de coder en dur les dates, filtrez par itération et référencez ses dates de début et de fin afin que la plage de dates s’ajuste automatiquement. La Iteration/EndDate eq null vérification gère les itérations qui n’ont pas encore de date de fin.
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
Returns:
{
"value": [
{ "DateValue": "2016-04-04T00:00:00-07:00", "State": "Active", "Count": 320 },
{ "DateValue": "2016-04-04T00:00:00-07:00", "State": "Closed", "Count": 38 }
]
}
Remarque
Si votre requête sur les tables d’instantanés n’inclut pas $apply ou $select, la réponse renvoie un avertissement. Utilisez toujours l’agrégation avec des ensembles d'entités instantanées.
Utiliser l’IA pour créer des requêtes de tendance
Si vous configurez le serveur MCP Azure DevOps, vous pouvez utiliser des assistants IA pour vous aider à construire et à dépanner les requêtes de tendance sur les ensembles d'entités d’instantanés.
Exemples d’invites
| Tâche | Exemple d’invite |
|---|---|
| Tendance des bogues par plage de dates | Write an OData trend query that shows the daily bug count by state over the last 30 days in <ProjectName>. |
| Aperçu sprint | Create an OData query against WorkItemSnapshot that shows work item counts grouped by date for the current sprint in <ProjectName>. |
| Filtrer par itération | Generate an OData trend query that uses the iteration start and end dates from <IterationName> to show story point burndown in <ProjectName>. |
| Tendance des colonnes du tableau | Write an OData query against WorkItemBoardSnapshot to track work items by board column over the past two weeks in <ProjectName> in the <OrganizationName> organization. |
| Optimiser les performances | My WorkItemSnapshot trend query for <ProjectName> is timing out. Suggest specific date filters and aggregation to reduce the row count without losing the key metrics. |
| Comparer les sprints | Create an OData trend query that compares bug counts between <SprintName> and the previous sprint in <ProjectName> in the <OrganizationName> organization. |
| Tendance de travail restante | Write an OData trend query that shows the daily sum of remaining work grouped by Area Path for the current iteration in <ProjectName>. |
| Détecter les modifications d’état | Create an OData snapshot query that tracks how many work items moved from Active to Resolved each day over the past <NumberOfDays> days in <ProjectName>. |
| Analyse des modifications d’étendue | Generate an OData trend query that shows the daily count of user stories added or removed from <SprintName> by comparing WorkItemSnapshot data in <ProjectName>. |
Conseil / Astuce
Si vous utilisez Visual Studio Code, le mode agent est particulièrement utile pour effectuer une itération sur les requêtes de tendance : affinement des plages de dates, résolution des problèmes $apply de syntaxe et validation des résultats des instantanés.