Power BI データフロー機能で Salesforce データと Dynamics 365 データを簡単に統合する

Power BI データフロー機能を調べてみました。
代表的な機能による概要と、そのメリットについてコンパクトに紹介します。
（ですので、設定の手順などは記載していません。）

#### 結論
- [Power BI データフロー機能](https://docs.microsoft.com/ja-jp/power-bi/service-dataflows-overview) を使うことにより、複数クラウドサービスのデータを結合できて、可視化され、データ更新の面倒さから解放されます。
- さらに、[Common Data Model](https://docs.microsoft.com/ja-jp/common-data-model/) によるところの、複数クラウドサービスで利用できる共通の標準化されたモデルを採用していることにより、非常に少ない学習コストで統合モデルを作成できます。

## 複数クラウドサービスのデータを統合
Power BI データフロー機能の象徴的な画面* です。
![複数のデータフローから成るワークスペース](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/6069d0c7-b453-37af-8024-3e20a4993736.png)
Dynamics 365 のデータと Salesforce のデータが統合されている UI が分かりやすいです。
上図の構成の意図は、Dynamics 365 から21個のエンティティ、Salesforce から 8個のエンティティを取得してきているが、最終的には統合された 7個のエンティティに対して Power BI で分析をしようとしているものです。
なお、統合先の箱も含めて右側の3つの箱各々が「データフロー」として定義されています。上図は、3つのデータフローを持つワークスペースです。
また、画面左上の Common Data Service というのは Dynamics 365 Customer Engagement 系アプリのデータが格納される標準のデータサービスです。
(*) 上記画面キャプチャの UI は、ダイアグラム ビューというプレビュー機能です。通常のリスト ビューだけを使っても、本記事に記載の Power BI データフローにおける概要とメリットは適用されます。

## Power BI Desktop からアクセス
プレビュー機能ですが、Power BI Desktop から Power BI データフローにアクセスできます。
![データフローにアクセスするコネクタ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/67fce7ec-cf6f-175b-af09-869f8203a24b.png)
例えば、Salesfoce で取引先データをマスターとして管理していて、Dynamics 365 では営業案件データを管理していて、取引先データとは取引先番号("accountNumber")でリレーションが張られている場合、以下のように 1ページ上で双方のデータが統合されたレポートを作成できます。
![Power BI Desktop](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/fa401d8c-1739-27ee-f74c-7f9e3eafe70e.png)
ここまでが、代表的な機能による概要の説明です。

## データ更新の自動化
ここからは、メリットの説明になります。3つのデータフローのうち、川上（左側）に位置する1つを（ここでは手動で）データ更新してみます。
![今すぐ更新](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/706eba46-39d7-1db8-d505-2e88c9f8ad60.png)
すると、データフロー機能は、川下（右側）に位置するデータフローをも自動的に更新してくれます。
![データ更新の自動化](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/7a456977-88db-989a-f2c7-0a989cf2c6db.png)
これにより、データ更新の面倒さから解放されます。

## データモデルを標準化
例えば、Salesforce では「取引先」オブジェクトで扱われるデータは、Dynamics 365 では「取引先企業」エンティティで扱われます。同様に、似たような項目が異なるフィールドで扱われます。
Power BI データフロー機能では、[Common Data Model](https://docs.microsoft.com/ja-jp/common-data-model/) (CDM) による標準データモデルにマッピングする「標準にマップする」機能が利用できます。
![Common Data Model](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/74608063-23af-0bfa-aee8-b26f024350e6.png)

## Common Data Model (CDM) により標準化されたモデルとの比較
比較してみます。CDM により標準化されたモデルは、Power BI Desktop から見たとき、Dynamics 365 (D365) でも Salesforce (SFDC) でも同じ属性群が並んでいます。Salesforce データを素のまま取得してきた際のモデルとはずいぶんと異なります。
![CDM Native 比較](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455051/61c443b1-ddca-4667-865f-639f41d88d66.png)

この標準化により、例えば、Salesforce のデータモデルは得意だけれども Dynamics 365 のデータモデルには知見がないというような方でも、簡単に統合されたモデルを作成することができます。
一度でも Common Data Model に親しんで頂ければ（Dynamics 365 の技術者にとってはよく知っているモデルです）、Common Data Model に対応しているサービスがデータソースである限り、統合したいクラウドサービスがたくさんあった場合でも、非常に少ない学習コストで統合モデルを作成できるのです。
以上がメリットの説明です。

## 注意点
本記事で説明している機能では、Power BI Premium サブスクリプションが必要ですので、ご注意ください。具体的には、「データフロー間でエンティティをリンクする」という機能を利用する際に必要となります。

## 参考ページ
- [Power BI でのセルフ サービスのデータの準備](https://docs.microsoft.com/ja-jp/power-bi/service-dataflows-overview)
- [Common Data Model](https://docs.microsoft.com/ja-jp/common-data-model/)