Uso
join: view_name_2 {
relationship: one_to_one
}
}
Hierarquia
relationship |
Valor padrão
many_to_one Aceita
Um relacionamento (many_to_one , many_to_many , one_to_many , one_to_one )
|
Definição
O relationship
permite descrever a relação do join
entre as visualizações mescladas. É importante definir corretamente o tipo de relação para que o Looker calcule medidas precisas.
Para entender a relação que está sendo definida, considere este exemplo:
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
}
}
Quando uma visualização é integrada diretamente a uma exploração, como a visualização user
neste exemplo, a relação é daexploração àvisualização. Isso significa que pode haver vários pedidos para um usuário.
Quando uma visualização é unida a uma exploração em outra, por exemplo, a forma como user_facts
mescla com user
a order
neste exemplo, a relação definida é da visualização intermediária (user
) para a visualização final (user_facts
). Neste exemplo, dizemos que há um usuário para um registro de fato do usuário.
Os valores possíveis para relationship
são descritos nestas seções desta página:
um_para_um
Se uma linha em "Explorar" corresponder a apenas uma linha na visualização mesclada, a relação será one_to_one
.
Por exemplo, uma visualização user
Explorar com dna
seria one_to_one
.
Uma relação
one_to_one
requer que não haja valores nulos nas chaves primárias das tabelas. Se houver valores nulos em uma ou nas duas chaves primárias das tabelas, a relação serámany_to_many
oumany_to_one
.
Many_to_ONE (valor padrão)
Se muitas linhas em "Explorar" corresponderem a uma linha na visualização mesclada, a relação será many_to_one
. Por exemplo, uma exploração order
com uma visualização mesclada user
seria many_to_one
.
um para muitos
Se uma linha em "Explorar" corresponder a várias linhas na visualização mesclada, a relação será one_to_many
. Por exemplo, uma visualização order
Explorar com item
seria one_to_many
.
muitas_para_muitas
Se muitas linhas em "Explorar" corresponderem a muitas linhas na visualização mesclada, a relação será many_to_many
. Por exemplo, uma exploração student
com uma visualização mesclada class
pode ser many_to_many
se o esquema foi projetado como o próximo exemplo. Na prática, os relacionamentos many-to-many
geralmente são evitados no design do banco de dados SQL, portanto, a maioria dos modelos não precisa de many_to_many
.
Examples
Declare o relacionamento user
para dna
como one_to_one
:
explore: user {
join: dna {
sql_on: ${user.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Declare o relacionamento order
para user
como many_to_one
:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
}
Declare o relacionamento order
para item
como one_to_many
:
explore: order {
join: item {
sql_on: ${order.order_id} = ${item.order_id} ;;
relationship: one_to_many
}
}
Declare o relacionamento student
para class
como many_to_many
:
explore: student {
join: class {
sql_on: ${student.student_id} = ${class.student_id} ;;
relationship: many_to_many
}
}
Declare o relacionamento user
para 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
}
}