Agrupamento por classes no Looker

Quando você tem permissão para criar campos personalizados, é possível 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 em parâmetros sql ou campos type: case.
Também é possível criar compartimentos personalizados ad hoc para dimensões de tipo numérico sem precisar usar funções lógicas em expressões do Looker ou desenvolver type: tier campos do LookML quando tiver permissão para criar campos personalizados.

O agrupamento por classes é muito útil para criar dimensões de agrupamento personalizado no Looker.

Há três maneiras de criar buckets no Looker:

  1. Como usar o tipo tier dimension
  2. Como usar o parâmetro case
  3. Como usar uma instrução SQL CASE WHEN no parâmetro SQL de um campo do LookML

Como usar tier para agrupamento por classes

Para criar buckets inteiros, basta definir o tipo dimension como tier:

dimension: users_lifetime_orders_tier {
  type: tier
  tiers: [0,1,2,5,10]
  sql: ${users_lifetime_orders} ;;
}

Você pode usar o parâmetro style para personalizar a aparência dos níveis durante a análise. As quatro opções de style são estas:

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

Exemplo:

dimension: age_tier {
  type: tier
  tiers: [0,10,20,30,40,50,60,70,80]
  style: integer
  sql: ${age} ;;
}

O parâmetro style classic é o padrão e usa o formato Tx[x,x], com Tx indicando o número do nível e [x,x] indicando o intervalo. A imagem a seguir é uma tabela de dados do Explore com a Contagem de usuários agrupada pela Idade dos usuários:

A faixa etária principal dos usuários disponível na tabela de dados é T02[10,20], indicando uma contagem de 808 usuários entre 10 e 20 anos.

A próxima imagem mostra exemplos das outras opções de parâmetro style:

  • interval: com o formato [x,x], que indica o valor mais baixo e o mais alto de um nível.
  • integer: com o formato x to x, que indica o valor mais baixo e o mais alto de um nível.
  • relational: com o formato >= x and <x, que indica que um valor é maior ou igual ao valor do nível mais baixo e menor que o valor do nível mais alto.

Informações importantes

O uso de tier com o preenchimento de dimensão pode resultar em buckets de nível inesperados.

Por exemplo, uma dimensão type: tier, Faixa etária, exibirá buckets de nível para Abaixo de 0 e 0 a 9 quando o preenchimento de dimensão estiver ativado, embora os dados não incluam valores de idade para esses buckets:

Quando o preenchimento de dimensão está desativado para Faixa etária, os buckets refletem com mais precisão os valores de idade disponíveis nos dados, começando com o bucket 10 a 19:

Para ativar ou desativar o preenchimento de dimensão, passe o cursor sobre o nome dela em "Explorar", clique no ícone de engrenagem no nível do campo e selecione Remover valores de nível preenchidos para desativar ou Preencher valores de nível ausentes para ativá-los.

Saiba mais sobre o Looker tiers na página de documentação Tipos de dimensão, filtro e parâmetro.

Como usar case para agrupamento por classes

É possível usar o parâmetro case para criar buckets com nome personalizado com classificação personalizada. O parâmetro case é recomendado para um conjunto fixo de buckets, porque ajuda a controlar a forma como os valores são apresentados, ordenados e usados em filtros e visualizações da UI. Por exemplo, com case, um usuário poderá selecionar apenas os valores de bucket definidos em um filtro.

Para criar buckets com case, defina uma dimensão, como um bucket para valores de pedidos:

  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"
    }
  }

O parâmetro case normalmente classifica os valores na ordem em que os buckets estão listados. Para a dimensão order_amount_bucket, a ordem dos buckets é Pequeno, Médio e Grande:

Se você quiser classificar em ordem alfanumérica, adicione o parâmetro alpha_sort à dimensão, da seguinte maneira:

  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 muitos valores distintos são desejados na saída (isso exige que você defina cada saída com uma instrução WHEN ou ELSE), ou quando você quiser implementar uma instrução ELSE mais complexa, recomendamos usar um CASE WHEN SQL, discutido na próxima seção.

Saiba mais sobre o parâmetro case na página de documentação dos parâmetros de campo.

Como usar o SQL CASE WHEN para agrupamento por classes

Uma instrução SQL CASE WHEN é recomendada para agrupamentos mais complexos ou para implementação de uma instrução ELSE mais detalhada.

Por exemplo, talvez você queira usar diferentes métodos de agrupamento por classes, dependendo do destino de um pedido. Uma instrução SQL CASE WHEN pode ser usada para criar uma dimensão de bucket composto, em que a instrução THEN retorna 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 ;;
}