clé_étranger

Utilisation

explorer: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
Hiérarchie
foreign_key
Valeur par défaut
Aucun

Acceptation
Un nom de dimension Looker

Règles spéciales
  • Ce champ attend un nom de dimension, pas un nom de colonne du tableau sous-jacent (bien qu'ils soient parfois identiques)
  • foreign_key, sql_foreign_key et sql_on ne peuvent pas être utilisés en même temps dans le même join
  • Une des dimensions exactes de la vue jointe doit être définie comme clé primaire de la vue à l'aide du paramètre primary_key.

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.