[Power BI] SharePointまたはOneDriveを使用したCI/CD

# はじめに

以前、Power BI勉強会で発表した内容の一部を記事化しました。
ビジュアルとデータモデルの分離については別記事にします。

https://speakerdeck.com/hanaseleb/power-bi-report-ops

https://powerbi.connpass.com/

## Power BI Report Ops

通常、Power BI Reportを一人で作成し一人で管理する場合には、ローカルだったりOneDriveにPBIXファイルを保存しておいて、それを更新→発行すればことたります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/e7c32dbc-64d0-ee9f-61d1-90721594092b.png)

しかしながら、エンタープライズBIになると、少なからず同じPower BI レポート（PBIXファイル）を複数人で管理する要件が出てくることがあります。

そのときに、PBIXファイルのやりとりで運用・管理しようとすると、多くの課題が出てきます。

* PBIXファイルのやり取りがめんどくさい
    * いつ、だれが作業しているのかわからない
    * ファイルサイズが大きい場合も多い
    * バージョン管理ができない

こういった課題を少しでも少なくするためにPower BI Service から最新版のPBIXファイルをダウンロードして編集しよう！という運用に行き着く場合もありますが、それでも、

* データセットの増分更新を設定するとPBIXファイルのDLができなくなる
* バージョン管理ができない

という課題は残ります。

エンタープライズ要件の場合、ファクトテーブルが大きい場合が多いと思うので、増分更新の設定は多くなります。となるとPower BI ServiceからのDLも使えなくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c8362041-4bc7-0ca9-3ae9-632f1d8052ae.png)


## そこで、SharePointを活用したCI/CD

**基本手順**

1. SharePointのドキュメントフォルダにPBIXファイルをアップロードします。
1. そのファイルをPower BI Serviceで取込

これが基本的な手順となります。

SharePointにPBIXファイルをアップロードしておく。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/92186cfb-2e5e-6302-f41c-e79605b1fc4f.png)

Power BI Serviceの「ファイルのアップロード」」からSharePointサイトを選択。チームサイトと書いてありますが、コミュニティサイトでも接続できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/fe74f3a8-4f0b-cf53-80ac-4067c0b4de49.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/58e79545-f763-7d00-5718-68e5422a137d.png)

アップロードしたいファイルを選択して、 **「接続」** ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/7f65abfd-8da0-9c1f-b120-145de7cd1723.png)

しばらくしてインポートが完了すると、ワークスペース上にレポートとデータセットができています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/7d5db4d8-1c0c-11af-48a0-4e61899973d4.png)

## SharePoint上のファイルとPower BI Serviceが接続

ここで重要なことは、SharePoint上のファイルとPower BI Service上のレポートおよびデータセットがシームレスに接続していることです。Power BI Desktopで通常行う **発行** を行っていないことがわかります。

https://docs.microsoft.com/ja-jp/power-bi/connect-data/refresh-desktop-file-onedrive

上記のドキュメントを読むと、更新間隔は約1時間に1回とありますが、実際には現在は10分に1回程度の間隔で同期がとられている様子です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/73efed80-03b4-80a6-53b4-c9158a628b47.png)

SharePoint上においてあるDEMOファイルを編集して保存します。
更新して2分ほどたってからPower BI Serviceを更新すると、すでにレポートは更新されているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/9d099772-caec-66db-db68-30d9cfe18c87.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/fb139ddf-d565-cbd8-334c-889887442a01.png)

## Sharepointの機能をフル活用！

### バージョン管理機能

SharePointではデフォルトでバージョン管理を行うことができます。この機能を使用することで、過去バージョンへの切替ができます。その際もSharePoint上でファイルを切り替えるだけで、Power BI Service上と同期されます。わざわざPower BI Desktop発行で発行ボタンを押す必要はありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/fbe86dca-99a1-f1fe-ca08-a50c1cf6a8ed.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/8dea2cd0-1be9-99b7-b293-89e68631fe5c.png)

### チェックアウト/チェックイン機能

複数人で同じPBIXファイルを管理しなければならない場合、同時編集をすることはいまのところできません。ですので、同じファイルを、同時に誰かが編集・更新できないようにチェックアウト/チェックイン機能も使用するといい要件の場合もあります。

ざっくりとした機能はこちら。

- チェックアウト
    - チェックアウトを行ったユーザーのみ編集・更新が可能
    - 他ユーザーはリード権限のみ与えられる
- チェックイン
    - 編集・更新を終えたらチェックイン
    - 更新履歴用のコメントを残すことができる
    - マイナーバージョンとすることもできる

設定場所は下記の図を参照。その他の中にあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/d65d2176-1be4-e303-3f1e-b84c14cff75b.png)

チェックアウト中のファイルには右下を向いた矢印アイコンが付与されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/9e49b199-5e72-0f5a-e6fd-38d10ce4bcf6.png)

この矢印が付いている間は、ほかのユーザーは編集することができません。
編集が終わったら今度はチェックインを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/8c08eb63-dae5-2188-163d-21e4e624ec27.png)

コメント入力画面が出るので、ここで今回行った修正・更新内容を記述することも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/e033a6f0-e73f-41c8-c10f-1f62ba6768b0.png)

バージョン履歴を確認すると、コメントがしっかりと記載されており、更新内容を把握することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/74762b86-48de-e921-4dd1-69192bc82f04.png)

### チェックアウト処理を必須にする

しかしながら、チェックアウトは少し手間がかかるので、「このくらいの修正なら・・」とチェックアウトなしで作業してしまうことも考えられます。そういった際に限って更新処理がかぶって事故が起こるものです。

そこで、SharePointではチェックアウトを必須にすることもできます。

右上の歯車マークから、ライブラリの設定に進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/3c4c5772-a042-9985-d2c0-566ced756120.png)

バージョン設定へ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/43833adf-4eba-f79d-53cb-306b59087104.png)

一番下にチェックアウトを必須にするかどうかの項目があります。
バージョン管理をマイナーバージョンまでつくることができるようにするかどうかもこのページ内の設定で行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/ed1d6cf8-719b-e1d5-fdb6-a62c0ce660dd.png)

### ローカルと同期

SharePointドキュメントライブラリはローカルマシンと同期をとることもできます。

SharePoint上で同期ボタンを押すだけです。
※初回はOneDriveのインストールが求められます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/123afdb7-6f5c-cec9-fdba-6ff1c1652e9e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/1350d122-eecc-dbcc-3dd8-1bdaa0af9b50.png)

ただしローカルでチェックアウトの処理はできないので、チェックアウトを必須にしている場合は一度オンラインでチェックアウト処理をしてからでないと更新作業は行えません。
ファイルを開くことはできますが、保存しようとすると下図のようなエラーがでます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/8ff76408-11e4-c1a1-1d79-919fc90cb3b8.png)

# まとめ

Power BIをチームで管理・運用しようとするといろいろ考えていかないといけないことがでてきます。解決策のひとつとして、紹介したSharePointまたはOneDriveを使用したCI/CDを活用してみてください。

## 参考リンク

https://speakerdeck.com/hanaseleb/power-bi-report-ops

https://powerbi.connpass.com/

https://docs.microsoft.com/ja-jp/power-bi/connect-data/refresh-desktop-file-onedrive

https://docs.microsoft.com/ja-jp/power-bi/connect-data/service-desktop-files?WT.mc_id=DP-MVP-5004418