sql (für Joins)

Auf dieser Seite wird auf den Parameter sql verwiesen, der Teil eines Join ist.

sql kann auch als Teil eines Felds verwendet werden, wie auf der Dokumentationsseite zum Parameter sql (für Felder) beschrieben.

sql kann auch als Teil einer abgeleiteten Tabelle verwendet werden, wie auf der Dokumentationsseite zum Parameter sql (für abgeleitete Tabellen) beschrieben.

Definition

Mit sql können Sie den Roh-SQL-Code schreiben, mit dem eine Ansicht mit einem Explore verknüpft wird. Derzeit wird er fast ausschließlich zum Ausführen von RIGHT JOIN verwendet, was vom Parameter type nicht unterstützt wird. Andernfalls gibt es bessere Parameter für Joins.

Vor Looker 3.10 war sql die einzige Methode, um einen Join auszuführen, der kein LEFT JOIN war. Vor dem 3.10. haben Sie möglicherweise eine INNER JOIN zwischen einem event-Explore und einer member-Datenansicht erstellt, die so aussieht:

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

-

Ab Looker 3.10 sollte der Join stattdessen mit sql_on oder foreign_key ausgeführt werden. Der Join-Typ sollte mit type definiert werden:

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

-

Der zweite häufige Anwendungsfall für sql war das Verknüpfen von Tabellen aus zwei verschiedenen Datenbanken, was als „Federated Join“ bezeichnet wird. Angenommen, Sie haben diesen LookML-Code geschrieben:

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

-

Dies kann jetzt stattdessen mit sql_table_name erreicht werden:

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