filtre

Utilisation

view: view_name {
  filter: filter_name { ... }
}
Hiérarchie
filter
Valeur par défaut
Aucun

Acceptation
Identifiant Looker pour nommer le filtre

Règles spéciales
Les noms de filtres ne peuvent pas être partagés avec d'autres filtres, dimension, ou measure dans la même view

Définition

Le paramètre filter déclare un champ de filtre uniquement et un nom pour ce filtre. Un utilisateur peut ajouter des champs de filtre uniquement en tant que filtres lors de l'exploration, mais il ne peut pas les ajouter à son ensemble de résultats. Ces champs de filtre uniquement sont utiles grâce aux filtres basés sur des modèles, qui constituent un sujet LookML avancé. Vous pouvez également consulter l'exemple Utiliser filter pour filtrer par un champ masqué.

Le nom du filtre doit :

  • être unique dans une vue donnée ;
  • être composé des caractères a à z (sans majuscules), 0 à 9 ou _ ;
  • commencer par une lettre.

Il existe de nombreux types de champs de filtre, comme indiqué sur la page de documentation Types de dimensions, de filtres et de paramètres.

Sous-paramètres pour filter

Consultez la page de référence Paramètres de champ pour obtenir la liste des sous-paramètres disponibles pour les champs LookML.

Exemples

Voici quelques exemples d'utilisation du paramètre filter.

Créer un filtre spécifié par l'utilisateur

Créez un filtre qui permet à l'utilisateur de spécifier la order_region :

filter: order_region {
  type: string
}

Définir une table dérivée dynamique avec un filtre basé sur un modèle

Comme indiqué sur la page de documentation Filtres basés sur des modèles et paramètres Liquid, définissez une table dérivée pour calculer les dépenses à vie des clients d'une région spécifiée par l'utilisateur. Cet exemple utilise le filter créé dans l'exemple précédent dans le cadre d'un filtre basé sur un modèle. L'entrée filter est utilisée dans la clause WHERE avec des variables Liquid :

view: customer_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        SUM(sale_price) AS lifetime_spend
      FROM
        order
      WHERE
        {% condition order_region %} order.region {% endcondition %}
      GROUP BY 1
    ;;
  }

  filter: order_region {
    type: string
  }
}

Utiliser le paramètre sql avec filter

Vous pouvez également utiliser le sql paramètre avec filter, qui s'applique à la clause SQL WHERE chaque fois que le filtre a une valeur. Cela permet d'obtenir une clause WHERE dynamique, basée sur l'entrée de filtre de l'utilisateur.

L'exemple suivant crée un filtre qui n'autorise que les noms d'utilisateur qui existent dans l'ensemble de données :

filter: user_enabled {
  type: string
  suggest_dimension: user_name
  sql: EXISTS (SELECT user_id FROM users WHERE {% condition %} user_name {% endcondition %} and state = 'enabled') ;;
}

Dans l'exemple précédent, si la liste complète des noms d'utilisateur dans l'ensemble de données est "Zach", "Erin" et "Brett", le filtre génère la clause WHERE suivante :

WHERE EXISTS (SELECT user_id FROM users WHERE user_name in ('Zach', 'Erin', 'Brett') and state = 'enabled')

Consultez la section Utiliser filter pour filtrer par un champ masqué sur cette page pour obtenir un exemple d'utilisation du paramètre sql avec filter.

Utiliser filter pour définir une table dérivée dynamique et un filtre défini par l'utilisateur

En utilisant l'exemple précédent qui définit une table dérivée avec une valeur de région dynamique, vous pouvez utiliser le sql paramètre avec un filtre basé sur un modèle pour créer dynamiquement une clause WHERE qui s'applique à la fois à la table dérivée et à la requête principale générée par Looker :

view: customer_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        SUM(sale_price) AS lifetime_spend
      FROM
        order
      WHERE
        {% condition order_region %} order.region {% endcondition %}
      GROUP BY 1
    ;;
  }
  filter: order_region {
    type: string
    sql: {% condition order_region %} ${region} {% endcondition %} ;;
  }
  dimension: region {
    type: string
    sql: ${TABLE}.region ;;
  }

Dans l'exemple précédent, l'utilisateur fournit une entrée au filtre order_region, qui à son tour fournit la valeur à la dimension region. La dimension region fournit ensuite la valeur de la clause WHERE dans le SQL de la table dérivée et, en raison du paramètre sql dans la définition filter, la valeur de la clause WHERE dans une requête générée par Looker.

Utiliser filter pour filtrer par un champ masqué

Vous pouvez utiliser filter pour créer une dimension sur laquelle les utilisateurs peuvent filtrer, tout en les empêchant de sélectionner la dimension dans une requête.

  1. Commencez par masquer la dimension en question à l'aide de hidden: yes. Cela signifie que la dimension ne sera pas disponible pour les utilisateurs dans un sélecteur de champs Explorer.

      dimension: field_to_hide {
        type: string
        hidden: yes
        sql: ${TABLE}.field_to_hide ;;
      }
    
  2. Créez ensuite un champ filter à lier à la dimension field_to_hide.

    filter: filter_on_field_to_hide {
      type: string
      sql: {% condition filter_on_field_to_hide %} ${field_to_hide} {% endcondition %} ;;
    }
    

Comme indiqué dans l'exemple Utiliser le paramètre sql avec filter, le paramètre sql du champ filter applique directement le SQL à la clause WHERE de la requête. Dans ce cas, le sql prend la condition de filtre spécifiée dans le filtre filter_on_field_to_hide et l'applique à la dimension ${field_to_hide}.

De cette façon, les utilisateurs peuvent filtrer une requête par field_to_hide avec le filtre filter_on_field_to_hide, tandis que la dimension field_to_hide reste masquée.