Comment dimensionner une mesure dans Looker

En règle générale, dans SQL (et, par extension, dans Looker), vous ne pouvez pas regrouper une requête en fonction des résultats d'une fonction d'agrégation (représentée dans Looker sous forme de mesures). Vous ne pouvez effectuer un regroupement que par champs non agrégés (représentés dans Looker par des dimensions). Si vous essayez d'agréger une mesure dans Looker, l'erreur suivante s'affiche:

Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.

Que se passe-t-il si vous avez besoin d'un moyen de transformer une mesure (COUNT, SUM, AVG, MAX, etc.) en dimension afin de pouvoir l'agréger en fonction de celle-ci pour l'agréger (comme SOMME d'un COUNT ou AVG d'une SOMME), filtrer par celle-ci (dans la clause WHERE au lieu d'une clause HAVING) ou utiliser un pivot dans une exploration ?

Utiliser des tables dérivées pour dimensionner une mesure

En interne, chez Looker, cette solution s'appelle la dimensionnalisation d'une mesure. En effet, vous redéfinissez une mesure en tant que dimension. Pour ce faire, créez une table dérivée incluant la mesure que vous souhaitez dimensionner dans sa définition SQL.

Procédure

L'exemple suivant est basé sur un exemple d'ensemble de données d'e-commerce. L'objectif de cet exemple est de créer une mesure type: average basée sur une mesure existante du Revenu total type: sum.

Les étapes suivantes expliquent comment générer une table dérivée basée sur SQL. Vous pouvez choisir de créer une table dérivée basée sur LookML, également appelée table dérivée native (NDT), comme alternative au langage SQL.
  1. Commencez par configurer une requête d'exploration. Sélectionnez les champs appropriés, y compris la mesure à laquelle vous voulez appliquer les dimensions.

    Dans cet exemple de cas d'utilisation, le tableau Explorer les données présente le chiffre d'affaires total, regroupé par État des utilisateurs et ID utilisateur:

  2. Choisissez Open in SQL Runner (Ouvrir dans l'exécuteur SQL) dans l'onglet SQL de la table Data (Données) pour ouvrir la requête dans l'exécuteur SQL:

  3. Après avoir exécuté la requête dans l'exécuteur SQL (en cliquant sur le bouton Exécuter) et confirmé les résultats, choisissez l'option Ajouter au projet dans le menu en forme de roue dentée de l'exécuteur SQL pour ouvrir le pop-up Ajouter au projet. À ce stade, vous devez supprimer toute clause de limite de lignes dans le code SQL de la table dérivée pour vous assurer que tous les résultats souhaités sont inclus dans la requête.

    Vous pouvez également sélectionner Get Derived Table LookML (Obtenir le code LookML de la table dérivée) dans le menu pour copier et coller manuellement le code LookML généré dans votre projet.
  4. Dans la fenêtre pop-up Ajouter au projet, sélectionnez un nom de projet dans la liste déroulante Projet, saisissez un nom pour le fichier de vue de votre table dérivée, puis sélectionnez Ajouter.
  5. Maintenant que la table dérivée se trouve dans un fichier de vue, vous pouvez créer une mesure qui agrège la mesure dimensionnée. Par exemple, vous pouvez maintenant créer une mesure type: average pour la nouvelle dimension "Revenu total", order_items_total_revenue:
          dimension: order_items_total_revenue {
            type:  number
            sql: ${TABLE}.order_items.total_revenue ;;
            value_format_name: usd
          }
    
          measure: average_revenue {
            type:  average
            sql:  ${order_items_total_revenue} ;;
            value_format_name: usd
          }
        
  6. Vérifiez qu'une clé primaire est définie dans la table dérivée.
  7. Rejoignez la nouvelle vue dans l'exploration d'origine (ou créez une exploration) pour pouvoir créer des requêtes et du contenu avec les nouveaux champs.

Conclusion

Le dimensionnement des mesures à l'aide de tables dérivées de Looker offre de nouvelles fonctionnalités et la possibilité de dégager des insights supplémentaires à partir de vos données. Vous pouvez regrouper par une mesure dimensionnelle, filtrer les données en fonction d'une clause WHERE (au lieu de HAVING), la faire pivoter et créer d'autres dimensions en fonction de celle-ci. Vous pouvez ainsi faire passer vos requêtes d'exploration et votre contenu à la dimension suivante.

Consultez la page de documentation Tables dérivées pour en savoir plus sur la création et l'utilisation de tables dérivées. Vous y trouverez également des informations à prendre en compte et des conseils d'optimisation des performances.