Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
本文介绍 Analytics 如何支持多个 OData 函数。 还列出了不支持的函数。 OData(开放数据协议)是 ISO/IEC 批准的 OASIS 标准,用于定义生成和使用 REST API 的最佳做法。 有关详细信息,请参阅 OData 文档。
注意
Azure DevOps Services 中所有服务的生产中会自动启用并支持 Analytics 服务。 Power BI 集成和对 Analytics 服务 OData 源的访问已正式发布。 建议你使用 Analytics OData 源并提供反馈。
可用数据依赖于版本。 OData API 的最新支持版本是 v2.0,最新的预览版本是 v4.0-preview。 有关详细信息,请参阅 OData API 版本控制。
注意
Analytics 服务会在生产环境中为 Azure DevOps Server 2020 及更高版本的所有新项目集合自动安装并支持。 Power BI 集成和对 Analytics 服务 OData 源的访问已正式发布。 建议你使用 Analytics OData 源并提供反馈。 如果从 Azure DevOps Server 2019 升级,可以在升级期间安装 Analytics 服务。
可用数据依赖于版本。 OData API 的最新支持版本是 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、average、max、min、sum |
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 子句中,但不像在 SQL 语句中那样用在 $select 子句中。
例如,可以指定:
/WorkItems?$filter=toupper(Title) eq 'HELP'
但是,不能输入以下字符串:
/WorkItems?$select=WorkItemId,State,toupper(Title)
不支持的功能
bottomcountbottomsumbottompercent$crossjoinconcatcountdistinctfromisdefined$rollup$searchtopcounttopsumtoppercent