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ógicaCASE WHEN
en parámetrossql
o campostype: 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:
- Usar el tipo
tier
dimension
- Usar el parámetro
case
- Usar una instrucción
CASE WHEN
de SQL en el parámetroSQL
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:
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:
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 formatox 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 ;; }