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 PartitionKeya 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 $filtermožnost dotazu , $selectnebo $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 Stringa 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