Uso
explore: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
|
Hierarquia
foreign_key |
Valor padrão
Nenhum
Aceita
Um nome de dimensão do Looker
Regras especiais
|
Definição
foreign_key estabelece uma relação de junção entre uma visualização e a Análise dela. O Looker corresponde à dimensão referenciada por foreign_key com a chave primária da visualização unida. Para definir a chave primária da visualização unida, ative primary_key no campo que serve como chave primária.
Uma visualização pode ser combinada diretamente com uma Análise ao usar foreign_key ou por uma segunda visualização que já está combinada com essa Análise.
Um exemplo do primeiro caso, em que uma visualização é unida diretamente à análise detalhada, tem esta aparência:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Supondo que a chave primária de customer tenha sido chamada de 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 é unida a uma Análise por uma visualização intermediária que já está unida a essa Análise. Por exemplo:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Aqui, customer não pode ser unido diretamente a order_items. Em vez disso, ele precisa ser unido por order. Supondo que as chaves primárias de order e customer tenham sido chamadas de 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, usamos a referência de campo totalmente qualificada order.customer_id ao unir customer, em vez de apenas customer_id. Se tivéssemos usado apenas customer_id, o Looker teria tentado unir customer diretamente a order_items.customer_id em vez de usar order.customer_id.
Exemplos
Faça a junção da visualização chamada customer à análise detalhada chamada order combinando a chave primária de customer com order.customer_id:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Faça a junção da visualização chamada customer à Análise chamada order_items usando a visualização order. Faça a correspondência da chave primária de customer com order.customer_id e da chave primária de order com order_items.order_id:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Junte as visualizações chamadas order e inventory_item à Análise chamada order_items. Faça a correspondência da chave primária de order com order_items.order_id e da chave primária de 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 usa apenas um nome de dimensão, não o nome da coluna no banco de dados SQL subjacente. Muitas vezes, o nome da dimensão e o nome da coluna são idênticos, o que pode levar à conclusão errada de que os nomes das colunas podem ser usados.
Uma chave primária precisa ser definida nas visualizações unidas com foreign_key
Para que foreign_key funcione corretamente, uma das dimensões na visualização unida 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 têm uma chave primária de várias colunas. Nesse caso, use sql_on.
Informações importantes
foreign_key não é a única maneira de participar do Looker
Não é possível estabelecer algumas relações de junção com foreign_key. Por exemplo, a junção pode não usar a chave primária da visualização unida ou exigir que várias condições façam parte dela. Nesses casos, use sql_on.