custodia

Utilizzo

view: view_name {
dimension: field_name {
case: {
when: {
sql: condizione SQL ;;
Gerarchia
case
Tipi di campi possibili
Dimensione

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 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 istruzioni when che vuoi per rappresentare ogni condizione per cui vuoi fornire un'etichetta. Le istruzioni when vengono valutate in ordine dalla prima elencata all'ultima elencata, mentre la prima istruzione when valutata come vera assegna l'etichetta associata.
  • sql: il parametro sql 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 dati string. Il valore di ogni label in un'istruzione case deve essere univoco. Se utilizzi lo stesso valore label per più condizioni SQL, il valore label viene assegnato solo all'ultima condizione SQL nell'istruzione case. 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 utilizzi full_suggestions. Qualsiasi opzione inclusa in un parametro case 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"
  }
}