Nutzung
explore: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
|
Hierarchie
foreign_key |
Standardwert
Keine
Akzeptiert
Ein Looker-Dimensionsname
Besondere Regeln
|
Definition
Mit foreign_key wird eine Join-Beziehung zwischen einer Ansicht und dem zugehörigen Explore hergestellt. Looker vergleicht die Dimension, auf die mit foreign_key verwiesen wird, mit dem Primärschlüssel der verknüpften Ansicht. Sie legen den Primärschlüssel der zusammengeführten Ansicht fest, indem Sie primary_key für das Feld aktivieren, das als Primärschlüssel dient.
Eine Ansicht kann mit foreign_key direkt mit einem Explore verknüpft werden oder über eine zweite Ansicht, die bereits mit diesem Explore verknüpft ist.
Ein Beispiel für den ersten Fall, in dem eine Ansicht direkt mit dem Explore verknüpft wird, sieht so aus:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Angenommen, der Primärschlüssel von customer heißt id. Dann 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 dem Explore verknüpft ist, mit einem Explore verknüpft. 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 verbunden werden. Stattdessen muss sie über order verknüpft werden. Angenommen, die Primärschlüssel von order und customer haben den Namen id. Dann 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 das richtig funktioniert, haben wir beim Verknüpfen von customer anstelle von customer_id den vollständig qualifizierten Feldverweis order.customer_id verwendet. Wenn wir nur customer_id verwendet hätten, hätte Looker versucht, customer direkt mit order_items.customer_id zu verknüpfen, anstatt über order.customer_id.
Beispiele
Verbinden Sie die Ansicht mit dem Namen customer mit dem Explore mit dem Namen order, indem Sie den Primärschlüssel aus customer mit order.customer_id abgleichen:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Verknüpfen Sie die Ansicht mit dem Namen customer über die Ansicht mit dem Namen order mit dem Explore mit dem Namen order_items. Ordnen Sie den Primärschlüssel aus customer order.customer_id und den Primärschlüssel aus order order_items.order_id zu:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Verknüpfen Sie die Ansichten mit den Namen order und inventory_item mit dem Explore mit dem Namen order_items. Ordnen Sie den Primärschlüssel aus order order_items.order_id und den Primärschlüssel aus inventory_item order_items.inventory_id zu:
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 und nicht auf einen Spaltennamen verweisen.
Für den Parameter foreign_key kann nur ein Dimensionsname angegeben werden, nicht der Spaltenname in der zugrunde liegenden SQL-Datenbank. Oft sind Dimensionsname und Spaltenname identisch, was zu dem falschen Schluss führen kann, dass Spaltennamen verwendet werden können.
In Ansichten, die mit foreign_key verknüpft sind, muss ein Primärschlüssel definiert sein.
Damit foreign_key ordnungsgemäß 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 einzelne Dimension als Primärschlüssel definiert werden kann, können Sie foreign_key nicht mit Ansichten verwenden, die einen mehrspaltigen Primärschlüssel haben. In diesem Fall müssen Sie stattdessen sql_on verwenden.
Wichtige Punkte
foreign_key ist nicht die einzige Möglichkeit, in Looker zu verknüpfen
Einige Join-Beziehungen können nicht mit foreign_key hergestellt werden. Beispielsweise wird möglicherweise nicht der Primärschlüssel der verknüpften Ansicht verwendet oder es sind mehrere Bedingungen für den Join erforderlich. Verwenden Sie in diesen Fällen stattdessen sql_on.