Uso
join: view_name_2 {
foreign_key: dimension_name
}
}
Jerarquía
foreign_key |
Valor predeterminado
NingunaAcepta
Un nombre de dimensión de LookerReglas especiales
|
Definición
foreign_key
establece una relación de unión entre una vista y su elemento Explorar. Looker hace coincidir la dimensión a la que hace referencia foreign_key
con la clave primaria de la vista unida. Para configurar la clave primaria de la vista unida, activa primary_key
en el campo que funciona como clave primaria.
Una vista se puede unir directamente a un elemento Explorar cuando se usa foreign_key
o se puede unir mediante una segunda vista que ya esté unida a ese elemento.
Un ejemplo del primer caso, en el que una vista se une directamente a Explorar, se ve de la siguiente manera:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Suponiendo que la clave primaria de customer
se llamaba id
, el SQL que generó Looker sería el siguiente:
SELECT ...
FROM order
LEFT JOIN customer
ON order.customer_id = customer.id
En el segundo caso, una vista se une a Explorar mediante una vista intermedia que ya está unida a esa. Un ejemplo sería:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Aquí, customer
no se puede unir directamente a order_items
. En cambio, debe unirse mediante order
. Suponiendo que las claves primarias de order
y customer
se llamaran id
, el SQL que generó Looker sería el siguiente:
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 esto funcione de manera correcta, puedes ver que usamos la referencia de campo con alcance completo order.customer_id
cuando te uniste a customer
, en lugar de solo customer_id
. Si solo hubiéramos usado customer_id
, Looker habría intentado unirse a customer
directamente a order_items.customer_id
en lugar de hacerlo a través de order.customer_id
.
Ejemplos
Únete a la vista llamada customer
con la exploración llamada order
. Para ello, haz coincidir la clave primaria de customer
con order.customer_id
:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Únete a la vista llamada customer
en la exploración llamada order_items
mediante la vista order
. Haz coincidir la clave primaria de customer
con order.customer_id
y la clave primaria de order
con order_items.order_id
:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Une las vistas llamadas order
y inventory_item
a la pestaña Explorar order_items
. Haz coincidir la clave primaria de order
con order_items.order_id
y la clave primaria de inventory_item
con order_items.inventory_id
:
explore: order_items {
join: order {
foreign_key: order_id
}
join: inventory_item {
foreign_key: inventory_id
}
}
Desafíos habituales
foreign_key
debe hacer referencia a un nombre de dimensión, no a un nombre de columna
El parámetro foreign_key
solo toma un nombre de dimensión, no el nombre de la columna en tu base de datos SQL subyacente. A menudo, el nombre de la dimensión y el nombre de la columna son idénticos, lo que puede llevar a la conclusión falsa de que se pueden usar nombres de columna.
Se debe definir una clave primaria en las vistas unidas a foreign_key
.
Para que foreign_key
funcione correctamente, una de las dimensiones de la vista unida debe definirse como la clave primaria de esa vista. Una clave primaria se define a través del parámetro primary_key
.
Dado que solo se puede definir una dimensión como clave primaria, no puedes usar foreign_key
con vistas que tengan una clave primaria de varias columnas. En ese caso, deberás usar sql_on
en su lugar.
Qué debes saber
foreign_key
no es la única forma de unirse a Looker
Algunas relaciones de unión no se pueden establecer con foreign_key
. Por ejemplo, la unión no puede usar la clave primaria de la vista unida o puede requerir que varias condiciones sean parte de la unión. En estas situaciones, usa sql_on
en su lugar.