Python でAnaplan のデータを変換・出力するETL 処理を作る方法

加藤龍彦
加藤龍彦
デジタルマーケティング
CData Python Connector とpetl モジュールを使って、Anaplan のデータを変換後にCSV ファイルに吐き出す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 認証の使用

AuthSchemeBasic に設定し、Anaplan のUserPassword を入力します。ワークスペースがシングルサインオン(SSO)を使用している場合は、Basic 認証を使用するために Exception User として割り当てられている必要があります。

証明書認証の使用

AuthSchemeCertificate に設定し、CertificateCertificateTypePrivateKey プロパティを入力します(どちらかが暗号化されている場合はCertificatePassword / PrivateKeyPassword も設定してください)。証明書は、Anaplan テナント管理者に登録されたCA 発行のX.509 証明書である必要があります。

OAuth 認証の使用

Anaplan でカスタムOAuth アプリケーションを登録し、以下のプロパティを設定します:

  • OAuthClientId:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
  • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
  • CallbackURL:アプリケーションの登録時に定義したリダイレクトURI。
  • InitiateOAuthGETANDREFRESH に設定すると、ドライバーが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')

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

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

 ダウンロード

詳細:

Anaplan Icon Anaplan Python Connector

Anaplan データ連携用のPython コネクタライブラリ。Pandas、SQLAlchemy、Dash、petl などの人気PythonツールとAnaplan を連携。