Agrupamento em contentores no Looker

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ógica CASE WHEN nos parâmetros sql ou nos campos type: 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:

  1. Usar o tipo tier dimension
  2. Usar o parâmetro case
  3. Usar uma declaração CASE WHEN SQL no parâmetro SQL 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:

  1. classic
  2. integer
  3. interval
  4. relational

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:

O nível de idade dos utilizadores disponível na parte superior da tabela de dados é T02[10,20], o que indica uma contagem de 808 utilizadores com idades entre 10 e 20 anos.

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 formato x 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 ;;
}