Фильтрация, упорядочение и разбиение сущностей на страницы
Предупреждение
Поддержка Служб мультимедиа Azure будет прекращена 30 июня 2024 г. Дополнительные сведения см. в руководстве по прекращению поддержки AMS.
В этом разделе обсуждаются параметры запроса OData и поддержка разбиения на страницы, доступные при перечислении сущностей Служб мультимедиа Azure версии 3.
Рекомендации
- Свойства сущностей типа
Datetime
всегда задаются в формате UTC. - Пробел в строке запроса должен быть закодирован в формате URL перед отправкой запроса.
Операторы сравнения
Для сравнения поля с постоянным значением можно использовать следующие операторы:
Операторы равенства:
-
eq
: Проверяет, является ли поле равным постоянному значению. -
ne
: Проверяет, является ли поле не равным постоянному значению.
Операторы диапазона:
-
gt
: Проверяет, больше ли поле постоянного значения. -
lt
: Проверяет, меньше ли поле постоянного значения. -
ge
: Проверяет, больше или равно поле постоянному значению. -
le
: Проверяет, меньше или равно поле постоянному значению.
Filter
Используйте $filter
, чтобы указать параметр фильтра OData для поиска только интересующих вас объектов.
В приведенных ниже примерах фильтрация выполняется по значению alternateId
ресурса.
GET https://management.azure.com/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.azure.com/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
), которое используется для получения следующей страницы результатов. Используйте его для постраничного просмотра всего набора результатов.
В Службах мультимедиа версии 3 нельзя настроить размер страницы. Размер страницы зависит от типа сущности. Дополнительные сведения см. в следующих разделах.
Если сущности создаются или удаляются во время разбиения коллекции на страницы, изменения отражаются в возвращаемых результатах (если эти изменения находятся в той части коллекции, которая не была скачана).
Совет
Всегда используйте nextLink
для перечисления коллекции, независимо от конкретного размера страницы.
Значение nextLink
будет представлено только в том случае, если есть более одной страницы сущностей.
Рассмотрим следующий пример, где используется $skiptoken
. Замените amstestaccount именем своей учетной записи и установите для значения api-version последнюю версию.
При запросе списка ресурсов следующим образом:
GET https://management.azure.com/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.azure.com/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.azure.com/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);
}
Использование логических операторов для объединения параметров запроса
Службы мультимедиа версии 3 поддерживают логические операторы OR и AND.
В следующем примере для проверки состояния задания выполняется проверка:
https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/qbtest/providers/Microsoft.Media/mediaServices/qbtest/transforms/VideoAnalyzerTransform/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);
Фильтрация и упорядочивание параметров сущностей
В следующей таблице показано, как можно применить параметры фильтрации и упорядочивания к разным сущностям.
Имя сущности | Имя свойства | Filter | Порядок |
---|---|---|---|
Ресурсы | 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 |
Справка и поддержка
Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов:
- ВОПРОСЫ И ОТВЕТЫ
-
Stack Overflow. Пометьте вопросы тегом
azure-media-services
. - @MSFTAzureMedia или используйте @AzureSupport , чтобы запросить поддержку.
- Отправьте запрос в службу поддержки через портал Azure.