支持的 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 之一、、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
,但不在子句中使用 $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