Запросы к таблицам и сущностям
При запросе данных таблиц и сущностей в службу таблиц требуется тщательно формировать URI запроса. В следующих разделах описаны параметры запроса и демонстрируются некоторые общие сценарии.
Основной синтаксис запроса
Чтобы вернуть все таблицы в заданной учетной записи хранения, выполните операцию с ресурсом GET
Таблицы, как описано в разделе Операция "Запрос таблиц ". Базовый URI для адресации ресурса таблиц выглядит следующим образом:
https://myaccount.table.core.windows.net/Tables
Чтобы получить одну именованную таблицу, укажите эту таблицу следующим образом:
https://myaccount.table.core.windows.net/Tables('MyTable')
Для получения всех сущностей в таблице укажите имя таблицы в URI без ресурса таблиц.
https://myaccount.table.core.windows.net/MyTable()
Результаты запроса сортируются по PartitionKey
, затем по RowKey
. Упорядочение результатов в любом другом порядке в настоящее время не поддерживается.
Можно указать дополнительные варианты, чтобы ограничить получаемый набор таблиц и сущностей, как описано в разделе Поддерживаемые параметры запроса.
Примечание
Количество сущностей, возвращаемых для одного запроса, может быть ограниченно, если запрос превышает максимальное количество сущностей, превышает интервал времени ожидания или пересекает границу секции. Дополнительные сведения см. в разделе Время ожидания запроса и разбиение на страницы.
Поддерживаемые параметры запроса
Служба таблиц поддерживает следующие параметры запроса, которые соответствуют спецификации протокола OData. Эти параметры можно использовать для ограничения набора сущностей, таблиц и свойств сущностей, возвращаемых запросом.
Системный параметр запроса | Описание |
---|---|
$filter |
Возвращает только таблицы и сущности, удовлетворяющие указанному фильтру. Обратите внимание, что в строке $filter должно быть не более 15 дискретных сравнений. |
$top |
Возвращает только верхние n таблиц или сущностей из набора. |
$select |
Возвращает заданные свойства сущности из набора. Этот параметр запроса поддерживается только для запросов в версии 2011-08-18 или более поздней. Дополнительные сведения см. в статье Написание запросов LINQ к службе таблиц. |
Примечание
Запрос, возвращающий больше максимального значения по умолчанию или указанного максимального числа результатов, возвращает маркер продолжения для выполнения разбиения на страницы. При выполнении последующих запросов, включающих маркеры продолжения, обязательно передайте исходный URI в запросе. Например, если вы указали $filter
параметр запроса , $select
или $top
в составе исходного запроса, необходимо включить этот параметр в последующие запросы. В противном случае последующие запросы могут возвращать непредвиденные результаты. Дополнительные сведения см. в разделе Время ожидания запроса и разбиение на страницы .
Обратите внимание, что $top
параметр запроса в случае разбиения результатов на страницы указывает максимальное количество результатов на странице, а не максимальное количество результатов во всем наборе ответов.
Дополнительные параметры запроса, определенные в OData, службой таблиц не поддерживаются.
Поддерживаемые операторы сравнения
В предложении $filter
можно использовать операторы сравнения для указания условий фильтрации результатов запроса.
Для всех типов свойств поддерживаются следующие операторы сравнения.
Оператор | Выражение URI |
---|---|
Equal |
eq |
GreaterThan |
gt |
GreaterThanOrEqual |
ge |
LessThan |
lt |
LessThanOrEqual |
le |
NotEqual |
ne |
Дополнительно для логических свойств поддерживаются следующие операторы.
Оператор | Выражение URI |
---|---|
And |
and |
Not |
not |
Or |
or |
Дополнительные сведения о синтаксисе фильтра см. в разделе Спецификация протокола OData.
Кодирование строки запроса
Следующие символы необходимо кодировать при их использовании в строке запроса.
- Косая черта (/)
- Вопросительный знак (?)
- Двоеточие (:)
- Символ "At" (@)
- Амперсанд (&)
- Знак равенства (=)
- Знак "плюс" (+)
- Запятая (,)
- Знак доллара ($)
одинарная кавычка (');
Одинарные кавычки в строках запроса должны быть представлены в виде двух последовательных одинарных кавычек (''
). Например, "o'clock" будет иметь значение:
o''clock
Примеры выражений запроса
В следующих примерах показано, как построить URI запроса для некоторых типичных запросов сущностей с помощью синтаксиса REST. Те же запросы можно записать с помощью синтаксиса LINQ. Дополнительные сведения см. в статье Написание запросов LINQ к службе таблиц.
Обратите внимание, что параметры $top
и $filter
можно использовать для фильтрации имен таблиц, используя синтаксис фильтрации по свойствам типа String
.
Получение n верхних сущностей
Чтобы получить n
верхних сущностей для любого запроса, укажите параметр $top
. В следующем примере запрашиваются 10 верхних сущностей из таблицы с именем Customers.
https://myaccount.table.core.windows.net/Customers()?$top=10
Фильтрация по свойствам PartitionKey и RowKey
Поскольку свойства PartitionKey
и RowKey
составляют первичный ключ сущности, то для идентификации сущности можно использовать следующий специальный синтаксис:
https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
В качестве альтернативы вы можете указать эти свойства как часть параметра $filter
, как показано в следующем разделе.
Обратите внимание, что в именах ключевых свойств и значениях констант учитывается регистр. Свойства PartitionKey
и RowKey
имеют тип String
.
Построение строк фильтра
При построении строки фильтра помните о следующих правилах:
Используйте логические операторы, определенные спецификацией протокола OData , для сравнения свойства со значением. Обратите внимание, что нельзя сравнивать свойство и динамическое значение. Одна из частей выражения должна быть константой.
Имя свойства, оператор и значение константы должны быть разделены пробелами, закодированными в формате URL-адреса. Пробелы кодируются в формате URL-адреса как
%20
.Во всех частях строки фильтра учитывается регистр.
Для получения допустимых результатов фильтра значения константы и свойства должны иметь одинаковый тип данных. Дополнительные сведения о поддерживаемых типах свойств см. в статье Общие сведения о модели данных службы таблиц.
Примечание
Обязательно проверьте, было ли свойство явно типизировано, прежде чем работать с ним как со строкой. Если свойство явно типизировано, его тип обозначается в ответе при получении сущности. Если свойству не был задан тип, то оно будет иметь тип String
и тип не будет обозначен в ответе.
Фильтрация по строковым свойствам
При фильтрации по строковым свойствам заключайте строковую константу в одинарные кавычки.
В следующем примере выполняется фильтрация по свойствам PartitionKey
и RowKey
. В строку запроса также могут быть добавлены дополнительные неключевые свойства.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
В следующем примере выполняется фильтрация по свойствам FirstName
и LastName
.
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'
Обратите внимание, что служба таблиц не поддерживает запросы с символами-шаблонами. Тем не менее можно выполнять фильтрацию по префиксу, используя операторы сравнения и нужный префикс. Следующий пример возвращает сущности, у которых свойство LastName
начинается с буквы А:
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'
Фильтрация по числовым свойствам
Для фильтрации по целому числу или числу с плавающей запятой укажите в URI константу без кавычек.
Следующий пример строки позволяет получить все сущности со свойством Age
, имеющим значение больше 30:
https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030
Следующий пример строки возвращает все сущности со свойством AmountDue
, значение которого меньше или равно 100.25:
https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20
Фильтрация по логическим свойствам
Для фильтрации по логическим значениям указывайте true
и false
без кавычек.
Следующий пример возвращает все сущности, у которых свойство IsActive
имеет значение true
:
https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true
Фильтрация по свойствам DateTime
Для фильтрации по значению DateTime
укажите в URI ключевое слово datetime
, за которым введите константу даты или времени в одинарных кавычках. Константа даты и времени должна иметь комбинированный формат UTC, как описано в разделе Форматирование значений даты и времени.
Следующий пример возвращает сущности, у которых свойство CustomerSince
равно 10 июля 2008 года:
https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'
Фильтрация по свойствам GUID
Для фильтрации по значению GUID укажите в URI ключевое слово guid
, за которым введите константу GUID в одинарных кавычках.
Следующий пример возвращает сущности, у которых свойство GuidValue
равно:
https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'
См. также:
Основные понятия службы таблиц
Основные сведения о модели данных службы таблиц
Адресация ресурсов службы таблиц
Время ожидания запроса и разбивка на страницы
Написание запросов LINQ в службе таблиц