sql(結合用)

このページでは、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 ;;
}