Uso
join: view_name_2 {
foreign_key: dimension_name
}
}
Hierarquia
foreign_key |
Valor padrão
NenhumaAceita
Um nome de dimensão do LookerRegras especiais
|
Definição
O foreign_key
estabelece uma relação de mesclagem entre uma visualização e o respectivo Explore. O Looker faz a correspondência da dimensão referenciada por foreign_key
com a chave primária da visualização mesclada. Para definir a chave primária da visualização mesclada, ative primary_key
no campo que serve como chave primária.
Uma visualização pode ser mesclada diretamente a uma exploração ao usar foreign_key
ou pode ser mesclada com uma segunda visualização que já esteja associada a ela.
Veja um exemplo do primeiro caso em que uma visualização é mesclada diretamente ao recurso Explorar:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Supondo que a chave primária de customer
foi denominada id
, o SQL gerado pelo Looker seria:
SELECT ...
FROM order
LEFT JOIN customer
ON order.customer_id = customer.id
No segundo caso, uma visualização é mesclada a uma exploração por uma visualização intermediária que já está associada a ela. Veja um exemplo:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Aqui, customer
não pode ser vinculado diretamente a order_items
. Em vez disso, ele precisa ser mesclado por order
. Supondo que as chaves primárias de order
e customer
foram chamadas id
, o SQL gerado pelo Looker seria:
SELECT ...
FROM order_items
LEFT JOIN order
ON order_items.order_id = order.id
LEFT JOIN customer
ON order.customer_id = customer.id
Para que isso funcione corretamente, é possível ver que usamos a referência de campo com escopo completo order.customer_id
ao mesclar customer
, em vez de apenas customer_id
. Se tivéssemos usado apenas customer_id
, o Looker tentaria vincular customer
diretamente a order_items.customer_id
em vez de order.customer_id
.
Examples
Junte a visualização chamada customer
ao Explorar chamado order
, associando a chave primária de customer
ao order.customer_id
:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Mescle a visualização customer
ao Explorar chamado order_items
pela visualização chamada order
. Combine a chave primária do customer
com o order.customer_id
e a chave primária do order
com order_items.order_id
:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Mescle as visualizações order
e inventory_item
ao order_items
. Combine a chave primária do order
com o order_items.order_id
e a chave primária do inventory_item
com order_items.inventory_id
:
explore: order_items {
join: order {
foreign_key: order_id
}
join: inventory_item {
foreign_key: inventory_id
}
}
Desafios comuns
foreign_key
precisa fazer referência a um nome de dimensão, não a um nome de coluna
O parâmetro foreign_key
só recebe um nome de dimensão, não o nome da coluna no banco de dados SQL subjacente. Muitas vezes, os nomes da coluna e da dimensão são idênticos, o que pode levar à conclusão de que se pode usar nomes de colunas.
Uma chave primária precisa ser definida em visualizações mescladas com foreign_key
.
Para que foreign_key
funcione corretamente, uma das dimensões na visualização mesclada precisa ser definida como a chave primária dessa visualização. Uma chave primária é definida pelo parâmetro primary_key
.
Como apenas uma dimensão pode ser definida como chave primária, não é possível usar foreign_key
com visualizações que tenham uma chave primária de várias colunas. Nesse caso, você precisará usar o sql_on
.
Informações úteis
foreign_key
não é a única maneira de participar do Looker
Algumas relações de mesclagem não podem ser estabelecidas com foreign_key
. Por exemplo, a mesclagem pode não usar a chave primária da visualização mesclada ou pode exigir que várias condições façam parte da mesclagem. Nessas situações, use sql_on
.