Delta Sharingによるマテリアライズドビューの共有

こちらのアップデートです。

https://docs.databricks.com/aws/ja/release-notes/product/2025/april#share-streaming-tables-and-materialized-views-to-all-recipients-using-delta-sharing-public-preview

> **Delta Sharingを用いたすべての受信者へのストリーミングテーブルとマテリアライズドビューの共有(パブリックプレビュー)**
> すべての受信者にストリーミングテーブルとマテリアライズドビューを共有するためにDelta Sharingを使えるようになりました。[Delta Sharingの共有の作成と管理](https://docs.databricks.com/aws/ja/delta-sharing/create-share)と[共有ストリーミングテーブルとマテリアライズドビューの読み込み](https://docs.databricks.com/aws/ja/delta-sharing/read-data-databricks#st-and-mv)をご覧ください。

これまでは、Delta Sharingでマテリアライズドビューを共有できなかったので、一度テーブルに永続化する必要がありました。今回のアップデートでDLTなどで生成されるマテリアライズドビューを直接Delta Sharingで共有できるようになりました。

実際に試してみます。

# プロバイダー側でのマテリアライズドビューの作成

以下のようなシンプルなCSVファイルを準備します。

```first.csv
id,name,grade,country
1,taka,55,JPN
```

これを取り込むDLTパイプラインを作成します。

```sql
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
  "/Volumes/takaakiyayoi_catalog/dlt/data",
  format => "csv")
```

```sql
CREATE MATERIALIZED VIEW summary AS
SELECT
    count(*) as user_total,
    avg(grade) as grade_average,
    country
FROM input_data GROUP BY country
```

![Screenshot 2025-05-01 at 9.39.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bea5f2a0-6934-40ba-8fb9-0c31ac5174c7.png)

# Delta Sharingによるマテリアライズドビューの共有

Databricks間(Databricks-to-Databricks)共有を行います。共有先のDatabricksワークスペースから共有識別子を入手して受信者を作成します。

![Screenshot 2025-05-01 at 9.31.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/297dd130-1332-4e2b-a1f1-1b2d9c36717a.png)

共有を作成して受信者を追加します。

![Screenshot 2025-05-01 at 9.32.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d1091f1a-d93c-4ebb-bbf6-d86a452368b8.png)

アセットとしてマテリアライズドビューを選択します。ここでは、`summary`というマテリアライズドビューを選択します。

![Screenshot 2025-05-01 at 9.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a97287fe-f3be-410f-995c-c4443e7ed955.png)
![Screenshot 2025-05-01 at 9.33.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/1943db80-6d83-4ab8-b868-78e28038943f.png)

# 受信者側でのカタログの設定

受信者側のDatabricksワークスペースで共有が表示されるようになるので、こちらからカタログを作成します。

![Screenshot 2025-05-01 at 9.33.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/be509381-5d33-4d65-bbea-7ec67afa99ab.png)
![Screenshot 2025-05-01 at 9.34.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2765cc9f-7271-4089-a519-269fe8003dc1.png)
![Screenshot 2025-05-01 at 9.34.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/93632447-eaaf-4c0c-8ff1-85b0b481931d.png)

これで、共有されたカタログとその配下のマテリアライズドビューにアクセスできるようになりました。

![Screenshot 2025-05-01 at 9.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5b626780-8d90-4c3a-b93f-139c9150debd.png)
![Screenshot 2025-05-01 at 9.35.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e3b115a8-d8d5-4ef1-ad20-9eee9b4baf09.png)
![Screenshot 2025-05-01 at 9.35.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9b592db6-7c3d-4b35-88d8-aa3c2055218a.png)


# どのような使い方ができるのか？

プロバイダーによって共有されているマテリアライズドビューを直接参照できるので、これまで以上に簡単に最新のデータを参照できるようになります。ここでは、ダッシュボードとDatabricksジョブを用いたデモを行ってみます。

## ダッシュボードの作成

上のマテリアライズドビュー`summary`を使って、受信者側で以下のようなダッシュボードを作成します。

![Screenshot 2025-05-01 at 10.10.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c2af5507-edab-45de-bf96-6b6d7b554b4d.png)

## Databricksジョブの設定

プロバイダー側では、[ファイル到着トリガー](https://docs.databricks.com/aws/ja/jobs/file-arrival-triggers)を用いたパイプラインジョブを設定します。これによって、ボリュームにファイルが追加された際に自動でDLTパイプラインを実行し、共有されているマテリアライズドビューが更新されるようになります。

![Screenshot 2025-05-01 at 9.39.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b9d1848f-0edf-4f37-a358-402085bd9bcb.png)
![Screenshot 2025-05-01 at 9.40.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/893d0b1c-c285-496b-99e3-d09b4018f048.png)

## 動作確認

ボリュームにファイルを追加していきます。

![Screenshot 2025-05-01 at 10.02.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e83ca0bb-cadc-4a23-8139-e36476ef6334.png)

```second.csv
id,name,grade,country
2,polka,80,IND
3,yuki,75,USA
```

```third.csv
id,name,grade,country
2,polka,80,IND
3,yuki,75,USA
```

ファイルが追加されると、自動でジョブが起動してマテリアライズドビューが更新されます。

![Screenshot 2025-05-01 at 10.02.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/db7e1b4f-89ad-46b7-a014-9aa47f564ab7.png)

受信者側のダッシュボードもそれに合わせて更新されます。

![Screenshot 2025-05-01 at 10.10.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8e352563-31ab-4bb8-86e6-7b8b9c2d760f.png)
![Screenshot 2025-05-01 at 10.14.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f4f80551-d37e-4c5e-8612-31e7bc24605b.png)

ご活用ください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

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