FabricとDatabricksの相互運用性3：Databricks で作成したテーブルをFabricで利用する（Fabricで閲覧・分析・編集可能）

:::note info
この記事は以下の記事の補足記事となります。

[【総集編】Microsoft Fabric と Databricksをつなぐデータ総合運用術 -hubストレージにDelta Lake形式で保管する-](https://qiita.com/ReijiOtake/items/f134ae040a63576732ad)

:::

:::note info
YouTubeのアーカイブでも、13分22秒~あたりからこの記事についての概要を解説しています。

https://youtu.be/A9aIcowJn1I?si=hUx_IUaNf6x7zSyF&t=802

:::

# はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/9d484105-e681-4bec-a602-644d6ead3b06.png)


Fabricで作成したテーブルをDatabricksでもシームレスに参照・編集が可能できるのか？
このような疑問を持つ方も少なくないと思います。

そこで今回は

* Databricksで作成したテーブルをFabricで利用する
というユースケースについて具体的に紹介します。
前提となる設定方法などについては以前の記事をご覧ください。


# Databricksで作成したテーブルをFabricに連携する

### Databricksに新規テーブルを作成

Databricksから空の新規外部テーブルを作成
Locationにはhubストレージのフォルダパスを指定します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/29153a0c-cd44-4b70-83f1-d25493a644de.png)

```SQL
CREATE TABLE create_from_Databricks_sales
USING DELTA
LOCATION 'abfss://<container_name>@<ADLS2_name>.dfs.core.windows.net/folder_name/create_from_Databricks_sales
```

[データの取り込み]からcsvをアップロード
[外部のテーブルに上書き]から先ほど作成した空の外部テーブルを選択し、
[テーブルの上書き]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/acf3ca2d-be96-40f4-b60f-25b3696d3a2d.png)



:::note info
今回csvは以下のMSドキュメントに記載のあるsales.csvを使用しました
[Microsoft Fabric レイクハウスを作成する](https://microsoftlearning.github.io/mslearn-fabric.ja-jp/Instructions/Labs/01-lakehouse.html)
:::




# 作成したテーブルの確認

カタログエクスプローラーから作成した外部テーブルにデータが入っていることが確認できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/fb3089b9-aed3-4cfe-b8bd-d0e52adfc865.png)

hubストレージのextフォルダにcreate_from_Databricks_salesフォルダが作成される
（つまり、新規作成した外部テーブルはhubストレージ上に実態が存在する）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/4242abc9-2473-4024-bd8c-8db420384018.png)


Delta形式になっていることも確認できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/43d14f92-54f0-487c-bf0d-bd1df83ac200.png)

また、この時点でFabricのレイクハウスからもcreate_from_Databricks_salesテーブルが見えるようになる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/576b373d-bc04-4e79-837e-c4e1eccd530e.png)





# Databricksで作成したテーブルをFabricで閲覧・分析する（BIの作成）
セマンティックモデルからcreate_from_Databricks_sales（＝Databricksで作成した）テーブルを選択し、[確認]をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/8dab6436-ff41-4c13-99bc-aeab7d1f4f10.png)

**これで、Databricksで作成したテーブルについてFabricで分析が可能**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/ed65a2c4-2ed3-4409-8df7-c94ae1b828f5.png)





# Databricksで作成したテーブルをFabricで編集（DML）する

FabricのノートブックからUPDATE文（DML文）を実行してみる


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/4c3735cc-8879-42b5-8a88-e7b7246f2001.png)

```SQL
UPDATE Fabric_Lakehouse.ext.create_from_Databricks_sales
SET Item = 'No.1 Quantity Water Bottle - 30 oz.'
WHERE Item = 'Water Bottle - 30 oz.'
```

もちろん、Fabricからは変更が反映されていることが確認できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/45475b50-fa24-4c93-891f-ee03a1ee7ab9.png)

Fabricからの編集だったが、Databricks側からも変更の反映を確認できた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/e1517799-af5a-497b-bde9-3edd78f4b96f.png)

**よって、Databricks作成したテーブルについてFabricで編集（DML文）が可能**

# 課題や具体的な運用方法について

今回ご紹介した方法は、Fabric・Databricks双方から編集が可能なのは強みでもある一方で、簡単にテーブルが更新できてしまうためそれが弱みとなる可能性もあります。

また、今回はDatabricksの外部テーブルを使用しました。
しかし、現状ではマネージドテーブルのみで予測最適化が採用されており、外部ではなくマネージドテーブルを使うのが理想的です。

https://docs.databricks.com/ja/optimizations/predictive-optimization.html#:~:text=%E4%BA%88%E6%B8%AC%E7%9A%84%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81Databricks%E3%81%AEUnity%20Catalog%20%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%89%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%89%8B%E5%8B%95%E3%81%A7%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%20%E4%BA%88%E6%B8%AC%E7%9A%84%E6%9C%80%E9%81%A9%E5%8C%96%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81,Databricks%20%E3%81%AF%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E6%AC%A1%E3%81%AE%E5%87%A6%E7%90%86%E3%82%92%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%20%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E6%93%8D%E4%BD%9C%E3%81%AE%E6%81%A9%E6%81%B5%E3%82%92%E5%8F%97%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E7%89%B9%E5%AE%9A%E3%81%97%E3%80%81%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E6%93%8D%E4%BD%9C%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%AB%E5%85%A5%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%89%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BE%E3%82%8C%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E7%B5%B1%E8%A8%88%E3%82%92%E5%8F%8E%E9%9B%86%E3%81%97%E3%81%BE%E3%81%99%E3%80%82

以上の課題点について検討し、具体的な運用方法について、今後共有できればと思います。

Databricksにおけるテーブルのクローンもなにかヒントになるのではないかと思っています、、

https://qiita.com/taka_yayoi/items/50c5a75caff8a6fb721d



# おわりに
以上より、
「Databricksで作成したテーブルをFabricで利用する」ことができました。
一度hubストレージを設定してやれば、比較的簡単にFabricとDatabricksの相互運用性を実現することができます。

▽次の記事へ

https://qiita.com/ReijiOtake/items/86b44b2c30986c65db08