Share via


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.

Obtención de las versiones más recientes de documentos

Cada vez que se ingiere una actualización de documento desde la fuente de cambios, se agrega una nueva fila en la tabla de destino. Con el tiempo, la tabla crea 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, corresponde a obtener el estado actual del contenedor de Cosmos DB.

Puede usar las siguientes maneras de consultar el estado actual de la tabla:

En los ejemplos, obtendrá las versiones más recientes del documento mediante el resumen de la tabla por la columna Id , mediante 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 asignación de tabla de ingesta configurada para la tabla realiza la conversión de DateTimeFromUnixSeconds (_ts) a datetime (_timestamp). Los datos convertidos en la columna _timestamp hacen que las consultas y las vistas materializadas sean más eficaces que el uso del valor de _ts nativoDateTimeFromUnixSeconds.

Ejecución de una consulta para obtener las versiones más recientes de los documentos

Ejecute la consulta siguiente para obtener las versiones más recientes de los documentos:

TestTable
| summarize arg_max(_timestamp, *) by Id

Si ha usado marcadores suaves para marcar los 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 los 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 suelen tener 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 siguiente comando 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, encapsula la consulta filtrada en una función almacenada y llámala 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