sql (für Joins)

Diese Seite bezieht sich auf den Parameter sql, 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 das RAW-SQL schreiben, das eine Ansicht mit einem explorativen Analysetool verknüpft. Sie wird derzeit fast ausschließlich zur Ausführung von RIGHT JOIN verwendet. Dies wird vom Parameter type nicht unterstützt. Andernfalls gibt es bessere Parameter für die Ausführung von Joins.

Vor Looker 3.10 war sql die einzige verfügbare Methode zum Ausführen eines Joins, der kein LEFT JOIN war. Vor 3.10 haben Sie beispielsweise eine INNER JOIN zwischen einer event-explorativen Datenanalyse und einer member-Ansicht erstellt:

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, während der Join-Typ mit type so definiert wird:

# 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 Zusammenführen von Tabellen aus zwei verschiedenen Datenbanken. Dies wird als „Federated Join“ bezeichnet. Sie könnten beispielsweise diesen LookML geschrieben haben:

# 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 mit sql_table_name so 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 ;;
}