DatabricksでBigQueryのデータが簡単に見れます！

# はじめに
皆さんはデータ分析をどの環境で行っていますか？
ダッシュボード用のデータマートには、GoogleのBigQueryを使っている方も多いでしょう。
一方で、機械学習や統計分析を行う場合は、AWSのSageMakerやDatabricksのNotebook環境など別のクラウド環境を使う方も多いはずです。

BigQueryにあるデータを機械学習のモデルに組み込みたいとき....あるかなと思います。
なんと、Databricksではそれができます！

Lakehouse Federation機能を使えば、Databricksのカタログ製品であるUnity Catalog上にBigQueryの情報を連携させることができます。また、DatabricksのNotebookやSQLエディターで、BigQueryのデータを扱うことができます。

また、BigQueryの環境を移行することなく、BigQuery側でもそのままデータを使うことが可能です。

今回はBigQueryのデータを題材に、DatabricksのLakehouse Federationを紹介していきます。

# 対象読者
 - DWHでBigQueryを使っているが、機械学習ではDatabricks環境を使っている方
 
 - Databricksの本格的な導入を考えているが、工数をかけずに環境移行を行いたい方 

# そもそもLakehouse Federationて何？

Unity Catalogでは、フェデレーション機能によって、Databricks以外の環境の外部テーブルの取り込みの機能があります。

Databricksのフェデレーション機能は、Lakehouse Federationと呼ばれます。

Lakehouse Federationは、他のシステム上にあるデータを、もとのデータを移行することなく、Unity Catalog上で閲覧・操作することができる機能です。

フェデレーション機能でUnity Catalogに登録したデータは、内部で管理しているデータと同様に、SQLクエリエディターやノートブックといった他のDatabricksの機能にも連携することができます。

Lakehouse Federationは、以下のデータベースタイプへの接続をサポートしています。
- [MySQL](https://docs.databricks.com/aws/ja/query-federation/mysql)

- [PostgreSQL](https://docs.databricks.com/aws/ja/query-federation/postgresql)

- [Teradata](https://docs.databricks.com/aws/ja/query-federation/teradata)

- [Oracle](https://docs.databricks.com/aws/ja/query-federation/oracle)

- [Amazon Redshift](https://docs.databricks.com/aws/ja/query-federation/redshift)

- [Salesforce データクラウド](https://docs.databricks.com/aws/ja/query-federation/salesforce-data-cloud)

- [Snowflake](https://docs.databricks.com/aws/ja/query-federation/snowflake)

- [Microsoft SQL Server](https://docs.databricks.com/aws/ja/query-federation/sql-server)

- [Azure Synapse（SQLデータウェアハウス）](https://docs.databricks.com/aws/ja/query-federation/sqldw)

- [Google BigQuery](https://docs.databricks.com/aws/ja/query-federation/bigquery)

- [Databricks](https://docs.databricks.com/aws/ja/query-federation/databricks)

- [Hive metastore フェデレーション](https://docs.databricks.com/aws/ja/data-governance/unity-catalog/hms-federation/)

# BigQueryをUnity Catalog(カタログ)に登録
では、実際にLakehouse Federationを用いて、BigQueryをUnity Catalog（以下GUI上の名称のカタログで説明)に登録していきます。

カタログの「⚙️」から「接続」を押下します。

![qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/d0d902e6-90e4-420f-bdd1-a38966c5c78c.png)

次に接続の基本で、接続タイプをGoogle BigQueryを押します。

![qiita2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/a42dc7bb-f3ee-4e23-a1df-51ece7cf042e.png)


認証には、BigQuery側でサービスアカウントの発行が必要となります。

![qiita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/de863133-c74b-4baf-b9d8-892724727e20.png)

Step3では、実際に登録をするカタログ名を設定します。
この際に、BigQuery側との接続情報を確認します。

:::note warn
なおBigQueryのサービスアカウントには、bigquery.jobs.create（かそれ以上)の権限が必要になります。
:::

![qiita4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/dac70dde-e42f-4f33-93e8-1ce8d0eb8811.png)

Step4-5ではアクセス権限の付与と、メタデータ管理に使えるタグの設定が可能です。

![qiita5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/d248d489-9204-4599-8930-f9b89a728737.png)

![qiita6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/757497d7-c829-406b-8386-1c35fb607d25.png)

# Databricksで使える機能

Unity Catalogに登録すると、「履歴」以外のテーブル機能で使えるものが対応していました。

下記のように、概要のメタデータ機能や、サンプルデータもUnity Catalog上で確認することが可能です。
写真のデータは、気象庁が発布する最高気温の1週間分のデータになります。

![qiita8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/34258d86-475c-4033-bbe0-1f1876a07026.png)

![qiita7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/2cd3934f-6fb9-4266-9c3f-74fa881bfa4d.png)

その他、Unity Catalogのテーブル機能で利用できる項目に関しては、Databricksの公式ドキュメントの該当部分をご確認ください。

https://docs.databricks.com/aws/ja/data-governance/

 

また、フェデレーション機能で登録したテーブルに関しては、Databricks内のSQLエディター、ノートブックで、BigQueryのデータを用いてSQLでのコーディングが可能なほか、ダッシュボードの作成も可能でした。

![qiita9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/4248e6d2-07e9-4a58-8809-6bb45006b515.png)

![qiita10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725527/d584c7d8-16b1-45ca-b765-3e77da5508b8.png)

# まとめ
今回はBigQueryを題材に、Lakehouse Federationをご紹介してきました。
なんといっても**一番のメリットは、元の環境をそのままにBigQueryのデータをDatabrick上で扱える点**だと考えています。

また、カタログへの登録方法も、GUI上で完結するもので、非常に楽な仕様になっていました。

BigQueryとDatabricksの両方を活用されている方、Databricksを今後本格的に活用したい方には、フェデレーション機能は非常に有用だと考えています。