Partilhar via


Obtenha as versões mais recentes dos documentos do Azure Cosmos DB

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

Obtenha as versões mais recentes dos documentos

Sempre que uma atualização de documento é ingerida a partir do feed de alterações, uma nova linha é adicionada na tabela de destino. Com o tempo, a tabela constrói 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, corresponde a obter o estado atual do contêiner do Cosmos DB.

Você pode usar as seguintes maneiras de consultar o estado atual da 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 mostrar 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 pela ingestão mapeamento de tabela configurado para a tabela. Os dados convertidos na coluna _timestamp tornam as consultas e exibições materializadas mais eficientes do que o uso do valor DateTimeFromUnixSeconds_ts nativo.

Executar 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 utilizar os marcadores suaves para indicar documentos eliminados, poderá filtrar esses documentos com uma pesquisa. Por exemplo, se você usar uma propriedade booleana chamada IsDeleted que indica documentos excluídos, poderá usar a seguinte consulta para filtrar os documentos excluídos suavemente:

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

Criar uma vista materializada das versões mais recentes dos documentos

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

Execute o seguinte comando para criar uma vista materializada das versões mais recentes dos documentos:

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

Em uma visão materializada, você não pode filtrar nossos marcadores suaves como parte de sua consulta. Portanto, para remover documentos excluídos indicados por marcadores suaves, consulte a visualização materializada e filtre os resultados, da seguinte forma:

LatestDocuments
| where not(IsDeleted)

Opcionalmente, encapsular a consulta filtrada em uma função armazenada e chamá-la para obter os resultados filtrados mais recentes, da seguinte maneira:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area