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

A KÖVETKEZŐKRE VONATKOZIK: Táblázat

Az Azure Cosmos DB for Table támogatja az OData- és LINQ-lekérdezéseket a 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ábla API-jának használatával történő lekérdezéssel 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 nevei és az állandó értékek megkülönböztetik a kis- és nagybetűket. A PartitionKey és a RowKey tulajdonság is Karakterlánc 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. További információ a támogatott tulajdonságtípusokról: A Table Service adatmodelljének ismertetése.

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, amikor az Azure Cosmos DB Table API-jában vannak végrehajtva. Míg az Azure Table Storage időrészletesen tárolja a dátumértékeket, az Azure Cosmos DB Table API-ja a tulajdonságot _ts használja. A _ts tulajdonság a részletesség második szintjén van, ami nem OData-szűrő. Az Azure Cosmos DB blokkolja a lekérdezéseket az időbélyeg tulajdonságaiban. Áthidaló megoldásként megadhat egy egyéni datetime vagy long típusú tulajdonságot, és beállíthatja a dátumértéket az ügyféltől.

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.