Kurz: Dotazování služby Azure Cosmos DB pomocí rozhraní API pro tabulku

PLATÍ PRO: Tabulka

Azure Cosmos DB for Table podporuje dotazy OData a LINQ na data klíč/hodnota (tabulka).

Tento článek se zabývá následujícími úkony:

  • Dotazování dat pomocí rozhraní API pro tabulku

Dotazy v tomto článku využívají následující ukázkovou tabulku People:

PartitionKey RowKey E-mail PhoneNumber
Harp Walter Walter@contoso.com 425-555-0101
Smith Ben Ben@contoso.com 425-555-0102
Smith Jeff Jeff@contoso.com 425-555-0104

Podrobnosti o dotazování pomocí rozhraní API pro tabulku najdete v tématu Dotazování tabulek a entit.

Požadavky

Aby tyto dotazy fungovaly, musíte mít účet služby Azure Cosmos DB a data entit v kontejneru. Pokud nemáte účet nebo data, dokončete rychlý start: Azure Cosmos DB pro tabulku pro .NET a vytvořte účet a naplňte databázi.

Dotazování sloupců PartitionKey a RowKey

Vzhledem k tomu, že vlastnosti PartitionKey (Klíč oddílu) a RowKey (Klíč řádku) tvoří primární klíč entity, můžete k identifikaci entity použít následující speciální syntaxi:

Dotaz

https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')

Výsledky

PartitionKey RowKey E-mail PhoneNumber
Harp Walter Walter@contoso.com 425-555-0104

Alternativně můžete tyto vlastnosti zadat v rámci možnosti $filter, jak je znázorněno v následující části. V názvech vlastností klíče a konstantních hodnotách se rozlišují velká a malá písmena. Vlastnosti PartitionKey i RowKey jsou typu String.

Dotazování s použitím filtru OData

Při vytváření řetězce filtru mějte na paměti tato pravidla:

  • K porovnání vlastnosti s hodnotou použijte logické operátory definované ve specifikaci protokolu OData. Vlastnost nemůžete porovnat s dynamickou hodnotou. Jedna strana výrazu musí být konstanta.
  • Mezery zakódované v adrese URL musí oddělit název vlastnosti, operátor a konstantní hodnotu. 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 Principy datového modelu služby Table Service.

Tady je příklad dotazu, který ukazuje filtrování podle vlastností PartitionKey a Email pomocí filtru OData $filter.

Dotaz

https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'

Další informace o vytváření výrazů filtru pro různé datové typy najdete v tématu Dotazování tabulek a entit.

Výsledky

PartitionKey RowKey E-mail PhoneNumber
Smith Ben Ben@contoso.com 425-555-0102

Dotazy na vlastnosti datetime nevrací při spuštění v rozhraní API služby Azure Cosmos DB pro tabulku žádná data. Zatímco Azure Table Storage ukládá hodnoty kalendářních dat s časovými intervaly značek, rozhraní API pro tabulku ve službě _ts Azure Cosmos DB používá vlastnost . Vlastnost _ts je na druhé úrovni členitosti, což není filtr OData. Azure Cosmos DB blokuje dotazy na vlastnosti časového razítka. Jako alternativní řešení můžete definovat vlastní vlastnost datového typu datetime nebo long a nastavit hodnotu data z klienta.

Dotazování pomocí jazyka LINQ

Dotazovat můžete také pomocí jazyka LINQ, který se přeloží na odpovídající výrazy dotazu OData. Tady je příklad sestavování dotazů pomocí sady .NET SDK:

IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>()
            .Where(x => x.PartitionKey == "4")
            .Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Email = x.Email });

Další kroky

Teď můžete pokračovat k dalšímu kurzu, kde se dozvíte, jak globálně distribuovat data.