sql_table_name(ビューの場合)

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

また、sql_table_name(結合用)パラメータのドキュメント ページに記載されているように、sql_table_name を結合の一部として使用することもできます。

sql_table_name は、Explore の一部として使用することもできます(sql_table_name(Explore 用)パラメータのドキュメント ページを参照)。

使用状況

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

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

特別なルール
  • データベース接続内でテーブルにアクセスできる必要があります。
  • テーブルが別のスキーマ内にある場合は、スキーマを指定する必要があります。
  • テーブルが別のデータベースにある場合、データベースとスキーマを指定し、もう一方のデータベースは同じマシン上に、同じ SQL 言語に存在する必要がある

定義

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

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

sql_table_name または derived_table パラメータが含まれていないビューでは、ビューはデータベース テーブルに基づいており、データベース テーブルの名前がビューの名前と一致すると見なされます。つまり、次のようになります。

view: my_name { ... }

これは論理的に等価です。

view: my_name {
  sql_table_name: my_name ;;
}

このデフォルトの動作にフォールバックすることは一般的であり、sql_table_name は使用しません。ただし、有効な状況はいくつかあります。まず、乱雑なテーブル名をクリーンアップするなど、単純にビューに基礎となるテーブルと異なる名前を付けたい場合があります。

view: orders {
  sql_table_name: prod_orders_2 ;;
}

さらに、データベース ユーザーのデフォルトの検索パスにないデータベースやスキーマに基づくビューが必要になることもあります。次のように参照できます。

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

連携結合

異なるデータベースの 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 つのデータベースを別のデータベースに複製し、単一のソースからすべてのデータを取得することをおすすめします。

2 つの MySQL データベースを別々のマシン上で結合する場合は、CONNECTION を使用して FEDERATED テーブルを作成し、両方のデータベース接続に対して連携結合を実行します。基本的には、異なるサーバー上のテーブルへの接続を確立して、完全に MySQL データベース内に配置します。詳細については、こちらの MySQL のドキュメントをご覧ください。

customers ビューをデフォルトのスキーマの customer_1 テーブルに依存するようにします。

view: customers {
  sql_table_name: customer_1 ;;
}

customers ビューを analytics スキーマの customer_1 テーブルに依存するようにします。

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

一般的な課題

view で参照されているテーブルに、現在の接続からアクセスできる必要があります

views は、explore または join パラメータによって参照されます。これらは、モデルによって参照されます。どちらのデータベース接続を使用するかは、モデルによって決まります(connection モデルを参照)。データベース接続自体は、Looker の [管理] セクションで定義します。sql_table_name パラメータでテーブルを参照する場合、関連付けられた接続でテーブルにアクセスできる必要があります。

テーブル名が不適切な場合、追加のフォーマットが必要になることがあります。

一部の言語では、サポートされていない文字(「フレンドリーでない」テーブル名)を使用するテーブル名を、角かっこ、二重引用符、単一引用符で囲む必要があります。たとえば、テーブル名 Customers.PaymentInfo にはテーブル名にピリオドが含まれていますが、これはスキーマ Customers 内の PaymentInfo というテーブルと解釈できます。これを修正するには、言語に角かっこが必要な場合は、次のようにテーブル名を角かっこで囲みます。

sql_table_name: [Customers.PaymentInfo] ;;

方言で二重引用符や単一引用符が必要な場合は、その文字を角かっこで囲みます。