Cette page fait référence au paramètre
filtersqui fait partie d'une mesure.
filterspeut également être utilisé dans une table dérivée native, comme décrit sur la page de documentation du paramètreexplore_source.
filterspeut également être utilisé dans un tableau de bord, comme décrit sur la page de documentation Paramètres du tableau de bord.
filterspeut é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 de graphique à colonnes.
Utilisation
view: view_name {
measure: field_name {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
|
Hiérarchie
filters |
Types de champs possibles
Mesure
Acceptation
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: counttype: count_distincttype: sumtype: average
La syntaxe des filtres est la suivante :
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
Pour savoir comment écrire des expressions de filtre valides, consultez la notation des filtres de Looker. Placez l'intégralité de l'expression de filtre entre guillemets, comme indiqué dans les exemples suivants.
Vous pouvez également utiliser filters avec des paramètres Liquid et des filtres basés sur des modèles pour créer des mesures filtrées dynamiques avec une valeur de filtre qui peut changer de manière dynamique en fonction des saisies des utilisateurs dans un tableau de bord ou un Look. 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 référence, consultez la section Créer une mesure filtrée dynamique plus loin sur cette page.
Exemples
Il existe de nombreuses façons d'utiliser filters pour les mesures. Les exemples suivants présentent quelques solutions pour des cas d'utilisation courants.
Filtrer sur plusieurs champs
Dans cet exemple, la mesure comptabilisera les ID distincts créés au cours des sept derniers jours et qui n'appartiennent pas à des utilisateurs dont le compte est désactivé. 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 une dimension yesno
Prenons un autre exemple : des données qui incluent une ligne par personne, qu'il s'agisse d'un employé régulier ou d'un sous-traitant. Le champ is_contractor est de type yesno et contient yes si la personne est un sous-traitant. Cette mesure ne comptabilise que les lignes pour les sous-traitants :
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
Ajouter plusieurs valeurs de filtre
Dans l'exemple suivant, 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"]
}
Filtrer les valeurs NULL
Dans cet exemple, la mesure comptabilise les ID distincts créés au cours des sept derniers jours et inclut une valeur dans le champ user.email_address qui n'est pas NULL :
measure: this_week_count_with_email {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.email_address: "-NULL"]
}
Étant donné que le champ user.email_address est de type string, la syntaxe "-NULL" est utilisée. Pour en savoir plus, consultez la page de documentation Expressions de filtre Looker.
Ajouter des conditions de filtre numériques
Dans cet exemple, une valeur numérique est attribuée au filtre. La mesure n'ajoutera que les commandes dont le price est supérieur à 100 :
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Utiliser AND pour combiner des conditions
Dans cet exemple, la mesure utilise une expression de filtre avec l'opérateur AND pour calculer le nombre total de commandes des clients âgés de 18 à 25 ans :
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Utiliser des virgules pour combiner des conditions
Dans cet exemple, la mesure utilise une expression de filtre avec l'opérateur , pour calculer le nombre total de commandes des clients de moins de 25 ans ou de plus de 65 ans :
measure: sales_less_25_or_greater_65 {
type: sum
filters: [customers.age: "<25, >65"]
sql: ${orders.price} ;;
}
Créer une mesure filtrée dynamique
Dans cet exemple, un filtre permet à un utilisateur de voir le nombre de commandes (filtrées par l'état qu'il choisit) dans un filtre Look ou de tableau de bord :
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
}
Créez ensuite une dimension cachée qui utilise des filtres basés sur des modèles pour capturer la sélection de l'utilisateur à partir du champ réservé au filtrage précédent. Cette dimension renvoie oui chaque fois qu'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 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 réservé au filtrage, le code SQL sera défini par défaut sur 1=1, ce qui n'aura aucune incidence sur les valeurs de mesure.
Difficultés courantes
N'utilisez pas filters avec les mesures de type: number
De nombreux utilisateurs essaient 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} ;;
}
Appliquez plutôt un paramètre filters à l'une des mesures individuelles qui composent la mesure 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"]
}