Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'yi göz önünde bulundurun.
Tablo için Azure Cosmos DB, anahtar/değer (tablo) verilerine karşı OData ve LINQ sorgularını destekler.
Bu makale aşağıdaki görevleri kapsar:
- Tablo için API ile verileri sorgulama
Bu makaledeki sorgularda aşağıdaki People tablosu kullanılmaktadır:
| PartitionKey (Bölüm Anahtarı) | RowKey | E-posta | Telefon Numarası |
|---|---|---|---|
| Arp | Walter | Walter@contoso.com | 425-555-0101 |
| Smith | Ben | Ben@contoso.com | 425-555-0102 |
| Smith | Jeff | Jeff@contoso.com | 425-555-0104 |
Tablo API'sini kullanarak sorgulama hakkında ayrıntılı bilgi için bkz. Tabloları ve varlıkları sorgulama.
Prerequisites
Bu sorguların çalışması için bir Azure Cosmos DB hesabınız ve kapsayıcıda varlık verileriniz olmalıdır. Hesabınız veya verileriniz yoksa, bir hesap oluşturmak ve veritabanınızı doldurmak için Hızlı Başlangıç: Azure Cosmos DB for Table for .NET kılavuzunu tamamlayın.
PartitionKey ve RowKey üzerinde sorgulama
PartitionKey ve RowKey özellikleri bir varlığın birincil anahtarını oluşturduğundan, varlığı belirlemek için aşağıdaki özel sözdizimini kullanabilirsiniz:
Query
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
Results
| PartitionKey (Bölüm Anahtarı) | RowKey | E-posta | Telefon Numarası |
|---|---|---|---|
| Arp | Walter | Walter@contoso.com | 425-555-0104 |
Alternatif olarak, aşağıdaki bölümde gösterildiği gibi, $filter seçeneğinin parçası olarak bu özellikleri belirtebilirsiniz. Anahtar özellik adları ve sabit değerler büyük/küçük harfe duyarlıdır. Hem PartitionKey hem de RowKey özellikleri String türündedir.
OData filtresi kullanarak sorgulama
Bir filtre dizesi oluştururken şu kuralları göz önünde bulundurun:
- Bir özelliği bir değerle karşılaştırmak için OData Protokol Belirtimi tarafından tanımlanan mantıksal işleçleri kullanın. Bir özelliği dinamik değerle karşılaştıramazsınız. İfadenin bir tarafı sabit olmalıdır.
- URL ile kodlanmış alanların özellik adını, işlecini ve sabit değerini ayırması gerekir. Boşluk,
%20olarak URL kodlanır. - Filtre dizesinin tüm kısımları büyük/küçük harfe duyarlıdır.
- Filtrenin doğru sonuçlar döndürmesi için sabit değer, özelliğin veri türüyle aynı olmalıdır. Desteklenen özellik türleri hakkında daha fazla bilgi için Tablo hizmeti veri modelini anlama bölümüne bkz.
Aşağıda, OData $filter kullanılarak PartitionKey ve Email özelliklerine göre nasıl filtreleme yapılacağını gösteren örnek bir sorgu verilmiştir.
Query
https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'
Çeşitli veri türleri için filtre ifadeleri oluşturma hakkında daha fazla bilgi için bkz. Tabloları ve Varlıkları Sorgulama.
Results
| PartitionKey (Bölüm Anahtarı) | RowKey | E-posta | Telefon Numarası |
|---|---|---|---|
| Smith | Ben | Ben@contoso.com | 425-555-0102 |
Datetime özelliklerindeki sorgular, Azure Cosmos DB'nin Tablo için API'sinde yürütülürken hiçbir veri döndürmez. Azure Tablo depolama alanı, tik ayrıntı düzeyinde tarih değerlerini depolarken, Azure Cosmos DB'deki Tablo API'sinde _ts özelliği kullanılır.
_ts özelliği, OData filtresi olmayan ikinci bir ayrıntı düzeyindedir. Azure Cosmos DB, zaman damgası özelliklerindeki sorguları engeller. Geçici bir çözüm olarak, özel bir tarih saat veya uzun veri türü özelliği tanımlayabilir ve istemciden tarih değerini ayarlayabilirsiniz.
LINQ kullanarak sorgulama
İlgili OData sorgu ifadelerine çeviri yapan LINQ kullanarak da sorgulama yapabilirsiniz. Aşağıda, .NET SDK kullanılarak sorgu derlemeye ilişkin bir örnek verilmiştir:
IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>()
.Where(x => x.PartitionKey == "4")
.Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Email = x.Email });
Sonraki Adımlar
Artık verilerinizi genel olarak nasıl dağıtacağınızı öğrenmek için sonraki öğreticiye ilerleyebilirsiniz.