Dotazování tabulek a entit
Dotazování tabulek a entit ve službě Table Service vyžaduje pečlivé vytvoření identifikátoru URI požadavku. Následující části popisují možnosti dotazů a ukazují některé běžné scénáře.
Základní syntaxe dotazů
Pokud chcete vrátit všechny tabulky v daném účtu úložiště, proveďte operaci s prostředkem GET
Tabulky, jak je popsáno v operaci Dotazování na tabulky . Základní identifikátor URI pro adresování prostředku Tabulky je následující:
https://myaccount.table.core.windows.net/Tables
Pokud chcete vrátit jednu pojmenovanou tabulku, zadejte ji následujícím způsobem:
https://myaccount.table.core.windows.net/Tables('MyTable')
Pokud chcete vrátit všechny entity v tabulce, zadejte název tabulky v identifikátoru URI bez prostředku Tables:
https://myaccount.table.core.windows.net/MyTable()
Výsledky dotazu jsou seřazené podle PartitionKey
a potom podle RowKey
. Řazení výsledků jiným způsobem se v současné době nepodporuje.
Můžete zadat další možnosti pro omezení sady vrácených tabulek nebo entit, jak je popsáno v následující části Podporované možnosti dotazů .
Poznámka
Počet entit vrácených pro jeden požadavek může být omezený, pokud dotaz překročí maximální počet entit, překročí interval časového limitu nebo překročí hranici oddílu. Další informace najdete v tématu Vypršení časového limitu dotazu a stránkování.
Podporované možnosti dotazů
Služba Table Service podporuje následující možnosti dotazu, které odpovídají specifikaci protokolu OData. Pomocí těchto možností můžete omezit sadu tabulek, entit nebo vlastností entit vrácených dotazem.
Možnost systémového dotazu | Description |
---|---|
$filter |
Vrátí pouze tabulky nebo entity, které vyhovují zadanému filtru. Všimněte si, že v $filter řetězci není povoleno více než 15 samostatných porovnání. |
$top |
Vrátí pouze nejvyšší n tabulky nebo entity ze sady. |
$select |
Vrátí požadované vlastnosti entity ze sady. Tato možnost dotazu je podporovaná jenom pro požadavky, které používají verzi 2011-08-18 nebo novější. Další informace najdete v tématu Zápis dotazů LINQ pro službu Table Service. |
Poznámka
Požadavek, který vrátí více než výchozí maximum nebo zadaný maximální počet výsledků, vrátí pokračovací token pro provedení stránkování. Při provádění dalších požadavků, které zahrnují tokeny pro pokračování, nezapomeňte v požadavku předat původní identifikátor URI. Pokud jste například jako součást původního požadavku zadali $filter
možnost dotazu , $select
nebo $top
, budete chtít tuto možnost zahrnout do následných požadavků. V opačném případě by následné požadavky mohly vrátit neočekávané výsledky. Další informace najdete v tématu Vypršení časového limitu dotazu a stránkování .
Všimněte si $top
, že možnost dotazu v případě stránkování výsledků určuje maximální počet výsledků na stránku, nikoli maximální počet výsledků v celé sadě odpovědí.
Služba Table Service nepodporuje další možnosti dotazů definované službou OData.
Podporované operátory porovnání
$filter
V rámci klauzule můžete pomocí relačních operátorů určit kritéria, podle kterých chcete filtrovat výsledky dotazu.
Pro všechny typy vlastností jsou podporovány následující relační operátory:
Operátor | Výraz identifikátoru URI |
---|---|
Equal |
eq |
GreaterThan |
gt |
GreaterThanOrEqual |
ge |
LessThan |
lt |
LessThanOrEqual |
le |
NotEqual |
ne |
Logické vlastnosti podporují také následující operátory:
Operátor | Výraz identifikátoru URI |
---|---|
And |
and |
Not |
not |
Or |
or |
Další informace o syntaxi filtru najdete v tématu Specifikace protokolu OData.
Kódování řetězce dotazu
Následující znaky musí být kódovány, pokud se mají použít v řetězci dotazu:
- Lomítko (/)
- Otazník (?)
- Dvojtečka (:)
- Symbol "At" (@)
- Ampersand (&)
- Znaménko rovná se (=)
- Znaménko plus (+)
- Čárka (,)
- Znak dolaru ($)
Jednoduchá uvozovka (')
Jednoduché uvozovky v řetězcích dotazu musí být reprezentované jako dvě po sobě jdoucí jednoduché uvozovky (''
). Například "o'clock" by bylo:
o''clock
Ukázkové výrazy dotazu
Následující ukázky ukazují, jak vytvořit identifikátor URI požadavku pro některé typické dotazy na entity pomocí syntaxe REST. Stejné dotazy lze zapsat pomocí syntaxe LINQ. Další informace najdete v tématu Zápis dotazů LINQ pro službu Table Service.
Všimněte si, že možnosti a $top
$filter
lze použít také k filtrování názvů tabulek pomocí syntaxe předvládaného pro filtrování vlastností typu String
.
Vrácení prvních n entit
Pokud chcete vrátit hlavní n
entity pro libovolný dotaz, zadejte $top
možnost dotazu. Následující příklad vrátí prvních 10 entit z tabulky s názvem Customers:
https://myaccount.table.core.windows.net/Customers()?$top=10
Filtrování vlastností PartitionKey a RowKey
PartitionKey
Vzhledem k tomu, že vlastnosti a RowKey
tvoří primární klíč entity, můžete k identifikaci entity použít speciální syntaxi, a to následujícím způsobem:
https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
Alternativně můžete tyto vlastnosti zadat v rámci možnosti $filter
, jak je znázorněno v následující části.
Poznámka: V názvech vlastností klíčů a hodnotách konstant se rozlišují malá a velká písmena.
PartitionKey
Vlastnosti i RowKey
jsou typu String
.
Vytváření řetězců filtru
Při vytváření řetězce filtru mějte na paměti tato pravidla:
Pomocí logických operátorů definovaných specifikací protokolu OData můžete porovnat vlastnost s hodnotou. Všimněte si, že není možné porovnat vlastnost s dynamickou hodnotou; jedna strana výrazu musí být konstanta.
Název vlastnosti, operátor a hodnotu konstanty musí být oddělené mezerami zakódovanými do adresy URL. Mezera se do adresy URL kóduje jako
%20
.Ve všech částech řetězce filtru se rozlišují malá a velká písmena.
Hodnota konstanty musí být stejného datového typu jako vlastnost, aby filtr vrátil platné výsledky. Další informace o podporovaných typech vlastností najdete v tématu Vysvětlení datového modelu služby Table Service.
Poznámka
Nezapomeňte zkontrolovat, zda byla vlastnost explicitně zadána, než za předpokladu, že je jiného typu než řetězec. Pokud byla vlastnost explicitně zadána, je typ uveden v odpovědi při vrácení entity. Pokud vlastnost nebyla explicitně zadána, bude typu String
a tento typ nebude v odpovědi při vrácení entity uveden.
Filtrování vlastností řetězce
Při filtrování vlastností řetězce uzavřete řetězcovou konstantu do jednoduchých uvozovek.
Následující příklad filtruje PartitionKey
vlastnosti a . RowKey
Do řetězce dotazu je možné přidat také další vlastnosti, které nejsou klíči.
https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
Následující příklad filtruje FirstName
vlastnost a LastName
:
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'
Všimněte si, že služba Table Service nepodporuje dotazy se zástupnými znamédly. Párování předpon však můžete provést pomocí relačních operátorů pro požadovanou předponu. Následující příklad vrátí entity s LastName
vlastností začínající písmenem "A":
https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'
Filtrování číselných vlastností
Pokud chcete filtrovat podle celočíselného čísla nebo čísla s plovoucí desetinou čárkou, zadejte hodnotu konstanty v identifikátoru URI bez uvozovek.
Tento příklad vrátí všechny entity s Age
vlastností, jejichž hodnota je větší než 30:
https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030
Tento příklad vrátí všechny entity s AmountDue
vlastností, jejichž hodnota je menší nebo rovna 100,25:
https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20
Filtrování logických vlastností
Pokud chcete filtrovat podle logické hodnoty, zadejte true
uvozovky nebo false
bez.
Následující příklad vrátí všechny entity, u kterých IsActive
je vlastnost nastavená na true
:
https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true
Filtrování vlastností DateTime
Pokud chcete filtrovat DateTime
podle hodnoty, zadejte datetime
klíčové slovo v identifikátoru URI následované konstantou data a času v jednoduchých uvozovkách. Konstanta data a času musí být v kombinovaném formátu UTC, jak je popsáno v tématu Formátování hodnot data a času.
Následující příklad vrátí entity, u CustomerSince
kterých se vlastnost rovná 10. červenci 2008:
https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'
Filtrování vlastností GUID
Pokud chcete filtrovat podle hodnoty GUID, zadejte klíčové slovo v identifikátoru guid
URI následované konstantou GUID v jednoduchých uvozovkách.
Následující příklad vrátí entity, u kterých je GuidValue
vlastnost rovna :
https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'
Viz také
Koncepty služby Table service
Principy datového modelu služby Table Service
Adresování prostředků služby Table Service
Vypršení časového limitu dotazu a stránkování
Zápis dotazů LINQ pro službu Table Service