Nutzung
join: view_name_2 {
foreign_key: dimension_name
}
}
Hierarchie
foreign_key |
Standardwert
KeineAkzeptiert
Name der Looker-DimensionSonderregeln
|
Definition
foreign_key
stellt eine Join-Beziehung zwischen einer Ansicht und ihrer Funktion „Erkunden“ her. Looker gleicht die Dimension, auf die foreign_key
verweist, mit dem Primärschlüssel der verknüpften Ansicht ab. Sie legen den Primärschlüssel der verbundenen Ansicht fest, indem Sie primary_key
für das Feld aktivieren, das als Primärschlüssel dient.
Eine Ansicht kann direkt mit einem explorativen Analysetool verknüpft werden, wenn foreign_key
verwendet wird, oder über eine zweite Ansicht, die bereits mit diesem explorativen Analysetool verknüpft ist.
Hier ein Beispiel für den ersten Fall, bei dem eine Ansicht direkt mit dem Tab „Entdecken“ verknüpft wurde:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Unter der Annahme, dass der Primärschlüssel von customer
den Namen id
hat, würde der von Looker generierte SQL-Code so aussehen:
SELECT ...
FROM order
LEFT JOIN customer
ON order.customer_id = customer.id
Im zweiten Fall wird eine Ansicht über eine Zwischenansicht, die bereits mit dieser Funktion verknüpft ist, mit einer anderen Datenansicht verknüpft. Hier ein Beispiel:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Hier kann customer
nicht direkt mit order_items
verknüpft werden. Sie muss stattdessen über order
verknüpft werden. Angenommen, die Primärschlüssel von order
und customer
haben den Namen id
erhalten, würde der von Looker generierte SQL-Code so aussehen:
SELECT ...
FROM order_items
LEFT JOIN order
ON order_items.order_id = order.id
LEFT JOIN customer
ON order.customer_id = customer.id
Damit dies richtig funktioniert, sehen Sie, dass wir beim Verbinden von customer
statt customer_id
einfach den vollständig referenzierten Feldverweis order.customer_id
verwendet haben. Hätten wir nur customer_id
verwendet, hätte Looker versucht, customer
statt über order.customer_id
direkt mit order_items.customer_id
zu verbinden.
Beispiele
Verknüpfen Sie die Ansicht customer
mit dem Namen „order
“. Vergleichen Sie dazu den Primärschlüssel von customer
mit order.customer_id
:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Verbinden Sie die Ansicht namens customer
mit der Ansicht order_items
über die Ansicht order
. Gleichen Sie den Primärschlüssel von customer
mit order.customer_id
und den Primärschlüssel von order
mit order_items.order_id
ab:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Verbinden Sie die Ansichten order
und inventory_item
mit dem Tab „Erkunden“ mit dem Namen order_items
. Gleichen Sie den Primärschlüssel von order
mit order_items.order_id
und den Primärschlüssel von inventory_item
mit order_items.inventory_id
ab:
explore: order_items {
join: order {
foreign_key: order_id
}
join: inventory_item {
foreign_key: inventory_id
}
}
Häufige Herausforderungen
foreign_key
muss auf einen Dimensionsnamen verweisen, nicht auf einen Spaltennamen
Für den Parameter foreign_key
wird nur der Name der Dimension und nicht der Spaltenname in der zugrunde liegenden SQL-Datenbank verwendet. Häufig sind der Dimensionsname und der Spaltenname identisch. Das kann zu der falschen Schlussfolgerung führen, dass Spaltennamen verwendet werden können.
In Ansichten, die mit foreign_key
verknüpft sind, muss ein Primärschlüssel definiert werden
Damit foreign_key
richtig funktioniert, muss eine der Dimensionen in der verknüpften Ansicht als Primärschlüssel dieser Ansicht definiert sein. Ein Primärschlüssel wird über den Parameter primary_key
definiert.
Da nur eine Dimension als Primärschlüssel festgelegt werden kann, können Sie foreign_key
nicht mit Ansichten verwenden, die einen Primärschlüssel mit mehreren Spalten haben. In diesem Fall müssen Sie stattdessen sql_on
verwenden.
Wichtige Informationen
foreign_key
ist nicht die einzige Möglichkeit, in Looker teilzunehmen
Einige Join-Beziehungen können nicht mit foreign_key
hergestellt werden. Für den Join kann beispielsweise nicht der Primärschlüssel der verknüpften Ansicht verwendet werden oder es kann erforderlich sein, dass mehrere Bedingungen Teil des Joins sind. Verwenden Sie stattdessen sql_on
.