今回はPowerAppsと一緒についてくる「Common Data Service」の機能の一つ「データ統合」機能の使い方について触れます。データ統合機能は他のシステム・データベースなどからデータをCommon Data Serviceへ連携する便利な機能です。

PowerAppsのデータ統合機能とは


データ統合機能が出てきた背景を理解するには、Common Data Serviceについても少し理解が必要です。今までITシステムを利用する時には、データがバラバラに散らばっていることが多く、別々のシステムへ都度ログインしたりし、「すべてを見渡す」ということができませんでした。Common Data Serviceの意味は「共通データサービス」つまり、どんなシステムのデータもこのCommon Data Serviceへ集めてしまうという考えにより生まれました。

そこでこのCommon Data Serviceへ他のシステムから連携するのがデータ統合機能です。基幹系の業務システムへ直接参照するのはリスクが大きかったりするので、この機能を利用し、安全に他のシステムのデータを見て、PowerAppsのアプリで2次利用したりすることも可能になります。


従来であればこのようなことを実現する場合には専用のETLツール(Extract、Transform、Load)が必要で、有名なところだと、以下のようなサービスが必要でした。

  • ASTERIA WARP
  • Waha!Transformer
  • Informatica Power Center
  • IBM InfoSphere DataStage
  • Data Spider Cloud

通常この手のシステムを導入するには数百万から数千万かかりますが、PowerAppsでは基本的な機能であれば標準装備ですので、別途導入する必要はありません。

Microsoft Flow vs データ統合

データの連係ならMicrosoft Flowがありますよね?とお考えの方もいるかと思いますが、大きな違いがあります。

Microsoft Flowの基本コンセプトは、「トリガー」に対して「アクション」を実行するという思想のもと、動きます。つまり、データは1件ずつ処理されます。2000件もデータがあれば、Office 365のプラン(BusinessやEnterpriseプラン)に含まれている実行回数をすぐに消費してしまいます。

データ統合機能は、Microsoft Flowの実行回数に含まれません。ですので、他のシステムからCommon Data Serviceへの一方通行の連携なら、データ統合機能にしてしまった方が良いです。

この後手順を記述していますが、データ統合機能は「アップサート」という考えがあり、自動で新規データか、更新データかを確認し、差分管理もしてくれます。この機能を利用することで、複数のシステムにバラバラに散らばっていたデータを1つのCommon Data Serviceへ格納し、マスターデータ管理ツールとしても利用できるのです。

データ統合機能の利用方法

PowerApps https://web.powerapps.com を開きます。

画面左側のデータタブから「データ統合」を選択します。

「新しいデータ統合プロジェクト」をクリックします。

ウィザードが立ち上がります。この画面で、どこからデータを取り込むのかを選択します。

クラウド上のものだけでなく、「オンプレミスデータゲートウェイ」をオンプレミス環境にインストールしていれば、オンプレのデータにもアクセス可能です。今回は最も需要が多そうな、SQL Serverデータベースと連携してみたいと思います。

サーバー名、データベース名を記入します。オンプレミス環境のSQLであれば、オンプレミスデータゲートウェイも選択します。認証方法はいくつかありますが、今回は最もシンプルなSQLログインで接続します。

記入し終えたら「次へ」をクリックします。

データベースが読み込まれると、記入したログイン情報の範囲でアクセス可能なテーブルが表示されます。

連携対象としたいテーブルにチェックを入れます。テーブルをクリックすると、画面右側にプレビューが表示されます。

今回の例では受注データの伝票と、その伝票明細のテーブルを連携させるというシナリオでお話しします。

余談にはなりますが、この画面「Power Query」となっているのはExcelやPower BIと同じPower Queryがオンライン上で実行しています。後の手順にも出てきますが、Power BIをお使いであれば、流れはほぼ同じです。

「次へ」をクリックします。

ウィザードの画面で直接データを加工します。通常他のシステムであればデータは素のまま取り込むかと思いますが、行を削除したり、列を増やしたり、テーブル同士を結合したりすることもクリック操作のみで設定可能です。

例えば列の選択機能を利用すると・・・

以下のようにExcelのフィルタみたいにチェックを入れるだけで連携対象の列かを選択できます。

関連するテーブルのデータを自動で認識した場合、以下のように新たな列としてその関連するテーブルのデータを丸ごと持ってきてくれます。何も加工しないと「記録」と表示されています。

例えばこの例にある「SalesLT.Product」は商品マスターのデータです。つまり、このウィザードは自動的にデータベースの中身を認識し、受注伝票の明細には商品マスターのデータと関連性があると認識したのです。

←→ボタンを押すと、含めたい列が表示されます。含めたい列にチェックを入れて、「OK」をクリックします。

すると自動で各受注伝票の明細に対して商品マスターの列も追加されました。

これならSQLクエリを知らずとも、いろいろデータの加工ができますね!

「次へ」をクリックします。

今度は先ほど加工したデータの取り込み先を指定します。

Common Data Serviceに新しいエンティティ(テーブル)を作成し、そこへデータを連係させることもできますし・・・

あらかじめ作成しておいたCommon Data Serviceのエンティティに対して連携し、各項目(フィールド)をマッピングさせることも可能です。

読み込みモードは2種類あります。

連携する度に一度データを削除して、入れ直す場合は「読み込み時に既存のデータを削除」を選択します。差分のみ連携したい場合は「新しい行または変更された行のみ読み込む」を選択します。

次に更新頻度と実行時間などを指定します。

手動で実行することもできますが、以下のように自動にすることも可能です。

連携が完了すると、以下のように完了が表示されます。「完了」ボタンをクリックします。

最初に設定したときは「プロジェクト1」などと連携設定の名前がわかりにくいので、プロジェクトの名前を変更されることをおすすめします。

実行履歴が見たい場合は対象の設定右側にある「・・・」をクリックし、「更新履歴を表示」をクリックします。

別のタブでPowerApps管理センターが立ち上がり、以下のような画面が表示されます。ここにある「UPSERT」がデータの件数を表しています。

取り込まれたデータを参照

データを見たい時は、画面左側の「エンティティ」を選択し、連携先のエンティティを選択します。

「データ」のタブがあるので、そちらをクリックするとデータの一覧が表示されます。わかりにくい場合は画面右上の「ビューの選択」から「すべてのフィールド」を選択すると、全項目表示されます。