Requêtes dans l’étendue du projet et de l’organisation
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
À l’aide d’Analytics pour Azure DevOps, vous pouvez construire des requêtes qui sont étendues à un projet ou à une organisation ou à une collection. Vous pouvez exécuter ces requêtes directement dans votre navigateur ou dans Power BI.
Les requêtes d’étendue de projet permettent de répondre à des questions sur un projet unique, tandis que les requêtes délimitées par l’organisation et les regroupements vous permettent de répondre à des questions qui dépassent les limites du projet. Les requêtes délimitées par l’organisation et le regroupement nécessitent des autorisations utilisateur plus larges ou des restrictions d’étendue minutieuses pour s’assurer que votre requête n’est pas bloquée en raison d’un manque d’autorisations.
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.
Prérequis
- Accès : être membre d’un projet avec 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.
Important
Si vous n’avez pas accès à tous les projets d’une organisation, il est recommandé d’appliquer un filtre de projet à toutes vos requêtes. Lorsque vous extrayez des données dans des outils clients tels que Power BI ou Excel, l’utilisation de la syntaxe du chemin du projet est la meilleure façon de vous assurer que toutes vos données sont limitées par le projet donné. Nous vous recommandons d’utiliser des requêtes délimitées à l’organisation ou de collection uniquement lorsque vous devez créer un rapport sur deux projets ou plus.
Requêtes délimitées à un projet
Vous construisez une requête en entrant l’URL OData dans un navigateur web pris en charge.
L’URL de base d’une requête OData au niveau du projet est comme indiqué dans la syntaxe suivante.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/
Dans les exemples fournis, remplacez et {ProjectName}
remplacez {OrganizationName}
vos noms de votre organisation et de votre projet que vous souhaitez interroger.
Remarque
Les autres exemples fournis dans cet article sont basés sur une URL Azure DevOps Services. Vous devrez remplacer l’URL de votre serveur Azure DevOps pour obtenir les exemples.
Retourner un nombre d’éléments de travail
Par exemple, la requête délimitée par le projet suivante retourne le nombre d’éléments de travail pour un projet spécifique.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems/$count
Par exemple, une requête du projet Fabrikam Fiber retourne un nombre d’éléments de travail de 7126. Les éléments de travail supprimés ne sont pas inclus dans le nombre.
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/WorkItems/$count
7126
Retourner des chemins d’accès à la zone de projet
De même, la chaîne de requête suivante retourne les zones d’un projet spécifique :
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/Areas
Il équivaut au filtre suivant sur une requête délimitée par l’organisation :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
$filter=Project/ProjectName eq '{ProjectName}'
Par exemple, une requête du projet Fabrikam Fiber retourne toutes les propriétés définies pour un chemin d’accès à la zone, car aucun opérateur n’est $select
appliqué dans la requête.
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/Areas
L’exemple suivant montre les données retournées pour un chemin d’accès à la zone unique.
ProjectSK "56af920d-393b-4236-9a07-24439ccaa85c"
AreaSK "26be05fd-e68a-4fcb-833f-497f6bee45f2"
AreaId "26be05fd-e68a-4fcb-833f-497f6bee45f2"
AreaName "Service Delivery"
Number 55373
AreaPath "Fabrikam Fiber\\Service Delivery"
AreaLevel1 "Fabrikam Fiber"
AreaLevel2 "Service Delivery"
AreaLevel3 null
AreaLevel4 null
AreaLevel5 null
AreaLevel6 null
AreaLevel7 null
AreaLevel8 null
AreaLevel9 null
AreaLevel10 null
AreaLevel11 null
AreaLevel12 null
AreaLevel13 null
AreaLevel14 null
Depth 1
Utilisation de l’option $expand
Lorsque vous utilisez une requête délimitée par un projet avec une $expand
option, vous n’êtes pas obligé de fournir d’autres filtres.
Par exemple, le filtre dans l’étendue du projet suivant :
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems?
$expand=Parent
est filtré automatiquement pour appliquer la sécurité :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=ProjectName eq '{ProjectName}'
&$expand=Parent($filter=ProjectName eq '{ProjectName}')
Requêtes délimitées à l’organisation
L’URL de base pour les requêtes au niveau de l’organisation est comme indiqué :
https://analytics.dev.azure.com/{OrganizationName}/_odata/v1.0
Lorsque vous utilisez une requête délimitée par l’organisation avec une $expand
option, vous devez fournir un autre filtre.
Par exemple, la requête d’étendue de l’organisation suivante, qui utilise un $expand
pour récupérer les enfants de tous les éléments de travail.
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=Project/ProjectName eq '{ProjectName}'
&$expand=Children
Il nécessite un autre filtre pour vérifier que les enfants sont limités au projet spécifié :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=Project/ProjectName eq '{ProjectName}'
&$expand=Children($filter=Project/ProjectName eq '{ProjectName}')
Retourner le parent de tous les éléments de travail
La requête suivante, qui utilise une $expand
option pour récupérer le parent de tous les éléments de travail.
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=Project/ProjectName eq '{ProjectName}'
&$expand=Parent
Il nécessite un autre filtre pour vérifier que le parent est limité au projet spécifié :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=Project/ProjectName eq '{ProjectName}'
&$expand=Parent($filter=Project/ProjectName eq '{ProjectName}')
Sans l’autre filtre, la requête échoue si le parent d’un élément de travail fait référence à des éléments de travail dans un projet auquel vous n’avez pas accès en lecture.
Restrictions de sécurité au niveau du projet
Analytics a quelques restrictions supplémentaires sur la syntaxe de requête liée à la sécurité au niveau du projet.
Les any
filtres ou all
les filtres s’appliquent à l’entité de base sur un $expand
. Pour les filtres basés sur un projet, nous ignorons explicitement le filtre lors de l’utilisation d’un $expand
:
Par exemple, dans la requête qui suit :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=ProjectName eq '{ProjectName}'
&$expand=Children($filter=Project/ProjectName eq '{ProjectName}')
Est interprété comme suit :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=ProjectName eq '{ProjectName}'
&$expand=Children
et échouera si vous n’avez pas accès à tous les projets.
Pour contourner la restriction, vous devez ajouter une expression supplémentaire dans les $filter
éléments suivants :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$filter=ProjectName eq '{ProjectName}' and Children/any(r: r/ProjectName eq '{ProjectName}')
&$expand=Children
L’utilisation $level
est prise en charge uniquement si vous avez accès à tous les projets de la collection ou lors de l’utilisation d’une requête délimitée par un projet :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$expand=Children($levels=2;$filter=ProjectName eq '{ProjectName}')
Analytics ne prend pas en charge les références inter-niveaux pour les projets à l’aide de la $it
clause. Par exemple, la requête suivante fait référence à l’alias de ProjectName
$it
l’élément de travail racine, qui n’est pas pris en charge :
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$expand=Links(
$expand=TargetWorkItem;
$filter=TargetWorkItem/Project/ProjectName eq $it/Project/ProjectName)