Como regra geral no SQL e, por extensão, no Looker, não pode agrupar uma consulta pelos resultados de uma função de agregação (representada no Looker como medidas). Só pode agrupar por campos não agregados (representados no Looker como dimensões). Se tentar agregar uma medida no Looker, é apresentado o seguinte erro:
Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.
E se precisar de uma forma de alterar uma medida (COUNT, SUM, AVG, MAX, etc.) para uma dimensão, para poder agrupar por ela para a agregar (como um SUM de um COUNT ou um AVG de um SUM), filtrar por ela (na cláusula WHERE em vez de uma cláusula HAVING) ou dinamizar por ela numa exploração?
Usar tabelas derivadas para dimensionar uma medida
Internamente, no Looker, a solução chama-se dimensionalizar uma medida. Isto deve-se ao facto de redefinir uma métrica como uma dimensão. Isto é feito através da criação de uma tabela derivada que inclui a medida que quer dimensionar na respetiva definição SQL.
O processo
O exemplo seguinte baseia-se num conjunto de dados de comércio eletrónico de amostra. O objetivo deste exemplo é
criar uma medida type: average
baseada numa medida Receita total type: sum
existente.
Os passos seguintes descrevem como gerar uma tabela derivada baseada em SQL. Pode optar por criar uma tabela derivada baseada em LookML, também conhecida como tabela derivada nativa (NDT), como alternativa ao SQL.
-
Comece por configurar uma consulta de exploração.
Escolha os campos adequados, incluindo a medida que quer dimensionar.
No exemplo de utilização, a tabela Dados da análise detalhada apresenta a Receita total agrupada por Estado dos utilizadores e ID dos utilizadores:
-
Escolha Abrir em execução de SQL
no separador SQL da tabela Dados para abrir a consulta no execução de SQL:
-
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, tem de remover qualquer cláusula de limite de linhas no SQL da tabela derivada para garantir que todos os resultados pretendidos são incluídos na consulta.
Também pode escolher Obter LookML da tabela derivada no menu para copiar e colar manualmente o LookML gerado no seu projeto.
- No pop-up Adicionar ao projeto, selecione um nome de projeto no menu pendente Projeto, introduza um nome para o ficheiro de vista de tabela derivada e selecione Adicionar.
-
Agora que a tabela derivada está num ficheiro de visualização, pode criar uma medida que agregue a medida dimensionada. Por exemplo, agora 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 novamente se foi definida uma chave principal na tabela derivada.
- Junte-se à nova vista na exploração original (ou crie uma nova exploração) para poder criar consultas e conteúdo com os novos campos.
Conclusão
A atribuição de dimensões a medidas com tabelas derivadas do Looker desbloqueia novas capacidades e permite gerar mais estatísticas com os seus dados. Com a capacidade de agrupar por uma medida com dimensões, filtrar por ela numa cláusula WHERE (em vez de HAVING), criar tabelas dinâmicas com base nela e criar outras dimensões com base nela, pode levar as suas consultas do Explore e o conteúdo para a dimensão seguinte.
Visite a página de documentação Tabelas derivadas para mais informações sobre a criação e a utilização de tabelas derivadas, juntamente com considerações e sugestões de otimização do desempenho.