Nutzung
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 user
Ansicht 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 entwedermany_to_many
odermany_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
}
}