sql (pour les jointures)

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

sql peut également être utilisé dans un champ, comme décrit sur la page de documentation du paramètre sql (pour les champs).

sql peut également être utilisé dans une table dérivée, comme décrit sur la page de documentation du paramètre sql (pour les tables dérivées).

Définition

sql vous permet d'écrire le code SQL brut qui joindra une vue à une exploration. Il est actuellement utilisé presque exclusivement pour exécuter RIGHT JOIN, qui n'est pas compatible avec le paramètre type. Sinon, il existe de meilleurs paramètres à utiliser pour exécuter des jointures.

Avant Looker 3.10, sql était la seule méthode disponible pour exécuter une jointure qui n'était pas une LEFT JOIN. Par exemple, avant la version 3.10, vous avez peut-être créé un INNER JOIN entre une vue event Explore et une vue member comme ceci :

explore: event {
  join: member {
    sql:
      INNER JOIN member
      ON member.id = event.member_id ;;
  }
}

-

Depuis Looker 3.10, la jointure doit être exécutée avec sql_on ou foreign_key à la place, tandis que le type de jointure doit être défini à l'aide de type comme suit :

# Option 1 Using sql_on
explore: event {
  join: member {
    sql_on: ${member.id} = ${event.member_id} ;;
    type: inner
  }
}

# Option 2 Using foreign_key
explore: event {
  join: member {
    foreign_key: member_id
    type: inner
  }
}

-

Le deuxième cas d'utilisation courant de sql consistait à joindre des tables provenant de deux bases de données différentes, ce que l'on appelle une "jointure fédérée". Par exemple, vous avez peut-être écrit ce code LookML :

# Model File
explore: view_1 {
  join: view_2 {
    sql:
      LEFT JOIN other_db.other_schema.view_2 AS view_2
      ON view_1.something = view_2.something ;;
  }
}

-

Vous pouvez désormais utiliser sql_table_name à la place, comme suit :

# Model File
explore: view_1 {
  join: view_2 {
    sql_on: ${view_1.something} = ${view_2.something} ;;
    type: left_outer
  }
}

# View File
view: view_2 {
  sql_table_name: other_db.other_schema.view_2 ;;
}