Freigeben über


Abrufen der neuesten Versionen von Azure Cosmos DB-Dokumenten

In diesem Artikel erfahren Sie, wie Sie die neueste Version der erfassten Dokumente abrufen.

Abrufen der neuesten Versionen von Dokumenten

Jedes Mal, wenn eine Dokumentaktualisierung aus dem Änderungsfeed erfasst wird, wird der Zieltabelle eine neue Zeile hinzugefügt. Im Laufe der Zeit erstellt die Tabelle einen Verlauf jedes Dokuments im entsprechenden Cosmos DB-Container. Eine typische Anforderung besteht darin, die neueste Version eines Dokuments abzufragen, die dem Abrufen des aktuellen Zustands des Cosmos DB-Containers entspricht.

Sie können die folgenden Methoden verwenden, um den aktuellen Zustand aus Ihrer Tabelle abzufragen:

In den Beispielen erhalten Sie die neuesten Versionen des Dokuments, indem Sie die Tabelle anhand der Spalte Id zusammenfassen und die funktion arg_max in der spalte _timestamp verwenden, um nur die Zeilen mit den neuesten Zeitstempeln anzuzeigen.

Hinweis

Die spalte _timestamp wird aus der _ts-Eigenschaft der Cosmos DB-Dokumente erstellt. Die Konvertierung von DateTimeFromUnixSeconds (_ts) in datetime (_timestamp) erfolgt durch die für die Tabelle konfigurierte Zuordnung der Erfassungstabelle . Die konvertierten Daten in der spalte _timestamp machen Abfragen und materialisierte Sichten leistungsintensiver als die Verwendung des nativen DateTimeFromUnixSeconds_ts-Werts .

Ausführen einer Abfrage zum Abrufen der neuesten Versionen von Dokumenten

Führen Sie die folgende Abfrage aus, um die neuesten Versionen von Dokumenten abzurufen:

TestTable
| summarize arg_max(_timestamp, *) by Id

Wenn Sie zum Markieren gelöschter Dokumente weiche Marker verwendet haben, können Sie sie mit der folgenden Abfrage herausfiltern:

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

Erstellen einer materialisierten Ansicht der neuesten Versionen von Dokumenten

Wenn Ihr Cosmos DB-Container viele Updates enthält, kann die Abfrage zum Abrufen der neuesten Versionen von Dokumenten langsam sein. Materialisierte Sichten weisen in der Regel eine bessere Leistung als eine Abfrage auf, wenn viele Updates vorhanden sind. Wenn die Abfrage häufig ausgeführt wird, kann die Verwendung einer materialisierten Sicht von Vorteil sein und Kosten sparen.

Führen Sie den folgenden Befehl aus, um eine materialisierte Ansicht der neuesten Versionen von Dokumenten zu erstellen:

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

In einer materialisierten Ansicht können Sie unsere weichen Marker nicht als Teil der Abfrage filtern. Um gelöschte Dokumente zu entfernen, die durch weiche Marker gekennzeichnet sind, fragen Sie daher die materialisierte Ansicht ab, und filtern Sie die Ergebnisse wie folgt:

LatestDocuments
| where not(IsDeleted)

Optional können Sie die gefilterte Abfrage wie folgt in einer gespeicherten Funktion kapseln und aufrufen, um die neuesten gefilterten Ergebnisse zu erhalten:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area