DatabricksからLookerへの接続

[Connect to Looker \| Databricks on AWS](https://docs.databricks.com/partners/bi/looker.html) [2023/2/3時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

本書では、DatabricksクラスターやDatabricks SQLウェアハウス(以前のDatabricks SQLエンドポイント)でどのように[Looker](https://looker.com/)を活用するのかを説明します。

:::note warn
**重要！**
persistent derived tables (PDTs)が有効化されている場合、Lookerはデフォルトで5分ごとに関連づけられているデータベースに接続してPDTを生成します。計算コストの増加を避けるためにデフォルトの頻度を変更することをお勧めします。詳細は、[persistent derived tables (PDTs)の有効化と管理](#persistent-derived-tables-pdtsの有効化と管理)をご覧ください。
:::

# 要件

手動でLookerに接続する前に以下のものが必要となります:

- DatabricksワークスペースのクラスターあるいはSQLウェアハウス
    - [クラスターの表示](https://qiita.com/taka_yayoi/items/991aae376c089df58504#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AE%E8%A1%A8%E7%A4%BA)
    - [クラスターの作成](https://qiita.com/taka_yayoi/items/d36a469a1e0c0cebaf1b)
    - [SQLウェアハウスの表示](https://docs.databricks.com/sql/admin/sql-endpoints.html#view-sql-warehouses)
    - [SQLウェアハウスの作成](https://docs.databricks.com/sql/admin/sql-endpoints.html#create-a-sql-warehouse)
- クラスター、SQLウェアハウスの接続詳細情報、特に**Server Hostname**、**Port**、**HTTP Path**の値。
    - [クラスターの接続情報の取得](https://docs.databricks.com/integrations/jdbc-odbc-bi.html#connection-details-cluster)
    - [SQLウェアハウスの接続情報の取得](https://docs.databricks.com/sql/admin/sql-endpoints.html#create-a-sql-warehouse)
- Databricks[パーソナルアクセストークン](https://qiita.com/taka_yayoi/items/f5493a4169e95e1a7a61#databricks%E3%83%91%E3%83%BC%E3%82%BD%E3%83%8A%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3)

    :::note
    **注意**
    セキュリティのベストプラクティスとして、自動化ツール、システム、スクリプト、アプリで認証を行う際、ワークスペースのユーザーではなく[サービスプリンシパル](https://docs.databricks.com/administration-guide/users-groups/service-principals.html)に属するアクセストークンを使用することをお勧めします。サービスプリンシパルのアクセストークンを作成するには、[Manage access tokens for a service principal](https://docs.databricks.com/administration-guide/users-groups/service-principals.html#personal-access-tokens)をご覧ください。
:::

# 手動でLookerに接続する

手動でLookerに接続するには以下を実行します。

1. Lookerで**Admin > Connections > Add Connection**をクリックします。
![](https://docs.databricks.com/_images/looker-databricks-connect.png)
1. ユニークな接続**Name**を入力します。

    :::note
    **ティップス**
    接続名には小文字、数字、_のみを含めることができます。他の文字列が許容されることがありますが、あとで予期しない挙動を引き起こす可能性があります。 

1. **Dialect**では**Databricks**を選択します。
1. **Remote Host**には、要件にあった**Server Hostnam**を入力します。
1. **Port**には、要件にあった**Port**を入力します。
1. **Database**には、接続を通じてアクセスしたいワークスペースのデータベース名を入力します(`default`など)。
1. **Username**には`token`と入力します。
1. **Password**には、要件にあったパーソナルアクセストークンを入力します。
1. **Additional Params**には、`transportMode=http;ssl=1;httpPath=<http-path>`を入力し、`<http-path>`を要件にあった**HTTP Path**を入力します。
1. **PDT And Datagroup Maintenance Schedule**には、PDTの再生成のデフォルト頻度を変更するために適切な`cron`エクスプレッションを入力します。デフォルトの頻度は5分ごとです。
1. クエリーを別のタイムゾーンに変換したい場合には、**Query Time Zone**を調整します。
1. 残りのフィールドはデフォルトのままにします。特に:
    - **Max Connections**や**Connection Pool Timeout**はデフォルトのままにします。
    - (あなたがすべてをUTCで格納していることを前提として)**Database Time Zone**はブランクのままとします。
1. **Test These Settings**をクリックします。
1. テストが成功したら**Add Connection**をクリックします。

# Lookerでデータベースをモデリングする

このセクションではプロジェクトを作成し、ジェネレーターを実行します。以下のステップは、接続するデータベースにパーマネントテーブルが格納されていることを前提としています。

1. **Develop**メニューで**Development Mode**をオンにします。
1. **Develop > Manage LookML Projects**をクリックします。
1. **New LookML Project**をクリックします。
1. ユニークな**Project Name**を入力します。

    :::note
    **ティップス**
    接続名には小文字、数字、_のみを含めることができます。他の文字列が許容されることがありますが、あとで予期しない挙動を引き起こす可能性があります。 

1. **Connection**では上で作成した接続名を選択します。
1. 接続を通じてモデリングする別のデータベースがない限り、**Schemas**には`default`を入力します。
1. 残りのフィールドはデフォルトのままとします。特に:
    - **Starting Point**は**Generate Model from Database Schema**のままとします。
    - **Build Views From**は**All Tables**のままとします。
1. **Create Project**をクリックします。

プロジェクトを作成し、ジェネレーターを実行すると、Lookerはユーザーインタフェースに一つの`.model`ファイルと複数の`.view`ファイルを表示します。`.model`ファイルはスキーマ内のテーブルと、検知されたテーブル間のjoinリレーションを表示し、`.view`ファイルはスキーマ内のそれぞれのテーブルで利用できる個々のディメンション(カラム)を一覧します。

# 次のステップ

プロジェクトで作業を始めるには、LookerWebサイトの以下のリソースを参照ください。

- [Exploring data in Looker](https://docs.looker.com/exploring-data/exploring-data)
- [Creating Visualizations and Graphs](https://docs.looker.com/exploring-data/visualizing-query-results)
- [Retrieve and chart data](https://docs.looker.com/exploring-data/retrieve-chart-intro)

# persistent derived tables (PDTs)の有効化と管理

Lookerでは、*persistent derived tables* (PDTs)を作成することで、クエリーの時間とデータベースのロードを削減することができます。PDTは、Lookerがお使いのデータベースにスクラッチスキーマを書き込む派生テーブルです。Lookerは指定したスケジュールでPDTを再生成します。詳細はLookerドキュメントの[Persistent derived tables \(PDTs\)](https://docs.looker.com/data-modeling/learning-lookml/derived-tables#persistent_derived_table)をご覧ください。

データベース接続でPDTを有効化するには、当該の接続で**Persistent Derived Tables**を選択し、画面に表示される手順を完了します。詳細については、Lookerドキュメントの[Persistent Derived Tables](https://docs.looker.com/setup-and-management/connecting-to-db#persistent_derived_tables)や[Configuring Separate Login Credentials for PDT Processes](https://docs.looker.com/setup-and-management/connecting-to-db#pdt-overrides)をご覧ください。

PDTが有効化されると、Lookerはデフォルトで5分ごとに関連づけられているデータベースに接続してPDTを再生成します。Lookerは、関連づけられているDatabrikcsのリソースが停止している場合には、これを再起動します。データベース接続設定で、適切な`cron`エクスプレッションを用いて**PDT and Datagroup Maintenance Schedule**を設定することでデフォルトの頻度を変更することをお勧めします。詳細については、Lookerドキュメントの[PDT and Datagroup Maintenance Schedule](https://docs.looker.com/setup-and-management/connecting-to-db#pdt_maintenance_schedule)をご覧ください。

PDTを有効化する、あるいは既存のデータベース接続設定のPDT再生成頻度を変更するには、**Admin > Database Connections**をクリックし、データベース接続設定のの隣の**Edit**をクリックし、上述の指示に従います。

# その他のリソース

[Looker support](https://help.looker.com/hc)

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)