Freigeben über


Abrufen der neuesten Versionen von Azure Cosmos DB-Dokumenten

In diesem Artikel erfahren Sie, wie Sie die neueste Version der aufgenommenen Dokumente erhalten.

Abrufen der neuesten Versionen von Dokumenten

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

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, indem Sie die Funktion arg_max in der Spalte _timestamp verwenden, um nur die Zeilen mit den letzten Zeitstempeln anzuzeigen.

Hinweis

Die _timestamp-Spalte wird aus der _ts-Eigenschaft der aufgenommenen Cosmos DB-Dokumente erstellt. Die Konvertierung von DateTimeFromUnixSeconds (_ts) in datetime (_timestamp) wird von der Erfassung Tabellenzuordnung ausgeführt, die für die Tabelle konfiguriert ist. Die konvertierten Daten in der _timestamp-Spalte machen Abfragen und materialisierte Ansichten leistungsfähiger als die Verwendung des systemeigenen 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 weiche Markierungen verwendet haben, um gelöschte Dokumente zu markieren, 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, um die neuesten Versionen von Dokumenten abzurufen, langsam sein. Materialisierte Ansichten haben in der Regel eine bessere Leistung als eine Abfrage, wenn viele Aktualisierungen vorhanden sind. Wenn die Abfrage häufig ausgeführt wird, kann die Verwendung einer materialisierten Ansicht vorteilhaft 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 Markierungen nicht als Teil der Abfrage filtern. Um gelöschte Dokumente, die durch weiche Markierungen gekennzeichnet sind, zu entfernen, fragen Sie die materialisierte Ansicht ab, und filtern Sie die Ergebnisse wie folgt:

LatestDocuments
| where not(IsDeleted)

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

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area