Cómo dimensionalizar una medición en Looker

Como regla general en SQL y, por extensión, Looker, no puedes agrupar una consulta por los resultados de una función de agregación (representadas en Looker como medidas). Solo puedes agrupar por campos no agregados (representados en Looker como dimensiones). Si intentas agregar una medición en Looker, verás lo siguiente: error:

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

¿Qué sucede si necesitas una forma de cambiar una medición (COUNT, SUM, AVG, MAX, etc.) a una dimensión, de modo que puedas agruparla por ella para agregarla (como una SUMA de un COUNT o un AVG de una SUMA), filtrar por ella (en la cláusula WHERE en lugar de una HAVING) o orientarla en una exploración?

Usar tablas derivadas para dimensionalizar una medición

De forma interna, en Looker, la solución se denomina dimensionalizar una medida. Esta es porque redefines una medición 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 medida type: average que se base en una medida existente de Ingresos totales type: sum.

En los siguientes pasos, se describe cómo generar una tabla derivada basada en SQL. Puedes optar por crear una tabla derivada basada en LookML, también conocida como tabla derivada nativa (NDT), como alternativa a SQL.
  1. Comienza por configurar una consulta de Explorar. Elige los campos adecuados, incluida la medida que quieres dimensionalizar.

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

  2. Selecciona Open in SQL Runner. 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 (haciendo clic en el botón Ejecutar) y confirmar los resultados, elige la opción Add to Project del menú de ajustes de SQL Runner para abrir la ventana emergente Add to Project. En este punto, debes quitar cualquier cláusula de límite de filas de la y una tabla SQL para garantizar que todos los resultados deseados se incluyan en la consulta.

    También puedes elegir Obtener LookML de tabla derivada en el menú para copiar y pegar el código de LookML generado en tu proyecto de forma manual.
  4. En la ventana emergente Add to Project, selecciona el nombre de un proyecto en el menú desplegable Project. ingresa un nombre para tu archivo de vista de tabla derivada y selecciona Agregar.
  5. Ahora que la tabla derivada está en un archivo de vista, puedes crear una medición que agrega la medida dimensionalizada. Por ejemplo, puedes crear Una medida de 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 comprobar que un clave primaria se define en la tabla derivada.
  7. Unirse la vista nueva en la función Explorar original (o crear una nueva) para poder crear y contenido con los campos nuevos.

Conclusión

La dimensionalización de las mediciones con las tablas derivadas de Looker desbloquea nuevas capacidades y te permiten obtener más estadísticas con tus datos. Con la capacidad para agrupar por una medida dimensionalizada, filtrar por ella en una cláusula WHERE (en lugar de HAVING), recurrir a ella y crear otras dimensiones en función de ella, puedes llevar tus búsquedas y contenido de Explorar 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, además de consideraciones y sugerencias para optimizar el rendimiento.