Python でZoho CRM のデータを変換・出力するETL 処理を作る方法
Pythonエコシステムには多くのモジュールがあり、システム構築を素早く効率的に行うことができます。本記事では、CData Python Connector for ZohoCRM とpetl フレームワークを使って、Zoho CRM のデータにPython から接続してデータを変換、CSV に出力するETL 変換を実装してみます。
CData Python Connector は効率的なデータ処理によりZoho CRM のデータ にPython から接続し、高いパフォーマンスを発揮します。Zoho CRM にデータをクエリする際、ドライバーはフィルタリング、集計などがサポートされている場合SQL 処理を直接Zoho CRM 側に行わせ、サポートされていないSQL 処理については、組み込みのSQL エンジンによりクライアント側で処理を行います(JOIN やSQL 関数など)。
必要なモジュールのインストール
pip で必要なモジュールおよびフレームワークをインストールします:
pip install petl pip install pandas
Python でZoho CRM のデータをETL 処理するアプリを構築
モジュールとフレームワークをインストールしたら、ETL アプリケーションを組んでいきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に付いています。
CData Connector を含むモジュールをインポートします。
import petl as etl import pandas as pd import cdata.zohocrm as mod
接続文字列で接続を確立します。connect 関数を使って、CData Zoho CRM Connector からZoho CRM への接続を行います
cnxn = mod.connect("AuthToken=2ad3b3e719f6bed7368e5e7e26e4f988;")
Zoho CRM への接続
それでは、Zoho CRM に接続していきましょう。データに接続するには、以下の接続パラメータを設定します。
- Region:Zoho CRM サーバーURL のドメインに関連付けられたリージョン
- Schema:Zoho CRM のバージョン(v2、v2.1、またはv4)。Zoho CRM のバージョンごとに独自のデータモデルがあります
これらのプロパティに加えて、認可時にサンドボックスまたは開発者インスタンスのいずれかを選択した場合は、InstanceType 接続プロパティでも同じ設定を行ってください。
Zoho CRM への認証
Zoho CRM では、データへの認証に2つの方法が用意されています。お使いの環境に応じて適切な方法を選択てください。
デスクトップ経由で自分のローカルデータに認証を行う場合(非ブラウザ接続):CData 製品が提供する埋め込みOAuth アプリケーションを使用
CData 製品はすでにZoho CRM にOAuth アプリケーションとして登録されています。そのため、デスクトップアプリケーションを介したローカルデータへの接続では、自動的に組み込みアプリケーションが使用されます。 OAuth 交換の繰り返しを避け、ローカルデータにアクセスするたびにOAuthAccessToken を手動で設定する手間を省くには、InitiateOAuth をGETANDREFRESH に設定してください。
ネットワーク経由で共有データに認証を行う場合(ブラウザ接続):カスタムOAuth アプリケーションを使用
すべてのOAuth フローで、この認証を有効にするにはAuthScheme をOAuth に設定する必要があります。
より詳細な認証手順については、ヘルプドキュメントの「Zoho CRM への認証」をご確認ください。
Zoho CRM をクエリするSQL 文の作成
Zoho CRM にはSQL でデータアクセスが可能です。Accounts エンティティからのデータを読み出します。
sql = "SELECT Account_Name, Annual_Revenue FROM Accounts WHERE Industry = 'Data/Telecom OEM'"
Zoho CRM データのETL 処理
DataFrame に格納されたクエリ結果を使って、petl でETL(抽出・変換・ロード)パイプラインを組みます。この例では、Zoho CRM のデータ を取得して、Annual_Revenue カラムでデータをソートして、CSV ファイルにデータをロードします。
table1 = etl.fromdb(cnxn,sql) table2 = etl.sort(table1,'Annual_Revenue') etl.tocsv(table2,'accounts_data.csv')
CData Python Connector for ZohoCRM を使えば、データベースを扱う場合と同感覚で、Zoho CRM のデータ を扱うことができ、petl のようなETL パッケージから直接データにアクセスが可能になります。
おわりに
Zoho CRM Python Connector の30日の無償トライアル をぜひダウンロードして、Zoho CRM のデータ への接続をPython アプリやスクリプトから簡単に作成しましょう。
フルソースコード
import petl as etl
import pandas as pd
import cdata.zohocrm as mod
cnxn = mod.connect("AuthToken=2ad3b3e719f6bed7368e5e7e26e4f988;")
sql = "SELECT Account_Name, Annual_Revenue FROM Accounts WHERE Industry = 'Data/Telecom OEM'"
table1 = etl.fromdb(cnxn,sql)
table2 = etl.sort(table1,'Annual_Revenue')
etl.tocsv(table2,'accounts_data.csv')