Zelfstudie: Query's uitvoeren op Azure Cosmos DB met behulp van de API voor Table
VAN TOEPASSING OP: Tafel
Azure Cosmos DB for Table biedt ondersteuning voor OData- en LINQ-query's op sleutel-/waardegegevens (tabelgegevens).
Dit artikel behandelt de volgende taken:
- Gegevens opvragen met de API voor Table
In de query's in dit artikel wordt de volgende voorbeeldtabel People
gebruikt:
PartitionKey | RowKey | E-mailen | 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 |
Zie Tabellen en entiteiten opvragen voor meer informatie over het uitvoeren van query's met behulp van de API voor Table.
Vereisten
Deze query's werken alleen als u een Azure DB Cosmos DB-account hebt en een container met entiteitsgegevens. Als u geen account of gegevens hebt, voltooit u de quickstart: Azure Cosmos DB voor Table voor .NET om een account te maken en uw database te vullen.
Query op PartitionKey en RowKey
Omdat de eigenschappen PartitionKey en RowKey de primaire sleutel van een entiteit vormen, kunt u de volgende specifieke syntaxis gebruiken voor het identificeren van de entiteit:
Query
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
Results
PartitionKey | RowKey | E-mailen | PhoneNumber |
---|---|---|---|
Harp | Walter | Walter@contoso.com | 425-555-0104 |
U kunt deze eigenschappen ook opgeven als onderdeel van de optie $filter
, zoals wordt weergegeven in de volgende sectie. De namen van sleuteleigenschappen en constante waarden zijn hoofdlettergevoelig. De eigenschappen PartitionKey en RowKey zijn van het type String.
Query's uitvoeren met behulp van een OData-filter
Houd bij het samenstellen van een filtertekenreeks rekening met deze regels:
- Gebruik de logische operators die door de specificatie van het OData-protocol zijn gedefinieerd om een eigenschap te vergelijken met een waarde. U kunt een eigenschap niet vergelijken met een dynamische waarde. Eén kant van de expressie moet een constante zijn.
- Met URL gecodeerde spaties moet de eigenschapsnaam, operator en constante waarde worden gescheiden. Een spatie wordt in URL gecodeerd als
%20
. - Alle onderdelen van de filtertekenreeks zijn hoofdlettergevoelig.
- Het filter retourneert alleen geldige resultaten als de constante waarde van hetzelfde gegevenstype is als de eigenschap. Zie Informatie over het gegevensmodel tabelservice voor meer informatie over ondersteunde eigenschapstypen.
Hier volgt een voorbeeldquery die laat zien hoe u de eigenschappen PartitionKey en Email filtert met behulp van een OData-$filter
.
Query
https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'
Zie Querying Tables and Entities (Tabellen en entiteiten opvragen) voor meer informatie over het samenstellen van filterexpressies voor verschillende soorten gegevens.
Results
PartitionKey | RowKey | E-mailen | PhoneNumber |
---|---|---|---|
Smith | Ben | Ben@contoso.com | 425-555-0102 |
De query's op datum/tijd-eigenschappen retourneren geen gegevens wanneer ze worden uitgevoerd in de API van Azure Cosmos DB voor Table. Terwijl de Azure Table Storage datumwaarden met tijdgranulariteit van tikken opslaat, gebruikt de API voor Table in Azure Cosmos DB de _ts
eigenschap. De eigenschap _ts
bevindt zich op een tweede granulatieniveau, maar dit is geen OData-filter. Azure Cosmos DB blokkeert de query's op tijdstempeleigenschappen. Als tijdelijke oplossing kunt u een aangepaste datum-/tijd- of lang gegevenstype-eigenschap definiëren en de datumwaarde van de client instellen.
Query’s uitvoeren met LINQ
U kunt ook query's uitvoeren met behulp van LINQ, die deze vertaalt naar de bijbehorende OData-query-expressies. Hier volgt een voorbeeld van hoe u query's opbouwt met behulp van de .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 });
Volgende stappen
U kunt nu doorgaan met de volgende zelfstudie, waarin u leert hoe u uw gegevens globaal distribueert.