Fremdschlüssel

Nutzung

Explore: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
Hierarchie
foreign_key
Standardwert
Keine

Akzeptiert
Name der Looker-Dimension

Sonderregeln
  • Für dieses Feld wird ein Dimensionsname und kein Spaltenname aus der zugrunde liegenden Tabelle erwartet (obwohl sie manchmal identisch sind).
  • foreign_key, sql_foreign_key und sql_on dürfen nicht gleichzeitig innerhalb derselben join verwendet werden
  • Genau eine der Dimensionen in der verknüpften Ansicht muss mit dem Parameter primary_key als Primärschlüssel der Ansicht definiert werden.

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.