Фильтрация, упорядочение и разбиение сущностей на страницы

Логотип Служб мультимедиа версии 3


Предупреждение

Поддержка Служб мультимедиа 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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/resourceGroups/mediaresources/providers/Microsoft.Media/mediaServices/amstestaccount/assets?api-version=2018-07-01&$skiptoken=Asset+517"
}

Необходимо затем запросить следующую страницу, отправив запрос get.

https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/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

Справка и поддержка

Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов: