Python でAnaplan のデータを変換・出力するETL 処理を作る方法
Pythonエコシステムには多くのモジュールがあり、システム構築を素早く効率的に行うことができます。本記事では、CData Python Connector for Anaplan とpetl フレームワークを使って、Anaplan のデータにPython から接続してデータを変換、CSV に出力するETL 変換を実装してみます。
CData Python Connector は効率的なデータ処理によりAnaplan のデータ にPython から接続し、高いパフォーマンスを発揮します。Anaplan にデータをクエリする際、ドライバーはフィルタリング、集計などがサポートされている場合SQL 処理を直接Anaplan 側に行わせ、サポートされていないSQL 処理については、組み込みのSQL エンジンによりクライアント側で処理を行います(JOIN やSQL 関数など)。
必要なモジュールのインストール
pip で必要なモジュールおよびフレームワークをインストールします:
pip install petl pip install pandas
Python でAnaplan のデータをETL 処理するアプリを構築
モジュールとフレームワークをインストールしたら、ETL アプリケーションを組んでいきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に付いています。
CData Connector を含むモジュールをインポートします。
import petl as etl import pandas as pd import cdata.anaplan as mod
接続文字列で接続を確立します。connect 関数を使って、CData Anaplan Connector からAnaplan への接続を行います
cnxn = mod.connect("OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=your_callback_url;Region=US1;InitiateOAuth=GETANDREFRESH;")
Anaplan への認証
ドライバーはBasic、証明書、またはOAuth による認証をサポートしています。いずれの場合も、Region をAnaplan アカウントデータがホストされているリージョン(例:US1、これがデフォルト)に設定してください。
Basic 認証の使用
AuthScheme をBasic に設定し、Anaplan のUser とPassword を入力します。ワークスペースがシングルサインオン(SSO)を使用している場合は、Basic 認証を使用するために Exception User として割り当てられている必要があります。
証明書認証の使用
AuthScheme をCertificate に設定し、Certificate、CertificateType、PrivateKey プロパティを入力します(どちらかが暗号化されている場合はCertificatePassword / PrivateKeyPassword も設定してください)。証明書は、Anaplan テナント管理者に登録されたCA 発行のX.509 証明書である必要があります。
OAuth 認証の使用
Anaplan でカスタムOAuth アプリケーションを登録し、以下のプロパティを設定します:
- OAuthClientId:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
- CallbackURL:アプリケーションの登録時に定義したリダイレクトURI。
- InitiateOAuth:GETANDREFRESH に設定すると、ドライバーがOAuth トークンの交換と更新を自動的に管理します。
カスタムOAuth アプリの作成方法とOAuth の使用方法については、ヘルプドキュメントの「はじめに」の章を参照してください。
Anaplan をクエリするSQL 文の作成
Anaplan にはSQL でデータアクセスが可能です。Sales エンティティからのデータを読み出します。
sql = "SELECT Region, Product FROM Sales WHERE Value = '100'"
Anaplan データのETL 処理
DataFrame に格納されたクエリ結果を使って、petl でETL(抽出・変換・ロード)パイプラインを組みます。この例では、Anaplan のデータ を取得して、Product カラムでデータをソートして、CSV ファイルにデータをロードします。
table1 = etl.fromdb(cnxn,sql) table2 = etl.sort(table1,'Product') etl.tocsv(table2,'sales_data.csv')
CData Python Connector for Anaplan を使えば、データベースを扱う場合と同感覚で、Anaplan のデータ を扱うことができ、petl のようなETL パッケージから直接データにアクセスが可能になります。
おわりに
Anaplan Python Connector の30日の無償トライアル をぜひダウンロードして、Anaplan のデータ への接続をPython アプリやスクリプトから簡単に作成しましょう。
フルソースコード
import petl as etl
import pandas as pd
import cdata.anaplan as mod
cnxn = mod.connect("OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=your_callback_url;Region=US1;InitiateOAuth=GETANDREFRESH;")
sql = "SELECT Region, Product FROM Sales WHERE Value = '100'"
table1 = etl.fromdb(cnxn,sql)
table2 = etl.sort(table1,'Product')
etl.tocsv(table2,'sales_data.csv')