Os níveis podem ser uma ótima forma de agrupar valores. No entanto, com as dimensões type: tier
do LookML, esses buckets são predefinidos e estáticos. Às vezes, você pode querer criar um nível dinâmico que permita aos usuários alterar o tamanho do bucket. É possível fazer isso no Looker usando campos somente de filtro (chamados de parâmetros parameter
) em conjunto com uma linguagem de modelos (chamada Liquid).
Você também pode usar a binação personalizada para criar níveis dinâmicos nativamente em "Explorar" quando tiver permissão para criar ou editar campos personalizados.
Para criar um nível dinâmico, faça o seguinte:
-
Crie um parâmetro de
type: number
para servir como o campo de filtro de front-end em que o usuário pode inserir o tamanho numérico do bucket que quiser. -
Crie uma dimensão que faça referência ao valor do parâmetro com a variável líquida
{% parameter parameter_name %}
. Essa dimensão determina os vários buckets e muda dinamicamente o tamanho do bucket para o valor inserido pelo usuário no campo de filtro de front-end (o parâmetroparameter
).
Por exemplo, um desenvolvedor cria uma faixa etária dinâmica que permite aos usuários agrupar valores de idade por intervalos personalizados:
A sintaxe SQL do exemplo a seguir pode ser adaptada de acordo com seu dialeto de banco de dados.
parameter: age_tier_bucket_size { type: number } dimension: dynamic_age_tier { type: number sql: TRUNCATE(${TABLE}.age / {% parameter age_tier_bucket_size %}, 0) * {% parameter age_tier_bucket_size %} ;; }
Agora um usuário pode escolher valores de nível para a coluna Idade em uma exploração. Por exemplo, talvez um usuário queira ver idades agrupadas em intervalos de 10 anos. Portanto, insira o valor 10 no filtro Idade do bucket:
A expressão SQL na dimensão dynamic_age_tier
divide um valor de idade da coluna ${TABLE}.age
subjacente, por exemplo, 25, pelo valor de parâmetro 10, resultando em 2,5. O valor 2,5 é truncado para 2 pela função TRUNCATE
e é multiplicado pelo valor de parâmetro 10, resultando em 20. 20 se torna o bucket; qualquer valor de idade entre 20 e 29 está incluído no bucket 20.