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:
- Belgelerin en son sürümlerini almak için sorgu çalıştırma
- Belgelerin en son sürümlerinin gerçekleştirilmiş bir görünümünü oluşturma
Ö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
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin