En règle générale dans SQL (et, par extension, Looker), vous ne pouvez pas regrouper une requête par les résultats d'une fonction d'agrégation (représentées dans Looker par des mesures). Vous ne pouvez regrouper les données que par champs non agrégés (représentés dans Looker sous forme de dimensions). Si vous essayez d'agréger une mesure dans Looker, vous verrez ce qui suit : error:
Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.
Que faire si vous avez besoin de transformer une mesure (COUNT, SUM, AVG, MAX, etc.) en dimension afin de pouvoir la regrouper pour l'agréger (par exemple, une somme de COUNT ou une moyenne de SUM), la filtrer (dans la clause WHERE plutôt que dans une clause HAVING) ou l'pivoter dans une exploration ?
Utiliser des tables dérivées pour dimensionner une mesure
En interne, chez Looker, la solution est appelée dimensionnalisation d'une mesure. Ce est que vous redéfinissez une mesure en tant que dimension. Pour ce faire, créez une table dérivée qui inclut 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 Revenu total type: sum
existante.
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), plutôt qu'une table dérivée SQL.
- Commencez par configurer une requête d'exploration. Choisissez les champs appropriés, y compris la mesure que vous souhaitez dimensionner. Dans l'exemple d'utilisation, le tableau Données de l'exploration présente le revenu total regroupé par État des utilisateurs et ID des utilisateurs :
- Sélectionnez Ouvrir dans l'exécuteur SQL dans l'onglet SQL du tableau Données pour ouvrir la requête dans SQL Runner :
-
Après avoir exécuté la requête dans SQL Runner (en cliquant sur le bouton Run) et confirmé les résultats,
Sélectionnez l'option Add to Project (Ajouter au projet) dans le menu Outils SQL Runner pour ouvrir la fenêtre pop-up Add to Project (Ajouter au projet). À ce stade, vous devez supprimer toute clause de limite de lignes dans
SQL de table pour garantir 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.
- Dans le pop-up Ajouter au projet, sélectionnez un nom de projet dans la liste déroulante Projet. Saisissez un nom pour votre fichier de vue Tableau dérivée, puis sélectionnez Ajouter.
-
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 du 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 }
- Vérifiez qu'un clé primaire est définie dans la table dérivée.
- Rejoindre la nouvelle vue dans l'exploration d'origine (ou créer une exploration) pour pouvoir créer des requêtes et du contenu avec les nouveaux champs.
Conclusion
La dimensionnalisation des mesures à l'aide de tables dérivées Looker ouvre de nouvelles fonctionnalités et vous permet d'obtenir des insights supplémentaires à partir de vos données. Vous pouvez regrouper par une mesure dimensionnalisée, la filtrer dans une clause WHERE (au lieu de HAVING), la pivoter et créer d'autres dimensions en fonction d'elle. Vous pouvez ainsi passer à la dimension suivante pour vos requêtes et votre contenu d'exploration.
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, ainsi que pour connaître les points à prendre en compte et obtenir des conseils pour optimiser les performances.