Python でJD Edwards のデータを変換・出力するETL 処理を作る方法

加藤龍彦
加藤龍彦
デジタルマーケティング
CData Python Connector とpetl モジュールを使って、JD Edwards のデータを変換後にCSV ファイルに吐き出すETL 処理を実装します。



Pythonエコシステムには多くのモジュールがあり、システム構築を素早く効率的に行うことができます。本記事では、CData Python Connector for JDEdwards とpetl フレームワークを使って、JD Edwards のデータにPython から接続してデータを変換、CSV に出力するETL 変換を実装してみます。

CData Python Connector は効率的なデータ処理によりJD Edwards のデータ にPython から接続し、高いパフォーマンスを発揮します。JD Edwards にデータをクエリする際、ドライバーはフィルタリング、集計などがサポートされている場合SQL 処理を直接JD Edwards 側に行わせ、サポートされていないSQL 処理については、組み込みのSQL エンジンによりクライアント側で処理を行います(JOIN やSQL 関数など)。

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

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

pip install petl
pip install pandas

Python でJD Edwards のデータをETL 処理するアプリを構築

モジュールとフレームワークをインストールしたら、ETL アプリケーションを組んでいきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に付いています。

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

import petl as etl
import pandas as pd
import cdata.jdedwards as mod

接続文字列で接続を確立します。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 をクエリするSQL 文の作成

JD Edwards にはSQL でデータアクセスが可能です。AccountsPayable.AccountLedger エンティティからのデータを読み出します。

sql = "SELECT DocumentNumber, Amount FROM AccountsPayable.AccountLedger WHERE BusinessUnit = '100'"

JD Edwards データのETL 処理

DataFrame に格納されたクエリ結果を使って、petl でETL(抽出・変換・ロード)パイプラインを組みます。この例では、JD Edwards のデータ を取得して、Amount カラムでデータをソートして、CSV ファイルにデータをロードします。

table1 = etl.fromdb(cnxn,sql)

table2 = etl.sort(table1,'Amount')

etl.tocsv(table2,'accountspayable.accountledger_data.csv')

CData Python Connector for JDEdwards を使えば、データベースを扱う場合と同感覚で、JD Edwards のデータ を扱うことができ、petl のようなETL パッケージから直接データにアクセスが可能になります。

おわりに

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



フルソースコード

import petl as etl
import pandas as pd
import cdata.jdedwards as mod

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

sql = "SELECT DocumentNumber, Amount FROM AccountsPayable.AccountLedger WHERE BusinessUnit = '100'"

table1 = etl.fromdb(cnxn,sql)

table2 = etl.sort(table1,'Amount')

etl.tocsv(table2,'accountspayable.accountledger_data.csv')

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

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

 ダウンロード

詳細:

JD Edwards Icon JD Edwards Python Connector

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