Utilizzo
dimension: field_name {
case: {
when: {
sql: condizione SQL ;;
Gerarchia
case |
Tipi di campi possibili
DimensioneAccetta
Una condizione SQL e una stringaRegole speciali
Utilizza un parametro alpha_sort se vuoi che i valori siano in ordine alfabetico |
Definizione
case
ti consente di bucket risultati con logica maiuscole/minuscole. Mentre puoi scrivere istruzioni CASE
SQL non elaborate, utilizzando case
creerai un menu a discesa per i tuoi utenti nell'interfaccia utente di Looker. Un'istruzione CASE
SQL non creerà questo menu.
La forma generale di case
è:
dimension: status {
case: {
when: {
sql: condition ;;
label: "Label of Condition"
}
# possibly more when statements
else: "Label If No Condition Met"
}
}
Questi parametri funzionano come segue:
when
: puoi utilizzare tutte le istruzioniwhen
che vuoi per rappresentare ogni condizione per cui vuoi fornire un'etichetta. Le istruzioniwhen
vengono valutate in ordine dalla prima elencata all'ultima elencata, mentre la prima istruzionewhen
valutata come vera assegna l'etichetta associata.sql
: il parametrosql
accetta una condizione SQL che restituisce un valore true o false.label
: se la condizione SQL è vera, questa è l'etichetta che verrà assegnata. L'etichetta assegnata ha un tipo di datistring
. Il valore di ognilabel
in un'istruzionecase
deve essere univoco. Se utilizzi lo stesso valorelabel
per più condizioni SQL, il valorelabel
viene assegnato solo all'ultima condizione SQL nell'istruzionecase
. Vedi Esempi in questa pagina.else
: se nessuna delle tue condizioni è soddisfatta, questa sarà l'etichetta che verrà utilizzata.
I suggerimenti presentati a un utente aziendale per una dimensione
case
non saranno limitati quando utilizzifull_suggestions
. Qualsiasi opzione inclusa in un parametrocase
sarà visibile a tutti gli utenti.
Scegliere l'ordinamento delle etichette con alpha_sort
In genere i valori case
vengono visualizzati nell'ordine in cui li scrivi. Se preferisci un ordinamento alfabetico, puoi utilizzare alpha_sort: yes
nel seguente modo:
dimension: status {
alpha_sort: yes
case: { ... }
}
Esempi
Assegnare più etichette leggibili dagli utenti a numeri di stato diversi:
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"
}
}
Quando la stessa condizione viene ripetuta e restituisce etichette diverse, LookML utilizza la prima condizione che restituisce true. Nell'esempio seguente, ${TABLE}.status = 0
valuta pending
e non returned
, poiché la condizione pending
viene valutata per prima.
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"
}
}
Quando più condizioni restituiscono la stessa etichetta, LookML utilizza solo la prima condizione. Nell'esempio seguente, Looker utilizzerà ${TABLE}.status = 0
invece di ${TABLE}.status = 2
per generare l'istruzione SQL CASE
che restituisce pending
. Quando ${TABLE}.status = 2
, l'istruzione CASE
restituisce 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"
}
}