richiesta

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