Uso
view: view_name {
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
label: "value"
}
# Possibly more when statements
else: "value"
}
alpha_sort: yes
}
}
|
Hierarquia
case |
Tipos de campo possíveis
Dimensão
Aceita
Uma condição SQL e uma string
Regras especiais
Use um parâmetro alpha_sort se quiser que os valores sejam organizados em ordem alfabética.
|
Definição
O case permite agrupar resultados com lógica de caso. Embora seja possível escrever instruções SQL CASE brutas, o uso de case cria um menu suspenso para os usuários na interface do Looker. Uma instrução SQL CASE não cria um menu desse tipo.
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çõeswhenquiser para representar cada condição em que quer fornecer um rótulo. As instruçõeswhensão avaliadas em ordem, da primeira à última, e a primeira instruçãowhenavaliada como verdadeira vai atribuir o rótulo associado.sql: o parâmetrosqlaceita uma condição SQL que é avaliada como verdadeira ou falsa.label: se a condição SQL for verdadeira, este será o rótulo atribuído. O rótulo atribuído tem um tipo de dadosstring. O valor de cadalabelem uma instruçãocaseprecisa ser exclusivo. Se você usar o mesmo valor delabelpara várias condições SQL, apenas a última condição SQL na instruçãocasevai receber o valor delabel. Confira os exemplos nesta página.else: se nenhuma das suas condições for atendida, este será o rótulo usado.
Escolher a ordem de classificação dos rótulos com alpha_sort
Normalmente, os valores case aparecem na ordem em que são escritos. Se preferir uma classificação alfabética, use alpha_sort: yes assim:
dimension: status {
alpha_sort: yes
case: { ... }
}
Exemplos
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 com rótulos diferentes, a LookML usa a primeira condição que é avaliada como verdadeira. No exemplo a seguir, ${TABLE}.status = 0 é avaliado como pending e 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 com o mesmo rótulo, o LookML usa apenas a primeira condição. No exemplo a seguir, o Looker vai usar ${TABLE}.status = 0 em vez de ${TABLE}.status = 2 para gerar a instrução SQL CASE que resulta em pending. Quando ${TABLE}.status = 2, a instrução CASE é avaliada 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"
}
}
Informações importantes
Quando uma dimensão contém um parâmetro case que faz referência a outro campo, esse campo adicional pode ser adicionado ao SQL subjacente de uma consulta em que a dimensão é usada. Se o campo referenciado não estiver presente na visualização da consulta e a visualização for um gráfico de tabela com colunas reorganizadas manualmente, a ordem das colunas em alguns formatos baixados poderá ser afetada.