Uso
join: view_name_2 {
relación: 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 de forma adecuada el tipo de relación para que Looker calcule con precisión las medidas.
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 en la vista user
de este ejemplo, la relación es de la exploración hasta la vista unida. Aquí se indica que puede haber muchos pedidos para un usuario.
Cuando se une una vista a una a través de otra vista, por ejemplo, cómo user_facts
se une a través de user
a order
en este ejemplo, la relación que se define es desde la vista intermedia (user
) hasta la vista final (user_facts
). En este ejemplo, se dice que hay un usuario por un registro de datos de usuario.
Los valores posibles para relationship
se describen en estas secciones de esta página:
uno_uno_uno
Si una fila de Explorar solo puede coincidir con una fila de la vista unida, la relación es one_to_one
.
Por ejemplo, una exploración llamada user
con una vista unida a dna
sería one_to_one
.
Una relación
one_to_one
requiere 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_many
omany_to_one
.
muchos_a_uno (valor predeterminado)
Si muchas filas de Explorar pueden coincidir con una fila de la vista unida, la relación es many_to_one
. Por ejemplo, una exploración order
con una vista unida user
sería many_to_one
.
uno_a_varios
Si una fila de Explorar puede coincidir con muchas filas de la vista unida, la relación es one_to_many
. Por ejemplo, una exploración llamada order
con una vista unida a item
sería one_to_many
.
muchos_a_muchos
Si muchas filas de Explorar pueden coincidir con muchas de la vista unida, la relación es many_to_many
. Por ejemplo, un objeto student
Explore con una vista unida class
podría ser many_to_many
si el esquema se diseñara como el siguiente ejemplo. En la práctica, las relaciones many-to-many
a menudo se evitan en el diseño de la base de datos de SQL, por lo que la mayoría de los modelos no necesitan many_to_many
.
Ejemplos
Declara la relación 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 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 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 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 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
}
}