सूची के जवाबों को फ़िल्टर करें

Display & Video 360 API की ज़्यादातर सेवाएं, एक साथ कई संसाधनों को वापस पाने के लिए LIST तरीका उपलब्ध कराती हैं. आम तौर पर, ये LIST तरीके filter क्वेरी पैरामीटर की मदद से नतीजों को फ़िल्टर करते हैं. इस पैरामीटर का इस्तेमाल करके, एपीआई के इस्तेमाल को ऑप्टिमाइज़ करें. इसके लिए, सिर्फ़ ज़रूरी जानकारी हासिल करें.

इस गाइड में, filter पैरामीटर का बेहतर तरीके से इस्तेमाल करने का तरीका बताया गया है.

फ़िल्टर का स्ट्रक्चर

filter पैरामीटर की वैल्यू एक स्ट्रिंग होती है. इसमें एक या उससे ज़्यादा पाबंदियां होती हैं. इन्हें AND या OR ऑपरेटर के साथ जोड़ा जा सकता है और ब्रैकेट का इस्तेमाल करके ग्रुप किया जा सकता है.

पाबंदियां {field} {operator} {value} फ़ॉर्मैट में होती हैं. यहां एक उदाहरण दिया गया है:

entityStatus="ENTITY_STATUS_ACTIVE"

फ़िल्टर स्ट्रिंग में 500 से ज़्यादा वर्ण नहीं होने चाहिए. अगर आपकी फ़िल्टर स्ट्रिंग में 500 से ज़्यादा वर्ण हैं, तो इनमें से कोई एक काम करें:

  • लॉजिक को कई फ़िल्टर स्ट्रिंग में बांटें और अलग-अलग LIST अनुरोधों का इस्तेमाल करके संसाधनों को वापस पाएं.
  • फ़िल्टर स्ट्रिंग से कुछ लॉजिक हटाएं और उसका इस्तेमाल, वापस पाएं गए संसाधनों को स्थानीय तौर पर फ़िल्टर करने के लिए करें.

पाबंदी की वैल्यू को कोट में लपेटें, ताकि यह पक्का किया जा सके कि लॉजिक सही तरीके से लागू हो.

अगर क्लाइंट लाइब्रेरी का इस्तेमाल किए बिना, सीधे LIST कॉल किए जा रहे हैं, तो अपनी फ़िल्टर स्ट्रिंग को यूआरएल-कोड में बदलें.

अपनी क्वेरी को फ़ॉर्मैट करने के बारे में ज़्यादा जानकारी के लिए, पाबंदियों के बीच लॉजिक देखें.

फ़िल्टर किए जा सकने वाले फ़ील्ड

हर LIST मेथड के फ़िल्टर किए जा सकने वाले फ़ील्ड, मेथड के filter पैरामीटर के ब्यौरे में दिए गए होते हैं. ज़्यादातर मामलों में, किसी संसाधन के स्टैंडर्ड फ़ील्ड के सबसेट पर फ़िल्टर किया जा सकता है. कुछ मामलों में, ऐसे अतिरिक्त फ़ील्ड होते हैं जिनका इस्तेमाल सिर्फ़ फ़िल्टर करने के लिए किया जा सकता है.

पैरामीटर के ब्यौरे में मौजूद हर फ़ील्ड में, तुलना करने वाले इनमें से कम से कम एक ऑपरेटर काम करता है:

तुलना करने वाले ऑपरेटर
EQUALS (=) रिसॉर्स फ़ील्ड की वैल्यू, दी गई वैल्यू के बराबर है.

उदाहरण: entityStatus="ENTITY_STATUS_ACTIVE"

LESS THAN OR EQUAL TO (<=) रिसॉर्स फ़ील्ड की वैल्यू, दी गई वैल्यू से कम या उसके बराबर है. आम तौर पर, इसका इस्तेमाल तारीख या समय की तुलना करने के लिए किया जाता है.

उदाहरण: updateTime<="2023-04-01T12:00:00Z"

GREATER THAN OR EQUAL TO (>=) रिसॉर्स फ़ील्ड की वैल्यू, दी गई वैल्यू से ज़्यादा या उसके बराबर है. आम तौर पर, इसका इस्तेमाल तारीख या समय की तुलना करने के लिए किया जाता है.

उदाहरण: updateTime>="2023-03-01T12:00:00Z"

HAS (:) रिसॉर्स फ़ील्ड की वैल्यू में दी गई वैल्यू होती है. अगर रिसॉर्स फ़ील्ड एक स्ट्रिंग है, तो यह जांच की जाएगी कि दी गई वैल्यू, मौजूदा सबस्ट्रिंग है या नहीं. अगर रिसोर्स फ़ील्ड एक ऐरे है, तो यह जांच की जाएगी कि ऐरे में दी गई वैल्यू मौजूद है या नहीं.

उदाहरण: lineItemIds:"1234"

अगर पैरामीटर के ब्यौरे में फ़ील्ड के लिए कोई ऑपरेटर नहीं दिया गया है, तो सिर्फ़ EQUALS (=) ऑपरेटर का इस्तेमाल किया जा सकता है. कुछ फ़ील्ड में एक से ज़्यादा ऑपरेटर इस्तेमाल किए जा सकते हैं.

फ़िल्टर किए जा सकने वाले कुछ फ़ील्ड, जैसे कि तारीख और समय के लिए, तुलना की जा सकने वाली वैल्यू को किसी खास फ़ॉर्मैट में होना चाहिए. फ़ॉर्मैट की जानकारी, filter पैरामीटर की जानकारी वाले फ़ील्ड के बगल में दी गई है.

पाबंदियों के बीच का लॉजिक

LIST अनुरोध के जवाब को सीमित या बड़ा करने के लिए, एक से ज़्यादा पाबंदियां जोड़ी जा सकती हैं.

आम तौर पर, AND और OR लॉजिक ऑपरेटर की मदद से, कई पाबंदियों को जोड़ा जा सकता है. हर LIST तरीके से यह पता चलता है कि वह किन ऑपरेटर के साथ काम करता है. कुछ तरीके, filter पैरामीटर में सिर्फ़ एक पाबंदी का इस्तेमाल करते हैं.

AND या OR लॉजिकल ऑपरेटर के साथ फ़िल्टर स्ट्रिंग बनाते समय, इन पाबंदियों का ध्यान रखें:

  • AND का इस्तेमाल, पाबंदियों या पाबंदियों के ग्रुप के बीच किया जाना चाहिए, जो अलग-अलग फ़ील्ड को फ़िल्टर करते हैं या एक ही फ़ील्ड को अलग-अलग तरीके से फ़िल्टर करते हैं. यहां कुछ उदाहरण दिए गए हैं:
    • updateTime>="2023-03-01T12:00:00Z" AND entityStatus="ENTITY_STATUS_ACTIVE"
    • updateTime>="2023-03-01T12:00:00Z" AND updateTime<="2023-04-01T12:00:00Z" AND (entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED")
  • OR का इस्तेमाल, एक ही फ़ील्ड के हिसाब से फ़िल्टर की गई अलग-अलग पाबंदियों के बीच किया जाना चाहिए. यहां एक उदाहरण दिया गया है:
    • (entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED") AND (lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" OR lineItemType="LINE_ITEM_TYPE_VIDEO_DEFAULT")
  • पाबंदियों के दो ग्रुप को एक साथ जोड़ने के लिए, OR का इस्तेमाल नहीं किया जा सकता. इसके बजाय, अलग-अलग फ़िल्टर वैल्यू के साथ कई LIST अनुरोधों का इस्तेमाल करें. उदाहरण के लिए, अलग-अलग LIST अनुरोधों के लिए, इनका इस्तेमाल करें:

    • (lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" AND insertionOrderId="123")
    • (lineItemType="LINE_ITEM_TYPE_VIDEO_DEFAULT" AND insertionOrderId="456")

    उन्हें जोड़ने के लिए, OR ऑपरेटर का इस्तेमाल न करें:

    (lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" AND insertionOrderId="123") OR (lineItemType="LINE_ITEM_TYPE_VIDEO_DEFAULT" AND insertionOrderId="456")

  • अगर फ़िल्टर स्ट्रिंग में पाबंदियों को ग्रुप करने के लिए ब्रैकेट का इस्तेमाल नहीं किया जाता है, तो हो सकता है कि ब्रैकेट का इस्तेमाल अपने-आप हो जाए. उदाहरण के लिए, यह फ़िल्टर स्ट्रिंग:

    updateTime>="2023-03-01T12:00:00Z" AND entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED" OR entityStatus="ENTITY_STATUS_DRAFT"

    को इस तरह से समझा जाता है:

    updateTime>="2023-03-01T12:00:00Z" AND (entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED" OR entityStatus="ENTITY_STATUS_DRAFT")