Como regla general en SQL (y, por extensión, en Looker), no puedes agrupar una consulta por los resultados de una función de agregación (representada en Looker como medidas). Solo puedes agrupar por campos no agregados (representados en Looker como dimensiones). Si intentas agregar una medida en Looker, verás el siguiente error:
Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.
¿Qué ocurre si necesitas cambiar una medida (COUNT, SUM, AVG, MAX, etc.) a una dimensión para poder agruparla y agregarla (como una SUM de un COUNT o una AVG de una SUM), filtrarla (en la cláusula WHERE en lugar de en una cláusula HAVING) o crear una tabla dinámica a partir de ella en una Exploración?
Usar tablas derivadas para dimensionar una medida
En Looker, la solución se denomina dimensionalizar una medida. Esto se debe a que redefine una medida como una dimensión. Para ello, se crea una tabla derivada que incluye la medida que quieres dimensionar en su definición de SQL.
El proceso
El siguiente ejemplo se basa en un conjunto de datos de comercio electrónico de muestra. El objetivo de este ejemplo es crear una medida type: average
basada en la medida Total de ingresos type: sum
.
En los pasos siguientes se explica cómo generar una tabla derivada basada en SQL. Puede crear una tabla derivada basada en LookML, también conocida como tabla derivada nativa (NDT), como alternativa a SQL.
-
Empieza configurando una consulta Explorar.
Elige los campos adecuados, incluida la medida que quieras desglosar.
En el ejemplo de caso práctico, la tabla Datos de Exploración muestra los Ingresos totales agrupados por Estado de los usuarios y ID de usuario:
-
En la pestaña SQL de la tabla Datos, selecciona Abrir en SQL Runner
para abrir la consulta en SQL Runner:
-
Después de ejecutar la consulta en SQL Runner (haciendo clic en el botón Ejecutar) y confirmar los resultados, elige la opción Añadir a proyecto del menú de la rueda dentada de SQL Runner para abrir la ventana emergente Añadir a proyecto. En este punto, debe quitar cualquier cláusula de límite de filas en el SQL de la tabla derivada para asegurarse de que todos los resultados deseados se incluyan en la consulta.
También puedes seleccionar Obtener LookML de tabla derivada en el menú para copiar y pegar el LookML generado en tu proyecto manualmente.
- En la ventana emergente Añadir al proyecto, selecciona un nombre de proyecto en el menú desplegable Proyecto, introduce un nombre para el archivo de vista de tabla derivada y selecciona Añadir.
-
Ahora que la tabla derivada está en un archivo de vista, puede crear una medida
que agregue la medida dimensionalizada. Por ejemplo, ahora puede crear una medida
type: average
para la nueva dimensión de ingresos totales,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 }
- Comprueba que se haya definido una clave principal en la tabla derivada.
- Unirse a la nueva vista de la Exploración original (o crear una Exploración) para poder crear consultas y contenido con los nuevos campos.
Conclusión
Al dimensionalizar las medidas con las tablas derivadas de Looker, se desbloquean nuevas funciones y se puede obtener más información valiosa a partir de los datos. Gracias a la posibilidad de agrupar por una medida dimensionalizada, filtrar por ella en una cláusula WHERE (en lugar de HAVING), crear una tabla dinámica a partir de ella y crear otras dimensiones basadas en ella, puede llevar sus consultas y su contenido de Exploración a otro nivel.
Visite la página de documentación Tablas derivadas para obtener más información sobre cómo crear y usar tablas derivadas, así como consejos sobre consideraciones y optimización del rendimiento.