Utilisation
view: view_name {
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
label: "value"
}
# Possibly more when statements
else: "value"
}
alpha_sort: yes
}
}
|
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 dans des buckets à l'aide de la logique de casse. Bien que vous puissiez écrire des instructions SQL brutes CASE, l'utilisation de case créera un menu déroulant pour vos utilisateurs dans l'interface utilisateur Looker. Une instruction SQL CASE ne créera pas un tel menu.
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'instructionswhenque vous le souhaitez pour représenter chaque condition pour laquelle vous souhaitez fournir un libellé. Les instructionswhensont évaluées dans l'ordre, de la première à la dernière. La première instructionwhenqui est évaluée comme étant "true" attribuera le libellé associé.sql: le paramètresqlaccepte une condition SQL qui renvoie la valeur "true" ou "false".label: libellé qui sera attribué si la condition SQL est vraie. Le libellé attribué a un type de donnéesstring. La valeur de chaquelabeldans une instructioncasedoit être unique. Si vous utilisez la même valeurlabelpour plusieurs conditions SQL, seule la dernière condition SQL de l'instructioncasese voit attribuer la valeurlabel. Consultez la section Exemples sur cette page.else: ce libellé sera utilisé si aucune de vos conditions n'est remplie.
Choisir l'ordre de tri des libellés avec alpha_sort
En règle générale, les valeurs case s'affichent dans l'ordre dans lequel vous les saisissez. Si vous préférez un tri alphabétique, vous pouvez utiliser alpha_sort: yes comme suit :
dimension: status {
alpha_sort: yes
case: { ... }
}
Exemples
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 renvoie des libellés différents, 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 renvoient 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 correspond à pending. Lorsque ${TABLE}.status = 2, l'instruction CASE renvoie 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"
}
}
Bon à savoir
Lorsqu'une dimension contient un paramètre case qui fait référence à un autre champ, ce champ supplémentaire peut être ajouté au code SQL sous-jacent d'une requête dans laquelle la dimension est utilisée. Si le champ référencé n'est pas présent dans la visualisation de la requête et que la visualisation est un tableau avec des colonnes réorganisées manuellement, l'ordre des colonnes dans certains formats téléchargés peut être affecté.