查询趋势数据

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

检查数据趋势和进行周期内比较是报告和数据分析的重要方面。 Analytics 支持这些功能。

注意

分析服务在所有 Azure DevOps Services 的生产中自动启用和支持。 对 Analytics Service 的 OData 源的 Power BI 集成和访问已正式发布。 我们鼓励你使用它并提供反馈。 可用数据依赖于版本。 支持的最新版本是 v2.0,最新的预览版本是 v4.0-preview。 有关详细信息,请参阅 OData API 版本控制

注意

Azure DevOps Server 2020 及更高版本的所有新项目集合都会自动安装并支持 Analytics 服务。 对 Analytics Service 的 OData 源的 Power BI 集成和访问已正式发布。 我们鼓励你使用它并提供反馈。 如果从 Azure DevOps Server 2019 升级,则可以在升级期间安装 Analytics 服务。

可用数据依赖于版本。 支持的最新版本是 v2.0,最新的预览版本是 v4.0-preview。 有关详细信息,请参阅 OData API 版本控制

注意

Analytics 服务为 Azure DevOps Server 2019 提供预览版。 可以为 项目集合启用或安装它Power BI 集成和分析服务的 OData 源的访问权限处于预览状态。 我们鼓励你使用它并提供反馈。

可用数据依赖于版本。 支持的最新版本是 v2.0,最新的预览版本是 v4.0-preview。 有关详细信息,请参阅 OData API 版本控制

趋势数据在 WorkItemSnapshot 和 WorkItemBoardSnapshot 实体集中公开。 它们被构造为每个工作项,从创建到今天为止,每天都存在。 对于一年前只创建一个工作项的组织,此实体中有 365 行。 对于大型项目,这些实体将不切实际地与客户端工具一起使用。

什么是解决方案? 使用聚合扩展

在本文中,你将了解:

  • 如何构造趋势数据的基本查询

使用 OData 聚合扩展,可以从 Azure DevOps 返回有利于报告的聚合数据。 例如,可以显示 3 月的 bug 趋势。 Bug 趋势是管理任何项目的常见和关键部分,因此你可以将其立即用于良好使用。

注意

本文档中显示的示例基于 Azure DevOps Services URL,需要在 Azure DevOps Server URL 中替换。

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

构造趋势数据的基本查询

需要满足一些基本要求才能有效地查询 WorkItemSnapshot 表:

  • 按日期筛选数据。
  • 聚合应按至少日期进行分组。 否则,响应将发出警告。

创建 bug 趋势报表的查询如以下示例所示:

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

它返回类似于以下示例的结果:

{
  "@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
    }
  ]
}

此查询最多 31 * (number of bug states)将生成 。 默认 bug 有三种状态:

  • 活动
  • 已解决
  • 已关闭

大多数情况下,无论实际存在多少条记录,此查询都将返回 93 行。 它提供更紧凑的形式返回数据。

让我们看一下此示例的变体。 你希望看到迭代或以一次迭代开头的发布以及以另一个迭代结尾的 bug 趋势。

若要构造该查询,请执行以下示例:

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

它返回类似于以下示例的结果:

{
  "@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
    }
  ]
}

在此查询中,有两个关键差异。 我们添加了一个筛选器子句,用于将数据筛选到特定迭代,现在将日期与迭代开始和结束日期进行比较,而不是硬编码日期。

注意

如果在快照表中的查询中未使用聚合,则会看到警告“指定的查询不包含建议用于所有查询的$select或$apply子句”。响应中。