from (pour les jointures)

Cette page fait référence au paramètre from qui fait partie d'une jointure.

from peut également être utilisé dans une exploration, comme décrit sur la page de documentation du paramètre from (pour les explorations).

Utilisation


explore: view_name {
  join: join_name {
    from: view_name_2
  }
}
Hiérarchie
from
Valeur par défaut
Une vue dont le nom correspond à celui de la jointure

Acceptation
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 à celui 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 que tout soit bien clair, 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 sous la forme VALEUR DE COMMANDE DE LA VUE SOUS-JACENTE dans l'interface utilisateur Explorer et est référencé dans LookML avec ${underlying_view.order_value}.
  • Si le LookML de la section Utilisation était appliqué à cet exemple, le champ s'afficherait plutôt sous la forme NOUVEAU NOM D'ALIAS Valeur de la commande et serait référencé en tant que ${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 différentes.

Exemples

Joignez la vue person à l'exploration order, mais appelez-la customer :

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

Joignez la vue person à l'exploration order deux fois : une fois en tant que customer et une fois en tant que 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é précédemment, l'utilisation de from a un impact important sur la façon dont les champs sont référencés. Cela peut poser problème lorsqu'un view est utilisé à de nombreux endroits différents. Considérez l'exemple suivant :

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

Ici, person est joint à order, mais il est appelé customer. Par exemple, si vous deviez faire référence à un champ de customer dans order, vous utiliseriez ${customer.field_name}. Si, dans une deuxième exploration, vous joignez à nouveau person à order, mais que vous ne le renommez pas en 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.

Dans les cas où une même table contient différents types d'entités, il est possible de joindre une vue à une exploration plusieurs fois. Supposons que vous ayez une exploration order et que vous deviez y joindre une vue person deux fois : une fois pour le client et une fois pour le conseiller clientèle. 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 ce code 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