Share via


Öğretici: Tablo api'sini kullanarak Azure Cosmos DB'yi sorgulama

ŞUNLAR IÇIN GEÇERLIDIR: Tablo

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 RowKey E-posta PhoneNumber
Harp 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.

Önkoşullar

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ıç: .NET tablosu için Azure Cosmos DB'yi 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:

Sorgu

https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')

Sonuçlar

PartitionKey RowKey E-posta PhoneNumber
Harp 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ış boşluklar özellik adını, işlecini ve sabit değerini ayırmalıdır. Boşluk, %20 olarak URL kodlamalı olur.
  • Filtre dizesinin tüm kısımları büyük/küçük harfe duyarlıdır.
  • Filtrenin geçerli sonuçlar döndürmesi için sabit değer, özellikle aynı veri türünde olmalıdır. Desteklenen özellik türleri hakkında daha fazla bilgi için bkz . Tablo hizmeti veri modelini anlama.

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.

Sorgu

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.

Sonuçlar

PartitionKey RowKey E-posta PhoneNumber
Smith Ben Ben@contoso.com 425-555-0102

Datetime özelliklerindeki sorgular, Azure Cosmos DB'nin Tablo API'sinde yürütülürken hiçbir veri döndürmez. Azure Tablo depolama alanı tarih değerlerini saat ayrıntı düzeyi değerlerinde depolasa da 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.