Nutzung
explore: 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, den Typ der Beziehung richtig zu definieren, damit Looker genaue Messwerte berechnen kann.
Das folgende Beispiel veranschaulicht die Beziehung, die definiert wird:
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 einem Explore verknüpft ist, wie die Ansicht user in diesem Beispiel, ist die Beziehung vom Explore zur verknüpften Ansicht. Hier wird davon ausgegangen, dass es viele Bestellungen für einen Nutzer geben kann.
Wenn eine Ansicht über eine andere Ansicht mit einem Explore verknüpft wird, wie z. B. user_facts über user mit order in diesem Beispiel, wird die Beziehung von der Zwischenansicht (user) zu der endgültigen Ansicht (user_facts) definiert. In diesem Beispiel wird angegeben, dass es einen Nutzer für einen Nutzerfaktendatensatz gibt.
Die möglichen Werte für relationship werden in den folgenden Abschnitten dieser Seite beschrieben:
one_to_one
Wenn eine Zeile im Explore nur einer Zeile in der verknüpften Ansicht entsprechen kann, ist die Beziehung one_to_one.
Ein user-Explore mit einer eingebundenen user_facts-Ansicht wäre beispielsweise one_to_one, da beide Tabellen eine Zeile pro Nutzer haben.
Für eine
one_to_one-Beziehung dürfen die Primärschlüssel der Tabellen keine Nullwerte enthalten. Wenn in einem oder beiden Primärschlüsseln der Tabellen Nullwerte vorhanden sind, ist die Beziehung entwedermany_to_manyodermany_to_one.
many_to_one (Standardwert)
Wenn viele Zeilen im Explore mit einer Zeile in der verknüpften Ansicht übereinstimmen können, ist die Beziehung many_to_one. Ein order-Explore mit einer verknüpften Ansicht user wäre beispielsweise many_to_one, da es mehrere Bestellungen pro Nutzer geben kann.

one_to_many
Wenn eine Zeile im Explore mit vielen Zeilen in der verknüpften Ansicht übereinstimmen kann, ist die Beziehung one_to_many. Ein order-Explore mit einer verknüpften item-Ansicht wäre beispielsweise one_to_many, da eine Bestellung mehrere Artikel enthalten kann.

many_to_many
Wenn viele Zeilen im Explore mit vielen Zeilen in der verknüpften Ansicht übereinstimmen können, ist die Beziehung many_to_many. Ein student-Explore mit einer class-Join-Ansicht könnte many_to_many sein, wenn ein Schüler oder Student mehrere Kurse und ein Kurs mehrere Schüler oder Studenten hat. In der Praxis werden many-to-many-Beziehungen beim Design von SQL-Datenbanken oft vermieden, sodass die meisten Modelle keine many_to_many benötigen.

Beispiele
Deklarieren Sie die Beziehung zwischen user und dna als one_to_one:
explore: user {
join: dna {
sql_on: ${user.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Deklarieren Sie die Beziehung zwischen order und user als many_to_one:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
}
Deklarieren Sie die Beziehung zwischen order und 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 zwischen student und 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 zwischen user und 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
}
}