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

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

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

:::


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

https://youtu.be/A9aIcowJn1I?si=03NIDbKcCms3EJYq&t=1017


:::


# はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/9d106f64-5ebf-489d-bde4-db440e012d01.png)


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

そこで今回は
* Fabric で作成したテーブルをDatabricksで利用する
というユースケースについて具体的に紹介します。

前提となる設定方法などについては以前の記事をご覧ください。




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

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

Fabricのレイクハウスにcsvファイルをアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/6ed8dba7-ee42-45f3-97fe-ce4076bbb047.png)


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

csvファイルから[テーブルに読み込む]>[新しいテーブル]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/5c0782f4-45f5-4bab-b111-633c6f75356e.png)


スキーマにはショートカットを作成したhubストレージのextを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/f5db8577-97c6-48ad-bd95-6eb1468b17b2.png)

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

レイクハウスに新規テーブルが作成されていることが確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/386a6ad7-93f6-4463-a67a-50b371fa5b9d.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/b1f3e126-d89b-40ac-8410-5ab39fd5cb79.png)

Delta形式になっていることも確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/f0e4b5bf-671a-46db-906c-35a1be71759a.png)

一方で、当たり前だが、現時点ではDatabricks上に作成したテーブルを確認することはできない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/6b5808e2-8c0c-4561-bc36-59e8ba0ce96d.png)

### DatabricksからFabricで作成したテーブルを操作できるようにする

DatabricksのSQLエディタを用いて外部テーブルを作成。Locationにhubストレージフォルダパス（Fabricで作成したテーブルのフォルダ）を指定する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/dc7f94a6-62cf-43cb-acc6-11736ada51e5.png)

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


すると[カタログ]からFabricで作成したテーブルを閲覧することができる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/f8f42e3c-0b17-4dd0-bdde-2df152f78e72.png)


# Fabric で作成したテーブルをDatabricksで閲覧・分析する（BIの作成）

Databricksの[ダッシュボード]から新しく、ダッシュボードを作成し、
[データ]>[テーブルを選択]から外部テーブルを選択できる（＝Fabricで作成したテーブル）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/a7c77b4e-c54e-4b2c-9953-32b7a4f650ea.png)

よって、Fabricで作成したテーブルについてDatabricksで分析が可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/b4c9a5d0-5b4b-45ac-8683-fee2d9189aa2.png)


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

DatabricksのSQLエディタからUPDATE文（DML文）を実行してみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/d77e0864-d578-4c38-bc88-f31b543c45fc.png)

```SQL
UPDATE create_from_fabric_sales
SET Item = 'No.1 Item'
WHERE Item = 'Road-150 Red, 48'
```

もちろん、Databricks側では変更が反映されていることが確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/01d3bbb0-7fc5-409a-9f7b-b4f66d4fcba2.png)

Databrickからの編集だったが、Fabric側から変更の反映を確認できた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921999/07103d46-9068-4c2d-b9cb-9ec64c5f19f3.png)


```SQL
SELECT Item, SUM(Quantity * UnitPrice) AS Revenue
FROM Fabric_Lakehouse.ext.create_from_fabric_sales
GROUP BY Item
ORDER BY Revenue DESC;
```

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

# おわりに

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


次回は今回の逆
「Databricksで作成したテーブルをFabricで利用する」デモについて紹介いたします。


▽前の記事へ

https://qiita.com/ReijiOtake/items/088abbd5f5ce06035501