Uso
view: view_name {
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
label: "value"
}
# Possibly more when statements
else: "value"
}
alpha_sort: yes
}
}
|
Jerarquía
case |
Tipos de campos posibles
Dimensión
Acepta
Una condición de SQL y una cadena
Reglas especiales
Usa un parámetro alpha_sort si deseas que los valores se ordenen alfabéticamente.
|
Definición
case te permite bucket los resultados con lógica de casos. Si bien puedes escribir instrucciones CASE de SQL sin procesar, usar case creará un menú desplegable para tus usuarios en la IU de Looker. Una instrucción CASE de SQL no creará ese menú.
La forma general de case es la siguiente:
dimension: status {
case: {
when: {
sql: condition ;;
label: "Label of Condition"
}
# possibly more when statements
else: "Label If No Condition Met"
}
}
Estos parámetros funcionan de la siguiente manera:
when: Puedes usar tantas instruccioneswhencomo desees para representar cada condición para la que quieras proporcionar una etiqueta. Las instruccioneswhense evalúan en orden, desde la primera hasta la última, y la primera instrucciónwhenque se evalúe como verdadera asignará la etiqueta asociada.sql: El parámetrosqlacepta una condición en SQL que se evalúa como verdadera o falsa.label: Si la condición SQL es verdadera, esta es la etiqueta que se asignará. La etiqueta asignada tiene un tipo de datos destring. El valor de cadalabelen una declaracióncasedebe ser único. Si usas el mismo valor delabelpara varias condiciones de SQL, solo a la última condición de SQL de la instruccióncasese le asigna el valor delabel. Consulta los Ejemplos en esta página.else: Si no se cumple ninguna de tus condiciones, esta es la etiqueta que se usará.
Cómo elegir el orden de clasificación de las etiquetas con alpha_sort
Por lo general, los valores de case aparecen en el orden en que los escribes. Si prefieres un orden alfabético, puedes usar alpha_sort: yes de la siguiente manera:
dimension: status {
alpha_sort: yes
case: { ... }
}
Ejemplos
Asigna varias etiquetas legibles a diferentes números de estado:
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 2 ;;
label: "returned"
}
else: "unknown"
}
}
Cuando se repite la misma condición y se evalúa con diferentes etiquetas, LookML usa la primera condición que se evalúa como verdadera. En el siguiente ejemplo, ${TABLE}.status = 0 se evalúa como pending y no como returned, ya que la condición pending se evalúa primero.
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 0 ;;
label: "returned"
}
else: "unknown"
}
}
Cuando varias condiciones se evalúan con la misma etiqueta, LookML solo usa la primera condición. En el siguiente ejemplo, Looker usará ${TABLE}.status = 0 en lugar de ${TABLE}.status = 2 para generar la instrucción SQL CASE que se evalúa como pending. Cuando es ${TABLE}.status = 2, la instrucción CASE se evalúa como unknown.
view: orders
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 2 ;;
label: "pending"
}
else: "unknown"
}
}
Información importante
Cuando una dimensión contiene un parámetro case que hace referencia a otro campo, ese campo adicional se puede agregar al código SQL subyacente de una consulta en la que se usa la dimensión. Si el campo al que se hace referencia no está presente en la visualización de la consulta y la visualización es un gráfico de tabla con columnas reorganizadas manualmente, es posible que se vea afectado el orden de las columnas en algunos formatos descargados.