Utilisation
always_join: [
view_name,
view_name,
...
]
}
Hiérarchie
always_join |
Valeur par défaut
AucunAcceptation
Crochets contenant une liste de noms de vues séparés par une virguleRègles spéciales
Vous devez associer une vue à explore avant de l'utiliser dans always_join
|
Définition
always_join
force l'inclusion d'une ou de plusieurs jointures dans le code SQL généré par Looker, même si l'utilisateur n'a pas sélectionné de champ dans cette vue jointe. Plusieurs jointures peuvent être requises à l'aide d'une liste d'éléments séparés par une virgule, comme [view_name_a, view_name_b, etc]
.
Lorsque Looker génère le SQL pour une requête, il tente de créer le SQL le plus propre possible et n'utilise que les jointures nécessaires aux champs sélectionnés par un utilisateur. Avec always_join
, vous pouvez forcer les jointures à se produire dans tous les cas.
always_join
peut être utile lorsqu'une jointure est exécutée avec le paramètre type
et que la jointure n'est pas une LEFT JOIN
. Dans ce cas, la jointure peut être essentielle pour limiter correctement les lignes renvoyées.
Examples
Assurez-vous que member
est toujours associé à event
, même si l'utilisateur ne choisit pas de champ dans member
. Cela permet de limiter les résultats aux seuls événements générés par les membres:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
Assurez-vous que member
et payment
sont toujours associés à event
, même si l'utilisateur ne choisit pas de champ dans l'une de ces vues. Cela permet de limiter les résultats aux seuls événements générés par les membres pour lesquels ils ont déjà payé:
explore: event {
always_join: [member, payment]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
join: payment {
sql_on: ${member.payment_id} = ${payment.id} ;;
type: inner
}
}
Difficultés courantes
Une vue doit être jointe à une exploration pour qu'elle puisse être référencée dans always_join
Pour placer une vue dans always_join
, assurez-vous qu'elle est associée à l'explorateur dans lequel always_join
est utilisée. Par exemple, cela ne fonctionnera pas:
explore: event {
always_join: [member]
}
Ici, la vue member
n'a pas été associée à event
. Vous ne pouvez donc pas l'utiliser dans always_join
.
Bon à savoir
Si possible, n'appliquez pas de logique métier dans les jointures
L'approche Looker standard pour la jointure consiste à utiliser un LEFT JOIN
dans la mesure du possible. Dans les exemples ci-dessus, nous évitons de LEFT JOIN
afin que la logique métier puisse être appliquée à la jointure elle-même. Dans l'un des exemples que nous avons créés, nous avons créé une exploration qui n'incluait que les événements associés aux membres:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
La méthode privilégiée pour exécuter cette fonction dans Looker consiste à utiliser un LEFT JOIN
pour obtenir les données d'événement et les données de membre ensemble:
explore: event {
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
}
}
Ensuite, vous pouvez créer une dimension que vous pouvez définir sur "yes" (oui) ou "no" (non) pour ne consulter que les événements des membres:
dimension: is_member_event {
type: yesno
sql: ${member.id} IS NOT NULL ;;
}
Cette approche permet aux utilisateurs de regarder tous les événements, ou uniquement les membres. Vous n'avez pas forcé les utilisateurs à consulter uniquement les événements des membres via la jointure.