Query's uitvoeren op entiteiten

De Query Entities bewerking bevraagt entiteiten in een tabel en bevat de $filter opties en $select .

Aanvraag

Voor aanvragen die gebruikmaken van de queryoptie, moet de aanvraag worden gedaan met behulp van versie $select 2011-08-18 of hoger. Bovendien moeten de DataServiceVersion MaxDataServiceVersion headers en worden ingesteld op 2.0.

Als u projectie wilt gebruiken, moet de aanvraag worden gedaan met versie 2013-08-15 of hoger. De DataServiceVersion MaxDataServiceVersion headers en moeten worden ingesteld op 3.0. Zie Setting the OData Data Service Version Headers (Versieheaders voor OData Data Service instellen) voor meer informatie.

De Query Entities aanvraag kan als volgt worden samengesteld. HTTPS wordt aanbevolen. Vervang myaccount door de naam van uw opslagaccount en 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 een aantal formulieren in de aanvraag-URI aannemen. Zie Query'suitvoeren op tabellen en entiteiten voor meer informatie.

Geëmuleerde Storage Service-URI

Wanneer u een aanvraag indient voor de geëmuleerde opslagservice, geeft u de hostnaam van de emulator en de Table-servicepoort op als , gevolgd door de geëmuleerde 127.0.0.1:10002 opslagaccountnaam:

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 Tabelservice in de opslagemulator verschilt op verschillende manieren van Windows® Azure™ Table-service. Zie Differences Between the Storage Emulator and Azure Storage Services (Verschillen tussen de Storage Emulator en Azure Storage Services) voor meer informatie.

URI-parameters

De Query Entities bewerking ondersteunt de queryopties die zijn gedefinieerd door de OData-protocolspecificatie. Zie OData Protocol voor meer informatie.

Aanvraagheaders

In de volgende tabel worden de vereiste en optionele aanvraagheaders beschreven.

Aanvraagheader Beschrijving
Authorization Vereist. Hiermee geeft u het autorisatieschema, de accountnaam en de handtekening op. Zie Aanvragen voor toegang tot Azure Storage voor meer Azure Storage.
Date of x-ms-date Vereist. Geef de Coordinated Universal Time (UTC) op voor de aanvraag. Zie Aanvragen voor toegang tot Azure Storage voor meer Azure Storage.
x-ms-version Optioneel. Hiermee geeft u de versie van de bewerking moet worden gebruikt voor deze aanvraag. Zie Versioning for the Azure Storage Services (Versie 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 Nettolading-indeling voor Table Service-bewerkingen voor meer informatie.
x-ms-client-request-id Optioneel. Biedt een door de client gegenereerde, ondoorzichtige waarde met een limiet van 1 KiB die wordt vastgelegd in de analyselogboeken wanneer logboekregistratie van opslaganalyse is ingeschakeld. Het gebruik van deze header wordt ten zeerste aanbevolen voor het correleren van activiteiten aan clientzijde met aanvragen die door de server worden ontvangen. Zie About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests voor meer informatie.

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 en Tabelservicefoutcodes voor meer informatie over statuscodes.

Antwoordheaders

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

Antwoordheader Beschrijving
x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey
De service retourneert de x-ms-continuation-NextPartitionKey x-ms-continuation-NextRowKey vervolgheaders en in de volgende gevallen:

- Wanneer het aantal entiteiten dat moet worden geretourneerd groter is dan 1000.
- Wanneer het time-outinterval van de server wordt overschreden.
- Wanneer een servergrens is bereikt, als de query gegevens retourneert die zijn verdeeld over meerdere servers.

Zie Time-out van query's en Paginering voor meer informatie over het gebruik van de vervolgtokens.
x-ms-request-id Deze header identificeert op unieke manier de aanvraag die is gemaakt en kan worden gebruikt voor het oplossen van problemen met de aanvraag. Zie Troubleshooting API Operations (Problemen met API-bewerkingen oplossen) voor meer informatie.
x-ms-version Geeft de versie aan van de Table-service die wordt gebruikt om de aanvraag uit te voeren. Deze header wordt geretourneerd voor aanvragen voor versie 2009-09-19 en hoger.
Date Een UTC-datum/tijd-waarde die wordt gegenereerd door de service die de tijd aangeeft waarop het antwoord is gestart.
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 Nettolading-indeling voor Table Service-bewerkingen voor meer informatie over geldige inhoudstypen.
x-ms-client-request-id Deze header 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 header als deze aanwezig is in de aanvraag en de waarde uit ten beste x-ms-client-request-id 1024 zichtbare ASCII-tekens bestaat. Als de x-ms-client-request-id header niet aanwezig is in de aanvraag, is deze header niet aanwezig in het antwoord.

Voorbeeldreactie

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  

Antwoord body

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

Notitie

JSON is de aanbevolen nettoladingindeling en is de enige indeling die wordt ondersteund voor versies 2015-12-11 en hoger.

JSON (versies 2013-08-15 en hoger)

Hier is een voorbeeld van een aanvraag-URI voor een Query Entities bewerking in een tabel Klanten.

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

Dit zijn de nettoladingen van antwoorden in JSON voor verschillende controleniveaus.

Geen metagegevens:

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

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

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 is een voorbeeld van een aanvraag-URI voor een Query Entities bewerking in een tabel Klanten.

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

Hier is 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 toestemming heeft om deze bewerking uit te voeren.

Opmerkingen

Een query op de Table-service kan maximaal 1000 entiteiten tegelijk retourneren en kan maximaal vijf seconden worden uitgevoerd. Als de resultatenset meer dan 1000 entiteiten bevat, als de query niet binnen vijf seconden is voltooid of als de query de partitiegrens passeert, bevat het antwoord aangepaste headers met een set vervolgtokens. De vervolgtokens kunnen worden gebruikt voor het maken van een volgende aanvraag voor de volgende pagina met gegevens. Zie Time-out van query's en Paginering voor meer informatie over vervolgtokens.

Notitie

Wanneer u volgende aanvragen indient die vervolgtokens bevatten, moet u de oorspronkelijke URI voor de aanvraag doorgeven. Als u bijvoorbeeld een queryoptie , of hebt opgegeven als onderdeel van de oorspronkelijke aanvraag, moet u die optie opnemen $filter $select in volgende $top aanvragen. Anders kunnen de volgende aanvragen onverwachte resultaten retourneren.

Houd er rekening mee dat met de queryoptie in dit geval het maximum aantal resultaten per pagina wordt opgegeven, niet het maximum aantal resultaten $top in de hele antwoordset.

Zie Query's uitvoeren op tabellen en entiteiten voor meer informatie.

Voor projectieaanvragen met behulp van de queryoptie moet de aanvraag worden gedaan met versie $select 2011-08-18 of hoger. Het maximum aantal geretourneerde eigenschappen is 255 en alle verwachte eigenschappen worden opgenomen in de antwoord-body, zelfs als de eigenschap geen deel uitmaakt 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 bovenstaande voorbeeldreactie bevat de eigenschap Address, die geen deel uitmaakt van de verwachte entiteit, dus de eigenschap is 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, inclusief de vijf seconden voor het uitvoeren van de query.

Houd er rekening mee dat de rechterkant van een queryexpressie een constante moet zijn; U kunt niet verwijzen naar een eigenschap aan de rechterkant van de expressie. Zie Querying Tables and Entities (Tabellen en entiteiten opvragen) voor meer informatie over het maken van query-expressies.

Een queryexpressie bevat mogelijk geen null waarden. De volgende tekens moeten worden gecodeerd als ze moeten worden gebruikt in een querytekenreeks:

  • Slash (/)

  • Vraagteken (?)

  • Dubbele punt (:)

  • Het symbool 'At' (@)

  • Ampersand (&)

  • Is gelijk aan teken (=)

  • Plusteken (+)

  • Komma (,)

  • Dollarteken ($)

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

Zie Queryoperators die worden ondersteund voor de Tabelservice en LINQ-query's schrijven voor de Tabelservice voor meer informatie over ondersteunde querybewerkingen voor de tabelservice via LINQ.

Zie ook

Table Service-foutcodes
Aanvragen voor Azure Storage
Status- en foutcodes
Adressering van Table Service-resources
Query's uitvoeren op tabellen en entiteiten
De OData Data Service-versieheaders instellen
Entiteit invoegen
Entiteit bijwerken
Entiteit verwijderen