Python で pandas を使って Zuora データを可視化する方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
pandas などのモジュールを使って Python で Zuora のデータをリアルタイムに分析・可視化する方法を紹介します。

Python の豊富なエコシステムを活用することで、作業を迅速に開始し、システム間の連携をより効果的に行うことができます。CData Python Connector for Zuora、pandas および Matplotlib モジュール、SQLAlchemy ツールキットを組み合わせることで、Zuora に接続した Python アプリケーションやスクリプトを構築し、Zuora のデータを可視化できます。この記事では、pandas、SQLAlchemy、Matplotlib の組み込み関数を使用して Zuora のデータに接続し、クエリを実行して結果を可視化する方法を説明します。

CData Python Connector は、組み込みの最適化されたデータ処理機能により、Python での Zuora のデータへのリアルタイムアクセスにおいて比類のないパフォーマンスを提供します。Zuora に対して複雑な SQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を Zuora に直接プッシュし、サポートされていない操作(多くの場合、SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアント側で処理します。

Zuora のデータへの接続

Zuora のデータへの接続は、他のリレーショナルデータソースへの接続と同様です。必要な接続プロパティを使用して接続文字列を作成します。この記事では、接続文字列を create_engine 関数のパラメータとして渡します。

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 サービスを使用します。デフォルトでは、ZuoraServiceAQuADataExport に設定されています。

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回再試行可能で、その後失敗として返されます。

以下の手順に従って、必要なモジュールをインストールし、Python オブジェクトを介して Zuora にアクセスしてみましょう。

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

pip ユーティリティを使用して、pandas、Matplotlib モジュール、および SQLAlchemy ツールキットをインストールします。

pip install pandas
pip install matplotlib
pip install sqlalchemy

以下のようにモジュールをインポートしてください。

import pandas
import matplotlib.pyplot as plt
from sqlalchemy import create_engine

Python で Zuora のデータを可視化する

接続文字列を使用して接続できます。create_engine 関数を使用して、Zuora のデータを操作するための Engine を作成します。

engine = create_engine("zuora:///?OAuthClientID=MyOAuthClientId&OAuthClientSecret=MyOAuthClientSecret&Tenant=USProduction&ZuoraService=DataQuery")

Zuora への SQL の実行

pandas の read_sql 関数を使用して、SQL ステートメントを実行し、結果セットを DataFrame に格納します。

df = pandas.read_sql("SELECT Id, BillingCity FROM Invoices WHERE BillingState = 'CA'", engine)

Zuora のデータの可視化

クエリ結果が DataFrame に格納されたら、plot 関数を使用して Zuora のデータを表示するグラフを作成します。show メソッドで、グラフを新しいウィンドウに表示します。

df.plot(kind="bar", x="Id", y="BillingCity")
plt.show()

無料トライアル & 詳細情報

CData Python Connector for Zuora の 30日間無料トライアルをダウンロードして、Zuora のデータに接続する Python アプリケーションやスクリプトの構築を始めましょう。ご質問がありましたら、サポートチームまでお気軽にお問い合わせください。



完全なソースコード

import pandas
import matplotlib.pyplot as plt
from sqlalchemy import create_engin

engine = create_engine("zuora:///?OAuthClientID=MyOAuthClientId&OAuthClientSecret=MyOAuthClientSecret&Tenant=USProduction&ZuoraService=DataQuery")
df = pandas.read_sql("SELECT Id, BillingCity FROM Invoices WHERE BillingState = 'CA'", engine)

df.plot(kind="bar", x="Id", y="BillingCity")
plt.show()

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

Zuora Connector のコミュニティライセンスをダウンロード:

 ダウンロード

詳細:

Zuora Icon Zuora Python Connector お問い合わせ

Zuora データ連携用Python コネクタライブラリ。Zuora データをPandas、SQLAlchemy、Dash、petl などの人気のPython ツールにシームレスに統合。