Liste filtresi söz dizimi ve kullanımı

Bu kılavuzda, liste filtresi söz dizimi ve çeşitli filtrelerin kaynak türleri.

Bazı API yöntemleri, tıklayın.

Özet

Bu bölümde, liste filtresi söz dizimi yapısına dair kısa bir genel bakış sunulmaktadır.

  • Filtre, expression içeren bir dizedir. expression, bir Boole'dir Karşılaştırma kombinasyonu:

    expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison }
    expression = ( expression )
    
  • comparison, bir kaynak alanını bir değerle eşleştirir. Kullanabileceğiniz tüm yaygın karşılaştırma operatörleri.

    comparison = name OP value
    OP = "<=" | "<" | ">=" | ">"  | "!=" | "=" | ":"
    

    has operatörü olan iki nokta üst üste (:), dizelerde kullanılabilir ve tekrarlanabilir alanları. Ayrıntılı bilgi için Operatör içeriyor 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:

  1. NOT
  2. OR
  3. 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ırmalarda AND operatörünü çıkarabilirsiniz. Örneğin, filtreleri aynıdır:

c=d AND e=f
c=d e=f

NOT için alternatif olarak kısa çizgiyi (-) kullanabilirsiniz. Bir kısa çizgi (-) ile aşağıdaki karşılaştırma arasındaki boşluk bırakılmalıdır. Örneğin, aşağıdaki filtreler aynıdır:

NOT e=f
-e=f

Karşılaştırmalar

Bu bölümde aşağıdakiler 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 kaynağı alanının yol adı yer alır. Ad, döneme (.) göre 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ı gelir. Örneğin, Örneğin, karmaşık bir alanı olan item ve başka bir shape adlı bir alanı içeren tool karmaşık alanı. Bunun için bir filtrede kaynağı ise item.tool.shape şeklinde bir şekle atıfta bulunursunuz.

Sağ taraf, genellikle alanın kıyaslamadığı bir meseledir. Değişmez Değer türlerini inceleyin bölümüne bakın.

Karşılaştırmanın sağ tarafı, parantez içinde Boole olarak da ifade edilebilir düz değerler ve/veya yalnızca değişmez değerler (NOT ile başlayan veya olmayan değerler). Sol taraftaki 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 kavramın daha karmaşık bir filtreler:

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 değeri, Sayı ve Dize değişmez değerleri.

Sayı

Bu bölümde sayısal değişmez değerlerin gösterimi açıklanmaktadır.

Tür Tanım Örnekler
Çift İşareti ("-") içeren veya içermeyen, ondalık nokta içeren herhangi bir sayı çift olarak ele alınır.
  • 1234,567
  • -789,0123
Tamsayı İşaretli veya işaretisiz ondalık noktası olmayan tüm sayılar ("-"), bir tam sayı olarak kabul edilir.
  • 1234
  • -789

Dize

Bu bölümde, filtre söz dizimi.

Tür Tanım Örnekler
Boole TRUE veya FALSE (büyük/küçük harf kullanımı).
  • TRUE
  • True
  • "true"
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 kodlu veya 7 bitlik ASCII metin içeren tüm dizeler. Katıştırılmış tırnak işaretleri içine ters eğik çizgi koyulmalıdır. Boşluk içeren tırnak içine alınmamış dizeler, örtülü "VE" olarak kabul edilir dizeyi boşlukla böldükten sonra tüm sözcüklerin arasına ekler.
  • name = "test \"double quotes\""
  • name=(ABC DEF),
    name=ABC AND name=DEF ile eşdeğerdir
Zaman damgası ISO8601 standart biçiminde 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: ">="
  • Şundan büyük: ">"
  • Eşit değildir: "!="
  • Şuna eşit: "="
  • Şunları içeriyor: ":"

Bu operatörler Double, Integer, Boole, Enum ve Timestamp değerleri için geçerlidir. bulunur.

Operatör içeriyor

Aşağıdakilerde özel işlemler için HAS operatörünü (:) kullanabilirsiniz. alanlar:

Alt dizeler
Bir dize sütunundaki değerleri HAS ile karşılaştırmak için dize, operatör bir alt dize işlemi olarak hareket eder. Örneğin, name:"abcd", name değerinin "abcd".
Varlık kontrolü
HAS operatörünü * özel karakteriyle kullandığınızda, HAS operatörü, boş olmayan değerleri kontrol eder. Örneğin, name:*, name değerinin null, eksik veya tanımsız olmadığı tüm örnekleri döndürür.
ziyaret edin.
HAS operatörünü dize dışı değerlerle kullandığınızda EQUALS (=) operatörü. Örneğin, isCompleted:true, isCompleted = true ile aynıdır.
Yinelenen Alanlar

Yinelenen bir API kaynağını filtrelemek için HAS (:) operatörünü kullanabilirsiniz alanına değer girmeniz gerekir:

  1. Alan tanımlayıcı yolunda yalnızca bir tekrarlanan bileşen var
  2. Alan yolunun son tanımlayıcısı skaler türdedir

İç içe yerleştirilmiş yinelenen alanlarda filtreleme desteklenmez.

Aşağıda bununla ilgili bir örnek verilmiştir:

item, "red" gibi dize değerleri içeren bir colors alanı içerir, "blue" ve "yellow".

  • item.colors:("red"),"red" colors alanı için geçerlidir.
  • item.colors:("red" "yellow"), hem "red" hem de kelime içeren tüm öğeleri döndürür colors alanına "yellow".
  • item.colors:("red" OR "yellow"), "red" veya colors alanına "yellow".

item ayrıca skalerli karmaşık bir nesne olan tekrarlanan bir tools alanına sahip shape alanı; değerleri "square" veya "round" olabilir.

  • item.tools.shape:("square"), "square" şekli olan tüm öğeleri döndürür araçlar.
  • item.tools.shape:("square" "round"), hem "square" ve "round" şekilli araç.
  • item.tools.shape:("square" OR "round"), şuna sahip tüm öğeleri döndürür: "square" şekil aracı veya "round" şekilli araç.
ziyaret edin.

Doldurulmamış iç içe yerleştirilmiş alanlar

İç içe yerleştirilmiş alanlar, kök düzeyindeki alanların alt alanlarıdır. Örneğin, shape item.tools.shape, items.tools öğesinin iç içe yerleştirilmiş bir alanıdır.

Kök düzeyindeki alanlar için varsayılan olarak "false" değeri kullanılır. İç içe geçmiş alanlar varsayılan olarak doldurulmaz.

Doldurulmamış iç içe geçmiş alanlara sahip nesneler negatif değer döndürmez filtreleri (!=).

Aşağıda bununla ilgili bir örnek verilmiştir:

item.tools, değeri "SMALL", "MEDIUM" olarak ayarlanabilen bir size enum içerir, veya "LARGE".

Aşağıdaki öğelere sahipseniz:

{
  "name": "item1",
  "tools": {
    "size": "MEDIUM"
  }
},
{
  "name": "item2",
  "tools": {
    "size": "LARGE"
  }
},
{
  "name": "item3"
}

"tools.size != SMALL" negatif filtresiyle items.list için yapılan bir çağrı şu sonucu döndürür: şu:

{
  "items": [
    {
      "name": "item1",
      "tools": {
        "size": "MEDIUM"
      }
    },
    {
      "name": "item2",
      "tools": {
        "size": "LARGE"
      }
    }
  ]
}

item.tools.size, item3 için ayarlanmadığından negatif filtrede item3 nesnesini döndürür.

Örnekler

Örnek Açıklama
externalDealId = "123456789" "123456789" dize değerine sahip externalDealId.
advertiserId:93641

advertiserId = 93641
advertiserId değeri 93641 tam sayıdır.
isSetupComplete = true

isSetupComplete:TRUE

isSetupComplete = (True)
isSetupComplete, DOĞRU sayısına eşit.
updateTime > "2018-02-14T11:09:19.378Z" updateTime, 14.02.2018 11:09:19.378 UTC'den sonradır
displayName = "proposal" AND proposalRevision = 3

displayName = "proposal" proposalRevision = 3
displayName dizesi, aynı "teklif" değerine sahip VE OfferRevision değeri 3'e eşittir.
displayName = "proposal" OR proposalRevision = 3 displayName, "teklif" dize değerine sahip VEYA offerRevision değeri 3'e eşitse.
NOT displayName = "proposal"

displayName != "proposal"
displayName, "teklif"e eşit değildir.
proposalState = (PROPOSED OR BUYER_ACCEPTED)

proposalState = PROPOSED OR proposalState = BUYER_ACCEPTED
proposalState, PROPOSED VEYA BUYER_acceptED değerine eşit bir numaralandırma değerine sahip.
proposalState = (PROPOSED AND BUYER_ACCEPTED)

proposalState = (PROPOSED BUYER_ACCEPTED)

proposalState = PROPOSED AND proposalState = BUYER_ACCEPTED

proposalState = PROPOSED proposalState = BUYER_ACCEPTED
proposalState, PROPOSED AND BUYER_acceptED değerine eşit bir sıralama değerine sahip
dealName = Test Deal INVALID ifade
dealName = "Test Deal" dealName, "Test Anlaşması"na eşit.
dealName = (Test Deal) dealName, "Test" değerine eşit ve aynı zamanda "Anlaşma"ya eşittir.
dealName = ("Test1" OR "Test2")

dealName = "Test1" OR dealName = "Test2"
dealName, "Test1" değerine eşit veya "Test2"ye eşittir.
dealName:* dealName is not null.
dealName:"test"

dealName:test
dealName, "test" alt dizesini içeriyor.
dealName:("A B")

dealName:"A B"
dealName, "A B" alt dizesini içeriyor.
dealName:(A B)

dealName:"A" AND dealName:"B"
dealName, "A" alt dizesini içeriyor ile "B" alt dizesi gelir.
dealName:("A" OR "B" AND "C")

dealName:("A" OR "B" "C")

dealName:"A" OR dealName:"B" AND dealName:"C"

dealName:"A" OR dealName:"B" dealName:"C"

(dealName:"A" OR dealName:"B") AND dealName:"C"

(dealName:"A" OR dealName:"B") dealName:"C"
dealName, "A" alt dizesini içeriyor VEYA "B" VE ayrıca "C" alt dizesini içerir
dealName:("A B" C)

dealName:"A B" AND dealName:"C"
dealName, "A B" alt dizesini içeriyor ve "C" alt dizesini içerir.
dealName:("A B" OR C D) dealName, "A B" alt dizesini içeriyor veya "C"yi içerir ve ayrıca "D" alt dizesini içerir.
dealName:(NOT "A" B)

NOT dealName:"A" AND dealName:"B"

(NOT dealName:"A") AND dealName:"B"

(NOT dealName:"A") dealName:"B"
dealName, "A" alt dizesi içermiyor ve "B" alt dizesini içerir.
dealName:(NOT "A" OR "B")

NOT dealName:"A" OR dealName:"B"
(NOT dealName:"A") OR dealName:"B"
dealName, "A" alt dizesi içermiyor veya "B" alt dizesi içeriyorsa