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 RowKey
göre PartitionKey
sı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
, $select
veya $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 String
ve 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ığı true
tü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