de (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 le cadre d'une exploration, décrite sur la page de documentation du paramètre from (pour les explorations).

Utilisation

explorer: view_name {
join: join_name {
from: view_name_2
}
}
Hiérarchie
from
Valeur par défaut
Une vue dont le nom correspond au nom 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 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