Python でLinear のデータを変換・出力するETL 処理を作る方法
Pythonエコシステムには多くのモジュールがあり、システム構築を素早く効率的に行うことができます。本記事では、CData Python Connector for Linear とpetl フレームワークを使って、Linear のデータにPython から接続してデータを変換、CSV に出力するETL 変換を実装してみます。
CData Python Connector は効率的なデータ処理によりLinear のデータ にPython から接続し、高いパフォーマンスを発揮します。Linear にデータをクエリする際、ドライバーはフィルタリング、集計などがサポートされている場合SQL 処理を直接Linear 側に行わせ、サポートされていないSQL 処理については、組み込みのSQL エンジンによりクライアント側で処理を行います(JOIN やSQL 関数など)。
必要なモジュールのインストール
pip で必要なモジュールおよびフレームワークをインストールします:
pip install petl pip install pandas
Python でLinear のデータをETL 処理するアプリを構築
モジュールとフレームワークをインストールしたら、ETL アプリケーションを組んでいきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に付いています。
CData Connector を含むモジュールをインポートします。
import petl as etl import pandas as pd import cdata.linear as mod
接続文字列で接続を確立します。connect 関数を使って、CData Linear Connector からLinear への接続を行います
cnxn = mod.connect("AuthScheme=APIKey;APIKey=myAPIKey;")
Linear への認証には、個人用 API キーまたは OAuth 2.0 を使用できます。ご自身の Linear アカウントで接続する場合は、API キーを使うのが最も手軽です。
API キーによる認証
以下の接続プロパティを設定します。
- AuthScheme:APIKey に設定します。
- APIKey:Linear の個人用 API キー。
個人用 API キーを作成するには、Linear にログインして Settings > Security & access > Personal API keys を開き、New API key を選択して作成します。キーは一度しか表示されないため、すぐにコピーしておきましょう。
OAuth による認証
OAuth を使用するには、Linear にカスタム OAuth アプリケーションを登録する必要があります(Settings > API > OAuth applications)。登録すると OAuthClientId と OAuthClientSecret が発行されます。対応しているフローは以下の 2 つです。
- Authorization code:AuthScheme を OAuth、InitiateOAuth を GETANDREFRESH に設定し、OAuthClientId、OAuthClientSecret、およびアプリケーションで定義した CallbackURL(例:http://localhost:33333)を指定します。ドライバーがブラウザで Linear を開くので、アクセスを許可してください。
- Client credentials:AuthScheme を OAuthClient に設定し、OAuthClientId と OAuthClientSecret を指定します。アプリケーション自体を認証するためブラウザ操作は不要で、マシン間(M2M)連携に適しています。
デフォルトでは、ドライバーは read,write スコープをリクエストします。アクセストークンは有効期限が切れると自動で更新されます。
Linear をクエリするSQL 文の作成
Linear にはSQL でデータアクセスが可能です。Team エンティティからのデータを読み出します。
sql = "SELECT id, name FROM Team WHERE key = 'ENG'"
Linear データのETL 処理
DataFrame に格納されたクエリ結果を使って、petl でETL(抽出・変換・ロード)パイプラインを組みます。この例では、Linear のデータ を取得して、name カラムでデータをソートして、CSV ファイルにデータをロードします。
table1 = etl.fromdb(cnxn,sql) table2 = etl.sort(table1,'name') etl.tocsv(table2,'team_data.csv')
CData Python Connector for Linear を使えば、データベースを扱う場合と同感覚で、Linear のデータ を扱うことができ、petl のようなETL パッケージから直接データにアクセスが可能になります。
おわりに
Linear Python Connector の30日の無償トライアル をぜひダウンロードして、Linear のデータ への接続をPython アプリやスクリプトから簡単に作成しましょう。
フルソースコード
import petl as etl
import pandas as pd
import cdata.linear as mod
cnxn = mod.connect("AuthScheme=APIKey;APIKey=myAPIKey;")
sql = "SELECT id, name FROM Team WHERE key = 'ENG'"
table1 = etl.fromdb(cnxn,sql)
table2 = etl.sort(table1,'name')
etl.tocsv(table2,'team_data.csv')