Query Entities

L'opération Query Entities interroge les entités dans une table et comprend les options $filter et $select.

Requête

Pour les demandes qui utilisent l’option $select de requête, vous devez utiliser la version 2011-08-18 ou ultérieure. En outre, les en-têtes DataServiceVersion et MaxDataServiceVersion doivent avoir la valeur 2.0.

Pour utiliser la projection, vous devez effectuer la demande à l’aide de la version 2013-08-15 ou ultérieure. Les DataServiceVersion en-têtes et MaxDataServiceVersion doivent être définis sur 3.0. Pour plus d’informations, consultez Définir les en-têtes de version du service de données OData.

Vous pouvez construire la Query Entities requête comme suit. Nous recommandons HTTPS. Remplacez myaccount par le nom de votre compte de stockage et remplacez mytable par le nom de votre table.

Méthode URI de demande Version HTTP
GET https://myaccount.table.core.windows.net/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

https://myaccount.table.core.windows.net/mytable()?$filter=<query-expression>&$select=<comma-separated-property-names>
HTTP/1.1

L’adresse du jeu d’entités à interroger peut prendre différentes formes sur l’URI de demande. Pour plus d’informations, consultez Interroger des tables et des entités.

URI de service de stockage émulé

Lorsque vous effectuez une requête auprès du service de stockage émulé, spécifiez le nom d’hôte de l’émulateur et le port du service de table comme 127.0.0.1:10002. Suivez ces informations avec le nom du compte de stockage émulé.

Méthode URI de demande Version HTTP
GET http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

http://127.0.0.1:10002/devstoreaccount1/mytable()?$filter=<query-expression>?$select=<comma-separated-property-names>
HTTP/1.1

Le service Table dans l’émulateur de stockage diffère de Stockage Table Azure de plusieurs manières. Pour plus d’informations, consultez Différences entre l’émulateur de stockage et les services de stockage Azure.

Paramètres URI

L’opération Query Entities prend en charge les options de requête que la spécification du protocole OData définit.

En-têtes de requête

Le tableau suivant décrit les en-têtes de requête obligatoires et facultatifs :

En-tête de requête Description
Authorization Obligatoire. Spécifie le schéma d’autorisation, le nom du compte et la signature. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
Date ou x-ms-date Obligatoire. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
x-ms-version facultatif. Spécifie la version de l'opération à utiliser pour cette demande. Pour plus d'informations, consultez la page Contrôle de version pour les services de Stockage Microsoft Azure.
Accept facultatif. Spécifie le type de contenu accepté de la charge utile de réponse. Les valeurs possibles sont les suivantes :

- application/atom+xml (versions antérieures au 11/12/2015 uniquement)
- application/json;odata=nometadata
- application/json;odata=minimalmetadata
- application/json;odata=fullmetadata

Pour plus d’informations, consultez Format de charge utile pour les opérations de stockage table.
x-ms-client-request-id facultatif. Fournit une valeur opaque générée par le client avec une limite de caractères de 1 kibioctet (Kio) enregistrée dans les journaux lors de la configuration de la journalisation. Nous vous recommandons vivement d’utiliser cet en-tête pour mettre en corrélation les activités côté client avec les demandes reçues par le serveur.

Corps de la demande

Aucun.

Exemple de requête

Request Syntax:  
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-12-11  
x-ms-date: Mon, 27 Jun 2016 15:25:14 GMT  
Authorization: SharedKeyLite myaccount:<some key>  
Accept: application/json;odata=nometadata  
Accept-Charset: UTF-8  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  

response

La réponse inclut un code d'état HTTP, un ensemble d'en-têtes de réponse et un corps de réponse.

Code d’état

Une opération réussie envoie le code d'état 200 (OK).

Pour plus d’informations sur les codes status, consultez Codes d’état et d’erreur et Codes d’erreur stockage table.

En-têtes de réponse

La réponse de l'opération inclut les en-têtes suivants. La réponse peut également inclure des en-têtes HTTP standard supplémentaires. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.

En-tête de réponse Description
x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey
Indique que :

- Le nombre d’entités à retourner dépasse 1 000.
- L’intervalle de délai d’attente du serveur est dépassé.
- Une limite de serveur est atteinte si la requête retourne des données réparties sur plusieurs serveurs.

Pour plus d’informations sur l’utilisation des jetons de continuation, consultez Délai d’expiration et pagination des requêtes.
x-ms-request-id Identifie de manière unique la demande qui a été effectuée. Vous pouvez l’utiliser pour résoudre les problèmes liés à la demande. Pour plus d’informations, consultez Résoudre les problèmes liés aux opérations d’API.
x-ms-version Indique la version de Stockage Table qui a été utilisée pour exécuter la demande. Cet en-tête est renvoyé pour les demandes effectuées avec la version 2009-09-19 ou une version ultérieure.
Date Valeur de date/heure UTC qui indique l’heure à laquelle le service a envoyé la réponse.
Content-Type Indique le type de contenu de la charge utile. La valeur de cet en-tête dépend de la valeur de l'en-tête de demande Accept. Les valeurs possibles sont les suivantes :

- application/atom+xml (versions antérieures au 11/12/2015 uniquement)
- application/json;odata=nometadata
- application/json;odata=minimalmetadata
- application/json;odata=fullmetadata

Pour plus d’informations sur les types de contenu valides, consultez Format de charge utile pour les opérations de stockage table.
x-ms-client-request-id Peut être utilisé pour résoudre les demandes et les réponses correspondantes. La valeur de cet en-tête est égale à la valeur de l’en-tête x-ms-client-request-id , s’il est présent dans la requête et que la valeur est au maximum de 1 024 caractères ASCII visibles. Si l’en-tête x-ms-client-request-id n’est pas présent dans la demande, cet en-tête ne sera pas présent dans la réponse.

Exemple de réponse

Response Status:  
HTTP/1.1 200 OK  
  
Response Headers:  
Content-Type: application/json  
x-ms-request-id: 87f178c0-44fe-4123-a4c1-96c8fa6d9654  
Date: Mon, 27 Jun 2016 15:25:14 GMT  
x-ms-version: 2015-12-11  
Connection: close  

Response body

L’opération Query Entities retourne la liste des entités d’une table sous la forme d’un ensemble d’entités OData. La liste des entités est au format JSON ou dans un flux Atom, en fonction de l’en-tête Accept de la requête.

Notes

Nous recommandons JSON comme format de charge utile. Il s’agit du seul format pris en charge pour les versions 2015-12-11 et ultérieures.

JSON (version 2013-08-15 et ultérieure)

Voici un exemple d’URI de requête pour une Query Entities opération sur une table de clients :

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  

Voici la charge utile de réponse dans JSON sans métadonnées :

{  
   "value":[  
      {  
         "PartitionKey":"Customer",  
         "RowKey":"Name",  
         "Timestamp":"2013-08-22T00:20:16.3134645Z",  
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"  
      }  
   ]  
}  

Voici la charge utile de réponse dans JSON avec des métadonnées minimales :

{  
   "odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers",  
   "value":[  
      {  
         "PartitionKey":"Customer",  
         "RowKey":"Name",  
         "Timestamp":"2013-08-22T00:20:16.3134645Z",  
         "CustomerSince@odata.type":"Edm.DateTime",  
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"  
      }  
   ]  
}  

Voici la charge utile de réponse dans JSON avec des métadonnées complètes :

{  
   "odata.metadata":" https://myaccount.table.core.windows.net/metadata#Customers",  
   "value":[  
      {  
         "odata.type":"myaccount.Customers",  
         "odata.id":"https://myaccount.table.core.windows.net/Customers(PartitionKey=Customer',RowKey='Name')",  
         "odata.etag":"W/\"0x5B168C7B6E589D2\"",  
         "odata.editLink":"Customers(PartitionKey=Customer',RowKey='Name')",  
         "PartitionKey":"Customer",  
         "RowKey":"Name",  
         "Timestamp@odata.type":"Edm.DateTime",  
         "Timestamp":"2013-08-22T00:20:16.3134645Z",  
         "CustomerSince@odata.type":"Edm.DateTime",  
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"  
      }  
   ]  
}  

Flux Atom (versions antérieures au 11-12-2015)

Voici un exemple d’URI de requête pour une Query Entities opération sur une table de clients :

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  

Voici un exemple de réponse Atom pour l’opération Query Entities :

<?xml version="1.0" encoding="UTF-8"?>  
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://myaccount.table.core.windows.net">  
   <id>https://myaccount.table.core.windows.net/Customers</id>  
   <title type="text">Customers</title>  
   <updated>2013-08-22T00:50:32Z</updated>  
   <link rel="self" title="Customers" href="Customers" />  
   <entry m:etag="W/"0x5B168C7B6E589D2"">  
      <id>https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer',RowKey='Name')</id>  
      <category term="myaccount.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />  
      <link rel="edit" title="Customers" href="Customers(PartitionKey='Customer',RowKey='Name')" />  
      <title />  
      <updated>2013-08-22T00:50:32Z</updated>  
      <author>  
         <name />  
      </author>  
      <content type="application/xml">  
         <m:properties>  
            <d:PartitionKey>Customer</d:PartitionKey>  
            <d:RowKey>Name</d:RowKey>  
            <d:Timestamp m:type="Edm.DateTime">2013-08-22T00:20:16.3134645Z</d:Timestamp>  
            <d:CustomerSince m:type="Edm.DateTime">2008-10-01T15:25:05.2852025Z</d:CustomerSince>  
         </m:properties>  
      </content>  
   </entry>  
</feed>  

Autorisation

Cette opération peut être exécutée par le propriétaire du compte et par toute personne qui dispose d'une signature d'accès partagé qui a l'autorisation d'exécuter cette opération.

Remarques

Une requête sur le stockage table peut retourner un maximum de 1 000 entités à la fois et peut s’exécuter pendant un maximum de cinq secondes. La réponse inclut des en-têtes personnalisés qui contiennent un ensemble de jetons de continuation dans l’un des cas suivants :

  • Le jeu de résultats contient plus de 1000 entités.
  • La requête ne s’est pas terminée dans les cinq secondes.
  • La requête franchit les limites de la partition.

Vous pouvez utiliser les jetons de continuation pour construire une requête suivante pour la page de données suivante. Pour plus d’informations sur les jetons de continuation, consultez Délai d’expiration et pagination des requêtes.

Notes

Lorsque vous effectuez des requêtes suivantes qui incluent des jetons de continuation, veillez à passer l’URI d’origine sur la demande. Par exemple, si vous avez spécifié une $filteroption de requête , $selectou $top dans le cadre de la demande d’origine, incluez cette option sur les requêtes suivantes. Dans le cas contraire, vos demandes suivantes peuvent retourner des résultats inattendus.

Dans $top ce cas, l’option de requête spécifie le nombre maximal de résultats par page. Il ne spécifie pas le nombre maximal de résultats dans l’ensemble du jeu de réponses.

Pour plus d’informations, consultez Interroger des tables et des entités.

Pour les demandes de projection qui utilisent l’option $select de requête, la version doit être 2011-08-18 ou ultérieure. Le nombre maximal de propriétés retournées est de 255. Le corps de la réponse inclut toutes les propriétés projetées, même si les propriétés ne font pas partie de l’entité retournée.

Par exemple, si la demande inclut une propriété que l'entité projetée ne contient pas, la propriété manquante est marquée avec un attribut null. L’exemple de corps de réponse précédent inclut la Address propriété , qui ne fait pas partie de l’entité projetée. La valeur de la propriété est donc null : <d:Address m:null="true" />.

Le temps total alloué à la demande pour la planification et le traitement de la requête est de 30 secondes. Ce total inclut les cinq secondes pour l’exécution de la requête.

Notez que le côté droit d’une expression de requête doit être une constante. Vous ne pouvez pas référencer une propriété sur le côté droit de l’expression. Pour plus d’informations sur la construction d’expressions de requête, consultez Tables et entités de requête.

Une expression de requête ne peut pas contenir de null valeurs. Les caractères suivants doivent être encodés si vous les utilisez dans une chaîne de requête :

  • barre oblique (/)

  • point d'interrogation (?)

  • deux-points (:)

  • Le signe « arrobas » (@)

  • Esperluette (&)

  • Le signe égal (=)

  • Signe plus (+)

  • Virgule (,)

  • Signe dollar ($)

Toute application qui peut autoriser et envoyer une requête HTTP GET peut interroger des entités dans une table.

Pour plus d’informations sur les opérations de requête prises en charge sur le stockage Table via LINQ, consultez Opérateurs de requête pris en charge pour le stockage table et Écrire des requêtes LINQ sur le stockage table.

Voir aussi

Codes d’erreur stockage table
Autoriser les demandes dans le Stockage Azure
Codes d’état et d’erreur
Adressage des ressources de stockage table
Interroger des tables et des entités
Définir les en-têtes de version du service de données OData
Insert Entity
Update Entity
Delete Entity