Utilisation
join: view_name_2 {
foreign_key: dimension_name
}
}
Hiérarchie
foreign_key |
Valeur par défaut
AucunAcceptation
Un nom de dimension LookerRègles spéciales
|
Définition
foreign_key
établit une relation de jointure entre une vue et sa fonction Explorer. Looker fait correspondre la dimension référencée par foreign_key
avec la clé primaire de la vue jointe. Pour définir la clé primaire de la vue jointe, activez primary_key
pour le champ qui sert de clé primaire.
Vous pouvez associer une vue directement à une exploration lorsque vous utilisez foreign_key
. Vous pouvez également utiliser une deuxième vue déjà associée à cette exploration.
Voici un exemple du premier cas dans lequel une vue est directement jointe à la fonction Explorer:
explore: order {
join: customer {
foreign_key: customer_id
}
}
En supposant que la clé primaire de customer
s'appelle id
, le code SQL généré par Looker est le suivant:
SELECT ...
FROM order
LEFT JOIN customer
ON order.customer_id = customer.id
Dans le second cas, une vue est associée à une exploration via une vue intermédiaire déjà associée à cette exploration. Voici un exemple:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Ici, customer
ne peut pas être directement associé à order_items
. À la place, vous devez le joindre via order
. En supposant que les clés primaires de order
et de customer
soient nommées id
, le code SQL généré par Looker est le suivant:
SELECT ...
FROM order_items
LEFT JOIN order
ON order_items.order_id = order.id
LEFT JOIN customer
ON order.customer_id = customer.id
Pour que cela fonctionne correctement, vous pouvez constater que nous avons utilisé la référence order.customer_id
du champ d'application complet lorsque nous avons joint customer
au lieu de simplement customer_id
. Si nous n'avions utilisé que customer_id
, Looker aurait tenté de joindre customer
directement à order_items.customer_id
au lieu de order.customer_id
.
Examples
Associez la vue customer
à la vue Explorer nommée order
en associant la clé primaire de customer
à order.customer_id
:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Associez la vue customer
à la vue Explorer order_items
via la vue order
. Faites correspondre la clé primaire de customer
avec order.customer_id
et la clé primaire de order
avec order_items.order_id
:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Rejoignez les vues order
et inventory_item
dans l'onglet "Explorer" intitulé order_items
. Faites correspondre la clé primaire de order
avec order_items.order_id
et la clé primaire de inventory_item
avec order_items.inventory_id
:
explore: order_items {
join: order {
foreign_key: order_id
}
join: inventory_item {
foreign_key: inventory_id
}
}
Difficultés courantes
foreign_key
doit faire référence à un nom de dimension, et non à un nom de colonne
Le paramètre foreign_key
n'accepte que le nom d'une dimension, pas le nom de colonne dans votre base de données SQL sous-jacente. Souvent, le nom de la dimension et le nom de la colonne sont identiques, ce qui peut conduire à de fausses conclusions.
Une clé primaire doit être définie dans les vues associées à foreign_key
Pour que foreign_key
fonctionne correctement, l'une des dimensions de la vue jointe doit être définie comme clé primaire de cette vue. Une clé primaire est définie via le paramètre primary_key
.
Étant donné qu'une seule dimension peut être définie comme clé primaire, vous ne pouvez pas utiliser foreign_key
avec des vues comportant une clé primaire à plusieurs colonnes. Dans ce cas, vous devez utiliser sql_on
.
Bon à savoir
foreign_key
n'est pas la seule façon de rejoindre Looker
Certaines relations de jointure ne peuvent pas être établies avec foreign_key
. Par exemple, la jointure peut ne pas utiliser la clé primaire de la vue jointe ou nécessiter que plusieurs conditions soient incluses dans la jointure. Dans ce cas, utilisez plutôt sql_on
.