Créer des expressions Looker

Expressions Looker

Les expressions Looker (parfois appelées Lexp) servent à effectuer des calculs dans les contextes suivants :

Une expression Looker est créée à partir d'une combinaison de ces éléments :

  • NULL: : la valeur NULL indique qu'il n'y a pas de données. Elle peut être utile lorsque vous souhaitez vérifier qu'un élément est vide ou n'existe pas.

  • Une constante : une constante est une valeur immuable que vous fournissez. Un nombre tel que 7 ou une chaîne telle que Completed sont des constantes.

  • Un champ Looker : une référence à un champ Looker, qui inclut des dimensions, des mesures et des calculs de table.

  • Un opérateur Looker : il existe plusieurs types d'opérateurs (qui sont listés sur la page de documentation sur les fonctions et opérateurs Looker) :

    • Opérateurs mathématiques (tels que +, -, *, et /)
    • Opérateurs de comparaison (tels que =, >, et <=)
    • Opérateurs logiques (tels que AND, OR et NOT)
  • Une fonction Looker : elles sont de nature similaire aux fonctions Excel. Les fonctions vous permettent de transformer vos données ou de faire référence à des données de manière complexe. Toutes les fonctions disponibles sont listées sur la page de documentation sur les fonctions et opérateurs Looker.

Créer des expressions Looker

Les calculs de table, les champs personnalisés et les filtres personnalisés utilisent l'éditeur d'expressions Looker. Lorsque vous saisissez votre expression, Looker vous invite à utiliser des fonctions, des opérateurs et des noms de champs que vous pourriez vouloir utiliser.

Afficher toutes les suggestions

Accédez à l'éditeur d'expressions Looker dans une exploration en créant un calcul de table, un champ personnalisé ou un filtre personnalisé.

Saisissez un espace pour afficher la liste de tous les champs, fonctions et opérateurs parmi lesquels vous pouvez choisir. Si un champ est actuellement sélectionné dans l'exploration, Looker affiche un point noir à gauche du champ et l'affiche en haut de la liste.

Commencez à saisir du texte dans l'éditeur d'expressions Looker pour réduire la liste aux éléments qui vous intéressent.

L'éditeur de champs personnalisés affiche les champs d'exploration actuellement utilisés, s'ils sont compatibles avec la fonction du champ personnalisé.

Ajouter un champ

Pour inclure un champ Looker dans votre expression, commencez à saisir le nom du champ. Au fur et à mesure de votre saisie, l'éditeur réduit votre recherche à une liste de champs et de fonctions contenant ce que vous avez saisi. Vous pouvez saisir le nom du champ tel qu'il apparaît sur la page "Exploration" ou utiliser son nom LookML si vous le connaissez.

Lorsque vous sélectionnez un champ dans la liste, Looker l'ajoute à votre expression en utilisant le nom LookML au format ${view_name.field_name}. Cela garantit que tous vos champs ont des noms uniques dans votre expression.

Ajouter des totaux

Si vous créez une expression basée sur une exploration dans laquelle vous avez affiché des totaux, vous pouvez également inclure des totaux de colonnes et de lignes dans votre expression. Les totaux des colonnes apparaissent dans l'éditeur avec le mot Total devant l'itération LookML du nom du champ. Par exemple, pour un champ nommé Count, Looker attribue au total de la colonne de ce champ le nom Count - Total.

Le nom LookML des totaux se présente sous la forme ${view_name.field_name:total}, où :total est ajouté à la fin du nom du champ.

Pour les totaux des lignes, les mots Totaux des lignes apparaissent devant le nom du champ dans l'éditeur. Dans le nom LookML du champ, :row_total est ajouté à la fin du nom du champ, comme ${view_name.field_name:row_total}.

Ajouter des opérateurs

Si nécessaire, vous pouvez ajouter des opérateurs logiques tels que AND, OR et NOT à votre expression. En règle générale, les opérateurs AND sont évalués avant les opérateurs OR, mais vous pouvez remplacer ce comportement en utilisant des parenthèses. Vous pouvez également utiliser des opérateurs de comparaison (tels que >, = et <=) et des opérateurs mathématiques (tels que + et *).

Lorsque vous placez le curseur sur un opérateur, des notes d'utilisation appropriée s'affichent dans le volet d'informations.

Ajouter des fonctions

Pour inclure une fonction Looker dans votre expression, commencez à saisir le nom de la fonction. Au fur et à mesure de votre saisie, l'éditeur réduit votre recherche à une liste de champs et de fonctions contenant ce que vous avez saisi.

Les fonctions peuvent être construites à partir d'arguments (ou de variables) qui nécessitent un certain type, tel qu'un champ, un nombre ou un oui/non. Lorsque vous placez le curseur sur une fonction, vous pouvez consulter les notes qui s'affichent à côté de votre expression dans le volet d'informations pour comprendre les arguments que vous devez fournir et leur type.

Vous pouvez consulter la liste complète des fonctions proposées par Looker sur la page de documentation sur les fonctions et opérateurs Looker.

Utiliser les conseils d'erreur et le volet d'informations

Looker affiche un volet d'informations à côté de l'éditeur d'expressions Looker. Ce volet fournit de la documentation et des suggestions, en particulier si votre expression comporte une erreur.

Le volet d'informations situé à côté de l'éditeur d'expressions fournit les informations suivantes :

  • Mise en évidence des erreurs : Looker souligne en rouge toutes les parties de l'expression qui ne sont pas encore correctes.

  • Suggestions et détails de l'erreur : Looker vous suggère ce que vous pouvez ajouter ensuite dans votre expression. En cas d'erreur, il explique pourquoi elle se produit. S'il y a plusieurs erreurs, celle qui s'affiche dépend de l'emplacement de votre curseur.

  • Documentation : Looker affiche la documentation sur la fonction ou l'opérateur que vous utilisez, en fonction de la position de votre curseur. Par exemple, lorsque vous saisissez le premier argument d'une fonction if(), Looker indique que le premier argument doit être évalué comme vrai ou faux. Vous pouvez cliquer sur le nom de la fonction pour accéder à sa documentation.

Inclure des commentaires

Vous pouvez inclure des commentaires dans les expressions Looker en commençant la ligne de commentaire par # dans l'éditeur d'expressions.

Utiliser des champs

Parfois, vous souhaiterez utiliser la valeur d'un champ (une dimension, une mesure ou un calcul de table) dans une expression. Vous pouvez ajouter la valeur du champ à un autre élément, vérifier qu'il a une certaine valeur, l'inclure dans une fonction ou de nombreuses autres possibilités.

Comme décrit précédemment sur cette page, vous pouvez saisir le nom du champ dans l'éditeur d'expressions, et Looker vous aidera à trouver la bonne façon de faire référence au champ. Lorsque vous ajoutez un champ à une expression, Looker utilise l'identifiant LookML du champ, qui se présente sous la forme ${view_name.field_name}. Saisissez le nom du champ tel qu'il apparaît dans le sélecteur de champs. L'éditeur d'expressions affiche alors le nom du sélecteur de champs et l'identifiant LookML.

Il existe plusieurs façons de récupérer une valeur :

  • Obtenir une valeur à partir de la même ligne : la façon la plus élémentaire d'utiliser un champ consiste à y faire référence directement. Par exemple, votre expression peut utiliser ${product.category}. Dans ce cas, vous indiquez "pour une ligne donnée, récupérez la catégorie de produit de cette ligne".

  • Obtenir une valeur à partir d'une autre ligne : vous pouvez également obtenir la valeur d'un champ à partir d'une autre ligne. Par exemple, vous pouvez vouloir la logique "pour une ligne donnée, récupérez la catégorie de produit de la ligne précédente". Pour ce faire, vous pouvez utiliser une fonction de décalage (consultez cette liste de fonctions positionnelles). La fonction de décalage peut se présenter comme suit : offset(${product.category}, -1).

  • Obtenir une valeur à partir d'une colonne croisée : vous pouvez également obtenir des valeurs à partir de colonnes croisées. Par exemple, vous pouvez vouloir la logique "pour une ligne donnée, récupérez le total des ventes de la première colonne croisée". Pour utiliser des colonnes croisées, vous devez utiliser des fonctions croisées (consultez cette liste de fonctions croisées). La fonction croisée peut se présenter comme suit : pivot_index(${order.total_sales}, 1).

  • Obtenir un total à partir d'une ligne ou d'une colonne : si vous avez ajouté des totaux à votre exploration, vous pouvez obtenir les valeurs totales de la colonne ou de la ligne en ajoutant :total (pour les totaux des colonnes) ou :row_total (pour les totaux des lignes) au nom du champ, au format ${field_name:total}. Par exemple, si vous souhaitez obtenir un pourcentage du total d'un nombre de commandes, vous pouvez créer un calcul de table comme celui-ci : ${orders.count} / ${orders.count:total}.

Utiliser des opérateurs

Les expressions Looker peuvent inclure des opérateurs logiques, de comparaison et mathématiques pour créer différentes conditions :

  • Opérateurs logiques (tels que AND, OR et NOT)
  • Opérateurs de comparaison (tels que > et <)
  • Opérateurs mathématiques (tels que + et -)

Sauf indication contraire avec des parenthèses, la logique AND est prise en compte avant la logique OR. L'expression suivante sans parenthèses supplémentaires :

if (
  ${order_items.days_to_process}>=4 OR
  ${order_items.shipping_time}>5 AND
  ${order_facts.is_first_purchase},
"review", "okay")

est évaluée comme suit :

if (
  ${order_items.days_to_process}>=4 OR
  (${order_items.shipping_time}>5 AND ${order_facts.is_first_purchase}),
"review", "okay")

Dans Looker, vous devez utiliser yes et no au lieu de true et false. Ces constantes logiques ne sont pas la même chose que les mots "yes" et "no", qui sont entre guillemets. Pour en savoir plus, consultez la description des constantes logiques.

Utiliser des fonctions

Les expressions Looker incluent souvent une ou plusieurs fonctions, qui vous aident à récupérer certaines données ou à calculer certaines choses. Elles sont de nature similaire aux fonctions Excel.

Les fonctions se présentent sous la forme d'un nom suivi de deux parenthèses, comme ceci : my_function(). Vous devrez peut-être fournir des informations entre ces parenthèses, séparées par des virgules. Ces informations sont appelées "arguments" et se présentent comme suit : my_function(argument_1, argument_2).

Par exemple, la fonction now ne prend aucun argument et vous donne la date et l'heure actuelles. Vous l'utilisez comme ceci : now().

La round fonction prend un argument, qui est un nombre. Vous l'utilisez comme ceci : round(3.2). Le résultat est 3.

Il existe deux façons de savoir quels arguments vous devrez fournir, le cas échéant :

  • Le volet d'informations qui s'affiche à côté de l'éditeur d'expressions fournit de la documentation sur la fonction que vous écrivez. Vous pouvez cliquer sur le nom de la fonction pour accéder à sa documentation.
  • Vous pouvez également accéder directement à la page de documentation sur les fonctions et opérateurs Looker et rechercher la fonction que vous souhaitez utiliser.

Prenons l'exemple de la fonction contains, dont la documentation se présente comme suit :

Fonction Syntaxe Objectif
contains contains(string, search_string) Renvoie Yes si string contient search_string, et No dans le cas contraire

Vous pouvez voir que deux arguments sont requis. Ils sont nommés string et search_string, mais cela ne signifie pas que vous devez saisir exactement les mots "string" et "search_string" dans la fonction. Il s'agit simplement de noms pour les arguments que vous remplacerez par quelque chose. En lisant l'objectif, nous voyons que string doit être un champ ou une autre valeur dans laquelle nous voulons effectuer une recherche dans, tandis que le search_string est l'élément que nous voulons rechercher pour. Voici un exemple :

contains(${customer.feedback_text}, "great")

Si le mot "great" apparaît dans les commentaires des clients, cette fonction renvoie Yes. Sinon, elle renvoie No.

Vous pouvez placer des fonctions à l'intérieur d'autres fonctions pour gérer une logique complexe. Tant que le résultat de la fonction interne est approprié pour les arguments de la fonction externe, cela fonctionnera. Exemple :

contains(
  if(
    is_null(${customer.feedback_text}),
    ${customer.comment_text},
    ${customer.feedback_text}
  ),
"great")

La is_null fonction est imbriquée dans une if fonction, elle-même imbriquée dans une contains fonction. Voici comment cela fonctionne :

  1. La fonction is_null() recherche le texte des commentaires des clients.
  2. Ensuite, la fonction if() utilise ce résultat et renvoie le texte des commentaires des clients, le cas échéant, ou le texte des commentaires des clients.
  3. Enfin, la fonction contains() utilise le texte renvoyé par la fonction if() et y recherche le mot "great".

Logiquement, cette expression signifie : "S'il y a des commentaires de clients, effectuez une recherche dans ceux-ci. Sinon, effectuez une recherche dans les commentaires des clients. Dans les deux cas, recherchez le mot "great"".