sql (para uniones)

En esta página, se hace referencia al parámetro sql que forma parte de una unión.

sql también se puede usar como parte de un campo, como se describe en la página de documentación del parámetro sql (para campos).

sql también se puede usar como parte de una tabla derivada, como se describe en la página de documentación del parámetro sql (para tablas derivadas).

Definición

sql te permite escribir el SQL sin procesar que unirá una vista en una exploración. Actualmente, se usa casi exclusivamente para ejecutar RIGHT JOIN, lo cual no es compatible con el parámetro type. De lo contrario, existen mejores parámetros para usar las uniones.

Antes de Looker 3.10, sql era el único método disponible para ejecutar una unión que no era LEFT JOIN. Por ejemplo, antes de la versión 3.10, podías crear un INNER JOIN entre una exploración event y una vista member de la siguiente manera:

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

-

A partir de Looker 3.10, la combinación debe ejecutarse con sql_on o foreign_key, mientras que el tipo de unión debe definirse con type de la siguiente manera:

# 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
  }
}

-

El segundo caso de uso común para sql era unir tablas de dos bases de datos diferentes, que se llama "unión federada". Por ejemplo, es posible que hayas escrito este 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 ;;
  }
}

-

Esto se puede lograr usando sql_table_name en su lugar, de la siguiente manera:

# 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 ;;
}