caso

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 instrucciones when como desees para representar cada condición para la que quieras proporcionar una etiqueta. Las instrucciones when se evalúan en orden, desde la primera hasta la última, y la primera instrucción when que se evalúe como verdadera asignará la etiqueta asociada.
  • sql: El parámetro sql acepta 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 de string. El valor de cada label en una declaración case debe ser único. Si usas el mismo valor de label para varias condiciones de SQL, solo a la última condición de SQL de la instrucción case se le asigna el valor de label. 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.