Compartilhar via


Obter versões mais recentes de documentos do Azure Cosmos DB

Neste artigo, você aprenderá como obter a versão mais recente dos documentos ingeridos.

Obter as versões mais recentes dos documentos

Toda vez que uma atualização de documento é ingerida a partir do feed de alterações, uma nova linha é adicionada à tabela de destino. Com o tempo, a tabela criará um histórico de cada documento no contêiner correspondente do Cosmos DB. Um requisito típico é consultar a versão mais recente de um documento, o que corresponde a obter o estado atual do contêiner do Cosmos DB.

Você pode usar as seguintes maneiras para consultar o estado atual da sua tabela:

Nos exemplos, você obterá as versões mais recentes do documento resumindo a tabela pela coluna ID, usando a função arg_max na coluna _timestamp para exibir apenas as linhas com os carimbos de data/hora mais recentes.

Observação

A coluna _timestamp é criada a partir da propriedade _ts dos documentos ingeridos do Cosmos DB. A conversão de DateTimeFromUnixSeconds (_ts) para datetime (_timestamp) é realizada pelo mapeamento da tabela de ingestão configurado para a tabela. Os dados convertidos na coluna _timestamp tornam as consultas e exibições materializadas mais eficientes do que usar o valor nativo DateTimeFromUnixSeconds _ts.

Execute uma consulta para obter as versões mais recentes dos documentos

Execute a seguinte consulta para obter as versões mais recentes dos documentos:

TestTable
| summarize arg_max(_timestamp, *) by Id

Se você usou marcadores suaves para marcar documentos excluídos, poderá filtrá-los com a seguinte consulta:

TestTable
| summarize arg_max(_timestamp, *) by Id
| where not(IsDeleted)

Criar uma exibição materializada das versões mais recentes dos documentos

Se o seu contêiner do Cosmos DB tiver muitas atualizações, a consulta para obter as versões mais recentes dos documentos pode ser lenta. As exibições materializada geralmente têm melhor desempenho do que uma consulta se houver muitas atualizações. Se a consulta for executada com frequência, o uso de uma exibição materializada pode ser vantajoso e economizar custos.

Execute o comando a seguir para criar uma exibição materializada das versões mais recentes dos documentos:

.create materialized-view LatestDocuments on table TestTable
{
    CosmosChangeFeed1
    | summarize arg_max(_timestamp, *) by Id
}

Em uma exibição materializada, não é possível filtrar nossos marcadores de software como parte da consulta. Portanto, para remover os documentos excluídos indicados por marcadores de software, consulte a exibição materializada e filtre os resultados da seguinte forma:

LatestDocuments
| where not(IsDeleted)

Opcionalmente, encapsule a consulta filtrada em uma função armazenada e chame-a para obter os últimos resultados filtrados, como segue:

.create function LatestDocumentsDeletedRemoved(){
    LatestDocuments
    | where not(IsDeleted)
}

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area