R から JDBC 経由でOdooののデータを分析

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver for Odoo を使って、お好みの開発環境と標準的な R 関数でOdoo のデータを分析できます。

R と Java がインストールされている環境であれば、純粋な R スクリプトと標準的な SQL を使用してOdoo のデータにアクセスできます。CData JDBC Driver for Odoo と RJDBC パッケージを使えば、R からリモートのOdoo のデータを操作できます。CData Driver を使用することで、業界で実績のある標準規格に準拠したドライバーを活用し、人気のオープンソース言語 R でデータにアクセスできます。この記事では、ドライバーを使ってOdooに SQL クエリを実行し、標準的な R 関数を呼び出してOdoo のデータを可視化する方法を説明します。

Odoo データ連携について

CData を使用すれば、Odoo のライブデータへのアクセスと統合がこれまでになく簡単になります。お客様は CData の接続機能を以下の目的で利用しています:

  • Odoo API 8.0+ と Odoo.sh クラウド ERP の両方からライブデータにアクセスできます。
  • 多対一、一対多、多対多のデータプロパティをインテリジェントに処理することで、ネイティブの Odoo 機能を拡張できます。CData の接続ソリューションは、Odoo 内の複雑なデータプロパティもインテリジェントに処理します。テキストや日付などの単純な値を持つカラムに加えて、各行に複数の値を含むカラムもあります。ドライバーは、値の元となるカラムのタイプに応じて、これらの種類の値を異なる方法でデコードします:
    • 多対一カラムは、別のモデル内の単一の行への参照です。CData ソリューションでは、多対一カラムは整数として表され、その値は他のモデルで参照している ID です。
    • 多対多カラムは、別のモデル内の多くの行への参照です。CData ソリューションでは、多対多カラムはカンマ区切りの整数リストを含むテキストとして表されます。リスト内の各値は、参照されている行の ID です。
    • 一対多カラムは、別のモデル内の多くの行への参照です。多対多カラムと同様(カンマ区切りの整数リスト)ですが、参照されるモデルの各行はメインモデルの 1 つにのみ属する必要があります。
  • SQL ストアドプロシージャを使用して、Odoo 内のサーバーサイド RFC を呼び出すことができます。

ユーザーは、Power BI や Qlik Sense などの分析ツールと Odoo を統合し、当社のツールを活用して Odoo データをデータベースやデータウェアハウスにレプリケートしています。


はじめに


R のインストール

マルチスレッドとマネージドコードによるドライバーのパフォーマンス向上を最大限に活かすには、マルチスレッド対応の Microsoft R Open を使用するか、BLAS/LAPACK ライブラリとリンクされたオープンソース R を使用します。この記事では Microsoft R Open 3.2.3 を使用しています。このバージョンは、2016年1月1日時点の CRAN リポジトリのスナップショットからパッケージをインストールするように事前設定されており、再現性が確保されています。

RJDBC パッケージの読み込み

ドライバーを使用するには、RJDBC パッケージをダウンロードしてください。 RJDBC パッケージをインストールしたら、以下のコードでパッケージを読み込みます。

library(RJDBC)

Odooに JDBC データソースとして接続

Odooに JDBC データソースとして接続するには、以下の情報が必要です。

  • Driver Class: cdata.jdbc.odoo.OdooDriver に設定します。
  • Classpath: ドライバー JAR ファイルの場所を設定します。デフォルトでは、インストールフォルダの lib サブフォルダです。

dbConnect や dbSendQuery などの DBI 関数は、R でデータアクセスコードを記述するための統一されたインターフェースを提供します。以下のコードで、CData JDBC Driver for Odoo に JDBC リクエストを行う DBI ドライバーを初期化します。

driver <- JDBC(driverClass = "cdata.jdbc.odoo.OdooDriver", classPath = "MyInstallationDir\lib\cdata.jdbc.odoo.jar", identifier.quote = "'")

これで DBI 関数を使用してOdooに接続し、SQL クエリを実行できます。dbConnect 関数で JDBC 接続を初期化します。

接続するには、URL にOdoo インスタンスURL、User およびAPIToken にユーザー資格情報、Database にOdoo データベース名を設定します。 API トークン(Odoo 14 以降でのみ利用可能)を使用していない場合、代わりにAPIToken フィールドにパスワードを直接入力することができます。

接続方法の詳細は、ヘルプドキュメントの「はじめに」セクションを参照してください。

組み込みの接続文字列デザイナー

JDBC URL の構築には、Odoo JDBC Driver に組み込まれている接続文字列デザイナーが便利です。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。

java -jar cdata.jdbc.odoo.jar

接続プロパティを入力し、接続文字列をクリップボードにコピーします。

以下は、一般的な JDBC 接続文字列を含む dbConnect 呼び出しの例です。

conn <- dbConnect(driver,"jdbc:odoo:User=MyUser;APIToken=MyToken;URL=http://MyOdooSite/;Database=MyDatabase")

スキーマの検出

このドライバーは、Odoo API をリレーショナルテーブル、ビュー、ストアドプロシージャとしてモデル化します。以下のコードでテーブルの一覧を取得できます。

dbListTables(conn)

SQL クエリの実行

dbGetQuery 関数を使用して、Odoo API でサポートされている任意の SQL クエリを実行できます。

res_users <- dbGetQuery(conn,"SELECT name, email FROM res_users")

以下のコマンドで、結果をデータビューアウィンドウに表示できます。

View(res_users)

Odoo のデータのプロット

これで、CRAN リポジトリで利用可能なデータ可視化パッケージを使ってOdoo のデータを分析できます。組み込みのバープロット関数でシンプルな棒グラフを作成できます。

par(las=2,ps=10,mar=c(5,15,4,2))
barplot(res_users$email, main="Odoo res_users", names.arg = res_users$name, horiz=TRUE)

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

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

 ダウンロード

詳細:

Odoo Icon Odoo JDBC Driver お問い合わせ

Odoo ERP のSales Orders、Purchase Orders、Accounts データに連携するJava アプリケーションを素早く、簡単に開発できる便利なドライバー。