← Analytics / analytics / graphql-api / features
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ů:
- zóny
- účty
- tabulky (datasety)
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, filtersOperá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.