支持的 OData 函数和子句

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

本文介绍 Analytics 如何支持多个 OData 函数。 还列出了不支持的函数。 OData (开放式数据协议) 是 ISO/IEC 批准的 OASIS 标准,用于定义生成和使用 REST API 的最佳做法。 若要了解详细信息,请参阅 OData 文档

注意

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

注意

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

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

注意

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

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

支持的子句

  • $apply
  • $compute
  • $count
  • $expand
  • $filter
  • $orderby
  • $select
  • $skip
  • $top

在查询中使用多个子句时,将按上面指定的顺序应用这些子句。 忽略查询字符串中子句的顺序。 例如,在以下查询中,首先对工作项进行分组和聚合。 接下来,筛选组。 之后,对筛选的组进行排序。 最后,返回前五条记录。 该查询返回使用至少 100 次的前五个工作项类型。

WorkItems?$filter=Count ge 100&$apply=groupby((WorkItemType), aggregate($count as Count))&$orderby=Count&top=5

聚合扩展支持

它需要一系列集转换,用正斜杠分隔来表示它们是连续应用的。 每个转换的结果是下一个转换的输入。 例如,在以下查询中,将筛选工作项,然后按工作项类型和状态分组。 接下来,对组进行筛选并再次分组。

注意

OData 聚合扩展相对较新,某些客户端工具尚未完全支持。

Workitems?$apply=filter(State ne 'Closed')/groupby((WorkItemType, State), aggregate($count as Count))/filter(Count gt 100)/groupby((State),aggregate(Count with max as MaxCount))  

支持以下转换:

转换 说明
aggregate 允许使用以下方法 $count之一进行聚合:、 averagemaxminsum
compute 允许添加计算属性
expand 允许按指定属性进行扩展
filter 允许筛选输入集。 支持与 相同的表达式 $filter
groupby 允许按属性分组

有关详细信息,请参阅 聚合工作跟踪数据

支持的函数

规范函数 说明
cast 返回当前实例强制转换为指定类型的表达式。
contains 如果第二个参数字符串值是第一个参数字符串值的子字符串,则返回 true,否则返回 false。
endswith 如果第一个参数字符串值以第二个参数字符串值结尾,则返回 true,否则返回 false。
startswith 如果第一个参数字符串值以第二个参数字符串值开头,则返回 true,否则返回 false。
length 返回参数值中的字符数。
indexof 返回第一个参数值中第一个参数值的第一个匹配项的从零开始的字符位置;如果第二个参数值未出现在第一个参数值中,则返回 -1。
substring 返回第一个参数字符串值的子字符串,从第 N 个字符开始,到最后一个字符 (其中 N 是) 的第二个参数整数值。
tolower 返回所有大写字符转换为小写的输入参数字符串值。
toupper 返回所有小写字符转换为大写的输入参数字符串值。
trim 返回包含所有前导和尾随空格字符的输入参数字符串值。
year 返回 Date 或 DateTimeOffset 参数值的年份部分。
month 返回 Date 或 DateTimeOffset 参数值的月份部分。
day 返回 Date 或 DateTimeOffset 参数值的日期部分。
date 返回 DateTimeOffset 参数值的日期部分。
time 返回 DateTimeOffset 参数值的时间部分。
totaloffsetminutes 返回 DateTimeOffset 参数值的时区偏移量部分中的有符号分钟数。
now 返回当前时间点 (日期和时间,时区) 作为 DateTimeOffset 值。
maxdatetime 以 DateTimeOffset 值的形式返回最新的可能时间点。
mindatetime 以 DateTimeOffset 值的形式返回最早的时间点。

OData 函数在 子句中使用 $filter ,但在子句中使用 $select 的方式不如在 SQL 语句中使用。

例如,可以指定:

/WorkItems?$filter=toupper(Title) eq 'HELP' 

但是,不能输入以下字符串:

/WorkItems?$select=WorkItemId,State,toupper(Title)

不支持的功能

  • bottomcount
  • bottomsum
  • bottompercent
  • $crossjoin
  • concat
  • countdistinct
  • from
  • isdefined
  • $rollup
  • $search
  • topcount
  • topsum
  • toppercent