Filter sintaksis

Halaman ini menjelaskan sintaks yang harus Anda gunakan untuk memfilter akun.

Sintaksis

Semua nilai selain bilangan bulat harus diapit dalam tanda kutip ganda ("). Kepada mempelajari nilai yang diterima kolom tertentu, lihat referensi untuk kolom tersebut.

Anda dapat menggunakan AND untuk memfilter beberapa kolom dalam kueri yang sama. Anda juga dapat menggunakan AND untuk menggabungkan beberapa filter relationship(...) dan service(...). Berikut adalah contoh yang menggabungkan beberapa relationship(...) dan service(...) filter:

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

Contoh ini akan menampilkan akun berikut:

  • Semua akun dengan hubungan pengelolaan akun dengan akun lain, dan hubungan tambahan yang menunggu persetujuan.

  • Semua akun dengan nama tampilan "store", yang memiliki hubungan dengan akun lain.

Anda tidak dapat menggunakan AND untuk memfilter beberapa nilai dalam kolom yang sama. Sebagai contoh, Anda tidak dapat menggunakan accountName = "*A*" AND accountName = "*B*".

Anda dapat menggunakan OR untuk memfilter dua kolom dalam kueri yang sama. Tutup filter kriteria di setiap sisi operator OR dengan tanda kurung. Contohnya, (accountName = "storeA") OR (accountName = "storeB").

Anda hanya dapat menggunakan OR untuk menggabungkan dua kolom. Misalnya, Anda tidak bisa menggunakan (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC").

Tanda kurung tidak diizinkan selain dengan operator AND dan OR, dan di pemanggilan fungsi, seperti relationship(...) dan service(...).

Untuk kolom string seperti accountName dan accountIdAlias, Anda dapat memfilter nilai yang berisi kata atau urutan karakter tertentu dengan melampirkan dalam tanda bintang (*). Misalnya, accountName = "*foo*" menampilkan semua akun dengan accountName yang berisi foo, seperti "storeFoo".

Anda dapat memfilter nilai yang tidak berisi urutan tertentu menggunakan != dan *. Misalnya, accountName != "*foo*" menampilkan semua akun dengan accountName yang tidak berisi foo.

Spasi kosong tambahan akan diabaikan. Misalnya, foo AND bar sama dengan foo AND bar.

Spesifikasi

Filter mengikuti subset filter AI spesifikasi, dan EBNF formal tata bahasa:

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