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

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

सिंटैक्स

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

एक ही क्वेरी में मौजूद कई फ़ील्ड को फ़िल्टर करने के लिए, AND का इस्तेमाल किया जा सकता है. आप यह भी कर सकते हैं कई relationship(...) और service(...) फ़िल्टर को जोड़ने के लिए, AND का इस्तेमाल करें. यहां एक उदाहरण दिया गया है, जिसमें कई 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*" सभी नतीजे दिखाता है ऐसे खाते जिनके accountName में foo शामिल हो, जैसे कि "storeFoo".

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

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

खास जानकारी

फ़िल्टर, एआईपी फ़िल्टर के सबसेट को फ़ॉलो करते हैं स्पेसिफ़िकेशन, और इसका औपचारिक ईबीएनएफ़ (EBNF) व्याकरण:

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
    : " = " | " != "
    ;