Uso
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
Hierarquia
case |
Tipos de campo possíveis
DimensãoAceita
Uma condição e uma string SQLRegras especiais
Use um parâmetro alpha_sort se você quiser os valores em ordem alfabética. |
Definição
case
permite agrupar os resultados com lógica de caso. Embora seja possível escrever instruções SQL CASE
brutas, o uso de case
criará um menu suspenso para seus usuários na IU do Looker. Uma instrução CASE
do SQL não criará esse menu.
A forma geral de case
é:
dimension: status {
case: {
when: {
sql: condition ;;
label: "Label of Condition"
}
# possibly more when statements
else: "Label If No Condition Met"
}
}
Esses parâmetros funcionam da seguinte maneira:
when
: você pode usar quantas instruçõeswhen
quiser para representar cada condição que vai receber um rótulo. As instruçõeswhen
são avaliadas em ordem decrescente da primeira até a última listada, e a primeira instruçãowhen
avaliada como verdadeira atribui o rótulo associado.sql
: o parâmetrosql
aceita uma condição SQL que é avaliada como verdadeira ou falsa.label
: se a condição SQL for verdadeira, este será o rótulo que será atribuído. O rótulo atribuído tem um tipo de dados destring
. O valor de cadalabel
em uma instruçãocase
precisa ser exclusivo. Se você usar o mesmo valorlabel
para várias condições SQL, somente a última condição SQL na instruçãocase
receberá o valorlabel
. Veja exemplos nesta página.else
: se nenhuma condição for atendida, este é o rótulo que será usado.
As sugestões apresentadas a um usuário comercial para uma dimensão
case
não serão restritas ao usarfull_suggestions
. Todas as opções incluídas em um parâmetrocase
ficarão visíveis a todos os usuários.
Como escolher a ordem de classificação dos rótulos com alpha_sort
Normalmente, os valores case
aparecem na ordem em que são gravados. Se preferir uma classificação alfabética, use alpha_sort: yes
desta forma:
dimension: status {
alpha_sort: yes
case: { ... }
}
Examples
Atribua vários rótulos legíveis a diferentes números de status:
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 a mesma condição é repetida e avaliada como rótulos diferentes, o LookML usa a primeira condição avaliada como verdadeira. No exemplo a seguir, ${TABLE}.status = 0
é avaliado como pending
, não returned
, já que a condição pending
é avaliada primeiro.
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 várias condições são avaliadas no mesmo rótulo, o LookML usa apenas a primeira. No exemplo a seguir, o Looker usará ${TABLE}.status = 0
em vez de ${TABLE}.status = 2
para gerar a instrução SQL CASE
avaliada como pending
. Quando ${TABLE}.status = 2
, a instrução CASE
é interpretada como 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"
}
}