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