sql(結合の場合)

このページでは、結合の一部である sql パラメータについて説明します。

sql は、sql(フィールド用)パラメータのドキュメント ページで説明されているように、フィールドの一部としても使用できます。

sql は、sql(派生テーブル用)パラメータのドキュメント ページで説明されているように、派生テーブルの一部としても使用できます。

定義

sql を使用すると、ビューを Explore に結合する未加工の SQL を記述できます。現在、この関数は type パラメータでサポートされていない RIGHT JOIN の実行にほぼ排他的に使用されています。それ以外の場合は、結合の実行に適したパラメータがあります。

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