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 | 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 | 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 | 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.