Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Você está procurando uma solução de banco de dados para cenários de alta escala com um contrato de nível de serviço (SLA) de disponibilidade de 99.999%, dimensionamento automático instantâneo e failover automático em várias regiões? Considere Azure Cosmos DB para NoSQL.
O Azure Cosmos DB for Table dá suporte a consultas OData e LINQ em dados de chave/valor (tabela).
Este artigo abrange as seguintes tarefas:
- Consultando dados com a API para Tabela
As consultas neste artigo utilizam a tabela People de exemplo seguinte:
| Chave de Partição | RowKey | Número de Telefone | |
|---|---|---|---|
| Harp | Walter | Walter@contoso.com | 425-555-0101 |
| Silva | Ben | Ben@contoso.com | 425-555-0102 |
| Silva | Jeff | Jeff@contoso.com | 425-555-0104 |
Para obter detalhes sobre como consultar usando a API para Tabela, consulte Consultando tabelas e entidades.
Pré-requisitos
Para estas consultas funcionarem, tem de ter uma conta do Azure Cosmos DB e dados de entidade no contentor. Se você não tiver uma conta ou dados, conclua Guia de início rápido: Azure Cosmos DB for Table for .NET para criar uma conta e preencher seu banco de dados.
Consultar em PartitionKey e RowKey
Uma vez que as propriedades PartitionKey e RowKey formam a chave primária de uma entidade, pode utilizar a seguinte sintaxe especial para identificar a entidade:
Consulta
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
Resultados
| Chave de Partição | RowKey | Número de Telefone | |
|---|---|---|---|
| Harp | Walter | Walter@contoso.com | 425-555-0104 |
Em alternativa, pode especificar estas propriedades como parte da opção $filter, conforme mostrado na secção seguinte. Os nomes das propriedades de chave e os valores constantes são sensíveis a maiúsculas e minúsculas. As propriedades PartitionKey e RowKey são do tipo String.
Consultar com um filtro OData
Quando estiver a criar uma cadeia de filtro, não se esqueça destas regras:
- Utilize os operadores lógicos definidos pela Especificação do Protocolo OData para comparar uma propriedade a um valor. Não é possível comparar uma propriedade com um valor dinâmico. Um lado da expressão tem de ser uma constante.
- Os espaços codificados por URL devem separar o nome da propriedade, o operador e o valor constante. Um espaço tem codificação URL como
%20. - Todas as partes da cadeia de filtro são sensíveis a maiúsculas e minúsculas.
- O valor constante tem de ser do mesmo tipo de dados da propriedade para que o filtro devolva resultados válidos. Para obter mais informações sobre tipos de propriedade suportados, consulte Noções básicas sobre o modelo de dados do serviço Tabela.
Aqui está um exemplo de consulta que mostra como filtrar pelas propriedades PartitionKey e Email usando um OData $filter.
Consulta
https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'
Para obter mais informações sobre como criar expressões de filtro para vários tipos de dados, veja Consultar Tabelas e Entidades.
Resultados
| Chave de Partição | RowKey | Número de Telefone | |
|---|---|---|---|
| Silva | Ben | Ben@contoso.com | 425-555-0102 |
As consultas em propriedades datetime não retornam dados quando executadas na API para Tabela do Azure Cosmos DB. Enquanto o armazenamento de Tabela do Azure armazena valores de data com granularidade de tempo de ticks, a API para Tabela no Azure Cosmos DB usa a _ts propriedade. A _ts propriedade está em um segundo nível de granularidade, que não é um filtro OData. O Azure Cosmos DB bloqueia as consultas nas propriedades de carimbo de data/hora. Como solução alternativa, pode-se definir uma propriedade personalizada de tipo de dados datetime ou long e definir o valor da data a partir do cliente.
Fazer consulta com o LINQ
Também pode consultar usando o LINQ, que traduz as expressões de consulta OData correspondentes. Segue-se um exemplo de como criar consultas com o SDK .NET:
IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>()
.Where(x => x.PartitionKey == "4")
.Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Email = x.Email });
Próximos passos
Agora pode avançar para o tutorial seguinte para saber como distribuir dados globalmente.