各製品の資料を入手。
詳細はこちら →Zuora のデータをR で分析:JDBC での接続
CData JDBC Driver で標準的なR 関数とお好みの開発環境を使ってZuora を分析。
最終更新日:2023-09-21
この記事で実現できるZuora 連携のシナリオ
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
CData JDBC Driver for Zuora とRJDBC package を使って、R でリモートZuora データ を利用できます。CData Driver を使うことで、業界が認めた基準で書かれたドライバーを活用して、オープンソースでポピュラーなR 言語のデータにアクセスできます。この記事では、ドライバーを使ってZuora にSQL クエリを実行する方法、および標準R 関数を呼び出してZuora をビジュアライズする方法について説明します。
R をインストール
マルチスレッドのMicrosoft R Open を実行すること、またはBLAS/LAPACK ライブラリにリンクされたオープン R を実行することによって、マルチスレッドおよびマネージドコードから利益を得られたドライバーのパフォーマンスにマッチできます。ここでは、Microsoft R Open 3.2.3 を使用します。CRAN レポジトリのJan. 1, 2016 snapshot からパッケージをインストールするために事前設定されています。このsnapshot は再現性を保証します。
RJDBC パッケージをロード
ドライバーを使うにはRJDBC パッケージをダウンロードします。RJDBC パッケージをインストールしたら、次のコードを入力してパッケージをロードします。
library(RJDBC)
JDBC データソースとしてZuora に接続
下記の情報を使いZuora にJDBC データソースとして接続します。
- Driver Class:cdata.jdbc.zuora.ZuoraDriver に設定。
- Classpath:Driver JAR の場所を設定します。デフォルトではインストールディレクトリの[lib]サブフォルダです。
dbConnect やdbSendQuery のようなDBI 関数は、R にデータアクセスコードを書くための統一インターフェースを提供します。
driver <- JDBC(driverClass = "cdata.jdbc.zuora.ZuoraDriver", classPath = "MyInstallationDir\lib\cdata.jdbc.zuora.jar", identifier.quote = "'")
これで、DBI 関数を使ってZuora に接続しSQL クエリを実行する準備が整いました。dbConnect 関数を使ってJDBC 接続を初期化します。一般的なJDBC 接続文字列は次のとおりです。
conn <- dbConnect(driver,"OAuthClientID=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;Tenant=USProduction;ZuoraService=DataQuery;")
Zuora はユーザー認証にOAuth 標準を使用しています。OAuth 認証ついて詳しくは、オンラインヘルプドキュメントを参照してください。
Tenant プロパティの設定
プロバイダへの有効な接続を作成するには、アカウントの設定と合致するテナント値を1つ選択する必要があります。以下は、利用可能なオプションのリストです。
- USProduction:リクエストはhttps://rest.zuora.com に送信されます。
- USAPISandbox:リクエストはhttps://rest.apisandbox.zuora.com に送信されます。
- USPerformanceTest:リクエストはhttps://rest.pt1.zuora.com に送信されます。
- EUProduction:リクエストはhttps://rest.eu.zuora.com に送信されます。
- EUSandbox:リクエストはhttps://rest.sandbox.eu.zuora.com に送信されます。
デフォルトではUSProduction テナントを使用します。
Zuora サービスの選択
データクエリとAQuA API の2つのZuora サービスを使用します。デフォルトでは、ZuoraService はAQuADataExport に設定されています。DataQuery
データクエリ機能は、非同期の読み取り専用SQL クエリを実行することで、Zuora テナントからのデータのエクスポートを実現します。 このサービスは、素早く軽量なSQL クエリでの使用を推奨します。制限
- フィルタ適用後の、テーブルごとの入力レコードの最大数: 1,000,000
- 出力レコードの最大数: 100,000
- テナントごとの、実行用に送信される同時クエリの最大数: 5
- テナントごとの、同時クエリの制限に達した後に実行用に送信され、キューに追加されるクエリの最大数: 10
- 1時間単位での、各クエリの最大処理時間: 1
- GB 単位での、各クエリに割り当てられるメモリの最大サイズ: 2
- Index Join を使用する際のインデックスの最大値。言い換えれば、Index Join を使用する際にWHERE 句で使われる一意の値に基づいた、左のテーブルから返されるレコードの最大数: 20.000
AQuADataExport
AQuA API のエクスポートは、すべてのオブジェクト(テーブル)のすべてのレコードをエクスポートするように設計されています。AQuA のクエリジョブには以下の制限があります。制限
- AQuA のジョブ内のクエリが8時間以上実行されている場合、ジョブは自動的に停止されます。
- 停止されたAQuA のジョブは3回再試行可能で、その後失敗として返されます。
スキーマ Discovery
ドライバーはZuora API をリレーショナルデータベース、ビュー、ストアドプロシージャとしてモデルします。次のコードを使ってテーブルリストを検出します。
dbListTables(conn)
SQL クエリの実行
dbGetQuery 関数を使ってZuora API がサポートするすべてのSQL クエリを実行できます:
invoices <- dbGetQuery(conn,"SELECT Id, BillingCity FROM Invoices WHERE BillingState = 'CA'")
次のコマンドを使って、結果を[data viewer]ウィンドウで見ることができます。
View(invoices)
Zuora データ をプロット
CRAN レポジトリで利用可能なあらゆるデータ初期化パッケージを使ってZuora を分析する準備が整いました。ビルトインバーのplot 関数を使って簡単なバーを作成できます。
par(las=2,ps=10,mar=c(5,15,4,2)) barplot(invoices$BillingCity, main="Zuora Invoices", names.arg = invoices$Id, horiz=TRUE)
