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 $filteropción de consulta , $selecto $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 (@)
  • 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 de consulta y paginación
Escribir consultas LINQ con el servicio Tabla