Quando tem autorização para criar campos personalizados, pode criar grupos personalizados ad hoc para dimensões sem usar funções lógicas em expressões do Looker nem desenvolver lógicaCASE WHEN
nos parâmetrossql
ou nos campostype: case
.
Também pode criar intervalos personalizados ad hoc para dimensões de tipo numérico sem ter de usar funções lógicas em expressões do Looker nem desenvolver type: tier
campos LookML quando tem autorização para criar campos personalizados.
A segmentação em grupos pode ser muito útil para criar dimensões de agrupamento personalizadas no Looker.
Existem três formas de criar intervalos no Looker:
- Usar o tipo
tier
dimension
- Usar o parâmetro
case
- Usar uma declaração
CASE WHEN
SQL no parâmetroSQL
de um campo LookML
Usar tier
para a segmentação em grupos
Para criar intervalos de números inteiros, podemos simplesmente definir o tipo dimension
como tier
:
dimension: users_lifetime_orders_tier { type: tier tiers: [0,1,2,5,10] sql: ${users_lifetime_orders} ;; }
Pode usar o parâmetro style
para personalizar a forma como os seus níveis aparecem quando explora. As quatro opções para style
são as seguintes:
Por exemplo:
dimension: age_tier { type: tier tiers: [0,10,20,30,40,50,60,70,80] style: integer sql: ${age} ;; }
O parâmetro style
é o predefinido e tem o formato Tx[x,x]
, em que Tx
indica o número do nível e [x,x]
indica o intervalo.classic
A imagem seguinte é uma tabela de dados de exploração com a Contagem de utilizadores agrupada por Idade dos utilizadores:
A imagem seguinte mostra exemplos das outras opções de parâmetros style
:
-
interval
— Com o formato[x,x]
, que indica o valor mais baixo e o valor mais elevado de um nível -
integer
— Com o formatox to x
, que indica o valor mais baixo e o valor mais elevado de um nível -
relational
: com o formato>= x and <x
, que indica que um valor é superior ou igual ao valor do nível mais baixo e inferior ao valor do nível mais alto
Aspetos a considerar
A utilização de tier
em conjunto com o preenchimento de dimensões pode resultar em grupos de níveis inesperados.
Por exemplo, uma dimensão type: tier
, Faixa etária, apresenta intervalos de faixas para Inferior a 0 e 0 a 9 quando o preenchimento de dimensões está ativado, embora os dados não incluam valores de idade para esses intervalos:
Quando o preenchimento de dimensões está desativado para Faixa etária, os grupos refletem com maior precisão os valores de idade disponíveis nos dados, começando pelo grupo 10 a 19:
Pode ativar ou desativar o preenchimento de dimensões passando o cursor do rato sobre o nome da dimensão na análise detalhada, clicando no ícone de roda dentada ao nível do campo e selecionando Remover valores de níveis preenchidos para desativar ou Preencher valores de níveis em falta para ativar.
Saiba mais sobre o Looker tiers
na página de documentação Tipos de dimensões, filtros e parâmetros.
Usar case
para a segmentação em grupos
Pode usar o parâmetro case
para criar grupos com nomes personalizados e ordenação personalizada. O parâmetro case
é recomendado para um conjunto fixo de grupos, uma vez que pode ajudar a controlar a forma como os valores são apresentados, ordenados e usados em filtros e visualizações da IU. Por exemplo, com case
, um utilizador pode selecionar apenas os valores de contentores definidos num filtro.
Para criar grupos com case
, pode definir uma dimensão, como um grupo para valores de encomendas:
dimension: order_amount_bucket { case: { when: { sql: ${order_amount} <= 50;; label: "Small" } when: { sql: ${order_amount} > 50 AND ${order_amount} <= 150;; label: "Medium" } when: { sql: ${order_amount} > 150;; label: "Large" } else:"Unknown" } }
Normalmente, o parâmetro case
ordena os valores pela ordem em que os grupos são apresentados. Para a dimensão order_amount_bucket
, a ordem dos grupos é Pequeno, Médio e Grande:
Se quiser ordenar alfanumericamente, adicione o parâmetro alpha_sort
à dimensão, da seguinte forma:
dimension: order_amount_bucket { alpha_sort: yes case: { when: { sql: ${order_amount} <= 50;; label: "Small" } when: { sql: ${order_amount} > 50 AND ${order_amount} <= 150;; label: "Medium" } when: { sql: ${order_amount} > 150;; label: "Large" } else:"Unknown" } }
Para dimensões em que são desejados muitos valores distintos no resultado (isto requer que defina cada resultado com uma declaração WHEN
ou ELSE
) ou quando quiser implementar uma declaração ELSE
mais complexa, recomendamos que use um CASE WHEN
SQL, abordado na secção seguinte.
Leia mais acerca do parâmetro case
na página de documentação Parâmetros de campo.
Usar SQL CASE WHEN
para a criação de grupos
Recomendamos uma declaração SQL CASE WHEN
para a segmentação em grupos mais complexa ou para a implementação de uma declaração ELSE
mais detalhada.
Por exemplo, pode querer usar métodos de agrupamento diferentes, consoante o destino de uma encomenda. Pode usar uma declaração SQL CASE WHEN
para criar uma dimensão de agrupamento composta, em que a declaração THEN
devolve dimensões em vez de strings:
dimension: compound_buckets { sql: CASE WHEN ${orders.destination} = 'US' THEN ${us_buckets} WHEN ${orders.destination} = 'CA' THEN ${canada_buckets} ELSE ${intl_buckets} END ;; }