SQL (per join)

Questa pagina si riferisce al parametro sql che fa parte di un join.

sql può essere utilizzato anche come parte di un campo, come descritto nella pagina della documentazione relativa al parametro sql (per i campi).

sql può essere utilizzato anche come parte di una tabella derivata, come descritto nella pagina della documentazione relativa al parametro sql (per tabelle derivate).

Definizione

sql consente di scrivere il codice SQL non elaborato che unirà una vista a un'esplorazione. Attualmente viene utilizzato quasi esclusivamente per eseguire RIGHT JOIN, che non è supportato dal parametro type. In caso contrario, esistono parametri migliori da utilizzare per eseguire le unioni.

Prima di Looker 3.10, sql era l'unico metodo disponibile per eseguire un join che non era un LEFT JOIN. Ad esempio, prima della 3.10 potresti aver creato un elemento INNER JOIN tra un'esplorazione event e una vista member simile alla seguente:

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

-

A partire da Looker 3.10, l'unione deve essere eseguita con sql_on o foreign_key, mentre il tipo di unione deve essere definito utilizzando type come segue:

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

-

Il secondo caso d'uso comune per sql era l'unione di tabelle da due database diversi, chiamati "join federato". Ad esempio, potresti aver scritto il seguente codice 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 ;;
  }
}

-

Ora puoi ottenere questo risultato utilizzando sql_table_name, come indicato di seguito:

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