case

Uso

view: view_name {
dimension: field_name {
case: {
when: {
sql: es
Jerarquía
case
Tipos de campos posibles
Dimensión

Acepta
Una condición de SQL y una string

Reglas 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 declaraciones when como quieras representar cada condición para la que deseas proporcionar una etiqueta. Las declaraciones when 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ón when que se evalúe como verdadera.
  • sql: El parámetro sql 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 de string. El valor de cada label en una sentencia case debe ser único. Si usas el mismo valor de label para varias condiciones de SQL, solo se le asignará el valor label a la última condición de SQL en la instrucción case. 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 use full_suggestions. Cualquier opción que incluyas en un parámetro case 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"
  }
}