Consulta de tablas y entidades
Cuando se consultan tablas y entidades en Table service, es necesario poner especial cuidado al crear el URI de la solicitud. En las secciones siguientes se describen las opciones de consulta y se muestran algunos escenarios habituales.
Sintaxis de consulta básica
Para devolver todas las tablas de una cuenta de almacenamiento determinada, realice una GET
operación en el recurso Tables, como se describe en la operación Tablas de consulta. El URI básico para especificar la dirección del recurso Tablas es el siguiente:
https://myaccount.table.core.windows.net/Tables
Para devolver una única tabla con nombre, especifique la tabla del modo siguiente:
https://myaccount.table.core.windows.net/Tables('MyTable')
Para devolver todas las entidades de una tabla, especifique el nombre de la tabla en el URI, sin el recurso Tablas:
https://myaccount.table.core.windows.net/MyTable()
Los resultados de la consulta se ordenan por PartitionKey
y, a continuación, por RowKey
. Actualmente, no es posible ordenar los resultados de otra forma.
Puede especificar opciones adicionales para limitar el conjunto de tablas o de entidades devueltas, tal como se describe en la siguiente sección, Opciones de consulta admitidas.
Nota
El número de entidades devueltas para una única solicitud puede estar limitado si la consulta supera el número máximo de entidades, si supera el intervalo de tiempo de espera, o si cruza el límite de una partición. Para obtener más información, vea Tiempo de espera de consulta y paginación.
Opciones de consulta admitidas
Table service admite las siguientes opciones de consulta, que se ajustan a la especificación del protocolo OData. Puede utilizar estas opciones para limitar el conjunto de tablas, entidades o propiedades de entidad devueltas por una consulta.
Opción de consulta del sistema | Descripción |
---|---|
$filter |
Devuelve solo las tablas o las entidades que pasan el filtro especificado. Tenga en cuenta que no se permiten más de 15 comparaciones discretas en una cadena $filter . |
$top |
Devuelve solo las n primeras tablas o entidades del conjunto. |
$select |
Devuelve las propiedades deseadas de una entidad del conjunto. Esta opción de consulta solo se admite en solicitudes que usan la versión del 18/08/2011 o una versión más reciente. Para obtener más información, consulte Escritura de consultas LINQ en Table Service. |
Nota
Una solicitud que devuelve más del número máximo predeterminado o el número máximo especificado de resultados devuelve un token de continuación para realizar la paginación. Al realizar solicitudes posteriores que incluyan tokens de continuación, asegúrese de pasar el URI original en la solicitud. Por ejemplo, si ha especificado una $filter
opción de consulta , $select
o $top
como parte de la solicitud original, querrá incluir esa opción en las solicitudes posteriores. De lo contrario, las solicitudes posteriores pueden devolver resultados inesperados. Consulte Tiempo de espera y paginación de consultas para obtener información adicional.
Tenga en cuenta que la $top
opción de consulta en el caso de que los resultados se paginan especifican el número máximo de resultados por página, no el número máximo de resultados en todo el conjunto de respuestas.
No se admiten opciones de consulta adicionales definidas por OData por el servicio Tabla.
Operadores de comparación admitidos
En las cláusulas $filter
, puede utilizar operadores de comparación para especificar los criterios con los que se filtrarán los resultados de la consulta.
Para todos los tipos de propiedades, se admiten los operadores de comparación siguientes:
Operador | Expresión URI |
---|---|
Equal |
eq |
GreaterThan |
gt |
GreaterThanOrEqual |
ge |
LessThan |
lt |
LessThanOrEqual |
le |
NotEqual |
ne |
Además, las propiedades booleanas admiten los operadores siguientes:
Operador | Expresión URI |
---|---|
And |
and |
Not |
not |
Or |
or |
Para obtener más información sobre la sintaxis de filtro, consulte especificación del protocolo OData.
Codificar la cadena de consulta
Los siguientes caracteres deben estar codificados si se van a utilizar en una cadena de consulta:
- Barra diagonal (/)
- Signo de interrogación (?)
- Dos puntos (:)
- Arroba (@)
- Símbolo de y comercial (&)
- Signo igual (=)
- Signo más (+)
- Coma (,)
- Signo de dólar ($)
Comillas simples (')
Las comillas simples de las cadenas de consulta deben representarse como dos comillas simples consecutivas (''
). Por ejemplo, "o'clock" sería:
o''clock
Expresiones de consulta de ejemplo
En los ejemplos siguientes se muestra cómo crear el URI de solicitud para algunas consultas de entidad habituales usando la sintaxis REST. Las mismas consultas se pueden escribir utilizando la sintaxis LINQ. Para obtener más información, consulte Escritura de consultas LINQ en Table Service.
Tenga en cuenta que las opciones $top
y $filter
también se pueden utilizar para filtrar según los nombres de tabla utilizando la sintaxis mostrada para filtrar según las propiedades de tipo String
.
Devolver las n primeras entidades
Para devolver las n
primeras entidades en una consulta, especifique la opción de consulta $top
. El ejemplo siguiente devuelve las 10 primeras entidades de una tabla denominada Customers:
https://myaccount.table.core.windows.net/Customers()?$top=10
Filtrar según las propiedades PartitionKey y RowKey
Dado que las propiedades PartitionKey
y RowKey
forman la clave principal de una entidad, puede utilizar una sintaxis especial para identificar la entidad, tal como se indica a continuación:
https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
Como alternativa, puede especificar estas propiedades como parte de la opción $filter
, tal y como se muestra en la sección siguiente.
Tenga en cuenta que los nombres de propiedad de clave y los valores constantes distinguen entre mayúsculas y minúsculas. Las propiedades PartitionKey
y RowKey
son del tipo String
.
Crear cadenas de filtro
Al construir una cadena de filtro, tenga en cuenta estas reglas:
Use los operadores lógicos definidos por la especificación del protocolo OData para comparar una propiedad con un valor. Tenga en cuenta que no es posible comparar una propiedad con un valor dinámico; uno de los lados de la expresión debe ser una constante.
El nombre de la propiedad, el operador y el valor constante se deben separar por espacios con codificación URL. Para codificar un espacio con codificación URL se usa
%20
.Todas las partes de la cadena de filtro distinguen mayúsculas de minúsculas.
Para que el filtro devuelva resultados válidos, el valor constante debe ser del mismo tipo de datos que la propiedad. Para obtener más información sobre los tipos de propiedades que se admiten, consulte Introducción al modelo de datos del servicio Tabla.
Nota
Asegúrese de comprobar si una propiedad tiene un tipo explícito antes de dar por hecho que es de un tipo distinto de cadena. Si se ha escrito explícitamente una propiedad, el tipo se indica dentro de la respuesta cuando se devuelve la entidad. Si la propiedad no se ha escrito explícitamente, será del tipo String
, y el tipo no se indicará dentro de la respuesta cuando se devuelva la entidad.
Filtro por propiedades de cadena
Al filtrar según propiedades de cadena, agregue la constante de cadena entre comillas simples.
En el ejemplo siguiente se filtra según las propiedades PartitionKey
y RowKey
; también podrían agregarse otras propiedades que no son clave a la cadena de consulta.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
En el ejemplo siguiente se filtra según las propiedades FirstName
y LastName
:
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'
Observe que Table service no admite consultas con caracteres comodín. Sin embargo, puede realizar que los prefijos coincidan mediante el uso de operadores de comparación en el prefijo deseado. El ejemplo siguiente devuelve las entidades cuya propiedad LastName
comienza por la letra "A":
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'
Filtro por propiedades numéricas
Para filtrar según un número entero o un número de punto flotante, especifique en el URI el valor de la constante sin comillas.
Este ejemplo devuelve todas las entidades que tienen una propiedad Age
cuyo valor es superior a 30:
https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030
Este ejemplo devuelve todas las entidades que tienen una propiedad AmountDue
cuyo valor es menor o igual que 100.25:
https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20
Filtro por propiedades booleanas
Para filtrar según un valor booleano, especifique true
o false
sin comillas.
El ejemplo siguiente devuelve todas las entidades cuya propiedad IsActive
está establecida en true
:
https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true
Filtro por propiedades de fecha y hora
Para filtrar según un valor DateTime
, especifique en el URI la palabra clave datetime
seguida de la constante de fecha y hora entre comillas simples. La constante de fecha y hora debe estar en formato UTC combinado, como se describe en Formato de valores DateTime.
El ejemplo siguiente devuelve las entidades cuya propiedad CustomerSince
es igual al 10 de julio de 2008:
https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'
Filtrar según propiedades de GUID
Para filtrar según un valor de GUID, especifique en el URI la palabra clave guid
seguida de la constante de GUID entre comillas simples.
El ejemplo siguiente devuelve las entidades cuya propiedad GuidValue
es igual a:
https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'
Consulte también
Conceptos del servicio Tabla
Descripción del modelo de datos de Table Service
Direccionamiento de los recursos de Table Service
Tiempo de espera y paginación de consultas
Escribir consultas LINQ con el servicio Tabla