Uso
explore: view_name {
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
Com relationship, é possível descrever a relação join entre as visualizações unidas. É importante definir corretamente o tipo de relacionamento 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 é unida diretamente a uma Análise, como a visualização user neste exemplo, a relação é da Análise para a visualização unida. Estamos dizendo que pode haver muitos pedidos para um usuário.
Quando uma visualização é unida a uma análise detalhada por outra visualização (como user_facts se une por user a order neste exemplo), a relação definida é de a visualização intermediária (user) para a visualização final (user_facts). Neste exemplo, estamos dizendo que há um usuário para um registro de fato do usuário.
Os valores possíveis para relationship estão descritos nestas seções desta página:
one_to_one
Se uma linha na análise só puder corresponder a uma linha na visualização unida, a relação será one_to_one.
Por exemplo, uma análise detalhada user com uma visualização mesclada user_facts seria one_to_one, já que ambas as tabelas têm uma linha por usuário.
Um relacionamento
one_to_oneexige 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_manyoumany_to_one.
many_to_one (valor padrão)
Se muitas linhas na Análise puderem corresponder a uma linha na visualização unida, a relação será many_to_one. Por exemplo, uma Análise order com uma visualização unida user seria many_to_one, porque pode haver vários pedidos por usuário.

one_to_many
Se uma linha na análise detalhada puder corresponder a muitas linhas na visualização unida, a relação será one_to_many. Por exemplo, uma análise order com uma visualização unida item seria one_to_many, porque um pedido pode conter vários itens.

many_to_many
Se muitas linhas na Análise puderem corresponder a muitas linhas na visualização unida, a relação será many_to_many. Por exemplo, uma análise detalhada student com uma visualização combinada class pode ser many_to_many se um estudante tiver várias turmas e uma turma tiver vários estudantes. Na prática, as relações many-to-many são evitadas no design de bancos de dados SQL. Por isso, a maioria dos modelos não precisa de many_to_many.

Exemplos
Declare a relação de user para dna como one_to_one:
explore: user {
join: dna {
sql_on: ${user.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Declare a relação de order para user como many_to_one:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
}
Declare a relação de order para item como one_to_many:
explore: order {
join: item {
sql_on: ${order.order_id} = ${item.order_id} ;;
relationship: one_to_many
}
}
Declare a relação de student para class como many_to_many:
explore: student {
join: class {
sql_on: ${student.student_id} = ${class.student_id} ;;
relationship: many_to_many
}
}
Declare a relação de 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
}
}