Halaman ini menjelaskan sintaksis yang harus Anda gunakan untuk memfilter akun.
Sintaksis
Semua nilai selain bilangan bulat harus diapit dalam tanda kutip ganda ("). Untuk mempelajari nilai yang diterima kolom tertentu, lihat dokumentasi 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 filter relationship(...)
dan
service(...)
:
(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 di kolom yang sama. Misalnya, Anda tidak dapat menggunakan accountName = "*A*" AND accountName = "*B*"
.
Anda dapat menggunakan OR
untuk memfilter dua kolom dalam kueri yang sama. Sertakan kriteria filter
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 dapat menggunakan
(accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
.
Tanda kurung tidak diizinkan selain dengan operator AND
dan OR
, dan dalam
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 menyertakan
urutan tersebut dengan 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 spesifikasi filter AIP, dan tata bahasa EBNF formalnya:
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
: " = " | " != "
;