फ़िल्टर सिंटैक्स

इस पेज पर उस सिंटैक्स के बारे में बताया गया है जिसका इस्तेमाल आपको खाते फ़िल्टर करने के लिए करना चाहिए.

सिंटैक्स

पूर्णांक के अलावा अन्य सभी वैल्यू को डबल कोट (") में रखना चाहिए. किसी खास फ़ील्ड में कौनसी वैल्यू स्वीकार की जा सकती हैं, यह जानने के लिए उस फ़ील्ड का रेफ़रंस दस्तावेज़ देखें.

एक ही क्वेरी में एक से ज़्यादा फ़ील्ड को फ़िल्टर करने के लिए, AND का इस्तेमाल किया जा सकता है. AND का इस्तेमाल करके, एक से ज़्यादा relationship(...) और service(...) फ़िल्टर को भी जोड़ा जा सकता है. यहां एक ऐसा उदाहरण दिया गया है जिसमें एक से ज़्यादा relationship(...) और service(...) फ़िल्टर जोड़े गए हैं:

(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

इस उदाहरण में इन खातों को दिखाया गया है:

  • ऐसे सभी खाते जिनका किसी अन्य खाते से खाता प्रबंधन का संबंध है और कोई अन्य संबंध है, जिसे अभी तक स्वीकार नहीं किया गया है.

  • "store" डिसप्ले नाम वाले सभी खाते, जो अन्य खातों से जुड़े हैं.

एक ही फ़ील्ड में एक से ज़्यादा वैल्यू को फ़िल्टर करने के लिए, AND का इस्तेमाल नहीं किया जा सकता. उदाहरण के लिए, accountName = "*A*" AND accountName = "*B*" का इस्तेमाल नहीं किया जा सकता.

एक ही क्वेरी में दो फ़ील्ड को फ़िल्टर करने के लिए, OR का इस्तेमाल किया जा सकता है. OR ऑपरेटर के हर तरफ़ फ़िल्टर की शर्त को ब्रैकेट में रखें. उदाहरण के लिए, (accountName = "storeA") OR (accountName = "storeB").

दो फ़ील्ड को जोड़ने के लिए, सिर्फ़ OR का इस्तेमाल किया जा सकता है. उदाहरण के लिए, (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC") का इस्तेमाल नहीं किया जा सकता.

AND और OR ऑपरेटर के अलावा, ब्रैकेट के इस्तेमाल की अनुमति नहीं है. साथ ही, फ़ंक्शन में इस्तेमाल होने वाले relationship(...) और service(...) जैसे ब्रैकेट की अनुमति नहीं है.

accountName और accountIdAlias जैसे स्ट्रिंग फ़ील्ड के लिए, तारे के निशान (*) में क्रम को शामिल करके, उन वैल्यू को फ़िल्टर किया जा सकता है जिनमें कोई खास शब्द या वर्णों का क्रम होता है. उदाहरण के लिए, accountName = "*foo*", foo वाले accountName वाले सभी खाते दिखाता है, जैसे "storeFoo".

!= और * का इस्तेमाल करके, ऐसी वैल्यू को फ़िल्टर किया जा सकता है जिनमें कोई खास क्रम नहीं होता. उदाहरण के लिए, accountName != "*foo*" की मदद से, accountName वाले उन सभी खातों की जानकारी मिलती है जिनमें foo नहीं होता.

ज़रूरत से ज़्यादा खाली जगहों को अनदेखा कर दिया जाता है. उदाहरण के लिए, foo AND bar और foo AND bar एक ही हैं.

खास जानकारी

फ़िल्टर, एआईपी फ़िल्टर की जानकारी के एक सबसेट और इसके औपचारिक ईबीएनएफ़ ग्रामर को फ़ॉलो करते हैं:

filter
    : accountFilterDisj
    | accountFilterConj
    ;
accountFilterDisj
    : "(" accountFilterConj " OR " accountFilterConj ")"
    ;
accountFilterConj
    : accountFilter {" AND " accountFilter}
    ;
accountFilter
    : displayNameFilter | relationshipFn
    ;
displayNameFilter
    : "displayName" comparator value
    ;
relationshipFn
    : "relationship(" relationshipConj ")"
    ;
relationshipConj
    : relationshipFilter {" AND " relationshipFilter}
    ;
relationshipFilter
    : "providerId = " numValue
    | "callerHasAccessToProviderFilter()"
    | "externalAccountId" comparator value
    | "accountIdAlias" comparator value
    | serviceFn
    ;
serviceFn
    : "service(" serviceConj ")"
    ;
serviceConj
    : serviceFilter {" AND " serviceFilter}
    ;
serviceFilter
    : handshakeStateFilter
    | typeFilter
    ;
handshakeStateFilter
    : "handshakeState = " value
    ;
typeFilter
    : "type = " value
    ;
comparator
    : " = " | " != "
    ;