Compartir vía


Obtener las últimas versiones de los documentos de Azure Cosmos DB.

En este artículo, aprenderá a obtener la versión más reciente de los documentos ingeridos.

Obtener las versiones más recientes de documentos

Cada vez que se ingiere una actualización de un documento desde la fuente de cambios, se agrega una nueva fila en la tabla de destino. Progresivamente, la tabla va creando un historial de todos los documentos del contenedor de Cosmos DB correspondiente. Un requisito típico es consultar la versión más reciente de un documento, lo cual corresponde a obtener el estado actual del contenedor de Cosmos DB.

Puede usar los siguientes métodos para consultar el estado actual desde la tabla:

En los ejemplos, obtendrá las versiones más recientes del documento resumiendo la tabla mediante la columna Id, utilizando la función arg_max de la columna _timestamp para mostrar solo las filas con las marcas de tiempo más recientes.

Nota:

La columna _timestamp se crea a partir de la propiedad _ts de los documentos de Cosmos DB ingeridos. La conversión de DateTimeFromUnixSeconds (_ts) a datetime (_timestamp) se realiza mediante la asignación de tablas de ingesta configurada para la tabla. Los datos convertidos de la columna _timestamp hacen que las consultas y las vistas materializadas sean más eficaces, en comparación con el uso del valor de DateTimeFromUnixSeconds _ts nativo.

Ejecutar una consulta para obtener las versiones más recientes de documentos

Ejecute una consulta para obtener las versiones más recientes de documentos:

TestTable
| summarize arg_max(_timestamp, *) by Id

Si ha usado marcadores suaves para marcar documentos eliminados, puede filtrarlos con la consulta siguiente:

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

Crear una vista materializada de las versiones más recientes de documentos

Si el contenedor de Cosmos DB tiene muchas actualizaciones, la consulta para obtener las versiones más recientes de los documentos puede ser lenta. Las vistas materializadas normalmente tienen un mejor rendimiento que una consulta si hay muchas actualizaciones. Si la consulta se ejecuta con frecuencia, el uso de una vista materializada puede ser beneficioso y ahorrar costos.

Ejecute el comando siguiente para crear una vista materializada de las versiones más recientes de documentos:

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

En una vista materializada, no se pueden filtrar los marcadores suaves como parte de su consulta. Por lo tanto, para quitar los documentos eliminados indicados por marcadores suaves, consulte la vista materializada y filtre los resultados, como se indica a continuación:

LatestDocuments
| where not(IsDeleted)

Opcionalmente, encapsule la consulta filtrada en un función almacenada y llámela para obtener los resultados filtrados más recientes, como se indica a continuación:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area