Query's uitvoeren op tabellen en entiteiten

Het uitvoeren van query's op tabellen en entiteiten in de Table-service vereist een zorgvuldige constructie van de aanvraag-URI. In de volgende secties worden queryopties beschreven en worden enkele veelvoorkomende scenario's gedemonstreerd.

Basisquerysyntaxis

Als u alle tabellen in een bepaald opslagaccount wilt retourneren, voert u een bewerking uit op de resource Tables, zoals GET beschreven in de bewerking Querytabellen. De basis-URI voor het adresseren van de tables-resource is als volgt:

https://myaccount.table.core.windows.net/Tables  

Als u één benoemde tabel wilt retourneren, geeft u die tabel als volgt op:

https://myaccount.table.core.windows.net/Tables('MyTable')  

Als u alle entiteiten in een tabel wilt retourneren, geeft u de tabelnaam op de URI op, zonder de resource Tabellen:

https://myaccount.table.core.windows.net/MyTable()  

Queryresultaten worden gesorteerd op PartitionKey , en vervolgens op RowKey . Het orden van resultaten op een andere manier wordt momenteel niet ondersteund.

U kunt aanvullende opties opgeven om de set geretourneerde tabellen of entiteiten te beperken, zoals beschreven in de volgende sectie Ondersteunde queryopties.

Notitie

Het aantal entiteiten dat voor één aanvraag wordt geretourneerd, kan beperkt zijn, als de query het maximum aantal entiteiten overschrijdt, het time-outinterval overschrijdt of een partitiegrens overschrijdt. Zie Time-out van query's en Paginering voor meer informatie.

Ondersteunde queryopties

De Tabelservice ondersteunt de volgende queryopties, die voldoen aan de OData-protocolspecificatie. U kunt deze opties gebruiken om de set tabellen, entiteiten of entiteitseigenschappen te beperken die door een query worden geretourneerd.

Optie systeemquery Beschrijving
$filter Retourneert alleen tabellen of entiteiten die voldoen aan het opgegeven filter.

Houd er rekening mee dat er niet meer dan 15 discrete vergelijkingen zijn toegestaan binnen een $filter tekenreeks.
$top Retourneert alleen de bovenste n tabellen of entiteiten uit de set.
$select Retourneert de gewenste eigenschappen van een entiteit uit de set. Deze queryoptie wordt alleen ondersteund voor aanvragen met versie 2011-08-18 of hoger. Zie LINQ-query's schrijven voor de tabelservice voor meer informatie.

Notitie

Een aanvraag die meer dan het standaard maximum of het opgegeven maximum aantal resultaten retourneert, retourneert een vervolg-token voor het uitvoeren van paginering. 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. Zie Time-out en paginering van query's voor meer informatie.

Houd er rekening mee dat de queryoptie in het geval waarin resultaten worden ge pagineerd het maximum aantal resultaten per pagina specificeert, niet het maximum aantal resultaten in de $top hele antwoordset.

Aanvullende queryopties die door OData zijn gedefinieerd, worden niet ondersteund door de Tabelservice.

Ondersteunde vergelijkingsoperators

Binnen een $filter -component kunt u vergelijkingsoperators gebruiken om de criteria op te geven waarop de queryresultaten moeten worden gefilterd.

Voor alle eigenschapstypen worden de volgende vergelijkingsoperatoren ondersteund:

Operator URI-expressie
Equal eq
GreaterThan gt
GreaterThanOrEqual ge
LessThan lt
LessThanOrEqual le
NotEqual ne

Daarnaast worden de volgende operators ondersteund voor Booleaanse eigenschappen:

Operator URI-expressie
And and
Not not
Or or

Zie OData Protocol Specification (OData-protocolspecificatie) voor meer informatie over filtersyntaxis.

Queryreekscoderen

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 ($)

Enkele prijsopgave (')

Enkele aanhalingstekens in queryreeksen moeten worden weergegeven als twee opeenvolgende enkele aanhalingstekens ( '' ). 'o'clock' zou bijvoorbeeld zijn:

o''clock

Voorbeeldquery-expressies

De volgende voorbeelden laten zien hoe u de aanvraag-URI maakt voor een aantal typische entiteitsquery's met behulp van REST-syntaxis. Dezelfde query's kunnen worden geschreven met linq-syntaxis. Zie LINQ-query's schrijven voor de tabelservice voor meer informatie.

Houd er rekening mee dat zowel de opties als kunnen worden gebruikt om te filteren op tabelnamen, met behulp van de syntaxis die wordt gedemonstreerd voor het $top filteren op eigenschappen van het type $filter String .

De bovenste n entiteiten retourneren

Als u de bovenste entiteiten n voor een query wilt retourneren, geeft u de $top queryoptie op. In het volgende voorbeeld worden de top 10 van entiteiten uit een tabel met de naam Klanten:

https://myaccount.table.core.windows.net/Customers()?$top=10  

Filteren op de eigenschappen PartitionKey en RowKey

Omdat de eigenschappen en de primaire sleutel van een entiteit vormen, kunt u als volgt een speciale syntaxis gebruiken om de PartitionKey RowKey entiteit te identificeren:

https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')  

U kunt deze eigenschappen ook opgeven als onderdeel van de optie $filter, zoals wordt weergegeven in de volgende sectie.

Houd er rekening mee dat de namen van sleuteleigenschappen en constante waarden hoofdlettergevoelig zijn. Zowel de PartitionKey eigenschappen als zijn van het type RowKey String .

Filterreeksen maken

Houd bij het maken van een filterreeks rekening met de volgende regels:

  • Gebruik de logische operators die zijn gedefinieerd door de OData-protocolspecificatie om een eigenschap te vergelijken met een waarde. Houd er rekening mee dat het niet mogelijk is om een eigenschap te vergelijken met een dynamische waarde; één zijde van de expressie moet een constante zijn.

  • De eigenschapsnaam, operator en constante waarde moeten worden gescheiden door in URL gecodeerde spaties. Een spatie wordt in URL gecodeerd als %20.

  • Alle onderdelen van de filtertekenreeks zijn hoofdlettergevoelig.

  • Het filter retourneert alleen geldige resultaten als de constante waarde van hetzelfde gegevenstype is als de eigenschap. Zie Understanding the Table Service Data Model (Het gegevensmodel van de tabelservice) voor meer informatie over ondersteunde eigenschapstypen.

Notitie

Controleer of een eigenschap expliciet is getypt voordat u ervan uit gaat dat deze van een ander type is dan tekenreeks. Als een eigenschap expliciet is getypt, wordt het type in het antwoord aangegeven wanneer de entiteit wordt geretourneerd. Als de eigenschap niet expliciet is getypt, is deze van het type en wordt het type niet aangegeven in het antwoord wanneer de String entiteit wordt geretourneerd.

Filteren op tekenreekseigenschappen

Wanneer u filtert op tekenreekseigenschappen, sluit u de tekenreeksconstante tussen enkele aanhalingstekens.

In het volgende voorbeeld worden de eigenschappen en gefilterd. Er kunnen ook aanvullende PartitionKey RowKey niet-sleuteleigenschappen worden toegevoegd aan de queryreeks.

https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'  

In het volgende voorbeeld wordt gefilterd op FirstName een LastName eigenschap en:

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'  

Houd er rekening mee dat de Table-service geen query's met jokertekens ondersteunt. U kunt echter wel overeenkomende voorvoegsels uitvoeren met behulp van vergelijkingsoperators op het gewenste voorvoegsel. Het volgende voorbeeld retourneert entiteiten met een LastName eigenschap die begint met de letter 'A':

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'  

Filteren op numerieke eigenschappen

Als u wilt filteren op een geheel getal of een drijvende-puntnummer, geeft u de constante waarde op de URI op zonder aanhalingstekens.

In dit voorbeeld worden alle entiteiten met een eigenschap Age waarvan de waarde groter is dan 30, als resultaat:

https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030  

In dit voorbeeld worden alle entiteiten met een eigenschap met een waarde van AmountDue minder dan of gelijk aan 100,25:

https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20  

Filteren op Booleaanse eigenschappen

Als u wilt filteren op een Booleaanse waarde, geeft u true op false of zonder aanhalingstekens.

Het volgende voorbeeld retourneert alle entiteiten waarbij de IsActive eigenschap is ingesteld op true :

https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true  

Filteren op datum/tijd-eigenschappen

Als u wilt filteren op een waarde, geeft u het trefwoord op de URI op, gevolgd door de DateTime datetime constante datum/tijd tussen enkele aanhalingstekens. De constante datum/tijd moet de gecombineerde UTC-indeling hebben, zoals beschreven in Datum/tijd-waarden opmaken.

Het volgende voorbeeld retourneert entiteiten waarbij de CustomerSince eigenschap gelijk is aan 10 juli 2008:

https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'  

Filteren op GUID-eigenschappen

Als u wilt filteren op een GUID-waarde, geeft u het trefwoord op de URI op, gevolgd door de guid guid-constante tussen enkele aanhalingstekens.

Het volgende voorbeeld retourneert entiteiten waarbij GuidValue de eigenschap gelijk is aan :

https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'  

Zie ook

Concepten van Table Service
Inzicht in het gegevensmodel van de Table Service
Resources voor adresseringstabelservice
Time-out en paginering van query's
LINQ-query's schrijven voor de tabelservice