Power BI "を" 可視化しよう！ ～データモデル編～

# はじめに

Power BI 勉強会　GW合宿 2022　第弐夜での発表内容です。
https://powerbi.connpass.com/event/246427/

## Power BI "で" 可視化しよう！

通常はこういう文脈で語られることが多いかと思います。
データを整備して、モデリングして、レポート作成。棒グラフをつくって、円グラフをつくって、散布図をつくる。Power BI **で** 可視化をしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/1edde930-f117-29da-17bc-fe5cc50867ae.png)

## Power BI "を" 可視化しよう！

今回やってみたいのは、Power BI **を** 可視化することです。
何段階かステップがありますので、ひとつずつやっていきます。

### PBIXファイルからデータモデルを取り出す

まず、やりたいことは、PBIXファイルからデータモデルを取り出すことです。

Power BI service にPBIXファイルをふつーうに作業をしてアップロードすると、データセット＆レポートになりますよね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/559d9249-7cd9-2a68-3b84-8f60215c03f6.png)

このことから、PBIXファイルには、

- データモデル
- インポートしたデータ
- ビジュアル

が含まれるということがわかります。

## Tabular Editor ２or３でデータモデルにアクセスする

そこで、PBIXファイルからデータモデルを取り出す作業に入っていきます。PBIXのデータモデルにアクセスするためにはTabular Editor ２or３ が必要です。

![2022GW夜のPowerBI勉強会第弐夜データモデル24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/af676d1e-1c4a-277b-1a52-309fd0d809a2.png)

https://tabulareditor.com/

Tabular Editor ２は無料（コミュニティエディション）で、Tabular Editor ３は有料です。今回行うことはTabular Editor ２でも十分に実施することが可能ですが、スクリーンショットはTabular Editor ３(TE3)になります。

サンプルデータ「Titanic」を使用して簡単なレポートを作成します。その後、外部ツールタブからTabular Editor ３のボタンを押します。ここからアクセスすると、TCP/IP(localhost)経由でデータモデルにアクセスをしたTE3が立ち上がります。

![2022GW夜のPowerBI勉強会第弐夜データモデル27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/eb9b167d-feb3-695d-bf2e-351c9fc11d36.png)

![2022GW夜のPowerBI勉強会第弐夜データモデル29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/f1e236bf-e53e-bfb0-3c5c-9cbe23e7d332.png)

TE3が立ち上がったら、おもむろに**File**から**Save**を実施すると、あまりみなれない`.bim`という拡張子のファイルを保存することができます。これがデータモデルの正体です。

![2022GW夜のPowerBI勉強会第弐夜データモデル33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/ab086d49-37ec-31d9-4124-3a48de5f772d.png)

## Model.BIMファイル

Model.BIMファイルにはデータモデルの定義がJSON形式で書かれています。テーブル名、カラム名、データソースの種類・設定などなどです。ちなみに、BIMは**Business Intelligence Model**の頭文字をとっているようです。DLされたファイルをテキストエディターで開いてみるとこんな感じ。ファイル名や互換性レベル、またそれぞれのカラム名が記載されているのが見えます。あくまでもデータモデルの定義で、データそのものは含まれません。

![2022GW夜のPowerBI勉強会第弐夜データモデル39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/abbcd725-ebe5-4db5-d7f5-d10895a40e7c.png)

## 少し話を変えて、UML

### UML

__UML__ とは __Unified Modeling Language__ の略語

日本語では「 __統一モデリング言語__ 」

こういうのとか、

![2022GW夜のPowerBI勉強会第弐夜データモデル49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/b5d56201-6eb9-7684-cb30-6f087af46b37.png)

こういうのをいうようです。

![2022GW夜のPowerBI勉強会第弐夜データモデル50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/cc49dd85-2fa1-7bed-6920-489fcfb3727a.png)

### PlantUML

このUMLをテキストベースで記述することができるツールがPlantUMLです。PlantUMLはQiitaのエディターにも対応しています。

![2022GW夜のPowerBI勉強会第弐夜データモデル53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/5e165b5a-7991-8791-a6a7-d763fe3fe995.png)

https://plantuml.com/ja/

- UMLダイアグラムを素早く作成するためのコンポーネント
- シンプルなテキストファイルで UML が書ける、オープンソースのツール
  * シーケンス図
  * ユースケース図
  * クラス図
  * オブジェクト図	などなど

左側のテキスト記述をすると、右側の画像が出力されます。VSCODEでも使えますし、オンラインツールもたくさん公開されています。

![2022GW夜のPowerBI勉強会第弐夜データモデル55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/d9fa7aa5-5179-fa55-aa92-d592803c0b97.png)

![2022GW夜のPowerBI勉強会第弐夜データモデル56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/f9136ac1-1a7b-a00c-b318-dc19cc696034.png)

### PlantUMLは**Jsonを可視化**することが可能

簡単なJSONであればこういう感じに。Jsonを `@startjson` と `@endjson` でかこむだけです。

![2022GW夜のPowerBI勉強会第弐夜データモデル57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/ba9d33e5-3187-f079-98f1-c53916144f72.png)

少し複雑でも、こんなにわかりやすく図示してくれます。

![2022GW夜のPowerBI勉強会第弐夜データモデル58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/2c9fd0ec-0752-8dd6-e36a-abcf5a449f1a.png)

# ようやく、Power BIを可視化しよう！

ようやく本題に入れます。つまり、PlantUMLを使用すれば、Power BI Desktopで作成したデータセットから、TE3を使ってアクセスし保存することができる`Model.BIM`ファイルを可視化することができるということです。

## やってみた。

ここから何を感じるかはあなた次第！`Model.BIM`には概念的にデータの定義が入っているんだなぁ・・と理解していた方も、こうやって可視化をすると少しPower BIにお近づきになれた気がしませんか？今回は単一のCSVファイルだけで作成したデータセットを可視化しましたが、複数データソースや、リレーションをはるとどう変化するのか、ぜひ試してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/03f3d981-1b44-5dba-5344-b9aeb903333c.png)

# まとめ

- データモデルはブラックボックスではない
- 構造がわかれば、理解が進む

https://powerbi.connpass.com/