Agrupación en contenedores en Looker

Si tienes permiso para crear campos personalizados, puedes crear grupos personalizados específicos para dimensiones sin usar funciones lógicas en expresiones de Looker ni desarrollar lógica CASE WHEN en parámetros sql o campos type: case.
También puedes crear contenedores personalizados ad hoc para dimensiones de tipo numérico sin necesidad de usar funciones lógicas en expresiones de Looker ni de desarrollar campos type: tier de LookML si tienes permiso para crear campos personalizados.

La asignación a segmentos puede ser muy útil para crear dimensiones de agrupación personalizadas en Looker.

Hay tres formas de crear contenedores en Looker:

  1. Usar el tipo tier dimension
  2. Usar el parámetro case
  3. Usar una instrucción CASE WHEN de SQL en el parámetro SQL de un campo de LookML

Usar tier para crear segmentos

Para crear segmentos de números enteros, podemos definir el tipo dimension como tier:

dimension: users_lifetime_orders_tier {
  type: tier
  tiers: [0,1,2,5,10]
  sql: ${users_lifetime_orders} ;;
}

Puede usar el parámetro style para personalizar cómo aparecen sus niveles al explorar. Las cuatro opciones de style son las siguientes:

  1. classic
  2. integer
  3. interval
  4. relational

Por ejemplo:

dimension: age_tier {
  type: tier
  tiers: [0,10,20,30,40,50,60,70,80]
  style: integer
  sql: ${age} ;;
}

El parámetro style classic es el predeterminado y tiene el formato Tx[x,x], donde Tx indica el número de nivel y [x,x] indica el intervalo. La siguiente imagen es una tabla de datos de Exploración con la métrica Número de usuarios agrupada por Edad de los usuarios:

El nivel de edad de los usuarios disponible en la parte superior de la tabla de datos es T02[10,20], que indica que hay 808 usuarios de entre 10 y 20 años.

En la siguiente imagen se muestran ejemplos de las otras opciones del parámetro style:

  • interval: con el formato [x,x], que indica el valor más bajo y el más alto de un nivel
  • integer: con el formato x to x, que indica el valor más bajo y el más alto de un nivel
  • relational: con el formato >= x and <x, que indica que un valor es mayor o igual que el valor del nivel más bajo e inferior al valor del nivel más alto

Cuestiones que debes tener en cuenta

Si se usa tier junto con Relleno de dimensión, se pueden obtener contenedores de niveles inesperados.

Por ejemplo, una dimensión type: tier, Nivel de edad, mostrará los contenedores de niveles Menos de 0 y De 0 a 9 cuando se habilite el relleno de dimensiones, aunque los datos no incluyan valores de edad para esos contenedores:

Si la opción de relleno de dimensiones está inhabilitada en Nivel de edad, los contenedores reflejarán con mayor precisión los valores de edad disponibles en los datos, empezando por el contenedor De 10 a 19:

Para habilitar o inhabilitar el relleno de dimensiones, coloque el cursor sobre el nombre de la dimensión en Exploración, haga clic en el icono de la rueda dentada del campo y seleccione Quitar valores de nivel rellenados para inhabilitar o Rellenar valores de nivel que faltan para habilitar.

Consulta más información sobre tiers de Looker en la página de documentación Tipos de dimensiones, filtros y parámetros.

Usar case para crear segmentos

Puede usar el parámetro case para crear contenedores con nombres y orden personalizados. Se recomienda usar el parámetro case con un conjunto fijo de contenedores, ya que puede ayudar a controlar la forma en que se presentan, ordenan y usan los valores en los filtros y las visualizaciones de la interfaz de usuario. Por ejemplo, con case, un usuario solo podrá seleccionar los valores de los grupos definidos en un filtro.

Para crear contenedores con case, puedes definir una dimensión, como un contenedor para importes de pedidos:

  dimension: order_amount_bucket {
    case: {
      when: {
        sql: ${order_amount} <= 50;;
        label: "Small"
      }
      when: {
        sql: ${order_amount} > 50 AND ${order_amount} <= 150;;
        label: "Medium"
      }
      when: {
        sql: ${order_amount} > 150;;
        label: "Large"
      }
      else:"Unknown"
    }
  }

El parámetro case suele ordenar los valores según el orden en el que se muestran los contenedores. En la dimensión order_amount_bucket, el orden de los segmentos es Pequeño, Mediano y Grande:

Si quiere ordenar alfanuméricamente, añada el parámetro alpha_sort a la dimensión, de la siguiente manera:

  dimension: order_amount_bucket {
    alpha_sort: yes
    case: {
      when: {
        sql: ${order_amount} <= 50;;
        label: "Small"
      }
      when: {
        sql: ${order_amount} > 50 AND ${order_amount} <= 150;;
        label: "Medium"
      }
      when: {
        sql: ${order_amount} > 150;;
        label: "Large"
      }
      else:"Unknown"
    }
  }

En el caso de las dimensiones en las que se quieren obtener muchos valores distintos (lo que requeriría que definiera cada salida con una instrucción WHEN o ELSE) o cuando quiera implementar una instrucción ELSE más compleja, le recomendamos que utilice un CASE WHEN de SQL, que se explica en la siguiente sección.

Consulte más información sobre el parámetro case en la página de documentación Parámetros de campo.

Usar SQL CASE WHEN para crear contenedores

Se recomienda usar una instrucción SQL CASE WHEN para las agrupaciones más complejas o para implementar una instrucción ELSE más matizada.

Por ejemplo, puede que quieras usar diferentes métodos de asignación a segmentos en función del destino de un pedido. Se puede usar una instrucción SQL CASE WHEN para crear una dimensión de contenedor compuesto, donde la instrucción THEN devuelve dimensiones en lugar de cadenas:

dimension: compound_buckets {
  sql:
    CASE
      WHEN ${orders.destination} = 'US' THEN ${us_buckets}
      WHEN ${orders.destination} = 'CA' THEN ${canada_buckets}
    ELSE ${intl_buckets}
    END ;;
}