As mesclagens permitem conectar visualizações diferentes para que você possa analisar dados de mais de uma visualização ao mesmo tempo e ver como as diferentes partes dos dados se relacionam.
Por exemplo, seu banco de dados pode incluir as tabelas order_items, orders e users. É possível usar mesclagens para analisar dados de todas as tabelas ao mesmo tempo. Esta página explica as mesclagens no LookML, incluindo parâmetros de mesclagem específicos e padrões de mesclagem.
As mesclagens começam com uma análise
As junções são definidas no arquivo modelo para estabelecer a relação entre uma Análise e uma visualização. As mesclagens conectam uma ou mais visualizações a uma única análise, diretamente ou por outra visualização mesclada.
Considere duas tabelas de banco de dados: order_items e orders. Depois de gerar visualizações para as duas tabelas, declare uma ou mais delas no parâmetro explore no arquivo de modelo:
explore: order_items { ... }
Quando você executa uma consulta na análise order_items, order_items aparece na cláusula FROM do SQL gerado:
SELECT ...
FROM order_items
É possível mesclar mais informações à análise order_items. Por exemplo, você pode usar o seguinte exemplo de LookML para mesclar a visualização orders à análise order_items:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
}
O LookML mostrado anteriormente realiza duas ações. Primeiro, é possível ver campos de orders e order_items no seletor de campos da análise:

Em segundo lugar, o LookML descreve como mesclar orders e order_items. Esse LookML seria convertido no seguinte SQL:
SELECT ...
FROM order_items
LEFT JOIN orders
ON order_items.order_id = orders.id
Esses parâmetros do LookML são descritos com mais detalhes nas seções a seguir.
Parâmetros de mesclagem
Quatro parâmetros principais são usados para mesclar: join, type, relationship e sql_on.
Etapa 1: iniciar a análise
Primeiro, crie a análise order_items:
explore: order_items { ... }
Etapa 2: join
Para mesclar uma tabela, primeiro declare-a em uma visualização. Neste exemplo, suponha que orders seja uma visualização já existente no seu modelo.
Em seguida, use o parâmetro join para declarar que você quer mesclar a visualização orders à análise order_items:
explore: order_items {
join: orders { ... }
}
Etapa 3: type
Considere qual tipo de mesclagem realizar. O Looker oferece suporte a LEFT JOIN, INNER JOIN, FULL OUTER JOIN e CROSS JOIN. Eles correspondem aos valores de parâmetro type de left_outer, inner, full_outer e cross.
explore: order_items {
join: orders {
type: left_outer
}
}
O valor padrão de type é left_outer.
Etapa 4: relationship
Defina uma relação de mesclagem entre a análise order_items e a visualização orders. Declarar corretamente a relação de uma mesclagem é importante para que o Looker calcule medidas precisas. A relação é definida da análise order_items para a visualização orders. As opções possíveis são one_to_one, many_to_one, one_to_many e many_to_many.
Neste exemplo, pode haver muitos itens de pedido para um único pedido. A relação da análise order_items com a visualização orders é many_to_one:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
}
}
Se você não incluir um parâmetro relationship na mesclagem, o Looker vai usar many_to_one como padrão.
Para mais dicas sobre como definir o parâmetro relationship corretamente para uma mesclagem, consulte Como definir o parâmetro relationship corretamente.
Etapa 5: sql_on
Declare como mesclar as tabelas order_items e orders com o parâmetro sql_on ou foreign_key.
O parâmetro sql_on é equivalente à cláusula ON no SQL gerado para uma consulta. Com esse parâmetro, é possível declarar quais campos precisam ser correspondidos para realizar a mesclagem:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
}
Também é possível escrever mesclagens mais complexas. Por exemplo, talvez você queira mesclar apenas pedidos com id maior que 1.000:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} AND ${orders.id} > 1000 ;;
}
}
Consulte a documentação dos operadores de substituição para saber mais sobre a sintaxe ${ ... } nesses exemplos.
Etapa 6: testes
Teste se essa mesclagem está funcionando conforme o esperado acessando a análise Itens do pedido. Você vai encontrar campos de order_items e orders.

Consulte Testar os campos na análise para saber mais sobre como testar mudanças do LookML em uma análise.
Mesclar por outra visualização
É possível mesclar uma visualização a uma análise por outra visualização. No exemplo de parâmetros de mesclagem, você mesclou orders a order_items usando o campo order_id. Também podemos mesclar os dados de uma visualização chamada users à análise order_items, mesmo que elas não compartilhem um campo comum. Isso pode ser feito mesclando por a visualização orders.
Use o sql_on parâmetro ou o foreign_key parâmetro para mesclar a visualização users à visualização orders, em vez da análise order_items. Para isso, defina corretamente o escopo do campo de orders como orders.user_id.
Confira um exemplo usando o parâmetro sql_on:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
join: users {
type: left_outer
relationship: many_to_one
sql_on: ${orders.user_id} = ${users.id} ;;
}
}
Mesclar uma visualização mais de uma vez
Uma visualização users contém dados de compradores e vendedores. Para mesclar dados dessa visualização em order_items, mas fazer isso separadamente para compradores e vendedores, é possível mesclar users duas vezes, com nomes diferentes, usando o parâmetro from.
O parâmetro from permite especificar qual visualização usar em uma mesclagem, ao mesmo tempo em que atribui um nome exclusivo à mesclagem. Por exemplo:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
join: buyers {
from: users
type: left_outer
relationship: many_to_one
sql_on: ${orders.buyer_id} = ${buyers.id} ;;
}
join: sellers {
from: users
type: left_outer
relationship: many_to_one
sql_on: ${orders.seller_id} = ${sellers.id} ;;
}
}
Nesse caso, apenas os dados do comprador são mesclados como buyers, enquanto apenas os dados do vendedor são mesclados como sellers.
Observação: a visualização users agora precisa ser referenciada pelos nomes de alias buyers e sellers na mesclagem.
Limitar campos de uma mesclagem
O parâmetro fields permite especificar quais campos são extraídos de uma mesclagem para uma análise. Por padrão, todos os campos de uma visualização são extraídos quando mesclados. No entanto, talvez você queira extrair apenas um subconjunto de campos.
Por exemplo, quando orders é mesclado a order_items, talvez você queira extrair apenas os campos shipping e tax da mesclagem:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
fields: [shipping, tax]
}
}
Também é possível referenciar um conjunto de campos, como [set_a*]. Cada conjunto é definido em uma visualização usando o set parâmetro. Suponha que você tenha o seguinte conjunto definido na visualização orders:
set: orders_set {
fields: [created_date, shipping, tax]
}
É possível extrair apenas esses três campos ao mesclar orders a order_items:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
fields: [orders_set*]
}
}
Conjuntos simétricos
O Looker usa um recurso chamado "conjuntos simétricos" para calcular agregações (como somas e médias) corretamente, mesmo quando as mesclagens resultam em um fanout. Os conjuntos simétricos são descritos com mais detalhes em Noções básicas sobre conjuntos simétricos. O problema de divergência que os agregados simétricos resolvem é explicado na postagem na Comunidade O problema de divergências SQL.
Chaves primárias obrigatórias
Para que as medidas (agregações) sejam extraídas das mesclagens, é necessário definir chaves primárias em todas as visualizações envolvidas na mesclagem.
Para fazer isso, adicione o primary_key parâmetro à definição do campo de chave primária em cada visualização:
dimension: id {
type: number
primary_key: yes
}
Dialetos SQL compatíveis
Para que o Looker ofereça suporte a conjuntos simétricos no seu projeto do Looker, o dialeto do banco de dados também precisa oferecer suporte a eles. A tabela a seguir mostra quais dialetos oferecem suporte a conjuntos simétricos na versão mais recente do Looker:
| Dialeto | Compatível? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13.x - 0.17.x | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
Se o dialeto não oferecer suporte a conjuntos simétricos, tenha cuidado ao executar mesclagens no Looker, porque alguns tipos de mesclagens podem resultar em agregações imprecisas (como somas e médias). Esse problema e as soluções alternativas são descritos em detalhes na postagem na Comunidade O problema de fanouts SQL.
Saiba mais sobre mesclagens
Para saber mais sobre os parâmetros de mesclagem no LookML, consulte a documentação de referência de mesclagem.