このページでは、ビューの一部である
sql_table_name
パラメータについて説明します。また、
sql_table_name
(結合用)パラメータのドキュメント ページに記載されているように、sql_table_name
を結合の一部として使用することもできます。
sql_table_name
は、Explore の一部として使用することもできます(sql_table_name
(Explore 用)パラメータのドキュメント ページを参照)。
使用状況
sql_table_name: table_name ;;
}
階層
sql_table_name |
デフォルト値
ビューの名前許可
データベース内のテーブル名特別なルール
|
定義
sql_table_name
パラメータは、ビューでクエリされるデータベース内のテーブルを指定します。
派生テーブルに基づいてビューを作成する場合は、
sql_table_name
パラメータを使用しないでください。代わりに、derived table
パラメータを使用してください。詳細については、derived_table
ドキュメント ページをご覧ください。ビューファイルにsql_table_name
とderived_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] ;;
方言で二重引用符や単一引用符が必要な場合は、その文字を角かっこで囲みます。