relationship

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

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 ou many_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
  }
}