Nutzung
view: view_name {
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
label: "value"
}
# Possibly more when statements
else: "value"
}
alpha_sort: yes
}
}
|
Hierarchie
case |
Mögliche Feldtypen
Dimension
Akzeptiert
Eine SQL-Bedingung und ein String
Besondere Regeln
Verwenden Sie den Parameter alpha_sort, wenn die Werte alphabetisch sortiert werden sollen.
|
Definition
Mit case können Sie Ergebnisse mit Falllogik gruppieren. Sie können zwar auch CASE-Anweisungen in Roh-SQL 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 ausgewertet. Bei der erstenwhen-Anweisung, die als „wahr“ ausgewertet wird, wird das zugehörige Label zugewiesen.sql: Der Parametersqlakzeptiert eine SQL-Bedingung, die als „true“ oder „false“ ausgewertet wird.label: Wenn die SQL-Bedingung „true“ ist, wird dieses Label zugewiesen. Das zugewiesene Label hat den Datentypstring. Der Wert jederlabel-Variablen in einercase-Anweisung muss eindeutig sein. Wenn Sie denselbenlabel-Wert für mehrere SQL-Bedingungen verwenden, wird derlabel-Wert nur der letzten SQL-Bedingung in dercase-Anweisung zugewiesen. Beispiele auf dieser Seiteelse: Wenn keine Ihrer Bedingungen erfüllt ist, wird dieses Label verwendet.
Sortierreihenfolge von Labels mit alpha_sort auswählen
Normalerweise werden case-Werte in der Reihenfolge angezeigt, in der Sie sie eingeben. Wenn Sie eine alphabetische Sortierung bevorzugen, können Sie alpha_sort: yes so verwenden:
dimension: status {
alpha_sort: yes
case: { ... }
}
Beispiele
Weisen Sie verschiedenen Statusnummern mehrere lesbare 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 zu unterschiedlichen Labels führt, wird in LookML die erste Bedingung verwendet, die als „wahr“ ausgewertet wird. Im folgenden Beispiel wird ${TABLE}.status = 0 als pending und nicht als returned ausgewertet, da die pending-Bedingung 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 dasselbe Label ergeben, wird in LookML nur die erste Bedingung verwendet. Im folgenden Beispiel verwendet Looker ${TABLE}.status = 0 anstelle von ${TABLE}.status = 2, um die SQL-Anweisung CASE zu generieren, die zu pending ausgewertet wird. Wenn ${TABLE}.status = 2, wird die Anweisung CASE mit 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"
}
}
Wichtige Punkte
Wenn eine Dimension einen case-Parameter enthält, der auf ein anderes Feld verweist, kann dieses zusätzliche Feld dem zugrunde liegenden SQL-Code einer Abfrage hinzugefügt werden, in der die Dimension verwendet wird. Wenn das referenzierte Feld nicht in der Visualisierung der Abfrage vorhanden ist und die Visualisierung ein Tabellendiagramm mit manuell neu angeordneten Spalten ist, kann sich das auf die Spaltenreihenfolge in einigen heruntergeladenen Formaten auswirken.