Delen via


Nieuwste versies van Azure Cosmos DB-documenten downloaden

In dit artikel leert u hoe u de meest recente versie van opgenomen documenten kunt ophalen.

De nieuwste versies van documenten downloaden

Telkens wanneer een documentupdate wordt opgenomen vanuit de wijzigingenfeed, wordt er een nieuwe rij toegevoegd aan de doeltabel. In de loop van de tijd bouwt de tabel een geschiedenis op van elk document in de bijbehorende Cosmos DB-container. Een typische vereiste is om een query uit te voeren op de nieuwste versie van een document, die overeenkomt met het ophalen van de huidige status van de Cosmos DB-container.

U kunt de volgende manieren gebruiken om een query uit te voeren op de huidige status uit de tabel:

In de voorbeelden krijgt u de nieuwste versies van het document door de tabel samen te vatten met de kolom Id , met behulp van de functie arg_max in de kolom _timestamp om alleen de rijen met de meest recente tijdstempels weer te geven.

Notitie

De kolom _timestamp wordt gemaakt op basis van de eigenschap _ts van opgenomen Cosmos DB-documenten. De conversie van DateTimeFromUnixSeconds (_ts) naar datetime (_timestamp) wordt uitgevoerd door de toewijzing van de opnametabel die is geconfigureerd voor de tabel. De geconverteerde gegevens in de kolom _timestamp maken query's en gerealiseerde weergaven beter presterend dan het gebruik van de systeemeigen DateTimeFromUnixSeconds_ts-waarde .

Een query uitvoeren om de nieuwste versies van documenten op te halen

Voer de volgende query uit om de nieuwste versies van documenten op te halen:

TestTable
| summarize arg_max(_timestamp, *) by Id

Als u zachte markeringen hebt gebruikt om verwijderde documenten te markeren, kunt u deze filteren met de volgende query:

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

Een gerealiseerde weergave maken van de nieuwste versies van documenten

Als uw Cosmos DB-container veel updates heeft, kan de query voor het ophalen van de nieuwste versies van documenten traag zijn. Gerealiseerde weergaven hebben meestal betere prestaties dan een query als er veel updates zijn. Als de query vaak wordt uitgevoerd, kan het gebruik van een gerealiseerde weergave nuttig zijn en kosten besparen.

Voer de volgende opdracht uit om een gerealiseerde weergave van de nieuwste versies van documenten te maken:

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

In een gerealiseerde weergave kunt u onze zachte markeringen niet filteren als onderdeel van de query. Als u daarom verwijderde documenten wilt verwijderen die worden aangegeven met zachte markeringen, voert u een query uit op de gerealiseerde weergave en filtert u de resultaten als volgt:

LatestDocuments
| where not(IsDeleted)

U kunt eventueel de gefilterde query inkapselen in een opgeslagen functie en deze als volgt aanroepen om de meest recente gefilterde resultaten te krijgen:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area