Didacticiel : Interroger Azure Cosmos DB à l’aide de l’API TableTutorial: Query Azure Cosmos DB by using the Table API

L’API Table d’Azure Cosmos DB prend en charge les requêtes OData et LINQ effectuées sur des données de clé/valeur (table).The Azure Cosmos DB Table API supports OData and LINQ queries against key/value (table) data.

Cet article décrit les tâches suivantes :This article covers the following tasks:

  • Interrogation des données avec l’API de tableQuerying data with the Table API

L’exemple de table People suivant est utilisé pour les interrogations de cet article :The queries in this article use the following sample People table:

PartitionKeyPartitionKey RowKeyRowKey EmailEmail PhoneNumberPhoneNumber
HarpHarp WalterWalter Walter@contoso.com 425-555-0101425-555-0101
SmithSmith BenBen Ben@contoso.com 425-555-0102425-555-0102
SmithSmith JeffJeff Jeff@contoso.com 425-555-0104425-555-0104

Consultez Interrogation des tables et des entités pour plus d’informations sur la manière d’effectuer des requêtes à l’aide de l’API Table.See Querying Tables and Entities for details on how to query by using the Table API.

Pour plus d’informations sur les fonctionnalités étendues offertes par Azure Cosmos DB, consultez Azure Cosmos DB : API Table et Développer avec l’API Table en utilisant .NET.For more information on the premium capabilities that Azure Cosmos DB offers, see Azure Cosmos DB Table API and Develop with the Table API in .NET.

Conditions préalables requisesPrerequisites

Pour le bon fonctionnement de ces requêtes, vous devez disposer d’un compte Azure Cosmos DB et de données d’entité dans le conteneur.For these queries to work, you must have an Azure Cosmos DB account and have entity data in the container. Cela n’est pas le cas ?Don't have any of those? Lancez le démarrage rapide en 5 minutes ou le didacticiel destiné aux développeurs pour créer un compte et alimenter votre base de données.Complete the five-minute quickstart or the developer tutorial to create an account and populate your database.

Interroger sur PartitionKey et RowKeyQuery on PartitionKey and RowKey

Les propriétés PartitionKey et RowKey formant une clé primaire d’une entité, vous pouvez utiliser la syntaxe spéciale suivante pour identifier l’entité :Because the PartitionKey and RowKey properties form an entity's primary key, you can use the following special syntax to identify the entity:

RequêteQuery

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

RésultatsResults

PartitionKeyPartitionKey RowKeyRowKey EmailEmail PhoneNumberPhoneNumber
HarpHarp WalterWalter Walter@contoso.com 425-555-0104425-555-0104

Vous pouvez également spécifier ces propriétés dans le cadre de l’option $filter, comme indiqué dans la section suivante.Alternatively, you can specify these properties as part of the $filter option, as shown in the following section. Notez que les noms de propriété de clé et les valeurs de constante respectent la casse.Note that the key property names and constant values are case-sensitive. Les propriétés PartitionKey et RowKey sont de type chaîne.Both the PartitionKey and RowKey properties are of type String.

Interroger en utilisant un filtre ODataQuery by using an OData filter

Quand vous construisez une chaîne de filtrage, prenez en compte les règles suivantes :When you're constructing a filter string, keep these rules in mind:

  • Utilisez les opérateurs logiques définis par la spécification du protocole OData Protocol pour comparer une propriété par rapport à une valeur.Use the logical operators defined by the OData Protocol Specification to compare a property to a value. Notez que vous ne pouvez pas comparer une propriété à une valeur dynamique.Note that you can't compare a property to a dynamic value. Un côté de l’expression doit être une constante.One side of the expression must be a constant.
  • Le nom de la propriété, l’opérateur et la valeur de constante doivent être séparés par des espaces codés URL.The property name, operator, and constant value must be separated by URL-encoded spaces. Un espace est codé URL sous la forme %20.A space is URL-encoded as %20.
  • Toutes les parties de la chaîne de filtrage respectent la casse.All parts of the filter string are case-sensitive.
  • Pour que le filtre retourne des résultats valides, la valeur constante doit être du même type de données que la propriété.The constant value must be of the same data type as the property in order for the filter to return valid results. Pour plus d’informations sur les types de propriétés pris en charge, consultez Présentation du modèle de données du service de Table.For more information about supported property types, see Understanding the Table Service Data Model.

Voici un exemple de requête qui montre comment filtrer sur les propriétés PartitionKey et Email en utilisant un $filter OData.Here's an example query that shows how to filter by the PartitionKey and Email properties by using an OData $filter.

RequêteQuery

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

Pour plus d’informations sur la construction d’expressions de filtre pour différents types de données, consultez Querying Tables and Entities.For more information on how to construct filter expressions for various data types, see Querying Tables and Entities.

RésultatsResults

PartitionKeyPartitionKey RowKeyRowKey EmailEmail PhoneNumberPhoneNumber
SmithSmith BenBen Ben@contoso.com 425-555-0102425-555-0102

Interroger en utilisant LINQQuery by using LINQ

Vous pouvez également interroger en utilisant LINQ, qui est traduit en expressions de requête OData correspondantes.You can also query by using LINQ, which translates to the corresponding OData query expressions. Voici un exemple montrant comment créer des requêtes en utilisant le SDK .NET :Here's an example of how to build queries by using the .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 });

Étapes suivantesNext steps

Dans ce tutoriel, vous avez :In this tutorial, you've done the following:

  • Appris à interroger des données avec l’API TableLearned how to query by using the Table API

Vous pouvez maintenant poursuivre avec le didacticiel suivant montrant comment distribuer vos données globalement.You can now proceed to the next tutorial to learn how to distribute your data globally.