Uso
dimension: field_name {
case: {
when: {
sql: es
Jerarquía
case |
Tipos de campos posibles
DimensiónAcepta
Una condición de SQL y una stringReglas especiales
Usa un parámetro alpha_sort si quieres que los valores estén en orden alfabético |
Definición
case
te permite agrupar los resultados con lógica de casos. Si bien puedes escribir instrucciones CASE
de SQL sin procesar, con case
se 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 declaracioneswhen
como quieras representar cada condición para la que deseas proporcionar una etiqueta. Las declaracioneswhen
se evalúan en orden desde la primera que se indica hasta la última que se enumera. Se asignará la etiqueta asociada a la primera declaraciónwhen
que se evalúe como verdadera.sql
: El parámetrosql
acepta una condición de SQL que se evalúa como verdadera o falsa.label
: Si la condición de SQL es verdadera, esta es la etiqueta que se asignará. La etiqueta asignada tiene un tipo de datos destring
. El valor de cadalabel
en una sentenciacase
debe ser único. Si usas el mismo valor delabel
para varias condiciones de SQL, solo se le asignará el valorlabel
a la última condición de SQL en la instruccióncase
. Consulta Ejemplos en esta página.else
: Si no se cumple ninguna de tus condiciones, esta es la etiqueta que se usará.
Las sugerencias presentadas a un usuario empresarial para una dimensión
case
no se restringirán cuando se usefull_suggestions
. Cualquier opción que incluyas en un parámetrocase
será visible para todos los usuarios.
Elige el orden de las etiquetas con alpha_sort
Por lo general, los valores 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 en lenguaje natural 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 la misma condición se repite y se evalúa en 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 hay varias condiciones que se evalúan con la misma etiqueta, LookML solo usa la primera. En el siguiente ejemplo, Looker usará ${TABLE}.status = 0
en lugar de ${TABLE}.status = 2
para generar la instrucción CASE
de SQL que se evalúa como pending
. Cuando es ${TABLE}.status = 2
, la sentencia 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"
}
}