各製品の資料を入手。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Pythonエコシステムには多くのモジュールがあり、システム構築を素早く効率的に行うことができます。本記事では、CData Python Connector for BusinessBridge とpetl フレームワークを使って、Business b-ridge のデータにPython から接続してデータを変換、CSV に出力するETL 変換を実装してみます。
CData Python Connector は効率的なデータ処理によりBusiness b-ridge のデータ にPython から接続し、高いパフォーマンスを発揮します。Business b-ridge にデータをクエリする際、ドライバーはフィルタリング、集計などがサポートされている場合SQL 処理を直接Business b-ridge 側に行わせ、サポートされていないSQL 処理については、組み込みのSQL エンジンによりクライアント側で処理を行います(JOIN やSQL 関数など)。
pip で必要なモジュールおよびフレームワークをインストールします:
pip install petl pip install pandas
モジュールとフレームワークをインストールしたら、ETL アプリケーションを組んでいきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に付いています。
CData Connector を含むモジュールをインポートします。
import petl as etl import pandas as pd import cdata.businessbridge as mod
接続文字列で接続を確立します。connect 関数を使って、CData Business b-ridge Connector からBusiness b-ridge への接続を行います
cnxn = mod.connect("InitiateOAuth=GETANDREFRESH;OAuthSettingsLocation=/PATH/TO/OAuthSettings.txt")")
B b-ridge への接続には、Company Key、Project Key、Subscription Key が必要となります。それぞれWeb API 利用申請時に取得できます。取得したKey を接続プロパティに設定して接続します。
Business b-ridge にはSQL でデータアクセスが可能です。CDATA エンティティからのデータを読み出します。
sql = "SELECT ItemId, StructureId FROM CDATA WHERE ItemTypeId = '1'"
DataFrame に格納されたクエリ結果を使って、petl でETL(抽出・変換・ロード)パイプラインを組みます。この例では、Business b-ridge のデータ を取得して、StructureId カラムでデータをソートして、CSV ファイルにデータをロードします。
table1 = etl.fromdb(cnxn,sql) table2 = etl.sort(table1,'StructureId') etl.tocsv(table2,'cdata_data.csv')
CData Python Connector for BusinessBridge を使えば、データベースを扱う場合と同感覚で、Business b-ridge のデータ を扱うことができ、petl のようなETL パッケージから直接データにアクセスが可能になります。
Business b-ridge Python Connector の30日の無償トライアル をぜひダウンロードして、Business b-ridge のデータ への接続をPython アプリやスクリプトから簡単に作成しましょう。
import petl as etl import pandas as pd import cdata.businessbridge as mod cnxn = mod.connect("InitiateOAuth=GETANDREFRESH;OAuthSettingsLocation=/PATH/TO/OAuthSettings.txt")") sql = "SELECT ItemId, StructureId FROM CDATA WHERE ItemTypeId = '1'" table1 = etl.fromdb(cnxn,sql) table2 = etl.sort(table1,'StructureId') etl.tocsv(table2,'cdata_data.csv')