フィルタリング
フィルタは、特定のアカウントやゾーンのセット、日付によるリクエスト、または特定のユーザーエージェントからのリクエストにクエリを制約します。フィルタがない場合、クエリはパフォーマンスの低下を引き起こす可能性があり、結果がサポートされている範囲を超えることがあり、返されるデータがノイズを含む可能性があります。
GraphQLフィルタは、GraphQL Input Object ↗によって表され、ノード上でのブール代数を公開します。
以下のリソースでフィルタを引数として使用できます:
- zones
- accounts
- tables (datasets)
ゾーンID(zoneTag)によってゾーン関連データをクエリすることを許可します。
zones(filter: {zoneTag: "your Zone ID"}) { ...}ゾーンフィルタは、以下の文法に従う必要があります:
filter { zoneTag: t } { zoneTag_gt: t } { zoneTag_in: [t, ...] }複合フィルタ(カンマ区切り、AND、OR)はサポートされていません。
ゾーンIDがわかっている場合は、zoneTag: tおよびzoneTag_in: [t, ...]の形式を使用します。ゾーンIDが不明な場合は、すべてのゾーンを横断するためにzoneTag_gt: tの形式を使用します。ゾーンは常にアルファベット順にソートされます。
フィルタを省略すると、すべてのゾーンの結果を取得できます(サポートされている制限まで)。
アカウントフィルタは、ゾーンフィルタと同じ構造とルールを使用しますが、ゾーンID(zoneTag)の代わりにアカウントID(accountTag)を使用します。
アカウントスコープのクエリを行う際には、アカウントフィルタを指定する必要があり、複数のアカウントを同時にクエリすることはできません。
テーブルフィルタは、少なくとも1つのノードをクエリする必要があります。AND演算子を使用してマルチノードフィルタを作成および組み合わせます。テーブルフィルタは、明示的に指定する必要があるOR演算子もサポートしています。
以下の文法は、テーブルフィルタを説明しており、kはフィルタを適用するGraphQLノードで、opはそのノードに対してサポートされている演算子の1つです:
filter { kvs }kvs kv kv, kvskv k: v k_op: v AND: [filters] OR: [filters]filters filter filter, filters演算子のサポートは、ノードタイプとノード名によって異なります。
すべての配列タイプに対してサポートされている演算子は以下の通りです:
| 演算子 | 比較 |
|---|---|
has | 配列が値を含む |
hasall | 配列がリストのすべての値を含む |
hasany | 配列がリストの少なくとも1つの値を含む |
すべてのスカラータイプに対してサポートされている演算子は以下の通りです:
| 演算子 | 比較 |
|---|---|
gt | より大きい |
lt | より小さい |
geq | より大きいか等しい |
leq | より小さいか等しい |
neq | 等しくない |
in | 含まれている |
like演算子は文字列比較に利用でき、ワイルドカードとして%文字をサポートします。
{ viewer { zones(filter: {zoneTag: $zoneTag}) { httpRequestsAdaptiveGroups(filter: {datetime_gt: "2021-06-10T00:00:00Z", clientCountryName: "GB"}, limit: 1) { count } } }}以下のGraphQLの例は、特定のノードをフィルタリングする方法を示しています。SQLの同等のものが続きます。
httpRequestsAdaptiveGroups(filter: {datetime: "2018-01-01T10:00:00Z"}) { ...}WHERE datetime="2018-01-01T10:00:00Z"以下のGraphQLの例は、複数のフィールド、ここでは2つのdatetimeフィールドにフィルタを適用する方法を示しています。SQLの同等のものが続きます。
httpRequests1hGroups(filter: {datetime_gt: "2018-01-01T10:00:00Z", datetime_lt: "2018-01-01T11:00:00Z"}) { ...}WHERE (datetime > "2018-01-01T10:00:00Z") AND (datetime < "2018-01-01T10:00:00Z")以下のGraphQLの例は、フィルタ内でOR演算子を使用する方法を示しています。このOR演算子は、clientCountryNameフィールドでUSまたはGBの値をフィルタリングします。
httpRequestsAdaptiveGroups( filter: { datetime: "2018-01-01T10:00:00Z", OR:[{clientCountryName: "US"}, {clientCountryName: "GB"}]) { ...}WHERE datetime="2018-01-01T10:00:00Z" AND ((clientCountryName = "US") OR (clientCountryName = "GB"))以下のGraphQLの例は、特定の値を含むデータのみを返すように配列フィールドをフィルタリングする方法を示しています。SQLの同等のものが続きます。
mnmFlowDataAdaptiveGroups(filter: {ruleIDs_has: "rule-id"}) { ...}WHERE has(ruleIDs, 'rule-id')以下のGraphQLの例は、複数の値を含むデータのみを返すように配列フィールドをフィルタリングする方法を示しています。SQLの同等のものが続きます。
mnmFlowDataAdaptiveGroups(filter: {ruleIDs_hasall: ["rule-id-1", "rule-id-2"]}) { ...}WHERE has(ruleIDs, 'rule-id-1') AND has(ruleIDs, 'rule-id-2')eyeballのrequestSourceフィルタを追加して、あなたのウェブサイトのエンドユーザーに関するリクエスト、データ転送、および訪問データのみを返します。これにより、Cloudflare製品(例:キャッシュパージ、ヘルスチェック、Workersのサブリクエスト)によるアクションは除外されます。
サブクエリは現在サポートされていません。この制限を回避するために、2つのGraphQLクエリを使用できます。