Cómo dimensionar una medida en Looker

Como regla general en SQL, y, por extensión, Looker, no puedes agrupar una consulta según los resultados de una función agregada (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é pasa si necesitas una forma de cambiar una medida (COUNT, SUM, AVG, MAX, etc.) a una dimensión para que puedas agruparla por ella y agregarla (como una SUM de una COUNT o un AVG de una SUM), filtrar por ella (en la cláusula WHERE en lugar de una cláusula HAVING) o pivot en ella en una exploración?

Cómo usar tablas derivadas para dimensionar una medida

Internamente, en Looker, la solución se denomina dimensionar una medida. Esto se debe a que vuelves a definir una medida como una dimensión. Para ello, se crea una tabla derivada que incluye la medida que deseas 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 medición type: average basada en una medición existente de Ingresos totales type: sum.

En los siguientes pasos, se describe cómo generar una tabla derivada basada en SQL. Como alternativa a SQL, puedes optar por crear una tabla derivada basada en LookML, también conocida como tabla derivada nativa (NDT).
  1. Para comenzar, configura una consulta de exploración. Elige los campos adecuados, incluida la medida que deseas dimensionar.

    En el caso de uso de ejemplo, la tabla Explorar Datos presenta los Ingresos totales agrupados por Estado de los usuarios e ID de usuario:

  2. Elige Abrir en el ejecutor de SQL en la pestaña SQL de la tabla Datos para abrir la consulta en el Ejecutor de SQL:

  3. Después de ejecutar la consulta en el Ejecutor de SQL (si haces clic en el botón Ejecutar) y confirmar los resultados, elige la opción Agregar al proyecto del menú de ajustes del ejecutor de SQL para abrir la ventana emergente Agregar al proyecto. En este punto, debes quitar cualquier cláusula de límite de filas en el SQL de la tabla derivada para asegurarte de que se incluyan todos los resultados deseados en la consulta.

    También puedes elegir Get Derived Table LookML en el menú para copiar y pegar el LookML generado en tu proyecto de forma manual.
  4. En la ventana emergente Add to Project, selecciona un nombre de proyecto del menú desplegable Project, ingresa un nombre para el archivo de vista de tabla derivada y selecciona Add.
  5. Ahora que la tabla derivada está en un archivo de vista, puedes crear una medición que agregue la medida dimensional. Por ejemplo, ahora puedes 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
          }
        
  6. Vuelve a verificar que esté definida una clave primaria en la tabla derivada.
  7. Únete a la vista nueva a la exploración original (o crea una nueva) para poder crear consultas y contenido con los campos nuevos.

Conclusión

La dimensión de las medidas con las tablas derivadas de Looker desbloquea nuevas capacidades y permite obtener más estadísticas con tus datos. Gracias a la capacidad de agrupar por una medida dimensional, filtrar por ella en una cláusula WHERE (en lugar de HAVING), dinamizarla y crear otras dimensiones basadas en ella, puedes llevar tus consultas de Explorar y su contenido a la siguiente dimensión.

Visita la página de documentación Tablas derivadas para obtener más información sobre cómo crear y usar tablas derivadas, junto con consideraciones y sugerencias de optimización del rendimiento.