实体的筛选、排序和分页
警告
Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南。
本主题讨论在列出 Azure 媒体服务 v3 实体时可以使用的 OData 查询选项和分页支持。
注意事项
- 属于
Datetime
类型的实体的属性始终采用 UTC 格式。 - 在发送请求之前,应将查询字符串中的空格进行 URL 编码。
比较运算符
可以使用以下运算符将字段与常量值进行比较:
相等性运算符:
eq
:测试某个字段是否等于某个常量值。ne
:测试某个字段是否不等于某个常量值。
范围运算符:
gt
:测试某个字段是否大于某个常量值。lt
:测试某个字段是否小于某个常量值。ge
:测试某个字段是否大于或等于 某个常数值。le
:测试某个字段是否小于或等于某个常量值。
筛选器
使用 $filter
提供一个 OData 筛选器参数,以便只查找感兴趣的对象。
下面的 REST 示例根据资产的 alternateId
值进行筛选:
GET https://management.chinacloudapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaServices/amstestaccount/assets?api-version=2018-07-01&$filter=properties/alternateId%20eq%20'unique identifier'
下面的 C# 示例根据资产的创建日期进行筛选:
var odataQuery = new ODataQuery<Asset>("properties/created lt 2018-05-11T17:39:08.387Z");
var firstPage = await MediaServicesArmClient.Assets.ListAsync(CustomerResourceGroup, CustomerAccountName, odataQuery);
排序依据
使用 $orderby
按指定的参数对返回的对象排序。 例如:
GET https://management.chinacloudapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaServices/amstestaccount/assets?api-version=2018-07-01$orderby=properties/created%20gt%202018-05-11T17:39:08.387Z
若要按升序或降序对结果排序,请将用空格分隔的 asc
或 desc
追加到字段名称。 例如:$orderby properties/created desc
。
跳过令牌
如果查询响应包含许多项,则服务将返回一个 $skiptoken
(@odata.nextLink
) 值,用于获取下一页结果。 使用它可以逐页浏览整个结果集。
在媒体服务 v3 中,无法配置页面大小。 页面大小因实体类型而异。 请阅读以下各个部分,了解详细信息。
如果在对集合进行分页时创建或删除了实体,则返回的结果中会反映这些更改(如果这些更改位于集合中尚未下载的部分中)。
提示
始终使用 nextLink
来枚举集合,而不依赖于特定的页面大小。
nextLink
值存在的前提是有多个页面的实体。
考虑以下使用 $skiptoken
的示例。 请务必将 amstestaccount 替换为你的帐户名,并将 api-version 值设置为最新版本。
如果按如下所示请求列出资产:
GET https://management.chinacloudapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaServices/amstestaccount/assets?api-version=2018-07-01 HTTP/1.1
x-ms-client-request-id: dd57fe5d-f3be-4724-8553-4ceb1dbe5aab
Content-Type: application/json; charset=utf-8
将返回类似于以下内容的响应:
HTTP/1.1 200 OK
{
"value":[
{
"name":"Asset 0","id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaservices/amstestaccount/assets/Asset 0","type":"Microsoft.Media/mediaservices/assets","properties":{
"assetId":"00000000-0000-0000-0000-000000000000","created":"2018-12-11T22:12:44.98Z","lastModified":"2018-12-11T22:15:48.003Z","container":"asset-00000000-0000-0000-0000-0000000000000","storageAccountName":"amsacctname","storageEncryptionFormat":"None"
}
},
// lots more assets
{
"name":"Asset 517","id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaservices/amstestaccount/assets/Asset 517","type":"Microsoft.Media/mediaservices/assets","properties":{
"assetId":"00000000-0000-0000-0000-000000000000","created":"2018-12-11T22:14:08.473Z","lastModified":"2018-12-11T22:19:29.657Z","container":"asset-00000000-0000-0000-0000-000000000000","storageAccountName":"amsacctname","storageEncryptionFormat":"None"
}
}
],"@odata.nextLink":"https:// management.chinaclouapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaServices/amstestaccount/assets?api-version=2018-07-01&$skiptoken=Asset+517"
}
然后通过发送 Get 请求来请求显示下一页:
https://management.chinacloudapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mediaresources/providers/Microsoft.Media/mediaServices/amstestaccount/assets?api-version=2018-07-01&$skiptoken=Asset+517
以下 C# 示例显示如何枚举帐户中的所有流式处理定位符。
var firstPage = await MediaServicesArmClient.StreamingLocators.ListAsync(CustomerResourceGroup, CustomerAccountName);
var currentPage = firstPage;
while (currentPage.NextPageLink != null)
{
currentPage = await MediaServicesArmClient.StreamingLocators.ListNextAsync(currentPage.NextPageLink);
}
使用逻辑运算符来组合查询选项
媒体服务 v3 支持 OR 和 AND 逻辑运算符。
以下 REST 示例检查作业的状态:
https://management.chinacloudapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/qbtest/providers/Microsoft.Media/mediaServices/qbtest/transforms/AdaptiveStreaming/jobs?$filter=properties/state%20eq%20Microsoft.Media.JobState'Scheduled'%20or%20properties/state%20eq%20Microsoft.Media.JobState'Processing'&api-version=2018-07-01
可以在 C# 中构造同一查询,如下所示:
var odataQuery = new ODataQuery<Job>("properties/state eq Microsoft.Media.JobState'Scheduled' or properties/state eq Microsoft.Media.JobState'Processing'");
client.Jobs.List(config.ResourceGroup, config.AccountName, VideoAnalyzerTransformName, odataQuery);
实体的筛选和排序选项
下表显示了如何将筛选和排序选项应用于不同实体:
实体名称 | 属性名称 | 筛选器 | 订单 |
---|---|---|---|
资产 | name | eq 、gt 、lt 、ge 、le |
asc 和 desc |
properties/alternateId | eq |
||
properties/assetId | eq |
||
properties/created | eq 、gt 、lt |
asc 和 desc |
|
内容密钥策略 | name | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
properties/created | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
|
properties/description | eq 、ne 、ge 、le 、gt 、lt |
||
properties/lastModified | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
|
properties/policyId | eq 、ne |
||
作业 | name | eq |
asc 和 desc |
properties/state | eq 、ne |
||
properties/created | gt 、ge 、lt 、le |
asc 和 desc |
|
properties/lastModified | gt 、ge 、lt 、le |
asc 和 desc |
|
流式处理定位符 | name | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
properties/created | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
|
properties/endTime | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
|
流式处理策略 | name | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
properties/created | eq 、ne 、ge 、le 、gt 、lt |
asc 和 desc |
|
转换 | name | eq |
asc 和 desc |
properties/created | gt 、ge 、lt 、le |
asc 和 desc |
|
properties/lastModified | gt 、ge 、lt 、le |
asc 和 desc |