Uso
explore: view_name {
join: view_name_2 {
relationship: one_to_one
}
}
|
Jerarquía
relationship |
Valor predeterminado
many_to_one
Acepta
Una relación (many_to_one, many_to_many, one_to_many, one_to_one)
|
Definición
relationship te permite describir la relación join entre las vistas unidas. Es importante definir correctamente el tipo de relación para que Looker pueda calcular medidas precisas.
Para comprender la relación que se define, considera este ejemplo:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
join: user_facts {
sql_on: ${user.id} = ${user_facts.user_id} ;;
relationship: one_to_one
}
}
Cuando una vista se une directamente a una exploración, como la vista user en este ejemplo, la relación es de la exploración a la vista unida. Aquí indicamos que puede haber muchos pedidos para un usuario.
Cuando una vista se une a una exploración a través de otra vista, como en este ejemplo, en el que user_facts se une a través de user a order, la relación que se define es desde la vista intermedia (user) hasta la vista final (user_facts). En este ejemplo, decimos que hay un usuario para un registro de hechos del usuario.
Los valores posibles para relationship se describen en estas secciones de esta página:
one_to_one
Si una fila en Explorar solo puede coincidir con una fila en la vista combinada, la relación es one_to_one.
Por ejemplo, una exploración user con una vista unida user_facts sería one_to_one, ya que ambas tablas tienen una fila por usuario.
Una relación
one_to_onerequiere que no haya valores nulos en las claves primarias de las tablas. Si hay valores nulos en una o ambas claves primarias de las tablas, la relación esmany_to_manyomany_to_one.
many_to_one (valor predeterminado)
Si muchas filas en Explorar pueden coincidir con una fila en la vista combinada, la relación es many_to_one. Por ejemplo, una exploración order con una vista unida user sería many_to_one, ya que puede haber varios pedidos por usuario.

one_to_many
Si una fila en Explorar puede coincidir con muchas filas en la vista combinada, la relación es one_to_many. Por ejemplo, una exploración order con una vista unida item sería one_to_many, ya que un pedido puede contener varios artículos.

many_to_many
Si muchas filas en el Explorar pueden coincidir con muchas filas en la vista combinada, la relación es many_to_many. Por ejemplo, un Explorar student con una vista unida class podría ser many_to_many si un estudiante tiene varias clases y una clase tiene varios estudiantes. En la práctica, las relaciones many-to-many se suelen evitar en el diseño de bases de datos SQL, por lo que la mayoría de los modelos no necesitan many_to_many.

Ejemplos
Declara la relación de user a dna como one_to_one:
explore: user {
join: dna {
sql_on: ${user.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Declara la relación de order a user como many_to_one:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
}
Declara la relación de order a item como one_to_many:
explore: order {
join: item {
sql_on: ${order.order_id} = ${item.order_id} ;;
relationship: one_to_many
}
}
Declara la relación de student a class como many_to_many:
explore: student {
join: class {
sql_on: ${student.student_id} = ${class.student_id} ;;
relationship: many_to_many
}
}
Declara la relación de user a user_type como many_to_one:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
join: user_type {
sql_on: ${user.type_id} = ${user_type.id} ;;
relationship: many_to_one
}
}