Sdílet prostřednictvím


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

PLATÍ PRO: Stůl

Azure Cosmos DB pro tabulku 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 for Table for .NET k vytvoření účtu a naplnění databáze.

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 klíčových vlastností a konstantních hodnotách se rozlišují malá a velká 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 nelze porovnat s dynamickou hodnotou. Jedna strana výrazu musí být konstanta.
  • Mezery kódované adresou 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í žádná data při spuštění v rozhraní API služby Azure Cosmos DB pro tabulku. Zatímco Azure Table Storage ukládá hodnoty kalendářních dat s časovými intervaly, rozhraní API pro tabulku ve službě Azure Cosmos DB používá _ts vlastnost. Vlastnost _ts je na druhé úrovni členitosti, což není filtr OData. Azure Cosmos DB blokuje dotazy na vlastnosti časového razítka. Alternativním řešením je definovat vlastní vlastnost data a času nebo dlouhého datového typu 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.