Como regra geral no SQL e, por extensão, no Looker, não é possível agrupar uma consulta por os resultados de uma função agregada (representado no Looker como medidas). Só é possível agrupar por campos não agregados (representados no Looker como dimensões). Se você tentar agregar uma medição no Looker, o seguinte vai aparecer: error:
Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.
E se você precisar mudar uma medida (COUNT, SUM, AVG, MAX etc.) para uma dimensão, para que possa agrupar e agregar (como uma soma de uma contagem ou uma média de uma soma), filtrar (na cláusula WHERE, em vez de uma cláusula HAVING) ou pivotar em uma Análise detalhada?
Como usar tabelas derivadas para dimensionalizar uma medida
Internamente, no Looker, a solução é chamada de dimensionalização de uma medida. Isso é porque você redefine uma medida como uma dimensão. Isso é alcançado ao criar tabela derivada que inclua a medida que você quer dimensionalizar no SQL definição.
O processo
O exemplo a seguir é baseado em um conjunto de dados de e-commerce. O objetivo deste exemplo é
para criar uma medição de type: average
com base em uma medição atual de receita total type: sum
.
As etapas a seguir descrevem como gerar uma tabela derivada baseada em SQL. Você pode criar uma tabela derivada com base no LookML, também conhecida como tabela derivada nativa (NDT), como uma alternativa ao SQL.
- Para começar, configure uma consulta da Análise. Escolha os campos apropriados, incluindo a medida que você quer dimensionalizar. No exemplo de caso de uso, a tabela Dados da Análise detalhada mostra a Receita total agrupada por Estado dos usuários e ID dos usuários:
- Escolha Open in SQL Runner na guia SQL na tabela Data para abrir a consulta no SQL Runner:
-
Depois de executar a consulta no SQL Runner (clicando no botão Executar) e confirmar os resultados,
Escolha a opção Adicionar ao projeto no menu de engrenagem do SQL Runner para abrir o pop-up Adicionar ao projeto. Neste ponto, é necessário remover qualquer cláusula de limite de linha no SQL da tabela derivada para garantir que todos os resultados desejados sejam incluídos na consulta.
Você também pode escolher Acessar a tabela derivada do LookML no menu para copiar e colar o LookML gerado no seu projeto manualmente.
- No pop-up Adicionar ao projeto, selecione um nome de projeto na lista suspensa Projeto. insira um nome para o arquivo de visualização em tabela e selecione Adicionar.
-
Agora que a tabela derivada está em um arquivo de visualização, é possível criar uma medida que agrega a medida dimensionalizada. Por exemplo, agora você pode criar
uma medida
type: average
para a nova dimensão de receita total,order_items_total_revenue
:dimension: order_items_total_revenue { type: number sql: ${TABLE}.order_items.total_revenue ;; value_format_name: usd } measure: average_revenue { type: average sql: ${order_items_total_revenue} ;; value_format_name: usd }
- Verifique se uma chave primária está definida na tabela derivada.
- Seja membro a nova visualização para a Análise original (ou crie uma nova) para poder criar consultas e conteúdo com os novos campos.
Conclusão
A dimensionalização de medidas com tabelas derivadas do Looker desbloqueia novos recursos e permite gerar mais insights com seus dados. Com a capacidade de agrupar por uma medida dimensional, filtrar por ela em uma cláusula WHERE (em vez de HAVING), girar e criar outras dimensões com base nela, você pode levar suas consultas e conteúdo da Análise detalhada para a próxima dimensão.
Acesse a página de documentação Tabelas derivadas para mais informações sobre como criar e usar tabelas derivadas, além de considerações e dicas de otimização de desempenho.