sql_table_name(ビューの場合)

このページでは、sql_table_name パラメータについて説明します。これは ビューの一部です。

sql_table_name は、結合の一部としても使用できます。詳細については、sql_table_name(結合用) パラメータのドキュメント ページをご覧ください。

sql_table_name は、Explore の一部としても使用できます。詳細については、sql_table_name(Explore 用) パラメータのドキュメント ページをご覧ください。

用途

view: view_name {
  sql_table_name: table_name ;;
}
階層
sql_table_name
デフォルト値
ビュー名

許可
データベース内のテーブル名

特別なルール
  • sql_table_name で参照されるテーブルは、モデルのデータベース接続内で アクセス可能である必要があります
  • テーブルが、データベース接続で定義したデフォルト パスとは異なるデータベース、スキーマ、プロジェクト、データセットにある場合は、テーブル名をスコープ設定する必要があります。

定義

sql_table_name パラメータは、ビューによってクエリされるデータベース内のテーブルを指定します。

派生テーブルに基づいてビューを作成する場合は、sql_table_name パラメータを使用しないでください。代わりに、derived table パラメータを、derived_table ドキュメント ページで説明されているように使用します。ビューファイルに sql_table_namederived_table の両方がある場合、Looker IDE はエラーを返します。

ビューに sql_table_name パラメータまたは derived_table パラメータのいずれも含まれていない場合、Looker はビューがデータベース テーブルに基づいており、データベース テーブルの名前が ビューの名前と一致していると想定します。つまり、次のようになります。

view: my_name { ... }

これは論理的に次と同等です。

view: my_name {
  sql_table_name: my_name ;;
}

このデフォルトの動作にフォールバックして sql_table_name を使用しないことはよくあります。ただし、この動作が役立つ主な状況がいくつかあります。まず、テーブル名が煩雑な場合など、ビューに基盤となるテーブルとは異なる名前を付けたい場合があります。

view: orders {
  sql_table_name: prod_orders_2 ;;
}

また、ビューがデータベース ユーザーのデフォルト検索パスにないデータベースまたはスキーマに基づく必要がある場合もあります。その場合は、スコープを使用して、次のようにテーブル名をスコープ設定できます。<schema_name>.<table_name>

view: desired_view_name {
  sql_table_name: database_name.schema_name.table_name ;;
}

テーブル名のスコープ設定

テーブル名のみを使用してテーブルを参照すると、Looker は、Looker 管理者がデータベース接続の接続設定で構成したデフォルトの検索パス(データベースとスキーマ)を使用します。詳細については、このページの注意点をご覧ください。

データベース ユーザーのデフォルト検索パスにない別のデータベースとスキーマのテーブルを参照する必要がある場合は、<database_name>.<schema_name>.<table_name> 形式を使用してテーブル名をスコープ設定し、別のデータベースまたはスキーマを指定できます。

  • 別のスキーマのテーブルを参照するには、このページのに示すように、<schema_name>.<table_name> を使用します。
  • 別のデータベースのテーブルを参照するには、完全な <database_name>.<schema_name>.<table_name> を使用します。

Google BigQuery 接続の場合、<project_name>.<dataset_name>.<table_name> の形式を使用してテーブル名をスコープ設定することで、別のプロジェクトとデータセットのテーブルを参照できます。詳細については、Google BigQuery 接続のドキュメント ページをご覧ください。

フェデレーション結合

異なるデータベースの 2 つのテーブルを結合することをフェデレーション結合といいます。2 つのデータベースが同じ SQL 言語を使用し、その言語がフェデレーション結合をサポートしており、Looker の同じ接続から両方のデータベースにアクセスできる場合は、Looker を使用してフェデレーション結合を実行できます。データベースの構成によっては、テーブルが同じ物理マシンに存在する必要がある場合もあります。

このような場合は、ビューの sql_table_name パラメータで各テーブルのデータベース名を指定することで、フェデレーション結合を作成できます。

view: view_1 {
  sql_table_name: database_name.table_1 ;;
}

view: view_2 {
  sql_table_name: another_database_name.table_2 ;;
}

次に、sql_on パラメータを使用してこれらのビューを結合します。

explore: view_1 {
  join: view_2 {
    sql_on: ${view_1.view_1_ID} = ${view_2.view_2_ID} ;;
  }
}

異なる SQL 言語のデータベースを結合する場合は、1 つのデータベースを別のデータベースにレプリケートして、1 つのソースからすべてのデータを取得できるようにすることをおすすめします。

この例では、customers ビューがデフォルト スキーマの customer_1 テーブルに依存するようにします。

view: customers {
  sql_table_name: customer_1 ;;
}

この例では、テーブル名をスコープ設定してスキーマ名を含める(<schema_name>.<table_name> の形式を使用)ことで、customers ビューが analyticscustomer_1 テーブルに依存するようにします。

view: customers {
  sql_table_name: analytics.customer_1 ;;
}

注意点

view で参照されるテーブルは現在の接続からアクセス可能である必要がある

sql_table_name パラメータが view オブジェクト内で使用されている場合、その view オブジェクトは explore オブジェクトで参照できます。この explore オブジェクトは、model オブジェクトで参照されます。モデル オブジェクトには、データベース connection が定義されています。sql_table_name パラメータでデータベース テーブルを参照する場合は、モデルファイルで指定された関連付けられた接続内でテーブルにアクセスできる必要があります。

デフォルトの データベーススキーマ(Google BigQuery の場合は 課金プロジェクトデータセット)は、Looker 管理者がデータベースへの Looker 接続を 作成するときに定義します

テーブル名がわかりにくい場合は追加の書式設定が必要になることがある

一部の言語では、サポートされていない文字を含むテーブル名(わかりにくいテーブル名とも呼ばれます)を角括弧、二重引用符、または単一引用符で囲む必要があります。たとえば、テーブル名 Customers.PaymentInfo にはテーブル名にピリオドが含まれています。これは、スキーマ CustomersPaymentInfo というテーブルとして解釈される可能性があります。これを修正するには、言語で角括弧が必要な場合は、次のようにテーブル名を角括弧で囲みます。

sql_table_name: [Customers.PaymentInfo] ;;

言語で二重引用符または単一引用符が必要な場合は、角括弧をそれらの文字に置き換えます。