Bu kılavuzda, liste filtresi söz dizimi ve çeşitli kaynak türlerinin nasıl filtreleneceği açıklanmaktadır.
Bazı API yöntemleri, yanıtta döndürülen kaynakları sınırlamak için filtre kabul edebilir.
Özet
Bu bölümde, liste filtresi söz dizimi yapısına hızlı bir genel bakış sunulmaktadır.
Filtre,
expression
içeren bir dizedir.expression
, karşılaştırmaların bir Boole kombinasyonudur:expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison } expression = ( expression )
comparison
, bir kaynak alanını bir değerle eşleştirir. Yaygın olan tüm karşılaştırma operatörlerini kullanabilirsiniz.comparison = name OP value OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
has
operatörü olan iki nokta üst üste (:
) dizelerde ve tekrarlanan alanlarda kullanılabilir. Ayrıntılar için Operatör var bölümüne bakın.Filtrelerde aşağıdaki değer türlerini kullanabilirsiniz:
- Numbers
- Dize
- Parantez içindeki ifadeler
value = number| string | "*" | "(" expression ")"
Dizeler aşağıdakileri temsil edebilir:
- Rastgele metin
- Boole'lar
- Enum değerleri
- Zaman damgaları
Boole ifadeleri
expression = ["NOT"|"-"] comparison {["AND" | "OR"] ["NOT"|"-"] comparison}
İşlemler aşağıdaki sırayla gerçekleştirilir:
NOT
OR
AND
Örneğin, aşağıdaki ifadeler eşdeğerdir:
a OR NOT b AND NOT c OR d
(a OR (NOT b)) AND ((NOT c) OR d)
Karşılaştırmalar arasında AND
operatörünü çıkarabilirsiniz. Örneğin, aşağıdaki filtreler aynıdır:
c=d AND e=f
c=d e=f
NOT
için alternatif olarak kısa çizgiyi (-
) kullanabilirsiniz. Kısa çizgi (-
) ile aşağıdaki karşılaştırma arasında boşluk olamaz. Örneğin, aşağıdaki filtreler aynıdır:
NOT e=f
-e=f
Karşılaştırmalar
Bu bölümde, aşağıdaki gibi "name OP value"
karşılaştırmaları açıklanmaktadır:
comparison = name OP value
burada:
OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
name = identifier { "." identifier }
identifier = unquoted_text
value = number | string | "*" | "(" expression ")"
Karşılaştırmanın sol tarafında, bir API kaynak alanının yol adı gösterilir.
Ad, noktayla (.
) bağlanan bir dizi kaynak tanımlayıcıdan oluşur.
Her alan tanımlayıcısının ardından söz konusu alanın bir sonraki ad düzeyi gelir. Örneğin, shape
adlı bir alanı olan ve başka bir karmaşık tool
alanına sahip karmaşık item
alanına sahip bir kaynağı düşünün. Bu kaynağa ait bir filtrede, şekle item.tool.shape
adıyla başvurursunuz.
Sağ taraf genellikle alanın türüne dönüştürülen ve alanla karşılaştırılan skaler bir değerdir. Daha ayrıntılı bilgi için Değişmez Değer türleri bölümüne bakın.
Bir karşılaştırmanın sağ tarafı, yalnızca değişmez değerler (NOT
ile veya olmadan) içeren değişmez değerler ve/veya boole ifadelerinin parantez içinde Boole kombinasyonu olarak da ifade edilebilir. Sol taraf adı ve karşılaştırma operatörü, değerlerin her birine uygulanır. Örneğin, aşağıdaki filtreler aynıdır:
deal.name = ("test 1" OR "test 2")
deal.name = "test 1" OR deal.name = "test 2"
Aşağıda, iki eşdeğer filtreye ilişkin daha karmaşık bir örnek daha verilmiştir:
deal.name = ("test 1" OR "test 2" AND (NOT "test3" OR "test4"))
(deal.name = "test 1" OR deal.name = "test 2") AND ( (NOT deal.name = "test3") OR deal.name = "test4")
Değer Değişmez Değer türleri
Karşılaştırma operatörünün sağ tarafındaki değer, Sayı ve Dize değişmez değerleri olarak kategorize edilebilir.
Sayı
Bu bölümde sayısal değişmez değerlerin temsili açıklanmaktadır.
Tür | Tanım | Örnekler |
---|---|---|
Çift kişilik | Ondalık virgül içeren, işareti ("-") olan veya içermeyen tüm sayılar Çift olarak kabul edilir. |
|
Tamsayı | Ondalık noktası olmayan, işareti ("-") olan veya içermeyen tüm sayılar tam sayı olarak kabul edilir. |
|
Dize
Bu bölümde, filtre söz diziminde dize değişmez değeri olarak yazabileceğiniz türler açıklanmaktadır.
Tür | Tanım | Örnekler |
---|---|---|
Boole | Büyük-küçük harf kullanımı için TRUE veya FALSE . |
|
Enum | Bir numaralandırma türü sabit değerinin adı. Sıralamalar büyük/küçük harfe duyarlıdır. |
FINALIZED , Finalized ile aynı değil
|
Dize | UTF-8 olarak kodlanmış veya 7 bit ASCII metin içeren tüm dizeler. Yerleştirilmiş tırnak işaretlerinin önüne ters eğik çizgi koyulmalıdır. Boşluk içeren tırnak içinde olmayan dizeler, dize boşlukla bölündükten sonra tüm kelimeler arasında örtülü "AND" olarak değerlendirilir. |
|
Zaman damgası | ISO8601 standart biçimindeki bir dize. |
"2014-10-02T15:01:23.045Z"
|
Karşılaştırma operatörleri
Karşılaştırma operatörleri şunlardır:
- Küçüktür veya eşittir:
"<="
- Şundan küçük:
"<"
- Büyüktür veya eşittir:
">="
- Büyüktür:
">"
- Eşit değildir:
"!="
- Şuna eşit:
"="
- Şuna sahip:
":"
Bu operatörler; Çift, Tamsayı, Boole, Enum ve Zaman Damgası değer türleri için geçerlidir.
Operatörü var
Aşağıdaki alanlarda özel işlemler için HAS
operatörünü (:
) kullanabilirsiniz:
- Alt dizeler
HAS
operatörü, dize sütunundaki değerlerin bir dizeyle karşılaştırılması için kullanıldığında operatör bir alt dize işlemi görevi görür. Örneğinname:"abcd"
,name
değerinin"abcd"
içeren bir dize olduğu tüm örnekleri döndürür.- Varlık kontrolü
HAS
operatörünü*
özel karakteriyle kullandığınızdaHAS
operatörü, null olmayan değerleri kontrol eder. Örneğinname:*
,name
değerinin null, eksik veya tanımsız olmadığı tüm örnekleri döndürür.- Dize olmayan değerlerle
HAS
operatörünü kullandığınızdaEQUALS
(=
) operatörüyle aynı şekilde davranır. Örneğin,isCompleted:true
,isCompleted = true
ile aynı şekilde davranır. - Yinelenen Alanlar
Aşağıdaki koşullar geçerli olduğu sürece, tekrarlanan API kaynak alanını filtrelemek için
HAS
(:
) operatörünü kullanabilirsiniz:- Alan tanımlayıcısı yolunda yalnızca bir tekrarlanan bileşen var
- Alan yolunun son tanımlayıcısı skaler türdedir
İç içe yerleştirilmiş yinelenen alanlarda filtreleme desteklenmez.
Aşağıda bir örnek verilmiştir:
item
alanında"red"
,"blue"
ve"yellow"
gibi dize değerleri içeren bircolors
alanı var.item.colors:("red")
,colors
alanında"red"
değerine sahip olan tüm öğeleri döndürür.item.colors:("red" "yellow")
,colors
alanında hem"red"
hem de"yellow"
içeren tüm öğeleri döndürür.item.colors:("red" OR "yellow")
,colors
alanında"red"
veya"yellow"
içeren tüm öğeleri döndürür.
item
, değerleri"square"
veya"round"
olabilen skaler alana sahipshape
karmaşık bir nesne olan tekrarlanan birtools
alanına da sahiptir.item.tools.shape:("square")
,"square"
şekilli araçları olan tüm öğeleri döndürür.item.tools.shape:("square" "round")
, hem"square"
hem de"round"
şeklinde aracı olan tüm öğeleri döndürür.item.tools.shape:("square" OR "round")
,"square"
şekil aracı veya"round"
şekilli araç içeren tüm öğeleri döndürür.
Doldurulmamış iç içe yerleştirilmiş alanlar
İç içe yerleştirilmiş alanlar, kök düzeyindeki alanların alt alanlarıdır. Örneğin item.tools.shape
bölgesindeki shape
, items.tools
için iç içe yerleştirilmiş bir alandır.
Kök düzeyindeki alanlar varsayılan olarak "false" değerine ayarlanır. İç içe yerleştirilmiş alanlar varsayılan olarak doldurulmaz.
İç içe yerleştirilmiş alanları doldurulmamış nesneler, negatif filtreler (!=
) tarafından döndürülmez.
Aşağıda bir örnek verilmiştir:
item.tools
, değeri "SMALL"
, "MEDIUM"
veya "LARGE"
olarak ayarlanabilen bir size
sıralamasına sahip.
Aşağıdaki öğelere sahipseniz:
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
},
{
"name": "item3"
}
"tools.size != SMALL"
negatif filtresine sahip bir items.list
çağrısı şu sonucu döndürür:
{
"items": [
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
}
]
}
item3
için item.tools.size
ayarlanmadığından, negatif filtre item3
nesnesini döndürmez.
Örnekler
Örnek | Açıklama |
---|---|
externalDealId = "123456789" |
Dize değeri "123456789" olan externalDealId . |
advertiserId:93641 |
93641 tam sayı değerine sahip advertiserId . |
isSetupComplete = true |
isSetupComplete , DOĞRU'ya eşittir. |
updateTime > "2018-02-14T11:09:19.378Z" |
updateTime , 14.02.2018 11:09:19.378 UTC tarihinden sonradır |
displayName = "proposal" AND proposalRevision = 3 |
displayName dizesi aynı "teklif" değerine sahip VE offerRevision değeri 3'e eşit. |
displayName = "proposal" OR proposalRevision = 3 |
displayName , "teklif" dize değerine sahip VEYA offerRevision değeri 3'e eşit. |
NOT displayName = "proposal" |
displayName , "teklife" eşit değildir. |
proposalState = (PROPOSED OR BUYER_ACCEPTED) |
proposalState , PROPOSED VEYA BUYER_KABULED değerine eşit bir numaralandırma değerine sahip. |
proposalState = (PROPOSED AND BUYER_ACCEPTED) |
proposalState , PROPOSED AND BUYER_KABULED değerine eşit bir numaralandırma değerine sahip |
dealName = Test Deal |
INVALID ifadesi |
dealName = "Test Deal" |
dealName , "Test Deal"a eşittir. |
dealName = (Test Deal) |
dealName hem "Test" hem de "Anlaşma"ya eşittir. |
dealName = ("Test1" OR "Test2") |
dealName , "Test1"e veya "Test2"ye eşittir. |
dealName:* |
dealName is not null. |
dealName:"test" |
dealName , "test" alt dizesini içerir. |
dealName:("A B") |
dealName , "A B" alt dizesini içerir. |
dealName:(A B) |
dealName , "A" alt dizesini ve "B" alt dizesini içerir. |
dealName:("A" OR "B" AND "C") |
dealName , "A" VEYA "B" alt dizesini içerir VE ayrıca "C" alt dizesini de içerir |
dealName:("A B" C) |
dealName , "A B" alt dizesini ve "C" alt dizesini de içerir. |
dealName:("A B" OR C D) |
dealName , "A B" veya "C" alt dizesini, ayrıca "D" alt dizesini içerir. |
dealName:(NOT "A" B) |
dealName , herhangi bir "A" alt dizesini değil, aynı zamanda "B" alt dizesini de içerir. |
dealName:(NOT "A" OR "B") |
dealName , "A" alt dizesini veya "B" alt dizesini içermiyor. |