Query's uitvoeren op tabellen en entiteiten
Voor het uitvoeren van query's op tabellen en entiteiten in de Tabelservice is een zorgvuldige constructie van de aanvraag-URI vereist. In de volgende secties worden queryopties beschreven en worden enkele veelvoorkomende scenario's beschreven.
Eenvoudige querysyntaxis
Als u alle tabellen in een bepaald opslagaccount wilt retourneren, voert u een GET
bewerking uit op de tabelresource, zoals beschreven in de bewerking Querytabellen uitvoeren. De basis-URI voor het adresseren van de tabelresource 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 in de URI, zonder de tabelresource:
https://myaccount.table.core.windows.net/MyTable()
Queryresultaten worden gesorteerd op PartitionKey
en vervolgens op RowKey
. Het op een andere manier ordenen van resultaten wordt momenteel niet ondersteund.
U kunt extra opties opgeven om de set geretourneerde tabellen of entiteiten te beperken, zoals beschreven in de 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 Table-service 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 | Description |
---|---|
$filter |
Retourneert alleen tabellen of entiteiten die voldoen aan het opgegeven filter. Houd er rekening mee dat er niet meer dan 15 discrete vergelijkingen binnen een $filter tekenreeks zijn toegestaan. |
$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 opgegeven maximum aantal resultaten retourneert, retourneert een vervolgtoken voor het uitvoeren van paginering. Wanneer u volgende aanvragen maakt die vervolgtokens bevatten, moet u ervoor zorgen dat u de oorspronkelijke URI voor de aanvraag doorgeeft. Als u bijvoorbeeld een $filter
$select
, of $top
queryoptie hebt opgegeven als onderdeel van de oorspronkelijke aanvraag, wilt u deze optie opnemen in volgende aanvragen. Anders kunnen uw volgende aanvragen onverwachte resultaten retourneren. Zie Time-out van query's en paginering voor meer informatie.
Houd er rekening mee dat met de $top
queryoptie in het geval waarin resultaten worden gepagineerd het maximum aantal resultaten per pagina wordt opgegeven, niet het maximum aantal resultaten in de hele antwoordset.
Aanvullende queryopties die zijn gedefinieerd door OData, worden niet ondersteund door de Table-service.
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 vergelijkingsoperators 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 de OData-protocolspecificatie voor meer informatie over de filtersyntaxis.
Queryreekscodering
De volgende tekens moeten worden gecodeerd als ze in een querytekenreeks moeten worden gebruikt:
- Schuine streep (/)
- Vraagteken (?)
- Dubbele punt (:)
- Symbool 'At' (@)
- Ampersand (&)
- Gelijkteken (=)
- Plusteken (+)
- Komma (,)
- Dollarteken ($)
Enkel aanhalingsteken (')
Enkele aanhalingstekens in querytekenreeksen moeten worden weergegeven als twee opeenvolgende enkele aanhalingstekens (''
). 'o'clock' is bijvoorbeeld:
o''clock
Voorbeeldquery-expressies
In de volgende voorbeelden ziet u hoe u de aanvraag-URI voor sommige typische entiteitsquery's maakt 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 $top
opties als $filter
de opties kunnen worden gebruikt om te filteren op tabelnamen, met behulp van de syntaxis die wordt gedemonstreerd voor het filteren op eigenschappen van het type String
.
De belangrijkste n entiteiten retourneren
Als u de belangrijkste n
entiteiten voor een query wilt retourneren, geeft u de $top
queryoptie op. In het volgende voorbeeld worden de tien belangrijkste entiteiten uit een tabel met de naam Klanten geretourneerd:
https://myaccount.table.core.windows.net/Customers()?$top=10
Filteren op de eigenschappen PartitionKey en RowKey
Omdat de PartitionKey
eigenschappen en RowKey
de primaire sleutel van een entiteit vormen, kunt u een speciale syntaxis gebruiken om de entiteit als volgt 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 RowKey
zijn van het type String
.
Filterreeksen maken
Houd bij het maken van een filtertekenreeks rekening met de volgende regels:
Gebruik de logische operators die zijn gedefinieerd door de OData Protocol Specification 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; een 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 uitgaat dat deze van een ander type is dan tekenreeks. Als een eigenschap expliciet is getypt, wordt het type aangegeven in het antwoord wanneer de entiteit wordt geretourneerd. Als de eigenschap niet expliciet is getypt, is deze van het type String
en wordt het type niet aangegeven in het antwoord wanneer de entiteit wordt geretourneerd.
Filteren op tekenreekseigenschappen
Wanneer u filtert op tekenreekseigenschappen, plaatst u de tekenreeksconstante tussen enkele aanhalingstekens.
In het volgende voorbeeld worden de PartitionKey
eigenschappen en RowKey
gefilterd. Aanvullende niet-sleuteleigenschappen kunnen ook worden toegevoegd aan de querytekenreeks.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
In het volgende voorbeeld wordt de eigenschap en LastName
gefilterdFirstName
:
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 ondersteuning biedt voor query's met jokertekens. U kunt voorvoegsels echter wel vergelijken met behulp van vergelijkingsoperators voor het gewenste voorvoegsel. In het volgende voorbeeld worden entiteiten geretourneerd 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 getal met drijvende komma, geeft u de constante waarde op de URI op zonder aanhalingstekens.
In dit voorbeeld worden alle entiteiten geretourneerd met een Age
eigenschap waarvan de waarde groter is dan 30:
https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030
In dit voorbeeld worden alle entiteiten geretourneerd met een AmountDue
eigenschap waarvan de waarde kleiner is dan of gelijk is 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
of false
zonder aanhalingstekens op.
In het volgende voorbeeld worden alle entiteiten geretourneerd waarvoor 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 DateTime
waarde, geeft u het datetime
trefwoord op de URI op, gevolgd door de datum-/tijdconstante tussen enkele aanhalingstekens. De datum-/tijdconstante moet een gecombineerde UTC-indeling hebben, zoals beschreven in Datum/tijd-waarden opmaken.
In het volgende voorbeeld worden entiteiten geretourneerd waarvan 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 guid
trefwoord op de URI op, gevolgd door de guid-constante tussen enkele aanhalingstekens.
In het volgende voorbeeld worden entiteiten geretourneerd waarvan de GuidValue
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
Informatie over het tabelservicegegevensmodel
Resources voor tabelservice adresseren
Time-out van query's en paginering
LINQ-query's schrijven op basis van de tabelservice