clave_extranjera

Uso

explore: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
Jerarquía
foreign_key
Valor predeterminado
Ninguna

Acepta
Un nombre de dimensión de Looker

Reglas especiales
  • Este campo espera un nombre de dimensión, no un nombre de columna de la tabla subyacente (aunque a veces son idénticos).
  • No se pueden usar foreign_key, sql_foreign_key y sql_on al mismo tiempo dentro del mismo join.
  • Exactamente una de las dimensiones de la vista unida debe definirse como la clave primaria de la vista mediante el parámetro primary_key

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.