Partage via


Métadonnées OData d’analyse

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

Comprendre les métadonnées associées au modèle d’entité pour Analytics est un prérequis pour interroger par programmation le modèle de données pour Analytics. Les métadonnées OData sont une description lisible par l’ordinateur du modèle d’entité conçu pour permettre la consommation du client.

Remarque

« OData (Open Data Protocol) est un protocole d’accès aux données basé sur des protocoles de base tels que HTTP et des méthodologies couramment acceptées comme REST pour le web. Il existe différents types de bibliothèques et d’outils permettant de consommer des services OData. » - Didacticiel de base de l’organisation OData.

Cet article porte sur les points suivants :

  • Interroger les métadonnées sur un projet spécifique
  • Interroger les métadonnées sur une organisation
  • Identifier les clés, les propriétés et les propriétés de navigation associées à une entité
  • Identifier les fonctionnalités du point de terminaison OData Analytics

Pour obtenir des descriptions détaillées de tous les éléments OData, consultez le modèle OData. Pour plus d’informations sur l’interrogation des métadonnées, consultez Construire des requêtes OData pour Analytics.

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.

Jeux d’entités et types d’entités

Les entités sont les types d’identité principaux dans un modèle de données. Les jeux d’entités sont des collections nommées d’entités. Par exemple, Projects il s’agit d’un jeu d’entités contenant des Project entités. Une entité peut être membre d’au plus un jeu d’entités.

EntitySets et EntityTypes définissez chacune des entités du modèle Analytics, y compris les propriétés et les relations. Les types d’entités définissent les propriétés et relations nommées d’une entité. Les types d’entités peuvent dériver par héritage unique d’autres types d’entités. La clé d’un type d’entité est formée à partir d’un sous-ensemble de ses propriétés primitives.

L’exemple suivant montre les métadonnées associées au type d’entité Project .

<EntityType Name="Project">
  <Key>
    <PropertyRef Name="ProjectSK"/>
  </Key>
  <Property Name="ProjectSK" Type="Edm.Guid" Nullable="false"/>
  <Property Name="ProjectId" Type="Edm.Guid" Nullable="false">
    <Annotation Term="Display.DisplayName" String="Project Id"/>
  </Property>
  <Property Name="ProjectName" Type="Edm.String" Nullable="false">
    <Annotation Term="Display.DisplayName" String="Project Name"/>
  </Property>
  <Property Name="AnalyticsUpdatedDate" Type="Edm.DateTimeOffset"/>
  <Property Name="ProjectVisibility" Type="Microsoft.VisualStudio.Services.Analytics.Model.ProjectVisibility">
    <Annotation Term="Display.DisplayName" String="Project Visibility"/>
  </Property>
  <NavigationProperty Name="Areas" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.Area)"/>
  <NavigationProperty Name="Iterations" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.Iteration)"/>
  <NavigationProperty Name="Teams" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.Team)"/>
</EntityType>

Clés

Keys définissez les propriétés d’entité disponibles pour une utilisation en tant que propriété navigationnelle.

<Key>
   <PropertyRef Name="ProjectSK"/>
</Key>

Propriétés

Ensemble des propriétés d’entité disponibles pour la requête. Les annotations représentent d’autres détails sur une propriété donnée.

Toute propriété d’Analytics qui doit être visible pour les utilisateurs finaux est annotée avec un DisplayName.

<Property Name="ProjectSK" Nullable="false" Type="Edm.Guid"/>
<Property Name="ProjectId" Nullable="false" Type="Edm.Guid">
   <Annotation String="Project Id" Term="Display.DisplayName"/>
</Property>
<Property Name="ProjectName" Nullable="false" Type="Edm.String">
   <Annotation String="Project Name" Term="Display.DisplayName"/>
</Property>

ReferenceName est une autre annotation courante utilisée pour définir l’identificateur système d’une propriété spécifique.

<Property Name="State" Type="Edm.String">
   <Annotation String="State" Term="Display.DisplayName"/>
   <Annotation String="System.State" Term="Ref.ReferenceName"/>
</Property>

L’interrogation d’une entité individuelle est utile. Finalement, vous souhaiterez probablement filtrer ou développer les détails d’une autre entité. Pour ce faire, vous devez comprendre comment utiliser les propriétés de navigation du modèle d’entité.

Un NavigationProperty type de collection représente une relation plusieurs-à-plusieurs dans le modèle.

<NavigationProperty Name="Teams" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.Team)"/>

ReferentialConstraints lier les propriétés de navigation à une clé spécifique d’une entité, représentant une relation plusieurs-à-un dans le modèle.

<NavigationProperty Name="Project" Type="Microsoft.VisualStudio.Services.Analytics.Model.Project">
   <ReferentialConstraint ReferencedProperty="ProjectSK" Property="ProjectSK"/>
</NavigationProperty>

Conteneurs (fonctionnalités OData)

EntitySets

Les entités sont les types d’identité principaux dans un modèle de données. Les jeux d’entités sont des collections nommées d’entités. Par exemple, WorkItems et WorkItemRevisions se trouvent EntitySets dans le EntityContainer nom Container. Une entité peut être membre d’au plus un jeu d’entités. Les jeux d’entités fournissent les points d’entrée principaux dans le modèle de données et représentent une collection d’entités et de liaisons de propriétés navigationnelles associées et annotations.

La syntaxe suivante indique le modèle de données du jeu d’entités Projects . Pour obtenir une description de chaque jeu d’entités, consultez Le modèle de données pour Analytics.

<EntitySet Name="Projects" EntityType="Microsoft.VisualStudio.Services.Analytics.Model.Project">
  <NavigationPropertyBinding Path="Areas" Target="Areas"/>
  <NavigationPropertyBinding Path="Iterations" Target="Iterations"/>
  <NavigationPropertyBinding Path="Teams" Target="Teams"/>
  <Annotation Term="Org.OData.Display.V1.DisplayName" String="Projects"/>
</EntitySet>

Fonctionnalités

Les fonctionnalités définissent l’ensemble des fonctions comprises par le point de terminaison OData Analytics.

<Annotation Term="Org.OData.Capabilities.V1.FilterFunctions">
   <Collection>
      <String>contains</String>
      <String>endswith</String>
      <String>startswith</String>
      <String>length</String>
      <String>indexof</String>
      <String>substring</String>
      <String>tolower</String>
      <String>toupper</String>
      <String>trim</String>
      <String>concat</String>
      <String>year</String>
      <String>month</String>
      <String>day</String>
      <String>hour</String>
      <String>minute</String>
      <String>second</String>
      <String>fractionalseconds</String>
      <String>round</String>
      <String>floor</String>
      <String>ceiling</String>
      <String>date</String>
      <String>time</String>
      <String>isof</String>
      <String>cast</String>
   </Collection>
</Annotation>

Agrégations

Les annotations d’agrégation définissent l’ensemble des transformations comprises par le point de terminaison OData Analytics.

<Annotation Term="Org.OData.Aggregation.V1.ApplySupported">
   <Record>
      <PropertyValue Property="Transformations">
         <Collection>
            <String>aggregate</String>
            <String>filter</String>
            <String>groupby</String>
            <String>compute</String>
            <String>expand</String>
         </Collection>
      </PropertyValue>
      <PropertyValue Property="CustomAggregationMethods ">
         <Collection>
           <String>ax.ApproxCountDistinct</String>
           <String>ax.StandardDeviation</String>
           <String>ax.StandardDeviationP</String>
           <String>ax.Variance</String>
           <String>ax.VarianceP</String>
         </Collection>
      </PropertyValue>
   </Record>
</Annotation>
<Annotation Term="Org.OData.Capabilities.V1.BatchSupportType" Bool="true"/>
<Annotation Term="Org.OData.Capabilities.V1.BatchSupportType">
   <Record>
      <PropertyValue Property="Supported" Bool="true"/>
      <PropertyValue Property="ContinueOnErrorSupported" Bool="false"/>
      <PropertyValue Property="ReferencesInRequestBodiesSupported" Bool="false"/>
      <PropertyValue Property="ReferencesAcrossChangeSetsSupported" Bool="false"/>
      <PropertyValue Property="EtagReferencesSupported" Bool="false"/>
   </Record>
</Annotation>

Étapes suivantes