Azure Cosmos DB: procedura per l'esecuzione di query sui dati della tabella con l'API Table (anteprima)

L'API Table di Azure Cosmos DB (anteprima) supporta l'esecuzione di query OData e LINQ sui dati chiave/valore (tabella).

Questo articolo illustra le attività seguenti:

  • Esecuzione di query sui dati con l'API Table

Le query di questo articolo usano la tabella di esempio People:

PartitionKey RowKey Email 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

Poiché Azure Cosmos DB è compatibile con le API di archiviazione delle tabelle di Azure, vedere Querying Tables and Entities (Esecuzione di query su tabelle ed entità) per informazioni dettagliate su come eseguire una query con l'API Tabella.

Per altre informazioni sulle funzionalità Premium offerte da Azure Cosmos DB, vedere Azure Cosmos DB: API Table e Sviluppare con l'API Table in .NET.

Prerequisiti

Per il funzionamento di queste query è necessario disporre di un account Azure Cosmos DB e nel contenitore devono essere presenti dati di entità. Questi requisiti non sono disponibili? Completare la Guida introduttiva di 5 minuti o l'esercitazione per sviluppatori per creare un account e popolare il database.

Query su PartitionKey e RowKey

Poiché le proprietà PartitionKey e RowKey costituiscono la chiave primaria di un'entità, è possibile usare la sintassi speciale seguente per identificare l'entità:

Query

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

Risultati

PartitionKey RowKey Email PhoneNumber
Harp Walter Walter@contoso.com 425-555-0104

In alternativa, è possibile specificare queste proprietà come parte dell'opzione $filter, come illustrato nella sezione seguente. Si noti che i nomi delle proprietà chiave e i valori costanti distinguono tra maiuscole e minuscole. Entrambe le proprietà PartitionKey e RowKey sono di tipo String.

Eseguire una query usando un filtro OData

Quando si crea una stringa di filtro, tenere presente queste regole:

  • Usare gli operatori logici definiti dalla specifica del protocollo OData per confrontare una proprietà con un valore. Si noti che non è possibile confrontare una proprietà con un valore dinamico. Un lato dell'espressione deve essere una costante.
  • Il nome della proprietà, l'operatore e il valore costante devono essere separati da spazi con codifica URL. Uno spazio con codifica URL è come %20.
  • Viene effettuata la distinzione tra maiuscole e minuscole per tutte le parti della stringa di filtro.
  • Il valore costante deve essere dello stesso tipo di dati della proprietà affinché il filtro restituisca risultati validi. Per altre informazioni sui tipi di proprietà supportati, vedere Informazioni sul modello di dati del servizio tabelle.

La query di esempio illustra come filtrare in base alla proprietà PartitionKey Email usando un $filter ODATA.

Query

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

Per altre informazioni su come creare espressioni filtro per vari tipi di dati sono disponibili in Querying Tables and Entities (Esecuzione di query su tabelle ed entità).

Risultati

PartitionKey RowKey Email PhoneNumber
Ben Smith Ben@contoso.com 425-555-0102

Eseguire una query utilizzando LINQ

È anche possibile eseguire query con LINQ, che consente di tradurle nelle corrispondenti espressioni di query OData. L'esempio seguente mostra come compilare le query usando .NET SDK:

CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("people");

TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>()
    .Where(
        TableQuery.CombineFilters(
            TableQuery.GenerateFilterCondition(PartitionKey, QueryComparisons.Equal, "Smith"),
            TableOperators.And,
            TableQuery.GenerateFilterCondition(Email, QueryComparisons.Equal,"Ben@contoso.com")
    ));

await table.ExecuteQuerySegmentedAsync<CustomerEntity>(query, null);

Passaggi successivi

In questa esercitazione sono state eseguite le operazioni seguenti:

  • È stato appreso come eseguire query usando l'API Table (anteprima)

È ora possibile passare all'esercitazione successiva per imparare a distribuire i dati a livello globale.