Cette page fait référence au paramètre
from
qui fait partie d'une jointure.
from
peut également être utilisé dans le cadre d'une exploration, décrite sur la page de documentation du paramètrefrom
(pour les explorations).
Utilisation
join: join_name {
from: view_name_2
}
}
Hiérarchie
from |
Valeur par défaut
Une vue dont le nom correspond au nom de la jointureAcceptation
Nom d'une vue existante |
Définition
from
spécifie le view
à utiliser dans une jointure. Si from
est omis, Looker suppose que le nom de la vue sous-jacente est identique au nom de la jointure.
En règle générale, from
n'est utilisé que si vous souhaitez que la jointure et ses champs aient un nom différent de celui de la vue sous-jacente. Pour clarifier cela, prenons l'exemple d'une dimension appelée order_value
qui a été créée dans une vue appelée underlying_view
:
- Ce champ apparaît généralement comme Valeur de la commande sous-jacente dans l'interface utilisateur Explorer et est référencé dans LookML avec
${underlying_view.order_value}
. - Dans l'exemple d'utilisation donné ci-dessus, ce champ apparaît à la place comme NEW ALIAS NAME Order Value et est référencé sous la forme
${new_alias_name.order_value}
.
Cette technique est particulièrement utile lorsque la même vue doit être associée à une exploration de plusieurs manières.
Examples
Associez la vue person
à la collection Explorer order
, mais appelez-la customer
à la place:
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
Rejoignez la vue person
dans la section Explorer order
à deux reprises (une fois pour customer
et une fois pour representative
) :
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
Éléments à prendre en compte
from
modifie la façon dont les champs sont référencés dans une exploration
Comme indiqué ci-dessus, l'utilisation de from
a un impact important sur la manière dont les champs sont référencés. Cela peut poser quelques problèmes lorsqu'un view
est utilisé à de nombreux endroits. Considérez l'exemple suivant :
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
Ici, person
est en cours de jointure à order
, mais s'appelle customer
. Par conséquent, si vous devez référencer un champ de customer
dans order
, vous devez utiliser ${customer.field_name}
.
Si, lors d'une seconde exploration, vous réintégrez person
à order
, mais ne la renommez pas customer
, la référence ${customer.field_name}
ne fonctionnera pas dans cette deuxième exploration. L'approche générale pour résoudre ce problème consiste à exclure le champ problématique de la deuxième exploration à l'aide de fields
. Celle-ci se présente alors sous la forme suivante :
explore: the_second_explore {
fields: [ALL_FIELDS*, -person.problem_field]
join: person {
sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
}
}
from
est le plus souvent utilisé pour joindre la même table plusieurs fois à une exploration.
Si un seul tableau contient différents types d'entités, il est possible de joindre une vue à une exploration plusieurs fois. Supposons que vous disposiez d'une exploration order
et que vous ayez besoin de joindre une vue person
deux fois : une fois pour le client et une fois pour le représentant du service client. L'instruction pourrait se présenter comme suit :
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
Le code SQL que Looker générerait à partir de LookML est le suivant:
SELECT ...
FROM order
LEFT JOIN person AS customer
ON customer.id = order.customer_id
LEFT JOIN person AS representative
ON representative.id = order.representative_id