Aracılığıyla paylaş


Azure Cosmos DB belgelerinin en son sürümlerini alma

Bu makalede, alınan belgelerin en son sürümünü nasıl edineceğinizi öğreneceksiniz.

Belgelerin en son sürümlerini alma

Değişiklik akışından her belge güncelleştirmesi alınışında, hedef tabloya yeni bir satır eklenir. Zaman içinde tablo, ilgili Cosmos DB kapsayıcısında her belgenin geçmişini oluşturur. Tipik bir gereksinim, Cosmos DB kapsayıcısının geçerli durumunu almaya karşılık gelen belgenin en son sürümünü sorgulamaktır.

Tablonuzdan geçerli durumu sorgulamak için aşağıdaki yöntemleri kullanabilirsiniz:

Örneklerde, tabloyu Kimlik sütununa göre özetleyerek, _timestamp sütunundaki arg_max işlevini kullanarak yalnızca en son zaman damgalarına sahip satırları göstererek belgenin en son sürümlerini alacaksınız.

Not

_timestamp sütunu, Cosmos DB belgelerinin alınan _ts özelliğinden oluşturulur. (_ts) yerine (_timestamp) datetime dönüştürme DateTimeFromUnixSeconds , tablo için yapılandırılan alma tablosu eşlemesi tarafından gerçekleştirilir. _timestamp sütunundaki dönüştürülen veriler sorguların ve gerçekleştirilmiş görünümlerin yerel DateTimeFromUnixSeconds_ts değerini kullanmaktan daha yüksek performansa sahip olmasını sağlar.

Belgelerin en son sürümlerini almak için sorgu çalıştırma

Belgelerin en son sürümlerini almak için aşağıdaki sorguyu çalıştırın:

TestTable
| summarize arg_max(_timestamp, *) by Id

Silinen belgeleri işaretlemek için geçici işaretçiler kullandıysanız, bunları aşağıdaki sorguyla filtreleyebilirsiniz:

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

Belgelerin en son sürümlerinin gerçekleştirilmiş bir görünümünü oluşturma

Cosmos DB kapsayıcınızda çok fazla güncelleştirme varsa belgelerin en son sürümlerini alma sorgusu yavaş olabilir. Çok fazla güncelleştirme varsa, gerçekleştirilmiş görünümler genellikle sorgudan daha iyi performansa sahiptir. Sorgu sık sık çalıştırılıyorsa, gerçekleştirilmiş bir görünüm kullanmak yararlı olabilir ve maliyet tasarrufu sağlayabilir.

Belgelerin en son sürümlerinin gerçekleştirilmiş bir görünümünü oluşturmak için aşağıdaki komutu çalıştırın:

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

Gerçekleştirilmiş görünümde, geçici işaretçilerimizi sorgunun bir parçası olarak filtreleyemezsiniz. Bu nedenle, geçici işaretçilerle belirtilen silinen belgeleri kaldırmak için gerçekleştirilmiş görünümü sorgulayın ve sonuçları aşağıdaki gibi filtreleyin:

LatestDocuments
| where not(IsDeleted)

İsteğe bağlı olarak, filtrelenmiş sorguyu depolanmış bir işlevde kapsülleyin ve aşağıdaki gibi en son filtrelenmiş sonuçları almak için çağırın:

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

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area