Megosztás a következőn keresztül:


Oktatóanyag: Az Azure Cosmos DB lekérdezése a Table API használatával

A KÖVETKEZŐKRE VONATKOZIK: Asztal

Az Azure Cosmos DB for Table támogatja az OData- és LINQ-lekérdezéseket kulcs/érték (tábla) adatokon.

Ez a cikk a következő feladatokat mutatja be:

  • Adatok lekérdezése a Table API-val

A cikkben szereplő lekérdezések a következő minta People táblát használják:

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

A táblák és entitások lekérdezése az API használatával történő lekérdezésével kapcsolatos részletekért lásd : Táblák és entitások lekérdezése.

Előfeltételek

A lekérdezések működéséhez Azure Cosmos DB-fiókkal kell rendelkeznie, és a tárolóban entitásadatoknak kell lennie. Ha nem rendelkezik fiókkal vagy adatokkal, végezze el az Azure Cosmos DB for Table for .NET rövid útmutatóját egy fiók létrehozásához és az adatbázis feltöltéséhez.

Lekérdezés PartitionKey és RowKey tulajdonságok esetén

Mivel a PartitionKey és a RowKey tulajdonságok képezik az entitás fő kulcsát, a következő speciális szintaxis segítségével azonosíthatja az entitást:

Lekérdezés

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

Results (Eredmények)

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

A $filter lehetőség részeként is meghatározhatja ezeket a tulajdonságokat, a következő szakaszban látható módon. A kulcstulajdonságok neve és az állandó értékek megkülönböztetik a kis- és nagybetűket. A PartitionKey és a RowKey tulajdonság is sztring típusú.

Lekérdezés OData-szűrővel

Szűrő sztringjének felépítésekor ne feledje ezeket a szabályokat:

  • Az OData-protokollspecifikáció által definiált logikai operátorokat használja a tulajdonságok és az értékek összehasonlítására. Egy tulajdonság nem hasonlítható össze dinamikus értékkel. A kifejezés egyik oldalának állandónak kell lennie.
  • Az URL-kódolású szóközöknek el kell különülniük a tulajdonság nevével, operátorával és állandó értékével. A szóköz URL-kódolása %20.
  • A szűrési sztring minden része megkülönbözteti a kis- és nagybetűket.
  • Az állandó érték adattípusának meg kell egyeznie a tulajdonságéval ahhoz, hogy a szűrő érvényes eredményeket adjon vissza. A támogatott tulajdonságtípusokról további információt a Table service adatmodelljének ismertetése című témakörben talál.

A következő példalekérdezés bemutatja, hogyan szűrhet a PartitionKey és az E-mail tulajdonságok alapján OData $filter használatával.

Lekérdezés

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

További információ a szűrőkifejezések felépítéséről különböző adattípusokhoz:Táblák és entitások lekérdezése.

Results (Eredmények)

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

A datetime tulajdonságok lekérdezései nem adnak vissza adatokat az Azure Cosmos DB Table API-jában való végrehajtáskor. Míg az Azure Table Storage a dátumértékeket a kullancsok időrészletességével tárolja, az Azure Cosmos DB Table API-ja használja a _ts tulajdonságot. A _ts tulajdonság a részletesség második szintjén van, ami nem OData-szűrő. Az Azure Cosmos DB letiltja a lekérdezéseket az időbélyeg tulajdonságain. Áthidaló megoldásként megadhat egy egyéni datetime vagy long data type tulajdonságot, és beállíthatja az ügyfél dátumértékét.

Lekérdezés a LINQ használatával

A LINQ használatával is végezhet lekérdezést, amelyet a rendszer a megfelelő OData-lekérdezési kifejezésekre fordít. A következő példa bemutatja, hogyan építhetők fel lekérdezések a .NET SDK-val:

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

Következő lépések

Továbbléphet a következő oktatóanyagra, amelyben megismerheti, hogyan terjesztheti az adatait globálisan.