このページでは、join の一部である
sql
パラメータについて説明します。また、
sql
(フィールド向け)パラメータのドキュメント ページに記載されているとおり、sql
をフィールドの一部として使用することもできます。また、
sql
(派生テーブルの場合)パラメータのドキュメント ページで説明されているように、sql
を派生テーブルの一部として使用することもできます。
定義
sql
を使用すると、ビューを Explore に結合する未加工 SQL を作成できます。現在、RIGHT JOIN
の実行にほぼ排他的に使用されますが、type
パラメータではサポートされていません。それ以外の場合は、結合の実行に適したパラメータがあります。
Looker 3.10 より前のバージョンでは、LEFT JOIN
以外の結合を実行する方法として sql
しか使用できませんでした。たとえば、3.10 の前に、event
Explore と member
ビューの間に INNER JOIN
を作成したとします。
explore: event {
join: member {
sql:
INNER JOIN member
ON member.id = event.member_id ;;
}
}
-
Looker 3.10 では、sql_on
または foreign_key
を使用して結合を実行する必要がありますが、結合のタイプは type
を使用して次のように定義する必要があります。
# 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
}
}
-
sql
の 2 つ目の一般的なユースケースは、「フェデレーション結合」と呼ばれる 2 つの異なるデータベースのテーブルを結合することです。たとえば、次のような 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 ;;
}
}
-
代わりに、次のように sql_table_name
を使用することで実現できます。
# 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 ;;
}