Cette page fait référence au paramètre
filters
qui fait partie d'une mesure.
filters
peut également être utilisé dans une table dérivée native, décrite sur la page de documentation sur les paramètresexplore_source
.
filters
peut également être utilisé dans un tableau de bord, comme décrit sur la page de documentation des paramètres du tableau de bord.
filters
peut également être utilisé dans un élément de tableau de bord. Un exemple représentatif de son utilisation est fourni sur la page de documentation des éléments des graphiques à colonnes.
Utilisation
measure: champ_nom {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
Hiérarchie
filters |
Types de champs possibles
MesurerAcceptation
Ensemble de noms de dimensions et d'expressions de filtre Looker correspondantes |
Définition
filters
est une liste facultative d'expressions de filtre appliquées à un calcul de mesure. Elle ne fonctionne qu'avec les types de mesures suivants qui effectuent une agrégation:
type: count
type: count_distinct
type: sum
type: average
La syntaxe des filtres est la suivante:
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
Reportez-vous à la notation du filtre Looker pour savoir comment écrire des expressions de filtre valides. Placez l'expression de filtre complète entre guillemets, comme illustré dans les exemples suivants.
Vous pouvez également utiliser filters
avec des paramètres Liquid et des filtres modélisés pour créer des mesures filtrées dynamiques avec une valeur de filtre qui peut changer de manière dynamique en fonction de l'entrée utilisateur dans un tableau de bord ou un style. Cette approche permet aux utilisateurs de sélectionner des valeurs de filtre qui ne s'appliquent qu'à une mesure spécifique, sans filtrer l'intégralité de la requête dans une clause WHERE
globale. Pour en savoir plus, consultez la section Créer une mesure filtrée dynamique plus loin sur cette page.
Examples
Il existe de nombreuses façons d'utiliser filters
pour les mesures. Les exemples ci-dessous présentent quelques solutions pour les cas d'utilisation courants:
- Filtrer sur plusieurs champs
- Filtrer sur une dimension
yesno
- Ajouter plusieurs valeurs de filtre
- Ajouter des conditions de filtre numérique
- Utiliser la syntaxe de filtre avancé
- Créer une mesure filtrée dynamique
Filtrer sur plusieurs champs
Dans cet exemple, la mesure comptabilisera des ID distincts qui ont été créés au cours des sept derniers jours et qui ne provenaient pas d'utilisateurs dont les comptes ont été désactivés. Cet exemple montre également comment ajouter plusieurs filtres à un champ. Chaque expression de filtre nécessite son propre paramètre filters
complet:
measure: this_week_count {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.status: "-disabled"]
# Reference fields from other joined views with view_name.field_name syntax
# Minus sign means "not" in this case, but check notation docs for details
}
Filtrer selon une dimension yesno
Prenons un autre exemple : les données incluent une ligne par employé (employé ou sous-traitant). Le champ is_contractor
, de type yesno
, contient yes
si l'utilisateur est un prestataire. Cette mesure ne comptabilise que les lignes concernant les sous-traitants:
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
Ajouter plusieurs valeurs de filtre
Dans cet exemple, l'expression filters
contient plusieurs valeurs. La mesure comptabilisera toutes les lignes correspondant à l'une des quatre valeurs du champ state
:
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
Ajouter des conditions de filtre numérique
Dans cet exemple, une valeur numérique est attribuée au filtre. La mesure n'ajoute que les commandes dont la valeur price
est supérieure à 100:
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Utiliser la syntaxe de filtre avancé
Dans cet exemple, une plage de valeurs numériques est appliquée au filtre. Elle mesure le nombre total de commandes passées par des clients appartenant à la tranche d'âge 18-25 ans:
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Créer une mesure filtrée dynamique
Dans cet exemple, un filtre permet à un utilisateur d'afficher le nombre de commandes, filtrées selon l'état qu'il choisit, sur un filtre "Look" ou "Dashboard" :
Commencez par créer un champ de filtre uniquement qui permet à l'utilisateur de sélectionner une valeur:
filter: status_filter {
type: string
suggest_dimension: status
}
Ensuite, créez une dimension masquée qui utilise des filtres basés sur un modèle pour capturer la sélection d'utilisateurs du champ de filtrage précédent. Cette dimension renvoie yes lorsqu'une valeur est sélectionnée dans le champ de filtre:
dimension: status_satisfies_filter {
type: yesno
hidden: yes
sql: {% condition status_filter %} ${status} {% endcondition %} ;;
}
Enfin, créez une mesure qui filtre sur la dimension type: yesno
:
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
Si un utilisateur choisit de ne pas sélectionner de valeur pour le champ de filtre uniquement, le code SQL sera défini par défaut sur 1=1, ce qui n'aura aucune incidence sur les valeurs des mesures.
Difficultés courantes
N'utilisez pas filters
avec des mesures de type: number
.
De nombreux utilisateurs tentent d'utiliser filters
avec des mesures de type: number
, ce qui ne fonctionne pas:
# Will NOT work
measure: total_food_profit {
type: number
sql: ${total_revenue} - ${total_cost} ;;
filters: [segment: "food"]
}
measure: total_revenue {
type: sum
sql: ${revenue} ;;
}
measure: total_cost {
type: sum
sql: ${cost} ;;
}
À la place, appliquez un paramètre filters
à l'une des mesures individuelles qui composent la mesure de type: number
, comme suit:
# Will work
measure: total_food_profit {
type: number
sql: ${total_food_revenue} - ${total_food_cost} ;;
}
measure: total_food_revenue {
type: sum
sql: ${revenue} ;;
filters: [segment: "food"]
}
measure: total_food_cost {
type: sum
sql: ${cost} ;;
filters: [segment: "food"]
}