Filtre söz dizimi

Bu sayfada, hesapları filtrelemek için kullanmanız gereken söz dizimi açıklanmaktadır.

Söz dizimi

Tam sayılar dışındaki tüm değerler çift tırnak (") içine alınmalıdır. Alıcı: belirli bir alanın hangi değerleri kabul ettiğini öğrenmek için referans bölümüne dokümanlarına göz atabilirsiniz.

Aynı sorguda birden çok alanı filtrelemek için AND kullanabilirsiniz. Ayrıca transkriptinizi birden çok relationship(...) ve service(...) filtresini birleştirmek için AND kullanın. Birden çok relationship(...) ve service(...) birleşimini birleştiren bir örneği aşağıda bulabilirsiniz filtreler:

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

Bu örnek aşağıdaki hesapları döndürür:

  • Başka bir hesapla hesap yönetimi ilişkisi olan tüm hesaplar, ve kabul edilmeyi bekleyen ek bir ilişki.

  • Başka hesaplarla ilişkisi olan, görünen adı "store" olan tüm hesaplar.

Aynı alanda birden çok değeri filtrelemek için AND parametresini kullanamazsınız. Örneğin, Örneğin, accountName = "*A*" AND accountName = "*B*" kullanamazsınız.

Aynı sorgudaki iki alanı filtrelemek için OR kullanabilirsiniz. Filtreyi içine alın OR operatörünün her iki tarafına da parantez işareti koyun. Örneğin, (accountName = "storeA") OR (accountName = "storeB")

İki alanı birleştirmek için yalnızca OR kullanabilirsiniz. Örneğin, (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC")

AND ve OR operatörleri dışında ve işlev çağrıları (ör. relationship(...) ve service(...)).

accountName ve accountIdAlias gibi dize alanları için şu ölçütlere göre filtreleme yapabilirsiniz: değerleri yıldız işareti (*) dizilimi. Örneğin, accountName = "*foo*" tüm foo içeren accountName içeren hesaplar (ör. "storeFoo").

!= kullanarak belirli bir sırayı içermeyen değerleri filtreleyebilirsiniz ve *. Örneğin, accountName != "*foo*", foo değerini içermeyen accountName.

Fazladan boşluklar yoksayılır. Örneğin, foo AND bar ile foo AND bar aynıdır.

Spesifikasyon

Filtreler, AIP filtresinin bir alt kümesini izler. ve onun resmi EBNF'si dil bilgisi:

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