Dynamics NAVでAPIを利用するための手順とTableau連係をしてみる

（この記事はCData Software User Group Advent Calendar 2017の8日目です！）
[CData Software User Group Advent Calendar 2017](https://qiita.com/advent-calendar/2017/cdatasoftware)

12月1日にDynamics NAV 2018がリリースされましたねー！

Dynamics NAV 公式
https://www.microsoft.com/ja-jp/dynamics365/nav-overview

Dynamics NAVはマイクロソフトのビジネスアプリケーションシリーズの中でERPタイプとして提供されているアプリケーションです。

Wikipediaでは以下のような形で紹介されています。

>Microsoft Dynamics NAV（旧称Navision）はマイクロソフト社製のERPパッケージの一つである。
>Microsoft Dynamics NAVは、マイクロソフトが展開するMicrosoft Dynamicsシリーズの一製品である。財務管理、販売管理、仕入管理、倉庫管理、生産管理、サービス管理、リソース管理等の機能を備えており、世界165カ国で10万社以上（2013年12月現在）の企業に導入されている。

私もさっそく、Dynamics NAVをインストールしてみましたので、色々と新しくなったDynamics NAVにも触れつつ、今回はAPI連係部分の手順と、連係の簡単な方法を紹介したいと思います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/9eaa16c4-cb08-fc4b-c76d-e28daed24514.png)

さて、Dynamics NAV 2018の情報ですが、

日本ではパシフィックビジネスコンサルティングがDynamics NAV 2018の提供を開始されたみたいで、
個人的に以下の記事が、Dynamics NAVの機能概要にも触れながら、紹介されているのでおすすめです！

パシフィックビジネスコンサルティング、Microsoft Dynamics NAV 2018を五ヵ国語で販売開始
http://www.sankeibiz.jp/smp/business/news/171205/prl1712051414112-s1.htm

また、発表時のスライドが公開されているので、日本語情報の少ないNAVに関しては、本当にありがたいです。
Dynamics NAV 2018 5か国語版 プレスリリース
https://www.slideshare.net/secret/ztye60yxwsFLxf

特に私が注目しているのは、APIの機能拡張ですね。REST・ODATAのエンドポイントがかなり増えたみたいですね！

ビジネスアプリケーションとして、APIは必須だと思いますが、ただのRESTではなく、ODataという連携しやすい形式で出してもらえたのがなによりだなぁと思います。

さて、それでは実際にAPIの利用手順に触れていってみましょう

#OData API エンドポイント公開手順

CData Softweare ではDynamics NAVと連係できる各種ドライバー（ODBC,Excel,ADO.NET,JDBC等）を提供しているのですが、

https://www.cdata.com/jp/drivers/dynamicsnav/odbc/

もちろん、内部的にはDynamics NAV公式のAPIを通して、SQLが利用できるように提供しています。

なので、実際に使い始めるには事前にDynamics NAV側でAPIの設定が必要となります。

設定はそんなに難しはなく

1.まずDynamics NAV右上の検索ウィンドウから[Web Service]を検索

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/3ec90545-2ca7-ed47-473d-6ff9a3134aff.png)

2.Web Serviceの一覧が表示されたら、新しくAPIの公開エンドポイントを登録するために、[New]をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/190000ab-519b-5294-cc9e-e97e8df3eab9.png)

3.公開したいオブジェクトIDを選択して、APIのServiceName、それからpublishedにチェックを入れて、[OK]をクリックすれば、公開完了です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/4cd5ebb4-6cfd-c3e4-b648-4f7cba005575.png)

Dynamics NAVの場合、公開したいオブジェクトごとに、APIを設定する必要があることに注意しないといけないですね。

#Dynamics NAV Data をTableau でビジュアライズ

続いて、せっかくなので公開したAPIエンドポイントを利用して、Tableauでビジュアライズしてみましょう。

Tableau 公式
https://www.tableau.com/ja-jp

Tableauは標準ではDynamics NAVと連係できませんが、CDataのODBCドライバーを利用することで、TableauでDynamics NAVのデータをビジュアライズできるようになります。

CData Dynamics NAV ODBC ドライバーは以下から30日間試用版をダウンロードして、試してみてください。
https://www.cdata.com/jp/drivers/dynamicsnav/odbc/

最終的には、以下のようなイメージで構成する想定です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/4863acbe-bd71-fdf2-87b5-a90bceefa2f9.png)

#Tableauでの設定手順

1.ダッシュボードに Dynamics NAV Data を追加

まず、ODBC DSN （データソース名）で行います。Microsoft ODBC データソースアドミニストレーターを使ってODBC DSN を作成および設定できます。一般的な接続プロパティは以下のとおり。

- http://myserver:7048
- User
- Password
- ServerInstance

Microsoft ODBC データソースアドミニストレーターで必要なプロパティは如何に詳しく掲載しています。

http://cdn.cdata.com/help/JNC/odbc/pg_startedintroo.htm

2.続いて、Tableauを起動して、［Connect to Data］>［More Servers］>［Other Databases (ODBC)］をクリックします。CData Data Source Name (DSN) を選択します（※CData driver は64ビットおよび32ビットアプリケーションの両方をサポートしています）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/26a774ad-2a01-81cb-0257-e4d8501bde2e.png)

3.［Database］メニューでCData を選択します。
4.［Table］ボックスにテーブル名を入力、または［New Custom SQL］をクリックしてSQL クエリを入力します。
5.［Data Source］ページで、テーブルをjoin エリアにドラッグします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/d08798c8-e9a3-2737-bba0-487bc8749402.png)

6.［Connection］メニューで［Live］オプションをクリックします。コピーデータのTableau へのロードをスキップして、代わりにリアルデータを扱うためです。さらに、データビジュアライゼーションを作成するたびにTableau がDynamics NAV data に関連するクエリを実行するよう［Automatically Update］をクリックします。カラムはデータの種類に応じてDimensions およびMeasures としてリストされます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/ea3d36eb-2dbf-e73d-d838-221240a8d6c2.png)

7.ワークシートのタブ上で、［Dimensions］ペインのカラムをダッシュボードにドロップします。dimensions を選択すると、Tableau はドライバーにクエリをビルドします。dimension の値は自動的にグループ化されます。クエリはdimensions およびmeasures を選択するたびに自動的に修正されます。

8.［Measures］フィールドのカラムを、［Detail］および［Color］ボタンにドラッグします。measure を選択するとTableau はドライバーにコマンドを実行し、

例えば、Prices_Including_VAT をName で表すシンプルなチャートを作成するには、Tableau は次のクエリを実行します：

'''
SELECT Name, Prices_Including_VAT FROM Customer
 A simple visualization that shows the latest data.
'''

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/ecdce1f2-ed70-1f37-aa64-003c49d54ed3.png)

9.dimensions およびmeasures を使った別のチャートを作成してSQL クエリを視覚的にビルドできます：

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/535b9a7a-46ea-ac77-292c-58cbe68c9c60.png)

#おわりに

今回は基本的なBI系ツールアプローチでしたが、今度は私のメイン領域であるDynamics 365(CRM)やSharePointと連係させてみたいところです。

あと、やっぱりODataは使いやすいよなぁ、もうちょっと流行ってほしいよなぁと思う今日このごろですね・・・。