Utilizzo
view: view_name {
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
label: "value"
}
# Possibly more when statements
else: "value"
}
alpha_sort: yes
}
}
|
Gerarchia
case |
Tipi di campi possibili
Dimensioni
Accetta
Una condizione SQL e una stringa
Regole speciali
Utilizza un parametro alpha_sort se vuoi che i valori siano in ordine alfabetico.
|
Definizione
case consente di raggruppare i risultati con la logica di analisi. Anche se puoi scrivere istruzioni SQL non elaborate CASE, l'utilizzo di case creerà un menu a discesa per gli utenti nell'interfaccia utente di Looker. Un'istruzione SQL CASE non creerà un menu di questo tipo.
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 nel seguente modo:
when: puoi utilizzare tutte le istruzioniwhenche vuoi per rappresentare ogni condizione per cui vuoi fornire un'etichetta. Le istruzioniwhenvengono valutate in ordine dalla prima all'ultima e la prima istruzionewhenche viene valutata come vera assegnerà l'etichetta associata.sql: il parametrosqlaccetta una condizione SQL che restituisce 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 ognilabelin un'istruzionecasedeve essere univoco. Se utilizzi lo stesso valorelabelper più condizioni SQL, solo all'ultima condizione SQL nell'istruzionecaseviene assegnato il valorelabel. Vedi gli esempi in questa pagina.else: se nessuna delle condizioni è soddisfatta, questa è l'etichetta che verrà utilizzata.
Scelta dell'ordine di ordinamento delle etichette con alpha_sort
In genere, i valori di case vengono visualizzati nell'ordine in cui li scrivi. Se preferisci un ordinamento alfabetico, puoi utilizzare alpha_sort: yes in questo modo:
dimension: status {
alpha_sort: yes
case: { ... }
}
Esempi
Assegna diverse etichette leggibili 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 il valore true. Nell'esempio seguente, ${TABLE}.status = 0 restituisce 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 anziché ${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"
}
}
Cose da sapere
Quando una dimensione contiene un parametro case che fa riferimento a un altro campo, questo campo aggiuntivo può essere aggiunto all'SQL sottostante di una query in cui viene utilizzata la dimensione. Se il campo a cui viene fatto riferimento non è presente nella visualizzazione della query e la visualizzazione è un grafico a tabella con colonne riorganizzate manualmente, l'ordine delle colonne in alcuni formati scaricati potrebbe essere interessato.