Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
了解与 Analytics 实体模型关联的元数据是以编程方式查询 Analytics 数据模型的先决条件。 OData 元数据是实体模型的计算机可读说明,旨在启用客户端使用。
注意
“开放数据协议(OData)是基于 HTTP 等核心协议构建的数据访问协议,也是常见的 Web REST 等接受的方法。 可以使用各种库和工具来使用 OData 服务。 - OData 组织基本教程。
在本文中,你将学习如何:
- 查询特定项目的元数据
- 查询组织上的元数据
- 标识与实体关联的键、属性和导航属性
- 确定 Analytics OData 终结点的功能
有关所有 OData 元素的详细说明,请参阅 OData 模型。 有关查询元数据的信息,请参阅 为 Analytics 构造 OData 查询。
注意
Azure DevOps Services 中所有服务的生产中会自动启用并支持 Analytics 服务。 Power BI 集成 和对 Analytics 服务的 OData 数据源 的访问权限已普遍可用。 建议使用 Analytics OData 数据源并提供反馈。
可用数据依赖于版本。 OData API 的最新支持版本是 v2.0,最新的预览版本是 v4.0-preview。 有关详细信息,请参阅 OData API 版本控制。
注意
Azure DevOps Server 2020 及更高版本的所有新项目集合都会自动安装并支持 Analytics 服务。 Power BI 集成 和对 Analytics 服务的 OData 数据源 的访问权限已普遍可用。 建议使用 Analytics OData 数据源并提供反馈。 如果从 Azure DevOps Server 2019 升级,可以在升级期间安装 Analytics 服务。
可用数据依赖于版本。 OData API 的最新支持版本是 v2.0,最新的预览版本是 v4.0-preview。 有关详细信息,请参阅 OData API 版本控制。
先决条件
| 类别 | 要求 |
|---|---|
| 访问级别 |
-
Project 成员。 - 至少 基本 访问权限。 |
| 权限 | 默认情况下,项目成员有权查询 Analytics 和创建视图。 有关服务和功能启用和常规数据跟踪活动的其他先决条件的详细信息,请参阅 访问 Analytics的权限和先决条件。 |
实体集和实体类型
实体是数据模型中的核心标识类型。 实体集是实体的命名集合。 例如, Projects 是包含实体的 Project 实体集。 实体最多可以是一个实体集的成员。
EntitySets 并 EntityTypes 定义分析模型中的每个实体,包括属性和关系。 实体类型定义实体的命名属性和关系。 实体类型可能派生自其他实体类型的单个继承。 实体类型的键由其基元属性的子集构成。
以下示例显示了与 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>
“键”
Keys 定义可用作导航属性的实体属性。
<Key>
<PropertyRef Name="ProjectSK"/>
</Key>
属性
可用于查询的实体属性集。 批注表示有关给定属性的其他详细信息。
应对最终用户可见的 Analytics 的任何属性都带有注释 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 是用于定义特定属性的系统标识符的另一个常见注释。
<Property Name="State" Type="Edm.String">
<Annotation String="State" Term="Display.DisplayName"/>
<Annotation String="System.State" Term="Ref.ReferenceName"/>
</Property>
导航属性
查询单个实体非常有用。 最终,你可能想要筛选或展开另一个实体的详细信息。 为此,需要了解如何使用 实体模型的导航属性 。
具有集合类型的集合 NavigationProperty 类型表示模型中的多对多关系。
<NavigationProperty Name="Teams" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.Team)"/>
ReferentialConstraints 将导航属性绑定到实体的特定键,表示模型中的多对一关系。
<NavigationProperty Name="Project" Type="Microsoft.VisualStudio.Services.Analytics.Model.Project">
<ReferentialConstraint ReferencedProperty="ProjectSK" Property="ProjectSK"/>
</NavigationProperty>
容器(OData 功能)
EntitySets
实体是数据模型中的核心标识类型。 实体集是实体的命名集合。 例如,WorkItems并且WorkItemRevisions位于EntitySets命名EntityContainer的Container中。 实体最多可以是一个实体集的成员。 实体集提供数据模型中的主要入口点,并表示实体集合以及关联的导航属性绑定和注释。
以下语法指示 Projects 实体集数据模型。 有关每个实体集的说明,请参阅 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>
功能
功能定义 Analytics OData 终结点理解的 函数 集。
<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>
聚合
聚合注释定义 Analytics OData 终结点理解的 转换 集。
<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>