支持的 OData 函数和子句

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

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

注意

分析服务在所有 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 版本控制

支持的子句

  • $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 参数值的 day 组件。
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