case

Nutzung

view: view_name {
Dimension: Feldname {
Fall: {
Wann: {
sql: SQL-Bedingung;



Hierarchie
case
Mögliche Feldtypen
Dimension

Akzeptiert
Eine SQL-Bedingung und ein String

Sonderregeln
Verwenden Sie einen alpha_sort-Parameter, wenn die Werte alphabetisch sein sollen

Definition

Mit case können Sie Ergebnisse mit Falllogik gruppieren. Sie können zwar unformatierte SQL-CASE-Anweisungen schreiben, aber mit case wird in der Looker-Benutzeroberfläche ein Drop-down-Menü für Ihre Nutzer erstellt. Mit einer SQL-CASE-Anweisung wird kein solches Menü erstellt.

Die allgemeine Form von case ist:

dimension: status {
  case: {
    when: {
      sql: condition ;;
      label: "Label of Condition"
    }
    # possibly more when statements
    else: "Label If No Condition Met"
  }
}

Diese Parameter funktionieren so:

  • when: Sie können beliebig viele when-Anweisungen verwenden, um jede Bedingung darzustellen, für die Sie ein Label angeben möchten. Die when-Anweisungen werden in der Reihenfolge von der ersten bis zur letzten aufgeführt. Die erste when-Anweisung, die als wahr ausgewertet wird, weist das zugehörige Label zu.
  • sql: Der Parameter sql akzeptiert eine SQL-Bedingung, die als wahr oder falsch ausgewertet wird.
  • label: Wenn die SQL-Bedingung erfüllt ist, wird dieses Label zugewiesen. Das zugewiesene Label hat den Datentyp string. Der Wert jeder label in einer case-Anweisung muss eindeutig sein. Wenn Sie für mehrere SQL-Bedingungen denselben label-Wert verwenden, wird nur der letzten SQL-Bedingung in der case-Anweisung der Wert label zugewiesen. Beispiele auf dieser Seite.
  • else: Wenn keine Ihrer Bedingungen erfüllt ist, wird dieses Label verwendet.

Die Vorschläge, die einem geschäftlichen Nutzer für die Dimension case angezeigt werden, werden bei Verwendung von full_suggestions nicht eingeschränkt. Jede Option, die Sie in einen case-Parameter aufnehmen, ist für alle Nutzer sichtbar.

Sortierreihenfolge von Labels mit alpha_sort auswählen

Normalerweise werden case-Werte in der Reihenfolge angezeigt, in der Sie sie schreiben. Wenn du eine alphabetische Sortierung verwenden möchtest, kannst du alpha_sort: yes so verwenden:

dimension: status {
  alpha_sort: yes
  case: { ... }
}

Beispiele

Weisen Sie verschiedenen Statusnummern mehrere menschenlesbare Labels zu:

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"
  }
}

Wenn dieselbe Bedingung wiederholt wird und verschiedene Labels auswertet, verwendet LookML die erste Bedingung, die als wahr ausgewertet wird. Im folgenden Beispiel wird ${TABLE}.status = 0 mit pending und nicht mit returned ausgewertet, da die Bedingung pending zuerst ausgewertet wird.

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"
  }
}

Wenn mehrere Bedingungen mit demselben Label ausgewertet werden, verwendet LookML nur die erste Bedingung. Im folgenden Beispiel verwendet Looker ${TABLE}.status = 0 anstelle von ${TABLE}.status = 2, um die SQL-CASE-Anweisung zu generieren, die pending ergibt. Bei ${TABLE}.status = 2 wird die CASE-Anweisung als unknown ausgewertet.

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"
  }
}