Utilisation
Hiérarchie
case |
Types de champs possibles
DimensionAcceptation
Une condition SQL et une chaîneRè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'instructionswhen
que vous le souhaitez pour représenter chaque condition à laquelle vous souhaitez ajouter un libellé. Les instructionswhen
sont évaluées dans l'ordre, de la première à la dernière listée, et la première instructionwhen
évaluée à true attribue le libellé associé.sql
: le paramètresql
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é eststring
. La valeur de chaquelabel
dans une instructioncase
doit être unique. Si vous utilisez la même valeurlabel
pour plusieurs conditions SQL, seule la dernière condition SQL de l'instructioncase
se voit attribuer la valeurlabel
. 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 utilisezfull_suggestions
. Toute option que vous incluez dans le paramètrecase
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"
}
}