Query's uitvoeren op tabellen en entiteiten
Voor het uitvoeren van query's op tabellen en entiteiten in de Table-service is een zorgvuldige constructie van de aanvraag-URI vereist. In de volgende secties worden queryopties beschreven en worden enkele veelvoorkomende scenario's gedemonstreert.
Basisquerysyntaxis
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 . 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 deze 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 voor de URI, zonder de tabelresource:
https://myaccount.table.core.windows.net/MyTable()
Queryresultaten worden gesorteerd op PartitionKey
en vervolgens op RowKey
. Het ordenen van resultaten op een andere manier wordt momenteel niet ondersteund.
U kunt extra opties opgeven om de set tabellen of entiteiten te beperken die worden geretourneerd, zoals wordt beschreven in de volgende sectie Ondersteunde queryopties .
Notitie
Het aantal entiteiten dat voor één aanvraag wordt geretourneerd, kan worden beperkt, als de query het maximum aantal entiteiten overschrijdt, het time-outinterval overschrijdt of een partitiegrens overschrijdt. Zie Time-out en paginering van query's voor meer informatie.
Ondersteunde queryopties
De Table-service ondersteunt de volgende queryopties, die voldoen aan de OData Protocol-specificatie. U kunt deze opties gebruiken om de set tabellen, entiteiten of entiteitseigenschappen te beperken die door een query worden geretourneerd.
Systeemqueryoptie | Beschrijving |
---|---|
$filter |
Retourneert alleen tabellen of entiteiten die voldoen aan het opgegeven filter. Houd er rekening mee dat niet meer dan 15 discrete vergelijkingen zijn toegestaan binnen een $filter tekenreeks. |
$top |
Retourneert alleen de belangrijkste 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 indient die vervolgtokens bevatten, moet u de oorspronkelijke URI op de aanvraag doorgeven. Als u bijvoorbeeld een $filter
, $select
of $top
queryoptie hebt opgegeven als onderdeel van de oorspronkelijke aanvraag, wilt u deze optie opnemen voor volgende aanvragen. Anders kunnen uw volgende aanvragen onverwachte resultaten retourneren. Zie Time-out en paginering van query's voor meer informatie.
Houd er rekening mee dat de $top
queryoptie in het geval dat resultaten worden gepagineerd het maximum aantal resultaten per pagina aangeeft, 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 vergelijkingsoperatoren gebruiken om de criteria op te geven waarmee 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 de specificatie van het OData-protocol voor meer informatie over de filtersyntaxis.
Queryreekscodering
De volgende tekens moeten worden gecodeerd als ze moeten worden gebruikt in een querytekenreeks:
- Slash (/)
- 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' zou bijvoorbeeld het volgende zijn:
o''clock
Voorbeeldquery-expressies
In de volgende voorbeelden ziet u hoe u de aanvraag-URI maakt voor enkele typische entiteitsquery's met behulp van REST-syntaxis. Dezelfde query's kunnen worden geschreven met behulp van LINQ-syntaxis. Zie LINQ-query's schrijven voor de tabelservice voor meer informatie.
Houd er rekening mee dat zowel de als $filter
de $top
opties kunnen worden gebruikt om te filteren op tabelnamen, met behulp van de syntaxis die wordt gedemonstreerd voor het filteren op eigenschappen van het typeString
.
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 en RowKey
eigenschappen de PartitionKey
primaire sleutel van een entiteit vormen, kunt u als volgt een speciale syntaxis gebruiken om de 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 als RowKey
de PartitionKey
eigenschappen zijn van het typeString
.
Filtertekenreeksen maken
Houd bij het maken van een filtertekenreeks rekening met de volgende regels:
Gebruik de logische operators die zijn gedefinieerd door de OData Protocol-specificatie 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
Zorg ervoor dat u controleert of een eigenschap expliciet is getypt voordat ervan wordt uitgegaan 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.
Het volgende voorbeeldfilters op de PartitionKey
en RowKey
eigenschappen; er kunnen ook aanvullende niet-sleuteleigenschappen worden toegevoegd aan de querytekenreeks.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
Het volgende voorbeeld filtert op een FirstName
en LastName
eigenschap:
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 jokertekenquery's. U kunt echter voorvoegselkoppelingen uitvoeren 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 voor de URI 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 true
u of false
zonder aanhalingstekens op.
In het volgende voorbeeld worden alle entiteiten geretourneerd waarop de IsActive
eigenschap is ingesteld true
op:
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 op de URI, gevolgd door de datum-/tijdconstante in enkele aanhalingstekens. De datum-/tijdconstante moet een gecombineerde UTC-indeling hebben, zoals wordt beschreven in datum/tijd-waarden opmaken.
In het volgende voorbeeld worden entiteiten geretourneerd 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 guid
trefwoord op de URI op, gevolgd door de guid-constante in enkele aanhalingstekens.
In het volgende voorbeeld worden entiteiten geretourneerd waarbij 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
Time-out en paginering van query's
LINQ-query's schrijven voor de tabelservice