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