Microsoft Fabric で登場した 既定のセマンティックモデルの位置づけについて考える

## はじめに

私見を述べます。

## 既定のセマンティックモデルとカスタムセマンティックモデル

現在、Power BI にはセマンティックモデルの機能がありますが、Fabric の登場により既定のセマンティックモデル（デフォルトセマンティックモデルとも呼ばれます）が登場しました。

Power BI Service のころから存在する **セマンティックモデル**  
（以下、区別のため **カスタムセマンティックモデル** と表記します）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/7411a061-9067-2d7c-cc8d-c0256843d891.png)

Fabric で登場した **既定のセマンティックモデル**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0df09d92-c1e0-650b-2ff0-b00e6f710027.png)

## それぞれの機能的な違い

既定のセマンティックモデルの機能は限定的です。データモデルをカスタマイズし、BI レポートのためのモデルを作成する場合は、カスタムセマンティックモデルを選択すべきでしょう。

| 機能 | カスタムセマンティックモデル | 既定のセマンティックモデル |
|:-:|:-:|:-:|
| 開発ツール | Power BI Desktop, Tabular Editor など | Fabric Portal 画面のみ |
| モデル上のテーブルの基になるもの | Power Query のクエリ | ウェアハウスと SQL 分析エンドポイントのテーブル、View |
| ストレージモード | Import / DirectQuery / Direct Lake* | Direct Lake* |
| データソースへの認証 | クラウド接続で定義（[参考](https://qiita.com/ryoma-nagata/items/2af0fc0f6ab58cf764ac#%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%B8%E3%81%AE%E8%AA%8D%E8%A8%BC%E3%82%92%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%AA%E3%83%B3%E4%BB%A5%E5%A4%96%E3%81%AB%E3%81%99%E3%82%8B)） | シングルサインオンのみ |
| 表示名の設定 | 可能 | 不可 |
| セマンティックモデルの RLS | 可能 | 不可 |
| 計算列および計算テーブル | 可能** | 不可（Direct Lake の制限に準拠） |

\* Direct Lake のソースが View である場合や、データ量制限を超える場合などは Direct Query にフォールバックされます。
** Direct Lake モードの場合、現時点では不可

## どう付き合っていくべきか？

まず、セマンティックモデルとは何かを考えます。

> Microsoft Fabric では、Power BI セマンティック モデルは、分析ドメインの論理的記述であり、メトリック、ビジネスにわかりやすい用語、および表現によって、より深い分析を可能にします。  
> 引用：https://learn.microsoft.com/ja-jp/fabric/data-warehouse/semantic-models

このように、セマンティックモデルはデータ利用者に物理的なテーブルデータだけでなく、ドメイン知識やロジックが付与された情報を提供する役割を持ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ddd7fc96-851b-3046-188e-d4e462e99adc.png)

Power BI はこれまで、カスタムセマンティックモデルにより、多言語や馴染みのある論理名でのメジャーや集計軸を提供することで、利用者がデータベースの物理的な前提情報なしに自身のドメイン知識を基にした分析を行い、セルフサービスからエンタープライズ領域までをカバーするコラボレーティブな BI を実現してきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/5c5beabd-50cf-baf0-3592-10bdeabfc3bc.png)  
引用：https://www.microsoft.com/ja-jp/power-platform/products/power-bi?msockid=26e65972aa38684b2b8a4d9aab1a694e#tabs-pill-bar-ocb9d418_tab1

Fabric が登場し、レイクハウスとウェアハウスと呼ばれる分析データストアが、既定のセマンティックモデルとともに提供されるようになりました。

レイクハウスとウェアハウスは OneLake 上のデータを構造化し、**SQL分析** やノートブックによる **データレイク分析** を提供します。

OneLake 内のレイクハウス/ウェアハウスフォルダに保管されたデータを SQL 分析のためのアーキテクチャ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/812042cb-f129-ea62-ed14-5d4773339d2a.png)  
引用：https://blog.fabric.microsoft.com/en-US/blog/lakehouse-vs-data-warehouse-deep-dive-into-use-cases-differences-and-architecture-designs/

通常、DWH / データレイクなどの分析データストアを使った分析は物理名を使って行われますが、提供されたデータストア上で分析者がテーブルを組み合わせ、活用するためにはリレーションシップの情報が必要不可欠です。

既定のセマンティックモデルが提供する主な機能は、カスタムセマンティックモデルと比べると最低限ですが、ビジネスロジックの記述とリレーションシップの設定が可能なので、分析データストアの意味を理解するために十分な役割を果たします。

つまり、既定のセマンティックモデルはレイクハウスやウェアハウスなど、構造化されたテーブル群（データセット）を説明するためのドキュメントとして活用できます。

## 既定のセマンティックモデルの利点

### レイクハウス（SQL分析エンドポイント）とウェアハウスに対して、グラフィカルな ER 図を提供

リレーショナルモデルが視覚化されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c0ce8962-5d37-4ef8-46ad-8891b8dba0fa.png)

また、テーブルに T-SQL で[外部キー制約](https://learn.microsoft.com/ja-jp/fabric/data-warehouse/table-constraints#table-constraints)を設定すると、自動的にリレーションシップが有効になります。


```sql:sql

CREATE TABLE ForeignKeyReferenceTable (c1 INT NOT NULL);

ALTER TABLE ForeignKeyReferenceTable ADD CONSTRAINT PK_ForeignKeyReferenceTable PRIMARY KEY NONCLUSTERED (c1) NOT ENFORCED;

CREATE TABLE ForeignKeyTable (c1 INT NOT NULL, c2 INT);

ALTER TABLE ForeignKeyTable ADD CONSTRAINT FK_ForeignKeyTablec1 FOREIGN KEY (c1) REFERENCES ForeignKeyReferenceTable (c1) NOT ENFORCED;

```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/774ec624-1711-866c-0c8b-1629f7538d1f.png)


### 自動的に Direct Lake テーブルを追加可能

既定のセマンティックモデルは Direct Lake で構成されるため、最新のレイクハウス、ウェアハウスのテーブルを探索できます。モデルの同期設定をすることで、レイクハウスとウェアハウスのテーブルが自動的に可視化可能な状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/162e6314-4bd8-844c-83da-3b8f6d548b7a.png)

### データフロー Gen2 にリレーションシップが継承される

既定のセマンティックモデルで設定したリレーションシップが、データフロー Gen2 のクエリでマージによって表現され、クエリのステップを簡略化できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/9afeb470-68b6-bda5-25ac-2fa7897d2628.png)  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/034a5e0f-8a09-d1a3-6606-2a04b6dd51eb.png)

## まとめ

既定のセマンティックモデルは、ウェアハウスやレイクハウスのテーブルを準備するだけではなく、ビジネスユーザーにとって直感的に使いやすい分析環境を提供します。これにより、データの理解が進み、効果的な意思決定が可能になります。

### 余談：Synapse Analytics の Lake データベース - データベースデザイナー

Fabric の登場以前の Microsoft 純正の分析ソリューションといえば Azure Synapse Analytics でした。

その機能の一つに [Lake データベース](https://learn.microsoft.com/ja-jp/azure/synapse-analytics/database-designer/concepts-lake-database) があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/408a2193-9f7c-20fb-9a8a-0e9f1b841ba4.png)  
引用：https://www.slideshare.net/slideshow/synapse-lakedatabase/251249646#7

> Azure Synapse Analytics の Lake データベースを使用すると、データベースのデザイン、格納されているデータに関するメタ情報、データを格納する方法と場所を記述できる可能性をまとめることができます。  
> レイク データベースでは、データがどのように構造化されているかを理解するのが難しいという今日のデータレイクの課題に対処しています。

引用：https://learn.microsoft.com/ja-jp/azure/synapse-analytics/database-designer/concepts-lake-database

他の Synapse 機能が Delta Lake に対応している一方で、レイクデータベースは csv, parquet 限定などの制約があり、レイクハウス型ではなく、ピュアなデータレイクのための機能という位置づけにありましたが、[テンプレート](https://learn.microsoft.com/ja-jp/azure/synapse-analytics/database-designer/concepts-database-templates) による業界向けデータモデルの提供や、[データベースデザイナー](https://learn.microsoft.com/ja-jp/azure/synapse-analytics/database-designer/modify-lake-database) による ER 表現の設定機能など、先進的なものでした。

![lakedbtemplate.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/1298bc72-8c9a-74af-71b4-1700458135cc.gif)

このころから、レイクセントリックな分析環境を活用する上でのドメイン知識とデータストアの構成の連動が重視されていたように思います。