case

Utilisation

:
Hiérarchie
case
Types de champs possibles
Dimension

Acceptation
Une condition SQL et une chaîne

Règles spéciales
Utilisez un paramètre alpha_sort si vous souhaitez que les valeurs soient classées par ordre alphabétique

Définition

case vous permet de regrouper les résultats avec une logique de casse. Bien que vous puissiez écrire des instructions SQL CASE brutes à la place, l'utilisation de case permet de créer un menu déroulant pour vos utilisateurs dans l'interface utilisateur de Looker. Une instruction SQL CASE ne crée pas de menu de ce type.

La forme générale de case est la suivante:

dimension: status {
  case: {
    when: {
      sql: condition ;;
      label: "Label of Condition"
    }
    # possibly more when statements
    else: "Label If No Condition Met"
  }
}

Ces paramètres fonctionnent comme suit:

  • when : vous pouvez utiliser autant d'instructions when que vous le souhaitez pour représenter chaque condition à laquelle vous souhaitez ajouter un libellé. Les instructions when sont évaluées dans l'ordre, de la première à la dernière listée, et la première instruction when évaluée à true attribue le libellé associé.
  • sql : le paramètre sql accepte une condition SQL qui renvoie la valeur "vrai" ou "faux".
  • label : si la condition SQL est vraie, il s'agit du libellé qui sera attribué. Le type de données du libellé attribué est string. La valeur de chaque label dans une instruction case doit être unique. Si vous utilisez la même valeur label pour plusieurs conditions SQL, seule la dernière condition SQL de l'instruction case se voit attribuer la valeur label. Consultez les exemples de cette page.
  • else : si aucune de vos conditions n'est remplie, il s'agit du libellé qui sera utilisé.

Les suggestions présentées à un utilisateur professionnel pour une dimension case ne seront pas restreintes lorsque vous utilisez full_suggestions. Toute option que vous incluez dans le paramètre case sera visible par tous les utilisateurs.

Choisir l'ordre de tri des étiquettes avec alpha_sort

En règle générale, les valeurs case apparaissent dans l'ordre dans lequel vous les avez écrites. Si vous préférez un tri alphabétique, vous pouvez utiliser alpha_sort: yes comme suit:

dimension: status {
  alpha_sort: yes
  case: { ... }
}

Examples

Attribuez plusieurs libellés lisibles à différents numéros d'état:

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"
  }
}

Lorsque la même condition est répétée et évaluée sur différentes étiquettes, LookML utilise la première condition qui renvoie la valeur "true". Dans l'exemple suivant, ${TABLE}.status = 0 renvoie pending et non returned, car la condition pending est évaluée en premier.

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"
  }
}

Lorsque plusieurs conditions sont évaluées sur le même libellé, LookML n'utilise que la première condition. Dans l'exemple suivant, Looker utilisera ${TABLE}.status = 0 au lieu de ${TABLE}.status = 2 pour générer l'instruction SQL CASE qui renvoie pending. Lorsque la valeur est ${TABLE}.status = 2, l'instruction CASE prend la valeur 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"
  }
}