INTEGRITY Dokumentace

Filtrování

Filtry omezují dotazy například na konkrétní účet nebo množinu zón, na požadavky podle data nebo na požadavky od konkrétního user agenta. Bez filtrů může výkon dotazů klesat, výsledky mohou přesáhnout podporované limity a vrácená data mohou být zašuměná.

Struktura filtru

Filtr GraphQL představuje Vstupní objekt GraphQL ↗, který zpřístupňuje booleovskou algebru nad uzly.

Filtry můžete použít jako argument u následujících prostředků:

Filtr zóny

Umožňuje dotazovat se na data související se zónou podle ID zóny (zoneTag).

zones(filter: {zoneTag: "your Zone ID"}) {
    ...
}

Filtr zóny musí odpovídat následující gramatice:

filter
    { zoneTag: t }
    { zoneTag_gt: t }
    { zoneTag_in: [t, ...] }

Složené filtry (oddělené čárkami, AND, OR) nejsou podporovány.

Použijte zoneTag: t a zoneTag_in: [t, ...] tvary, pokud znáte ID zón. Použijte zoneTag_gt: t tvar s limity pro procházení všech zón, pokud nejsou ID zón známa. Zóny se vždy řadí alfanumericky.

Filtr vynechte, pokud chcete získat výsledky pro všechny zóny (až do podporovaného limitu).

Filtr účtu

Filtr účtu používá stejnou strukturu a pravidla jako filtr zóny, s tím rozdílem, že využívá ID účtu (accountTag) namísto ID zóny (zoneTag).

Při dotazu v rozsahu účtu musíte zadat filtr účtu, přičemž najednou nelze dotazovat více účtů.

Filtr tabulky (datové sady)

Filtry tabulky vyžadují, abyste dotazovali alespoň jeden uzel. Použijte AND operátor pro vytváření a kombinování filtrů napříč více uzly. Filtry tabulek také podporují OR operátor, který musíte zadat explicitně.

Následující gramatika popisuje filtr tabulky, kde k je uzel GraphQL, podle kterého se filtruje, a op je jedním z podporovaných operátorů pro tento uzel:

filter
  { kvs }
kvs
  kv
  kv, kvs
kv
  k: v
  k_op: v
  AND: [filters]
  OR: [filters]
filters
  filter
  filter, filters

Operátory

Podpora operátorů se liší podle typu a názvu uzlu.

Operátory polí

Pro všechny typy array jsou podporovány následující operátory:

Operátor Porovnání
has pole obsahuje hodnotu
hasall pole obsahuje všechny hodnoty ze seznamu
hasany pole obsahuje alespoň jednu hodnotu ze seznamu

Skalární operátory

Pro všechny skalární typy jsou podporovány následující operátory:

Operátor Porovnání
gt větší než
lt menší než
geq větší nebo rovno
leq menší nebo rovno
neq nerovná se
in v

Řetězcové operátory

like operátor je k dispozici pro porovnávání řetězců a podporuje % znak jako zástupný symbol.

Příklady

Obecný příklad

query GeneralExample($zoneTag: string, $start: Time) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			httpRequestsAdaptiveGroups(
				filter: { datetime_gt: $start, clientCountryName: "GB" }
				limit: 1
			) {
				count
			}
		}
	}
}

Filtrování podle konkrétního uzlu

Následující příklad GraphQL ukazuje, jak filtrovat konkrétní uzel. Následuje ekvivalentní zápis v SQL.

GraphQL

httpRequestsAdaptiveGroups(filter: {datetime: "2018-01-01T10:00:00Z"}) {
    ...
}

SQL

WHERE datetime="2018-01-01T10:00:00Z"

Filtrování podle více polí

Následující příklad GraphQL ukazuje, jak uplatnit filtr na více polí, v tomto případě na dvě pole typu datetime. Následuje ekvivalentní zápis v SQL.

GraphQL

httpRequests1hGroups(filter: {datetime_gt: "2018-01-01T10:00:00Z", datetime_lt: "2018-01-01T11:00:00Z"}) {
    ...
}

SQL

WHERE (datetime > "2018-01-01T10:00:00Z") AND (datetime < "2018-01-01T10:00:00Z")

Filtrovat pomocí OR operátor

Následující příklad GraphQL ukazuje použití OR operátor ve filtru. Tento OR operátor filtruje podle hodnoty US nebo GB v clientCountryName .

GraphQL

httpRequestsAdaptiveGroups(
        filter: {
          datetime: "2018-01-01T10:00:00Z",
          OR:[{clientCountryName: "US"}, {clientCountryName: "GB"}]) {
    ...
}

SQL

WHERE datetime="2018-01-01T10:00:00Z"
  AND ((clientCountryName = "US") OR (clientCountryName = "GB"))

Filtrování pole podle jedné hodnoty

Následující příklady GraphQL ukazují, jak filtrovat pole typu array tak, aby se vrátila pouze data, která obsahují konkrétní hodnotu. Následuje ekvivalentní zápis v SQL.

GraphQL

mnmFlowDataAdaptiveGroups(filter: {ruleIDs_has: "rule-id"}) {
    ...
}

SQL

WHERE has(ruleIDs, 'rule-id')

Filtrování pole podle více hodnot

Následující příklady GraphQL ukazují, jak filtrovat pole typu array tak, aby se vrátila pouze data, která obsahují několik hodnot. Následuje ekvivalentní zápis v SQL.

GraphQL

mnmFlowDataAdaptiveGroups(filter: {ruleIDs_hasall: ["rule-id-1", "rule-id-2"]}) {
    ...
}

SQL

WHERE has(ruleIDs, 'rule-id-1') AND has(ruleIDs, 'rule-id-2')

Filtrování koncových uživatelů

Přidejte requestSource filtr pro eyeball a vrátit tak data o požadavcích, přenosu dat a návštěvách pouze koncových uživatelů vašeho webu. Tím se vyloučí akce prováděné produkty Cloudflare (například vymazání cache, kontroly stavu, dílčí požadavky Workers) ve vaší zóně.

Poddotazy (pokročilé filtry)

Poddotazy v současnosti nejsou podporovány. Toto omezení můžete obejít použitím dvou dotazů GraphQL.