Delen via


Nieuwste versies van Azure Cosmos DB-documenten downloaden

In dit artikel leert u hoe u de nieuwste 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 wordt in de tabel een geschiedenis van elk document in de bijbehorende Cosmos DB-container opgebouwd. Een typische vereiste is om een query uit te voeren op de nieuwste versie van een document, komt overeen met het verkrijgen 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 op basis van 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 de ingelezen Cosmos DB-documenten. De conversie van DateTimeFromUnixSeconds (_ts) naar datetime (_timestamp) wordt uitgevoerd door de opname tabeltoewijzing geconfigureerd voor de tabel. De geconverteerde gegevens in de kolom _timestamp maken query's en gematerialiseerde weergaven efficiƫnter 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 gebruikt om verwijderde documenten aan te geven, kunt u deze documenten filteren met een query. Als u bijvoorbeeld een Booleaanse eigenschap met de naam IsDeleted gebruikt die verwijderde documenten aangeeft, kunt u de volgende query gebruiken om de voorlopig verwijderde documenten te filteren:

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. gematerialiseerde weergaven hebben doorgaans 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 verwijderde documenten wilt verwijderen die worden aangegeven met zachte markeringen, voert u als volgt een query uit op de gerealiseerde weergave en filtert u de resultaten:

LatestDocuments
| where not(IsDeleted)

U kunt desgewenst de gefilterde query in een opgeslagen functie inkapselen en deze aanroepen om de meest recente gefilterde resultaten op te halen, als volgt:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area