PowerBI.com で Dynamics CRM Online のデータを解析する: その 5 高度なデータセットの作成
みなさん、こんにちは。
前回は、Power BI Desktop を利用した独自データセットの作成を紹介しましたが、
今回はより高度なデータセットの作成について紹介します。
テーブルと接続
前回の記事では、Dynamics CRM Online に対して接続を一度だけ行い、そこから
テーブルを複数取得しましたが、実際には各テーブルはそれぞれ独立して接続を
保持しています。
前回の方法でデータを取得した場合には、以下の課題が残ります。
- 取得する列の指定ができないため、不要な行データを取得してしまう。
- テーブルに対してフィルターを指定できないため、不要な列データを取得してしまう。
今回は上記の課題に対応できる、より高度なデータセットの作成を紹介します。
クエリを利用した行と列のフィルター
まず、行と列にフィルターをしてデータを取得する方法から紹介します。
1. Power BI Desktop を開きます。アプリケーション起動時に表示されるスプラッシュウィンドウで
「データを取得」をクリックします。
2. データソースの一覧から 「Dynamics CRM Online」 を選択して、「接続」 を
クリックします。
3. Web API を利用した取引先企業を取得する URL を入力します。今回は有効な取引先企業のみ、
および名前と取引先企業番号のみを取得するようにしました。
https://<組織名>.crm7.dynamics.com/api/data/v8.0/accounts?$select=name,accountnumber&$filter=statecode eq 0
4. 前回の記事で一度データを取得していると、認証情報が残っているため認証は聞かれません。
認証情報が残っていない場合には、認証画面で「組織アカウント」を選択して、「サインイン」を
してください。
5. Office 365 の認証画面がポップアップするので、サインインします。サインイン完了後、
「接続」をクリックします。
6. 前回はエンティティ一覧が表示されましたが、今回は取引先企業を直接クエリしていますので、
テーブルのデータが表示されます。尚、列情報はメタデータから取得するため全て表示されて
いますが、実際のデータはクエリで指定したものだけが取得されます。
7. 「読み込み」をクリックして読み込みます。
8. 読み込まれたテーブルを右クリックして、適切な名前に変更します。
クエリの変更
一旦テーブルを作成した後、フィルターの変更や、取得する列の追加/削除が必要になる
場合があります。その場合、以下手順でクエリを変更します。
1. テーブルを右クリックして、「クエリの編集」をクリックします。
2. 「適用したステップ」欄に表示されている「ソース」の設定アイコンをクリックします。
3. URL 入力の画面が出るので、クエリを変更して、「OK」 をクリックします。ここでは
_primarycontactid_value を追加しました。
4. データが読み込まれていることを確認します。
ビューを指定したクエリ
通常のクエリ以外にも、Dynamics CRM 2016 Web API の機能である、ビューを指定した
クエリも実行できます。ただしビューの列が対象としているエンティティの列のみを
含む場合のみ利用可能です。
1. 今回は新しくテーブルを作ってみます。「データを取得」リボンより、「さらに表示」をクリックします。
2. Dynamics CRM Online を選択して「接続」をクリックします。
3. URL のアドレスを入力して「OK」をクリックします。
https://<組織名>.crm7.dynamics.com/api/data/v8.0/accounts?savedQuery=<ビューの Guid>
例えば「アクティブな取引先企業」ビューの場合、以下のアドレスを利用します。
https://<組織名>.crm7.dynamics.com/api/data/v8.0/accounts?savedQuery=00000000-0000-0000-00AA-000010001002
4. 以下のエラーが表示されます。これはビューに関連テーブルの列が含まれるためです。00
5. Dynamics CRM のカスタマイズより、「アクティブな取引先企業」ビューを開きます。
6. 列の一覧より「電子メール(取引先責任者)」を選択して、削除します。
7. 変更を保存して公開します。
8. 再度 Power BI Desktop 側から、先ほどと同じ URL で接続を試みます。
今度は正常に接続が行えます。
まとめ
今回は Power BI のデータセットに含まれるテーブルが、それぞれ接続を
持っていることと、データを取得する際にフィルターする方法を紹介しました。
次回は高度なレポートの作成を紹介します。お楽しみに!
‐ 中村 憲一郎