relationship

Uso

explore: view_name {
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 es many_to_many o many_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
  }
}