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 medida (COUNT, SUM, AVG, MAX, etcétera) en una dimensión para poder agruparla y agregarla (como una SUM de un COUNT o un AVG de una SUM), filtrarla (en la cláusula WHERE en lugar de una cláusula HAVING) o realizar un giro en ella en una exploración?

Usar tablas derivadas para dimensionalizar una medición

Internamente, en Looker, la solución se llama dimensionalización de una medida. Esto se debe a que redefines una medida como una dimensión. Esta se logra creando una tabla derivada que incluya la medida que quieres dimensionalizar en su SQL definición.

El proceso

El siguiente ejemplo se basa en un conjunto de datos de comercio electrónico de muestra. El objetivo de este ejemplo es para crear una medida de type: average basada 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 crear una tabla derivada basada en LookML, también conocida como tabla derivada nativa (NDT), como alternativa a SQL.
  1. Para comenzar, configura una búsqueda de Explorar. Elige los campos adecuados, incluida la medida que deseas 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 manualmente el LookML generado en tu proyecto.
  4. En la ventana emergente Add to Project, selecciona un nombre de proyecto en el 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 medida que agregue la medida dimensionalizada. Por ejemplo, ahora puedes crear una medida type: average para la nueva dimensión 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. Verifica que se defina una clave primaria en la tabla derivada.
  7. Unirse la nueva vista 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 de agrupar por una medida dimensionalizada, filtrar por ella en una cláusula WHERE (en lugar de HAVING), crear otras dimensiones en función de ella y hacer pivotes, puedes llevar tus consultas y contenido de Explorar a la siguiente dimensión.

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