ফিল্টার সিনট্যাক্স এবং ব্যবহার তালিকা

এই নির্দেশিকা তালিকা ফিল্টার সিনট্যাক্স এবং কিভাবে বিভিন্ন ধরনের রিসোর্স ফিল্টার করতে হয় তা বর্ণনা করে।

কিছু API পদ্ধতি প্রতিক্রিয়ায় ফিরে আসা সংস্থানগুলিকে সীমিত করতে একটি ফিল্টার গ্রহণ করতে পারে।

সারসংক্ষেপ

এই বিভাগটি তালিকা ফিল্টার সিনট্যাক্স কাঠামোর একটি দ্রুত ওভারভিউ প্রদান করে।

  • ফিল্টার হল একটি স্ট্রিং যাতে একটি expression থাকে। একটি expression হল তুলনার একটি বুলিয়ান সমন্বয়:

    expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison }
    expression = ( expression )
    
  • একটি comparison একটি মানের সাথে একটি সম্পদ ক্ষেত্রের সাথে মেলে৷ আপনি সমস্ত সাধারণ তুলনা অপারেটর ব্যবহার করতে পারেন।

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

    has অপারেটর, একটি কোলন ( : ), স্ট্রিং এবং পুনরাবৃত্তি ক্ষেত্রে ব্যবহার করা যেতে পারে। বিস্তারিত জানার জন্য আছে অপারেটর বিভাগটি দেখুন।

  • আপনি ফিল্টারে নিম্নলিখিত ধরনের মান ব্যবহার করতে পারেন:

    • সংখ্যা
    • স্ট্রিংস
    • বন্ধনী অভিব্যক্তি
    value = number| string | "*" | "(" expression ")"
    
  • স্ট্রিং নিম্নলিখিত প্রতিনিধিত্ব করতে পারে:

    • নির্বিচারে পাঠ্য
    • বুলিয়ানস
    • এনাম মান
    • টাইমস্ট্যাম্প

বুলিয়ান এক্সপ্রেশন

expression = ["NOT"|"-"] comparison {["AND" | "OR"] ["NOT"|"-"] comparison}

নিম্নলিখিত ক্রমে অপারেশন করা হয়:

  1. NOT
  2. OR
  3. AND

উদাহরণস্বরূপ, নিম্নলিখিত অভিব্যক্তিগুলি সমতুল্য:

a OR NOT b AND NOT c OR d
(a OR (NOT b)) AND ((NOT c) OR d)

আপনি তুলনার মধ্যে AND অপারেটর বাদ দিতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফিল্টারগুলি একই:

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

আপনি NOT এর বিকল্প হিসাবে হাইফেন ( - ) ব্যবহার করতে পারেন। হাইফেন ( - ) এবং নিম্নলিখিত তুলনার মধ্যে একটি স্থান থাকতে পারে না। উদাহরণস্বরূপ, নিম্নলিখিত ফিল্টারগুলি একই:

NOT e=f
-e=f

তুলনা

এই বিভাগটি নিম্নোক্ত মত "name OP value" তুলনা বর্ণনা করে:

comparison = name OP value

কোথায়

OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
name = identifier { "." identifier }
identifier = unquoted_text
value = number | string | "*" | "(" expression ")"

একটি তুলনার বাম দিকে একটি API সংস্থান ক্ষেত্রের পথের নাম৷ নামটি পিরিয়ড ( . ) দ্বারা সংযুক্ত সম্পদ শনাক্তকারীর একটি সিরিজ নিয়ে গঠিত। প্রতিটি ক্ষেত্র শনাক্তকারীকে সেই ক্ষেত্রের পরবর্তী স্তরের নাম অনুসরণ করা হয়। উদাহরণ স্বরূপ, একটি জটিল ক্ষেত্র item আছে এমন একটি সংস্থান বিবেচনা করুন যেখানে অন্য একটি জটিল ফিল্ড tool রয়েছে, যার একটি ক্ষেত্র নামে shape রয়েছে। এই সম্পদের জন্য একটি ফিল্টারে, আপনি item.tool.shape নামের সাথে আকৃতি উল্লেখ করবেন।

ডান দিকটি সাধারণত একটি স্কেলার মান যা ক্ষেত্রের প্রকারে রূপান্তরিত হয় এবং এটির সাথে তুলনা করা হয়। আরও বিশদ বিবরণের জন্য মান আক্ষরিক প্রকার বিভাগটি দেখুন।

তুলনার ডান দিকটি আক্ষরিক মান এবং/অথবা বুলিয়ান এক্সপ্রেশনগুলির একটি বন্ধনীযুক্ত বুলিয়ান সংমিশ্রণ হিসাবেও প্রকাশ করা যেতে পারে যাতে শুধুমাত্র আক্ষরিক মান রয়েছে ( NOT এর আগে বা ছাড়া)। বাম পাশের নাম এবং তুলনা অপারেটর প্রতিটি মান প্রয়োগ করা হয়. উদাহরণস্বরূপ, নিম্নলিখিত ফিল্টারগুলি একই:

deal.name = ("test 1" OR "test 2")
deal.name = "test 1" OR deal.name = "test 2"

এখানে দুটি সমতুল্য ফিল্টারের আরেকটি, আরও জটিল উদাহরণ:

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")

মান আক্ষরিক প্রকার

একটি তুলনা অপারেটরের ডান পাশের মানটি সংখ্যা এবং স্ট্রিং লিটারেলে শ্রেণীবদ্ধ করা যেতে পারে।

সংখ্যা

এই বিভাগে সাংখ্যিক আক্ষরিক উপস্থাপনা বর্ণনা করে।

টাইপ সংজ্ঞা উদাহরণ
ডাবল চিহ্ন ("-") সহ বা ছাড়া একটি দশমিক বিন্দু ধারণ করা যেকোনো সংখ্যাকে দ্বিগুণ হিসাবে গণ্য করা হয়।
  • 1234.567
  • -789.0123
পূর্ণসংখ্যা চিহ্ন ("-") সহ বা ছাড়া দশমিক বিন্দু নেই এমন যেকোনো সংখ্যাকে পূর্ণসংখ্যা হিসাবে গণ্য করা হয়।
  • 1234
  • -789

স্ট্রিং

এই বিভাগে আপনি ফিল্টার সিনট্যাক্সে স্ট্রিং লিটারেল হিসাবে লিখতে পারেন এমন ধরনের বর্ণনা করে।

টাইপ সংজ্ঞা উদাহরণ
বুলিয়ান যেকোন চিঠির ক্ষেত্রে TRUE বা FALSE
  • TRUE
  • True
  • "true"
এনাম একটি গণনা প্রকারের নাম আক্ষরিক। Enums কেস-সংবেদনশীল. FINALIZED এবং Finalized একই নয়৷
স্ট্রিং UTF-8 এনকোডেড বা 7-বিট ASCII টেক্সট ধারণ করে এমন যেকোনো স্ট্রিং। এম্বেড করা উদ্ধৃতি চিহ্ন অবশ্যই একটি ব্যাকস্ল্যাশ দিয়ে এস্কেপ করতে হবে। হোয়াইটস্পেস সহ উদ্ধৃত স্ট্রিংগুলিকে হোয়াইটস্পেস দ্বারা স্ট্রিংকে বিভক্ত করার পরে সমস্ত শব্দের মধ্যে অন্তর্নিহিত `AND` হিসাবে বিবেচনা করা হয়।
  • name = "test \"double quotes\""
  • name=(ABC DEF) এর সমতুল্য
    name=ABC AND name=DEF
টাইমস্ট্যাম্প ISO8601 মান বিন্যাসে একটি স্ট্রিং। "2014-10-02T15:01:23.045Z"

তুলনা অপারেটর

এখানে তুলনা অপারেটর আছে:

  • এর থেকে কম বা সমান: "<="
  • এর থেকে কম: "<"
  • এর থেকে বড় বা সমান: ">="
  • এর থেকে বড়: ">"
  • এর সমান নয়: "!="
  • এর সমান: "="
  • আছে: ":"

এই অপারেটরগুলি ডাবল, ইন্টিজার, বুলিয়ান, এনাম এবং টাইমস্ট্যাম্প মান প্রকারের জন্য প্রযোজ্য।

অপারেটর আছে

আপনি নিম্নলিখিত ক্ষেত্রগুলিতে বিশেষ ক্রিয়াকলাপের জন্য HAS অপারেটর ( : ) ব্যবহার করতে পারেন:

সাবস্ট্রিং
যখন HAS অপারেটর একটি স্ট্রিং কলামের মানগুলিকে একটি স্ট্রিংয়ের সাথে তুলনা করার জন্য ব্যবহার করা হয়, তখন অপারেটরটি একটি সাবস্ট্রিং অপারেশন হিসাবে কাজ করবে। উদাহরণ স্বরূপ, name:"abcd" এমন সব উদাহরণ প্রদান করে যেখানে name "abcd" ধারণকারী একটি স্ট্রিং।
অস্তিত্ব পরীক্ষা
আপনি যখন বিশেষ অক্ষর * সহ HAS অপারেটর ব্যবহার করেন, তখন HAS অপারেটর নন-নাল মান পরীক্ষা করে। উদাহরণ স্বরূপ, name:* সমস্ত দৃষ্টান্ত প্রদান করে যেখানে name শূন্য, অনুপস্থিত বা অনির্ধারিত নয়।
আপনি যখন অ-স্ট্রিং মান সহ HAS অপারেটর ব্যবহার করেন, তখন এটি EQUALS ( = ) অপারেটরের মতোই আচরণ করে। উদাহরণস্বরূপ, isCompleted:true একইভাবে আচরণ করে যেমন isCompleted = true
বারবার ক্ষেত্র

আপনি HAS ( : ) অপারেটর ব্যবহার করতে পারেন পুনরাবৃত্ত API রিসোর্স ক্ষেত্রে ফিল্টার করতে, যতক্ষণ না নিম্নলিখিতটি সত্য হয়:

  1. ক্ষেত্র শনাক্তকারী পথ বরাবর শুধুমাত্র একটি পুনরাবৃত্তি উপাদান আছে
  2. ক্ষেত্রের পথের শেষ শনাক্তকারীটি স্কেলার ধরনের

নেস্টেড পুনরাবৃত্ত ক্ষেত্রগুলিতে ফিল্টারিং সমর্থিত নয়৷

এখানে একটি উদাহরণ:

item একটি colors ক্ষেত্র রয়েছে, যেটিতে "red" , "blue" এবং "yellow" এর মতো স্ট্রিং মান রয়েছে।

  • item.colors:("red") colors ক্ষেত্রে "red" মান আছে এমন সমস্ত আইটেম প্রদান করে।
  • item.colors:("red" "yellow") colors ক্ষেত্রে "red" এবং "yellow" উভয়ই আছে এমন সমস্ত আইটেম ফেরত দেয়।
  • item.colors:("red" OR "yellow") colors ক্ষেত্রে "red" বা "yellow" আছে এমন সমস্ত আইটেম ফেরত দেয়।

item একটি পুনরাবৃত্ত tools ক্ষেত্রও রয়েছে যা একটি স্কেলার ক্ষেত্র shape সহ একটি জটিল বস্তু, যার মান "square" বা "round" হতে পারে।

  • item.tools.shape:("square") "square" আকৃতির টুল আছে এমন সব আইটেম ফেরত দেয়।
  • item.tools.shape:("square" "round") সমস্ত আইটেম প্রদান করে যেগুলির একটি "square" আকৃতির টুল এবং একটি "round" আকৃতির টুল উভয়ই রয়েছে।
  • item.tools.shape:("square" OR "round") "square" আকৃতির টুল বা "round" আকৃতির টুল আছে এমন সমস্ত আইটেম ফেরত দেয়।

জনবসতিহীন নেস্টেড ক্ষেত্র

নেস্টেড ফিল্ড হল রুট-লেভেল ফিল্ডের সাব-ফিল্ড, উদাহরণ স্বরূপ item.tools.shape এর shape হল items.tools এর একটি নেস্টেড ফিল্ড।

রুট-স্তরের ক্ষেত্র ডিফল্ট থেকে মিথ্যা। নেস্টেড ক্ষেত্রগুলি ডিফল্টরূপে জনবহুল নয়।

জনসংখ্যাবিহীন নেস্টেড ক্ষেত্র সহ বস্তুগুলি নেতিবাচক ফিল্টার ( != ) দ্বারা ফেরত দেওয়া হয় না।

এখানে একটি উদাহরণ:

item.tools একটি size enum আছে যার মান "SMALL" , "MEDIUM" , বা "LARGE" এ সেট করা যেতে পারে।

আপনার যদি নিম্নলিখিত আইটেম থাকে:

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

নেতিবাচক ফিল্টার "tools.size != SMALL" সহ items.list এ একটি কল নিম্নলিখিতগুলি প্রদান করে:

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

যেহেতু item.tools.size item3 এর জন্য সেট করা হয়নি, তাই নেতিবাচক ফিল্টারটি item3 অবজেক্টটি ফেরত দেয় না।

উদাহরণ

উদাহরণ বর্ণনা
externalDealId = "123456789" externalDealId যার একটি স্ট্রিং মান আছে "123456789"।
advertiserId:93641

advertiserId = 93641
advertiserId যার একটি পূর্ণসংখ্যা মান 93641 আছে।
isSetupComplete = true

isSetupComplete:TRUE

isSetupComplete = (True)
isSetupComplete হল TRUE এর সমান।
updateTime > "2018-02-14T11:09:19.378Z" updateTime 02/14/2018 11:09:19.378 UTC এর পরে
displayName = "proposal" AND proposalRevision = 3

displayName = "proposal" proposalRevision = 3
displayName স্ট্রিং এর "প্রস্তাব" এর একটি অভিন্ন মান রয়েছে এবং প্রস্তাবনাটি 3 এর সমান।
displayName = "proposal" OR proposalRevision = 3 displayName "প্রস্তাব" এর একটি স্ট্রিং মান আছে বা প্রস্তাবনাটি 3 এর সমান।
NOT displayName = "proposal"

displayName != "proposal"
displayName "প্রস্তাব" এর সমান নয়।
proposalState = (PROPOSED OR BUYER_ACCEPTED)

proposalState = PROPOSED OR proposalState = BUYER_ACCEPTED
proposalState একটি এনাম মান রয়েছে যা হয় প্রস্তাবিত বা BUYER_ACCEPTED-এর সমান।
proposalState = (PROPOSED AND BUYER_ACCEPTED)

proposalState = (PROPOSED BUYER_ACCEPTED)

proposalState = PROPOSED AND proposalState = BUYER_ACCEPTED

proposalState = PROPOSED proposalState = BUYER_ACCEPTED
proposalState এর একটি enum মান রয়েছে যা PROPOSED এবং BUYER_ACCEPTED এর সমান
dealName = Test Deal INVALID অভিব্যক্তি
dealName = "Test Deal" dealName "Test Deal" এর সমান।
dealName = (Test Deal) dealName "Test" এর সমান এবং "Deal" এর সমান।
dealName = ("Test1" OR "Test2")

dealName = "Test1" OR dealName = "Test2"
dealName হয় "Test1" এর সমান বা "Test2" এর সমান।
dealName:* dealName is not null.
dealName:"test"

dealName:test
dealName সাবস্ট্রিং "পরীক্ষা" ধারণ করে।
dealName:("AB")

dealName:"AB"
dealName সাবস্ট্রিং "AB" ধারণ করে।
dealName:(AB)

dealName:"A" AND dealName:"B"
dealName সাবস্ট্রিং "A" এবং সাবস্ট্রিং "B" ধারণ করে।
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" বা "B" সাবস্ট্রিং থাকে এবং "C" সাবস্ট্রিংও থাকে
dealName:("AB" C)

dealName:"AB" AND dealName:"C"
dealName এ "AB" সাবস্ট্রিং রয়েছে এবং "C" সাবস্ট্রিংও রয়েছে।
dealName:("AB" OR CD) dealName এ হয় "AB" বা "C" সাবস্ট্রিং থাকে এবং "D" সাবস্ট্রিংও থাকে।
dealName:(NOT "A" B)

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

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

(NOT dealName:"A") dealName:"B"
dealName কোনো সাবস্ট্রিং "A" থাকে না এবং সাবস্ট্রিং "B"ও থাকে।
dealName:(NOT "A" OR "B")

NOT dealName:"A" OR dealName:"B"
(NOT dealName:"A") OR dealName:"B"
dealName কোনো সাবস্ট্রিং "A" থাকে না বা সাবস্ট্রিং "B" থাকে না।