filtres (pour les champs)

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, comme décrit sur la page de documentation du paramètre explore_source.

filters peut également être utilisé dans un tableau de bord, comme décrit sur la page de documentation 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 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: 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", ...]

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"]
}