Tabloları ve varlıkları sorgulama

Tablo hizmetindeki tabloları ve varlıkları sorgulamak için istek URI'sinin dikkatli bir şekilde oluşturulması gerekir. Aşağıdaki bölümlerde sorgu seçenekleri açıklanır ve bazı yaygın senaryolar gösterilir.

Temel Sorgu Söz Dizimi

Belirli bir depolama hesabındaki tüm tabloları döndürmek için, Sorgu Tabloları işleminde açıklandığı gibi Tablolar kaynağında bir GET işlem gerçekleştirin. Tablolar kaynağını ele almak için temel URI aşağıdaki gibidir:

https://myaccount.table.core.windows.net/Tables  

Tek bir adlandırılmış tablo döndürmek için bu tabloyu aşağıdaki gibi belirtin:

https://myaccount.table.core.windows.net/Tables('MyTable')  

Tablodaki tüm varlıkları döndürmek için URI'de Tablolar kaynağı olmadan tablo adını belirtin:

https://myaccount.table.core.windows.net/MyTable()  

Sorgu sonuçları, ölçütüne RowKeygöre PartitionKeysıralanır. Sonuçları başka bir şekilde sıralama şu anda desteklenmiyor.

Aşağıdaki Desteklenen Sorgu Seçenekleri bölümünde açıklandığı gibi, döndürülen tablo veya varlık kümesini sınırlamak için ek seçenekler belirtebilirsiniz.

Not

Sorgu en fazla varlık sayısını aşarsa, zaman aşımı aralığını aşarsa veya bir bölüm sınırını geçerse, tek bir istek için döndürülen varlık sayısı sınırlı olabilir. Daha fazla bilgi için bkz . Sorgu Zaman Aşımı ve Sayfalandırma.

Desteklenen Sorgu Seçenekleri

Tablo hizmeti, OData Protokolü Belirtimine uygun olan aşağıdaki sorgu seçeneklerini destekler. Sorgu tarafından döndürülen tablo, varlık veya varlık özellikleri kümesini sınırlamak için bu seçenekleri kullanabilirsiniz.

Sistem sorgusu seçeneği Description
$filter Yalnızca belirtilen filtreyi karşılayan tabloları veya varlıkları döndürür.

Bir $filter dize içinde 15'ten fazla ayrı karşılaştırmaya izin verilmediğini unutmayın.
$top Kümeden yalnızca en üstteki n tabloları veya varlıkları döndürür.
$select Kümeden bir varlığın istenen özelliklerini döndürür. Bu sorgu seçeneği yalnızca sürüm 2011-08-18 veya üzerini kullanan istekler için desteklenir. Daha fazla bilgi için bkz. Tablo Hizmetinde LINQ Sorguları Yazma.

Not

Varsayılan maksimum veya belirtilen sonuç sayısı üst sınırından fazlasını döndüren bir istek, sayfalandırma gerçekleştirmek için bir devamlılık belirteci döndürür. Devamlılık belirteçleri içeren sonraki istekleri yaparken, istekte özgün URI'yi geçtiğinden emin olun. Örneğin, özgün isteğin bir parçası olarak bir $filter, $selectveya $top sorgu seçeneği belirttiyseniz, bu seçeneği sonraki isteklere eklemek istersiniz. Aksi takdirde, sonraki istekleriniz beklenmeyen sonuçlar döndürebilir. Ek bilgi için bkz. Sorgu Zaman Aşımı ve Sayfalandırma .

Sonuçların $top sayfalandırılmış olduğu durumda sorgu seçeneğinin, yanıt kümesinin tamamında en fazla sonuç sayısını değil, sayfa başına en fazla sonuç sayısını belirttiğini unutmayın.

OData tarafından tanımlanan ek sorgu seçenekleri Tablo hizmeti tarafından desteklenmez.

Desteklenen Karşılaştırma İşleçleri

Yan $filter tümcesi içinde, sorgu sonuçlarının filtreleneceği ölçütleri belirtmek için karşılaştırma işleçlerini kullanabilirsiniz.

Tüm özellik türleri için aşağıdaki karşılaştırma işleçleri desteklenir:

Operatör URI ifadesi
Equal eq
GreaterThan gt
GreaterThanOrEqual ge
LessThan lt
LessThanOrEqual le
NotEqual ne

Ayrıca, Boole özellikleri için aşağıdaki işleçler desteklenir:

Operatör URI ifadesi
And and
Not not
Or or

Filtre söz dizimi hakkında daha fazla bilgi için bkz. OData Protokolü Belirtimi.

Sorgu Dizesi Kodlaması

Aşağıdaki karakterler bir sorgu dizesinde kullanılacaksa kodlanmalıdır:

  • Eğik çizgi (/)
  • Soru işareti (?)
  • İki nokta üst üste (:)
  • 'At' simgesi (@)
  • Ve işareti (&)
  • Eşittir işareti (=)
  • Artı işareti (+)
  • Virgül (,)
  • Dolar işareti ($)

Tek tırnak (')

Sorgu dizelerindeki tek tırnaklar birbirini izleyen iki tek tırnak ('' olarak gösterilmelidir). Örneğin, "o'clock" şu şekilde olabilir:

o''clock

Örnek Sorgu İfadeleri

Aşağıdaki örneklerde REST söz dizimi kullanılarak bazı tipik varlık sorguları için istek URI'sinin nasıl oluşturulmuş olduğu gösterilir. Aynı sorgular LINQ söz dizimi kullanılarak yazılabilir. Daha fazla bilgi için bkz. Tablo Hizmetinde LINQ Sorguları Yazma.

hem ve $filter seçeneklerinin $top hem tablo adlarına filtre uygulamak için hem de türünün Stringözelliklerine filtre uygulamak için gösterilen söz dizimi kullanılarak kullanılabileceğini unutmayın.

İlk n Varlığı Döndürme

Herhangi bir sorgunun en üstteki n varlıklarını döndürmek için sorgu seçeneğini belirtin $top . Aşağıdaki örnek, Müşteriler adlı bir tablodan ilk 10 varlığı döndürür:

https://myaccount.table.core.windows.net/Customers()?$top=10  

PartitionKey ve RowKey Özelliklerine Göre Filtreleme

ve RowKey özellikleri bir varlığın PartitionKey birincil anahtarını oluşturduğundan, varlığı tanımlamak için aşağıdaki gibi özel bir söz dizimi kullanabilirsiniz:

https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')  

Alternatif olarak, aşağıdaki bölümde gösterildiği gibi, $filter seçeneğinin parçası olarak bu özellikleri belirtebilirsiniz.

Anahtar özelliği adlarının ve sabit değerlerin büyük/küçük harfe duyarlı olduğunu unutmayın. PartitionKey hem hem de RowKey özellikleri türündedirString.

Filtre Dizeleri Oluşturma

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ırmanın mümkün olmadığını unutmayın; ifadenin bir tarafı sabit olmalıdır.

  • Özellik adı, işleç ve sabit değeri, URL kodlamalı boşluklarla ayrılmalı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.

Not

Bir özelliğin dize dışında bir tür olduğunu varsaymadan önce açıkça yazıldığından emin olun. Bir özellik açıkça yazıldıysa, varlık döndürülürken tür yanıt içinde belirtilir. Özellik açıkça yazılmadıysa türünde olur Stringve varlık döndürülürken yanıtta tür gösterilmez.

Dize Özelliklerine Göre Filtreleme

Dize özelliklerine göre filtreleme yaparken, dize sabitini tek tırnak içine alın.

Aşağıdaki örnek ve RowKey özelliklerine PartitionKey filtre ekler; sorgu dizesine başka anahtar olmayan özellikler de eklenebilir.

https://myaccount.table.core.windows.net/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'  

Aşağıdaki örnek bir FirstName ve LastName özelliğine filtre uygulanır:

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20eq%20'Smith'%20and%20FirstName%20eq%20'John'  

Tablo hizmetinin joker karakter sorgularını desteklemediğini unutmayın. Ancak, istenen ön ek üzerinde karşılaştırma işleçlerini kullanarak ön ek eşleştirme gerçekleştirebilirsiniz. Aşağıdaki örnek, 'A' harfiyle başlayan bir LastName özelliği olan varlıkları döndürür:

https://myaccount.table.core.windows.net/Customers()?$filter=LastName%20ge%20'A'%20and%20LastName%20lt%20'B'  

Sayısal Özelliklere Göre Filtreleme

Bir tamsayıya veya kayan noktalı sayıya göre filtrelemek için URI üzerindeki sabit değeri tırnak işaretleri olmadan belirtin.

Bu örnek, değeri 30'dan büyük olan bir Age özelliğe sahip tüm varlıkları döndürür:

https://myaccount.table.core.windows.net/Customers()?$filter=Age%20gt%2030  

Bu örnek, değeri 100,25'ten küçük veya buna eşit olan bir AmountDue özelliğe sahip tüm varlıkları döndürür:

https://myaccount.table.core.windows.net/Customers()?$filter=AmountDue%20le%20100.25%20  

Boole Özelliklerine Göre Filtreleme

Boole değerine göre filtrelemek için tırnak işareti belirtin true veya false belirtmeden.

Aşağıdaki örnek, özelliğinin IsActive olarak ayarlandığı truetüm varlıkları döndürür:

https://myaccount.table.core.windows.net/Customers()?$filter=IsActive%20eq%20true  

DateTime Özelliklerine Göre Filtreleme

Bir DateTime değere filtre uygulamak için URI'de anahtar sözcüğünü ve ardından tek tırnak içinde tarih/saat sabitini belirtin datetime . Tarih/saat sabiti, DateTime değerlerini biçimlendirme bölümünde açıklandığı gibi birleştirilmiş UTC biçiminde olmalıdır.

Aşağıdaki örnek, özelliğinin CustomerSince 10 Temmuz 2008'e eşit olduğu varlıkları döndürür:

https://myaccount.table.core.windows.net/Customers()?$filter=CustomerSince%20eq%20datetime'2008-07-10T00:00:00Z'  

GUID Özelliklerine Göre Filtreleme

GUID değerini filtrelemek için URI'de anahtar sözcüğünü ve ardından tek tırnak içinde guid sabitini belirtin guid .

Aşağıdaki örnek, özelliğinin GuidValue değerine eşit olduğu varlıkları döndürür:

https://myaccount.table.core.windows.net/Customers()?$filter=GuidValue%20eq%20guid'a455c695-df98-5678-aaaa-81d3367e5a34'  

Ayrıca Bkz.

Tablo Hizmeti Kavramları
Tablo Hizmeti Veri Modelini Anlama
Tablo Hizmeti Kaynaklarını Ele Alma
Sorgu Zaman Aşımı ve Sayfalandırma
Tablo Hizmetinde LINQ Sorguları Yazma