Delen via


Query-entiteiten

De Query Entities bewerking voert query's uit op entiteiten in een tabel en bevat de $filter opties en $select .

Aanvraag

Voor aanvragen die gebruikmaken van de $select queryoptie, moet u versie 2011-08-18 of hoger gebruiken. Bovendien moeten de DataServiceVersion kopteksten en MaxDataServiceVersion worden ingesteld op 2.0.

Als u projectie wilt gebruiken, moet u de aanvraag indienen met versie 2013-08-15 of hoger. De DataServiceVersion kopteksten en MaxDataServiceVersion moeten worden ingesteld op 3.0. Zie De headers van de OData-gegevensserviceversie instellen voor meer informatie.

U kunt de Query Entities aanvraag als volgt samenstellen. We raden HTTPS aan. Vervang myaccount door de naam van uw opslagaccount en vervang mytable door de naam van uw tabel.

Methode Aanvraag-URI HTTP-versie
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

Het adres van de entiteit die moet worden opgevraagd, kan verschillende vormen hebben op de aanvraag-URI. Zie Query's uitvoeren op tabellen en entiteiten voor meer informatie.

Geëmuleerde opslagservice-URI

Wanneer u een aanvraag indient voor de geëmuleerde opslagservice, geeft u de hostnaam van de emulator en de poort van de tabelservice op als 127.0.0.1:10002. Volg deze informatie met de naam van het geëmuleerde opslagaccount.

Methode Aanvraag-URI HTTP-versie
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

De Table-service in de opslagemulator verschilt op verschillende manieren van Azure Table Storage. Zie Verschillen tussen de opslagemulator en Azure Storage-services voor meer informatie.

URI-parameters

De Query Entities bewerking ondersteunt de queryopties die door de OData-protocolspecificatie worden gedefinieerd.

Aanvraagheaders

In de volgende tabel worden vereiste en optionele aanvraagheaders beschreven:

Aanvraagheader Beschrijving
Authorization Vereist. Hiermee geeft u het autorisatieschema, de accountnaam en de handtekening op. Zie Aanvragen autoriseren voor Azure Storage voor meer informatie.
Date of x-ms-date Vereist. Geef de Coordinated Universal Time (UTC) op voor de aanvraag. Zie Aanvragen autoriseren voor Azure Storage voor meer informatie.
x-ms-version Optioneel. Hiermee geeft u de versie van de bewerking te gebruiken voor deze aanvraag. Zie Versiebeheer voor de Azure Storage-services voor meer informatie.
Accept Optioneel. Hiermee geeft u het geaccepteerde inhoudstype van de nettolading van het antwoord op. Mogelijke waarden zijn:

- application/atom+xml (alleen versies vóór 2015-12-11)
- application/json;odata=nometadata
- application/json;odata=minimalmetadata
- application/json;odata=fullmetadata

Zie Payload-indeling voor Table Storage-bewerkingen voor meer informatie.
x-ms-client-request-id Optioneel. Biedt een door de client gegenereerde, ondoorzichtige waarde met een limiet van 1 kibibyte (KiB) die wordt vastgelegd in de logboeken wanneer logboekregistratie is geconfigureerd. We raden u ten zeerste aan deze header te gebruiken om activiteiten aan de clientzijde te correleren met aanvragen die de server ontvangt.

Aanvraagbody

Geen.

Voorbeeldaanvraag

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  

Antwoord

Het antwoord bevat een HTTP-statuscode, een set antwoordheaders en een antwoordtekst.

Statuscode

Een geslaagde bewerking retourneert statuscode 200 (OK).

Zie Status- en foutcodes enTable Storage-foutcodes voor meer informatie over statuscodes.

Antwoordheaders

Het antwoord voor deze bewerking bevat de volgende headers. Het antwoord kan ook extra standaard-HTTP-headers bevatten. Alle standaardheaders voldoen aan de HTTP/1.1-protocolspecificatie.

Antwoordheader Description
x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey
Geeft aan dat:

- Het aantal entiteiten dat moet worden geretourneerd, overschrijdt 1000.
- Het time-outinterval van de server is overschreden.
- Een servergrens wordt bereikt als de query gegevens retourneert die zijn verdeeld over meerdere servers.

Zie Time-out en paginering van query's voor meer informatie over het gebruik van de vervolgtokens.
x-ms-request-id Identificeert op unieke wijze de aanvraag die is gedaan. U kunt deze gebruiken om problemen met de aanvraag op te lossen. Zie Problemen met API-bewerkingen oplossen voor meer informatie.
x-ms-version Geeft de versie van Table Storage aan die is gebruikt om de aanvraag uit te voeren. Deze header wordt geretourneerd voor aanvragen die zijn gedaan in versie 2009-09-19 en hoger.
Date Een UTC-datum/tijd-waarde die het tijdstip aangeeft waarop de service het antwoord heeft verzonden.
Content-Type Geeft het inhoudstype van de nettolading aan. De waarde van deze header is afhankelijk van de waarde van de Accept aanvraagheader. Mogelijke waarden zijn:

- application/atom+xml (alleen versies vóór 2015-12-11)
- application/json;odata=nometadata
- application/json;odata=minimalmetadata
- application/json;odata=fullmetadata

Zie Payload-indeling voor Table Storage-bewerkingen voor meer informatie over geldige inhoudstypen.
x-ms-client-request-id Kan worden gebruikt om problemen met aanvragen en bijbehorende antwoorden op te lossen. De waarde van deze header is gelijk aan de waarde van de x-ms-client-request-id header, als deze aanwezig is in de aanvraag en de waarde maximaal 1024 zichtbare ASCII-tekens is. Als de x-ms-client-request-id header niet aanwezig is in de aanvraag, is deze header niet aanwezig in het antwoord.

Voorbeeldantwoord

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  

Hoofdtekst van de reactie

De Query Entities bewerking retourneert de lijst met entiteiten in een tabel als een OData-entiteitsset. De lijst met entiteiten heeft een JSON-indeling of een Atom-feed, afhankelijk van de Accept header van de aanvraag.

Notitie

We raden JSON aan als payload-indeling. Dit is de enige ondersteunde indeling voor versie 2015-12-11 en hoger.

JSON (versie 2013-08-15 en hoger)

Hier volgt een voorbeeld van een aanvraag-URI voor een Query Entities bewerking in een tabel met klanten:

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

Dit is de nettolading van het antwoord in JSON zonder metagegevens:

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

Dit is de nettolading van het antwoord in JSON met minimale metagegevens:

{  
   "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"  
      }  
   ]  
}  

Dit is de nettolading van het antwoord in JSON met volledige metagegevens:

{  
   "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"  
      }  
   ]  
}  

Atom feed (versies vóór 2015-12-11)

Hier volgt een voorbeeld van een aanvraag-URI voor een Query Entities bewerking in een tabel met klanten:

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

Hier volgt een voorbeeld van een Atom-antwoord voor de Query Entities bewerking:

<?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>  

Autorisatie

Deze bewerking kan worden uitgevoerd door de accounteigenaar en door iedereen met een shared access signature die gemachtigd is om deze bewerking uit te voeren.

Opmerkingen

Een query op Table Storage kan maximaal 1000 entiteiten tegelijk retourneren en kan maximaal vijf seconden worden uitgevoerd. Het antwoord bevat aangepaste headers die een set vervolgtokens bevatten in een van de volgende gevallen:

  • De resultatenset bevat meer dan 1000 entiteiten.
  • De query is niet binnen vijf seconden voltooid.
  • De query overschrijdt de partitiegrens.

U kunt de vervolgtokens gebruiken om een volgende aanvraag voor de volgende pagina met gegevens te maken. Zie Time-out en paginering van query's voor meer informatie over vervolgtokens.

Notitie

Wanneer u volgende aanvragen doet die vervolgtokens bevatten, moet u de oorspronkelijke URI voor de aanvraag doorgeven. Als u bijvoorbeeld een $filterqueryoptie , $selectof $top hebt opgegeven als onderdeel van de oorspronkelijke aanvraag, neemt u die optie op bij volgende aanvragen. Anders kunnen uw volgende aanvragen onverwachte resultaten retourneren.

Met $top de queryoptie wordt in dit geval het maximum aantal resultaten per pagina opgegeven. Het maximum aantal resultaten in de hele antwoordset wordt niet opgegeven.

Zie Querytabellen en entiteiten voor meer informatie.

Voor projectieaanvragen die gebruikmaken van de $select queryoptie, moet de versie 2011-08-18 of hoger zijn. Het maximum aantal geretourneerde eigenschappen is 255. De antwoordtekst bevat alle geprojecteerde eigenschappen, zelfs als eigenschappen geen deel uitmaken van de geretourneerde entiteit.

Als de aanvraag bijvoorbeeld een eigenschap bevat die de geprojecteerde entiteit niet bevat, wordt de ontbrekende eigenschap gemarkeerd met een null-kenmerk. De voorgaande voorbeeldantwoordtekst bevat de Address eigenschap, die geen deel uitmaakt van de geprojecteerde entiteit. De waarde van de eigenschap is daarom null: <d:Address m:null="true" />.

De totale tijd die is toegewezen aan de aanvraag voor het plannen en verwerken van de query is 30 seconden. Dit totaal omvat de vijf seconden voor het uitvoeren van de query.

Houd er rekening mee dat de rechterkant van een query-expressie een constante moet zijn. U kunt niet verwijzen naar een eigenschap aan de rechterkant van de expressie. Zie Querytabellen en -entiteiten voor meer informatie over het maken van query-expressies.

Een query-expressie mag geen waarden bevatten null . De volgende tekens moeten worden gecodeerd als u deze in een querytekenreeks gebruikt:

  • Schuine streep (/)

  • Vraagteken (?)

  • Dubbele punt (:)

  • Bij teken (@)

  • Ampersand (&)

  • Gelijkteken (=)

  • Plusteken (+)

  • Komma (,)

  • Dollarteken ($)

Elke toepassing die een HTTP-aanvraag GET kan autoriseren en verzenden, kan een query uitvoeren op entiteiten in een tabel.

Zie Queryoperators ondersteund voor Table Storage en LINQ-query's schrijven voor Table Storage voor meer informatie over ondersteunde querybewerkingen voor Table Storage via LINQ.

Zie ook

Table Storage-foutcodes
Aanvragen voor Azure Storage autoriseren
Status en foutcodes
Table Storage-resources adresseren
Query's uitvoeren op tabellen en entiteiten
De headers van de OData-gegevensserviceversie instellen
Entiteit invoegen
Entiteit bijwerken
Entiteit verwijderen