Udostępnij za pośrednictwem


Pobierz najnowsze wersje dokumentów usługi Azure Cosmos DB

W tym artykule dowiesz się, jak uzyskać najnowszą wersję pozyskanych dokumentów.

Pobieranie najnowszych wersji dokumentów

Za każdym razem, gdy aktualizacja dokumentu jest pozyskiwana z zestawienia zmian, nowy wiersz jest dodawany do tabeli docelowej. W czasie tabela tworzy historię każdego dokumentu w odpowiednim kontenerze usługi Cosmos DB. Typowym wymaganiem jest wysłanie zapytania do najnowszej wersji dokumentu, co odpowiada uzyskiwaniu bieżącego stanu kontenera usługi Cosmos DB.

Aby wykonać zapytanie dotyczące bieżącego stanu z tabeli, możesz użyć następujących sposobów:

W przykładach uzyskasz najnowsze wersje dokumentu, podsumowując tabelę według kolumny Id , używając funkcji arg_max w kolumnie _timestamp , aby wyświetlić tylko wiersze z najnowszymi znacznikami czasu.

Uwaga

Kolumna _timestamp jest tworzona na podstawie właściwości _ts pozyskanej dokumentów usługi Cosmos DB. Konwersja z (_ts) na DateTimeFromUnixSeconds (_timestamp) jest wykonywana przez mapowaniedatetimeskonfigurowane dla tabeli. Przekonwertowane dane w kolumnie _timestamp sprawiają, że zapytania i zmaterializowane widoki są bardziej wydajne niż użycie natywnej DateTimeFromUnixSecondswartości _ts .

Uruchamianie zapytania w celu pobrania najnowszych wersji dokumentów

Uruchom następujące zapytanie, aby pobrać najnowsze wersje dokumentów:

TestTable
| summarize arg_max(_timestamp, *) by Id

Jeśli używasz znaczników miękkich, aby wskazać usunięte dokumenty, możesz odfiltrować te dokumenty za pomocą zapytania. Jeśli na przykład używasz właściwości logicznej o nazwie IsDeleted wskazującej usunięte dokumenty, możesz użyć następującego zapytania, aby odfiltrować miękko usunięte dokumenty.

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

Tworzenie zmaterializowanego widoku najnowszych wersji dokumentów

Jeśli kontener usługi Cosmos DB zawiera wiele aktualizacji, zapytanie umożliwiające uzyskanie najnowszych wersji dokumentów może być powolne. Zmaterializowane widoki zwykle mają lepszą wydajność niż zapytanie, jeśli istnieje wiele aktualizacji. Jeśli zapytanie jest często uruchamiane, użycie zmaterializowanego widoku może być korzystne i obniżyć koszty.

Uruchom następujące polecenie, aby utworzyć zmaterializowany widok najnowszych wersji dokumentów:

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

W zmaterializowanym widoku nie można filtrować naszych znaczników miękkich w ramach zapytania. W związku z tym, aby usunąć usunięte dokumenty wskazywane przez znaczniki miękkie, wykonaj zapytanie względem zmaterializowanego widoku i przefiltruj wyniki w następujący sposób:

LatestDocuments
| where not(IsDeleted)

Opcjonalnie hermetyzuj przefiltrowane zapytanie w funkcji przechowywanej i wywołaj je, aby uzyskać najnowsze odfiltrowane wyniki w następujący sposób:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area