2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dynamics 365 Business Central から Power Query で CDS にデータを渡す。

Posted at

先日、Microsoftの吉田さんによるPowerAppsのWebinerでデータ統合機能が説明されていたので、早速 Dyanmics 365 Business Central のデータを読み込んでみました。今回はその手順の説明です。

Dynamics 365 Business Central って何ですか??という方はこちらをご参照ください。簡単に言うと、中小・中堅向けのERPパッケージですね。(詳しい説明は本旨ではないので割愛します。)
Dynamics 365 Business Central で試してみましたが、他のデータソースについても手順的には同様だと思いますのでご参考になるかと思います。

PowerAppsのデータ統合機能については、ざっくり言うと「ERPであれCRMであれ何であれ、とにかくCDSにデータを溜めましょう。そのためのツールを作りました。」といった所です。Microsoft製品であるDynamicsに限らずSalesForceであれSAPであれ何であれ、です。

PowerBIじゃなくてPowerApps?という疑問もあるかと思いますが、要はPowerQueryです。

##おさらい:Power BI デスクトップでD365BCのデータを読む。
PowerAppsのデータ統合プロジェクトの前にまずはPowerBIデスクトップでDynamics 365 Business Central(長いので以下D365BCと略記)のデータを読み込むところから。

PowerBIデスクトップでデータを取得を選択。色々コネクタがありますがD365のコネクタがここには無いので「その他」を選択。
01_CDS-DataIntegration-from-D365BC.png

オンラインサービスの中にDynamics 365 Business Central のコネクタがあるので選択して接続。
02_CDS-DataIntegration-from-D365BC.png

D365BCはSaaSで提供されているので(※)サインインが必要になります。サインインを選択。(※:オンプレ版もありますが、今回はSaaS版での説明です。オンプレ版だとゲートウェイとか色々面倒なので。)D365BC以外のサービスでも大抵はここで認証処理が走るはずです。
03_CDS-DataIntegration-from-D365BC.png

D365BCのユーザーアカウントを選択してサインイン。
04_CDS-DataIntegration-from-D365BC.png

ユーザー認証後に接続。
05_CDS-DataIntegration-from-D365BC.png

D365BCのテーブル(※)が一覧表示されました。
(※:正確にはテーブルではないですが、、後述。)
06_CDS-DataIntegration-from-D365BC.png

今回はJob_Listで説明します。Jobは所謂「プロジェクト」です。
(Jobが何か?について今回は特に気にする必要はありません。単純にデータ件数が少なくて見やすいので選んだだけです。。)
Job_Listを選んで右側に表示される一番上のレコードが自分が手で登録したデータです。(残り3つは標準デモデータ)
07_CDS-DataIntegration-from-D365BC.png

一覧で表示されている「テーブル」の正体はこちらです。D365BCにWebServiceという機能があり、D365BC独自の言語で開発したQueryなどで取得したデータをWebAPIとして公開できます。
09_CDS-DataIntegration-from-D365BC.png

下線部のURLを叩くとD365BCがODataV4のjson形式でデータを返す、という仕組みです。
10_CDS-DataIntegration-from-D365BC.png

要はODataなので、ODataフィードからデータを取得する事もできます。
11_CDS-DataIntegration-from-D365BC.png

ODataのURLを指定して、、
12_CDS-DataIntegration-from-D365BC.png

そのままでは認証されないので、
13_CDS-DataIntegration-from-D365BC.png

組織アカウントでサインイン。
14_CDS-DataIntegration-from-D365BC.png

D365BCに接続できるアカウント指定して認証。
15_CDS-DataIntegration-from-D365BC.png

認証を通したら接続。
16_CDS-DataIntegration-from-D365BC.png

Dynamics 365 Business Central のコネクタを使っても、ODataフィードのコネクタを使っても、結果は同じでこんな感じでデータが取れます。
17_CDS-DataIntegration-from-D365BC.png

下の方にスクロールして「JOB_List」を見つけます。
18_CDS-DataIntegration-from-D365BC.png

右の列の「Table」をクリック。
19_CDS-DataIntegration-from-D365BC.png

データが表示されました。一番上のレコードが自分が手で登録したデータです。(残り3つは標準デモデータ)
20_CDS-DataIntegration-from-D365BC.png

##本題:PowerAppのデータ統合機能でD365BCのデータを読む
前提として、PowerAppsのPlan2が必要です。
サイドメニューで「データ」の下の階層の「データ統合」を選択。
21_CDS-DataIntegration-from-D365BC.png

「データ統合プロジェクト」を選択。
22_CDS-DataIntegration-from-D365BC.png

コネクタが一覧表示されます。PowerBIと違って少ないですね。そしてDynamicsのコネクタが見当たらない。。
コネクタについては今後順次追加予定とのことです。(Webinerで質問したところそういう回答を頂きましたw)
そしてよく見ると上の方に「PowerQuery」と書いてありますね。そうです、要はPowerQueryです。
23_CDS-DataIntegration-from-D365BC.png

Dyanmicsのコネクタが無くても諦めるのは早いです。PowerBIデスクトップの所で確認したように、要するにODataなので、ODataフィードのコネクタでやってみます。
24_CDS-DataIntegration-from-D365BC.png

接続の資格についてはPowerAppsを使用しているOffice365アカウントとD365BCのアカウントが同じであればサインイン不要です。そして、「次へ」。
25_CDS-DataIntegration-from-D365BC.png

PowerBIデスクトップの時と同様にテーブルの一覧が表示されました。
26_CDS-DataIntegration-from-D365BC.png

下の方にスクロールして、JOB_Listの[Table]をクリック。
27_CDS-DataIntegration-from-D365BC.png

テーブルのレコードが表示されます。手登録したデータも含めて表示されています。ここまでいい感じです。「次へ」
28_CDS-DataIntegration-from-D365BC.png

読み込みの設定画面が表示されます。今回は読み込み先のエンティティを作成していないので、取り込み時に新規登録することにします。従って、、
29_CDS-DataIntegration-from-D365BC.png

「新しいエンティティ読み込む」を選択すると右側が変わります。フィールドマッピングとありますが、これは取得元であるD365BCの項目名と読込先のCDSのエンティティの項目を対応付けよ、ということです。
30_CDS-DataIntegration-from-D365BC.png

とは言ったものの、新規作成なので項目はそのまま右から左(左から右?)に渡すだけです。新規作成するカスタムエンティティに名前を付け、キー項目だけは明示的に指定が必要なので「No」と「cr5cd_No」をキーとして紐づけます。この「cr5cd_」というプレフィックスはカスタムエンティティ新規作成時に(多分)ランダムに振られる文字列です。恐らく、ユニークにするための文字列でしょう。指定した後は「次へ」。
31_CDS-DataIntegration-from-D365BC.png

更新タイミングを指定します。今回は「手動」にします。(余談ですが、この手の設定は上手く行ってから「自動」にするのがよいです。でないと延々と同期エラーを繰り返すことがあります。)そして「作成」をクリック。
32_CDS-DataIntegration-from-D365BC.png

処理が進みます。
33_CDS-DataIntegration-from-D365BC.png

進みます。
34_CDS-DataIntegration-from-D365BC.png

進みます。いい感じです。
35_CDS-DataIntegration-from-D365BC.png

失敗しました。。
36_CDS-DataIntegration-from-D365BC.png

右端の「...」アイコンからログが取得できます。
37_CDS-DataIntegration-from-D365BC.png

メッセージを読む限り、D365BC側の問題ではなく、CDS側の問題のように見えます。D365BC以外のODataフィードで試してみるとか、先にCDSのカスタムエンティティを作成してから取り込んでみるとかすれば、原因が切り分けられるかと思います。
38_CDS-DataIntegration-from-D365BC.png

が、その前に別の方法を試してみます。データソースの指定時にWebAPIを選びます。
39_CDS-DataIntegration-from-D365BC.png

URLを指定します。
40_CDS-DataIntegration-from-D365BC.png

URLの取得元はこちら。D365BCのWebServiceの一覧画面です。
40-1_CDS-DataIntegration-from-D365BC.png

Json形式のファイルをテーブルに変換します。
41_CDS-DataIntegration-from-D365BC.png

深く考えずにそのまま「OK」。
42_CDS-DataIntegration-from-D365BC.png

若干分かりづらいですが、赤丸のアイコンをクリックして、、
43_CDS-DataIntegration-from-D365BC.png

OKを押すと、、
44_CDS-DataIntegration-from-D365BC.png

データがサンプル表示されました。ここまでいい感じです。手で登録したデータも見えています。
45_CDS-DataIntegration-from-D365BC.png

マッピング設定は先ほどと同じ。
46_CDS-DataIntegration-from-D365BC.png

同じように指定します。
47_CDS-DataIntegration-from-D365BC.png

同じように指定します。
48_CDS-DataIntegration-from-D365BC.png

更新設定もとりあえず「手動」を選択して「作成」。
49_CDS-DataIntegration-from-D365BC.png

処理が進みます。
50_CDS-DataIntegration-from-D365BC.png

進みます。。
51_CDS-DataIntegration-from-D365BC.png

進みます。。。
52_CDS-DataIntegration-from-D365BC.png

完了しました!
53_CDS-DataIntegration-from-D365BC.png

データ統合プロジェクトの一覧画面で該当のプロジェクトを選択して「編集」を押すと、、
54_CDS-DataIntegration-from-D365BC.png

PowerQueryが編集できます。操作についてはPowerBIのそれと同じです。
55_CDS-DataIntegration-from-D365BC.png

新規作成したエンティティを見てみましょう。左サイドのメニューの「データ」の下の「エンティティ」を選んでエンティティ一覧を表示し、該当のエンティティをクリック。
56_CDS-DataIntegration-from-D365BC.png

デフォルトはフィールドタブなのでフィールド一覧が表示されます。データタブをクリックすると、、
57_CDS-DataIntegration-from-D365BC.png

データレコードが表示されました。ただ、標準のままだと列項目が少ないですね。。
58_CDS-DataIntegration-from-D365BC.png

そういう時は右上の「ビューの選択」で全項目表示するビューに切り替えます。
59_CDS-DataIntegration-from-D365BC.png

列項目が追加された状態でデータを見る事ができました。
60_CDS-DataIntegration-from-D365BC.png

と、こんな感じでデータ統合機能を用いるとDynamics 365 Business Central(あるいはその他のサービス)からデータを抜いてCDSに溜めることができます。問題は、このデータをどう使うか?ということです。データをBI的に見るだけならPowerAppsのPlan2をわざわざ契約するまでもなくPowerBI側でやれるわけですから、それ以上の付加価値が欲しいところです。つまり、このデータを使って業務プロセスを回すみたいなことができないと意味ないかな、と思ったりします。その辺はモデル駆動型アプリをどううまく使うかに掛かっていると思います。まだCDSやモデル駆動型アプリは全体像が見えてないように思えるのでウォッチしていきたいと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?