【徹底解説】Dash を使ってPython からJD Edwards のデータに連携するアプリを簡単に開発

加藤龍彦
加藤龍彦
デジタルマーケティング
JD Edwards × Python連携を簡単に。pandas・DashとCData Python ConnectorでPythonのデータ連携を簡単に実現、データ可視化アプリが短時間で完成。



Python エコシステムには、多くのモジュールがあり、システム構築を素早く効率的に行うことができます。CData Python Connector for JDEdwards を使うことで、pandas モジュールとDash フレームワークでJD Edwards にデータ連携するアプリケーションを効率的に開発することができます。本記事では、pandas、Dash とCData Connector を使って、JD Edwards に連携して、JD Edwards のデータ をビジュアライズするシンプルなウェブアプリを作る方法をご紹介します。

CData Python Connectors の特徴

CData Python Connectors は、以下のような特徴を持った製品です。

  1. JD Edwards をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレデータソースに対応
  2. Dash をはじめとする多様なデータ分析・BI ツールにJD Edwards のデータを連携
  3. ノーコードでの手軽な接続設定

必要なモジュールのインストール

まずは、pip で必要なモジュールおよびフレームワークをインストールします:

pip install pandas
pip install dash
pip install dash-daq

Python でJD Edwards のデータを可視化

必要なモジュールとフレームワークがインストールされたら、ウェブアプリを開発していきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に掲載しているので、参考にしてください。

まず、CData Connector を含むモジュールをインポートします:

import os
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import cdata.jdedwards as mod
import plotly.graph_objs as go

接続文字列を使ってデータへの接続を確立します。connect 関数を使ってCData JD Edwards Connector からJD Edwards のデータ との接続を確立します。

cnxn = mod.connect("URL=https://your-jde-environment-app.example.com;User=admin;Password=myPassword;")

ドライバーは Application Interface Services(AIS)Server を経由して JD Edwards に接続します。以下の接続プロパティを設定します。

  • URL:AIS Server のベース HTTPS URL(例:https://jde-ais.example.com:8300)。
  • User:JD Edwards のユーザー名。
  • Password:JD Edwards のパスワード。
  • Environment(オプション):使用する JD Edwards の環境(例:本番環境なら PD920、開発環境なら DV920)。指定しない場合は、AIS Server のデフォルト環境が使用されます。
  • Role(オプション):セッションで使用する JD Edwards のロール。指定しない場合は、AIS Server のデフォルトロールが使用されます。
  • DeviceName(オプション):接続元のデバイスまたはアプリケーションの識別子。AIS Server での監査やログ記録に使用されます。
  • Jasserver(オプション):リクエストのルーティング先となる Java Application Server(JAS)インスタンス。クラスタ環境で便利です。

公開するデータの選択

JD Edwards ではテーブルとビジネスビューが System Code ごとに整理されており、ドライバーは各 System Code をそれぞれ個別のスキーマとして公開します。利用できるスキーマは、以下のプロパティで制御できます。

  • DataModel:System Code をスキーマとして公開する ERP モジュール(カンマ区切りで複数指定可)。接続先インスタンスのすべての System Code を公開する場合は All を指定します。デフォルトは FinancialManagement です。
  • SystemCodes:DataModel の System Code に加えて公開したい System Code のカンマ区切りリスト(例:42,43)。

接続時、ドライバーは認証情報を AIS Server に送信してセッショントークンを取得し、キャッシュします。セッションの有効期限が切れる前に、新しいトークンが自動でリクエストされます。

JD Edwards にクエリを実行

read_sql 関数を使って、padas からSQL 文を発行し、DataFrame に結果を格納します。

df = pd.read_sql("""SELECT DocumentNumber, Amount FROM AccountsPayable.AccountLedger WHERE BusinessUnit = '100'""", cnxn)

ウェブアプリケーションの設定

DataFrame に格納されたクエリ結果を使って、ウェブアプリにname、stylesheet、title を設定していきます。

app_name = 'dash-jdedwardsedataplot'

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.title = 'CData + Dash'

Layout 設定

次に、JD Edwards のデータ をベースにした棒グラフを作詞し、アプリのレイアウトを設定します。

trace = go.Bar(x=df.DocumentNumber, y=df.Amount, name='DocumentNumber')

app.layout = html.Div(children=[html.H1("CData Extention + Dash", style={'textAlign': 'center'}),
	dcc.Graph(
		id='example-graph',
		figure={
			'data': [trace],
			'layout':
			go.Layout(alt='JD Edwards AccountsPayable.AccountLedger Data', barmode='stack')
		})
], className="container")

アプリをセットアップして実行

接続、アプリ、レイアウトを定義したら、アプリを実行してみましょう。以下のコードで実行できます。

if __name__ == '__main__':
    app.run_server(debug=True)

最後に、Python でウェブアプリを起動してブラウザでJD Edwards のデータ を見てみましょう。

python jdedwards-dash.py
Dash のウェブアプリでJD Edwards のデータ を表示

ちゃんとデータが表示できてますね!

おわりに

JD Edwards Python Connector の30日の無償トライアル をぜひダウンロードして、JD Edwards のデータ への接続をPython アプリやスクリプトから簡単に作成してみてください。



import os
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import cdata.jdedwards as mod
import plotly.graph_objs as go

cnxn = mod.connect("URL=https://your-jde-environment-app.example.com;User=admin;Password=myPassword;")

df = pd.read_sql("SELECT DocumentNumber, Amount FROM AccountsPayable.AccountLedger WHERE BusinessUnit = '100'", cnxn)
app_name = 'dash-jdedwardsdataplot'

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.title = 'CData + Dash'
trace = go.Bar(x=df.DocumentNumber, y=df.Amount, name='DocumentNumber')

app.layout = html.Div(children=[html.H1("CData Extention + Dash", style={'textAlign': 'center'}),
	dcc.Graph(
		id='example-graph',
		figure={
			'data': [trace],
			'layout':
			go.Layout(alt='JD Edwards AccountsPayable.AccountLedger Data', barmode='stack')
		})
], className="container")

if __name__ == '__main__':
    app.run_server(debug=True)

はじめる準備はできましたか?

JD Edwards Connector の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

JD Edwards Icon JD Edwards Python Connector

JD Edwards へのデータ連携用のPython Connector ライブラリ。 pandas、SQLAlchemy、Dash、petl などの主要なPython ツールにJD Edwards をシームレスに統合。