relationship

Nutzung

Entdecken: view_name {
join: view_name_2 {
relationship: one_to_one
}
}
Hierarchie
relationship
Standardwert
many_to_one

Akzeptiert
Eine Beziehung (many_to_one, many_to_many, one_to_many, one_to_one)

Definition

Mit relationship können Sie die join-Beziehung zwischen verknüpften Ansichten beschreiben. Es ist wichtig, die Art der Beziehung richtig zu definieren, damit Looker genaue Messwerte berechnen kann.

Betrachten Sie das folgende Beispiel, um die definierte Beziehung zu verstehen:

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

Wenn eine Ansicht direkt mit einer Erkundung verknüpft wird, wie die userAnsicht in diesem Beispiel, ist die Beziehung vonder Erkundung bis der verknüpften Ansicht. Wir sagen hier, dass es viele Bestellungen für einen Nutzer geben könnte.

Wenn eine Ansicht mit einer anderen Ansicht verknüpft ist, z. B. wie in diesem Beispiel user_facts über user mit order verknüpft wird, wird die Beziehung von der Zwischenansicht (user) zur letzten Ansicht (user_facts) definiert.

Die möglichen Werte für relationship werden in den folgenden Abschnitten auf dieser Seite beschrieben:

eins zu eins

Wenn eine Zeile im Bereich „Erkunden“ nur einer Zeile der verknüpften Ansicht entsprechen kann, lautet die Beziehung one_to_one. Eine „user“-Erkundung mit einer dna-Verknüpfung, die der Ansicht beigetreten ist, wäre beispielsweise one_to_one.

Eine one_to_one-Beziehung erfordert, dass in den Primärschlüsseln der Tabellen keine Nullwerte vorhanden sind. Wenn in einem oder beiden Primärschlüsseln der Tabellen Nullwerte vorhanden sind, ist die Beziehung entweder many_to_many oder many_to_one.

Many_to_one (Standardwert)

Wenn viele Zeilen im Bereich „Erkunden“ mit einer Zeile in der verknüpften Ansicht übereinstimmen können, lautet die Beziehung many_to_one. Eine „order“-Erkundung mit einer user-Verknüpfung ist beispielsweise many_to_one.

eins zu vielen

Wenn eine Zeile im Bereich „Erkunden“ mit vielen Zeilen in der verknüpften Ansicht übereinstimmen kann, lautet die Beziehung one_to_many. Eine Ansicht vom Typ „order“ mit einer verknüpften item wäre beispielsweise one_to_many.

vielen_zu_vielen

Wenn viele Zeilen im Bereich „Erkunden“ mit vielen Zeilen in der verknüpften Ansicht übereinstimmen können, lautet die Beziehung many_to_many. Beispielsweise könnte eine student-explorative Datenanalyse mit einer verbundenen class-Ansicht many_to_many sein, wenn das Schema wie im nächsten Beispiel konzipiert wurde. In der Praxis werden many-to-many-Beziehungen im SQL-Datenbankdesign häufig vermieden, sodass die meisten Modelle many_to_many nicht benötigen.

Beispiele

Deklarieren Sie die Beziehung von user zu dna als one_to_one:

explore: user {
  join: dna {
    sql_on: ${user.dna_id} = ${dna.id} ;;
    relationship: one_to_one
  }
}

Deklarieren Sie die Beziehung von order zu user als many_to_one:

explore: order {
  join: user {
    sql_on: ${order.user_id} = ${user.id} ;;
    relationship: many_to_one
  }
}

Deklarieren Sie die Beziehung von order zu item als one_to_many:

explore: order {
  join: item {
    sql_on: ${order.order_id} = ${item.order_id} ;;
    relationship: one_to_many
  }
}

Deklarieren Sie die Beziehung von student zu class als many_to_many:

explore: student {
  join: class {
    sql_on: ${student.student_id} = ${class.student_id} ;;
    relationship: many_to_many
  }
}

Deklarieren Sie die Beziehung von user zu user_type als 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
  }
}