sql (per i join)

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

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

sql può essere utilizzato anche nell'ambito di una tabella derivata, come descritto nella pagina della documentazione dedicata al parametro sql (per le tabelle derivate).

Definizione

sql ti consente di scrivere l'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 i join.

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

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

-

A partire da Looker 3.10, il join deve essere eseguito con sql_on o foreign_key, mentre il tipo di join deve essere definito utilizzando type nel seguente modo:

# 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 di due database diversi, chiamata "unione federata". Ad esempio, potresti aver scritto questo 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 è possibile farlo utilizzando sql_table_name, come segue:

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