Nutzung
Dimension: Feldname {
Fall: {
Wann: {
sql: SQL-Bedingung;
Hierarchie
case |
Mögliche Feldtypen
DimensionAkzeptiert
Eine SQL-Bedingung und ein StringSonderregeln
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 vielewhen
-Anweisungen verwenden, um jede Bedingung darzustellen, für die Sie ein Label angeben möchten. Diewhen
-Anweisungen werden in der Reihenfolge von der ersten bis zur letzten aufgeführt. Die erstewhen
-Anweisung, die als wahr ausgewertet wird, weist das zugehörige Label zu.sql
: Der Parametersql
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 Datentypstring
. Der Wert jederlabel
in einercase
-Anweisung muss eindeutig sein. Wenn Sie für mehrere SQL-Bedingungen denselbenlabel
-Wert verwenden, wird nur der letzten SQL-Bedingung in dercase
-Anweisung der Wertlabel
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 vonfull_suggestions
nicht eingeschränkt. Jede Option, die Sie in einencase
-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"
}
}