はじめに
Singerは、さまざまなソースからデータを取得し、目的の宛先に移動させるためのオープンソースのETLツールです。この記事では、Singerの使い方について紹介します。
Singer Tapの設定
SingerのTapは、ソースからデータを抽出し、JSON形式のデータを生成するスクリプトです。Tapsは、ETLプロセスの抽出部分を容易にします。この章では、最初のSinger Tapの選択、インストール、および設定方法について説明します。
Tapの選択
Singerはさまざまな種類のTapをサポートしており、データベース(Postgres、MySQL、MongoDB)、API(Salesforce、Stripe)、ファイル(CSV、Excel)など、特定のソースに合わせて設計されたTapが用意されています。抽出元となるデータソースに対応したTapを選択する必要があります。
Tapのインストール
必要なTapをインストールするために、pipコマンドを使用します。例えば、Salesforce用のTapをインストールするには、次のように入力します。
$ pip install tap-salesforce
Tapの設定
Tapをインストールしたら、データソースに接続するためにTapを設定する必要があります。設定には、APIキー、ユーザー名、パスワード、ホスト名などのアクセス認証情報やその他のソース固有の設定が含まれます。
例えば、Salesforce Tapを設定する場合、次の構造のconfig.json
ファイルを作成します。
{
"client_id": "your_salesforce_client_id",
"client_secret": "your_salesforce_client_secret",
"refresh_token": "your_salesforce_refresh_token",
"start_date": "start_date_in_YYYY-MM-DD_format"
}
Singer Targetの設定
SingerのTargetは、Tapsからデータを受け取り、データベースやファイルなどの宛先にロードするものです。Targetsは、ETLプロセスのロード部分を容易にします。この章では、最初のSinger Targetの選択、インストール、および設定方法について説明します。
Targetの選択
Tapsと同様に、Singerはさまざまな種類のTargetをサポートしており、それぞれ特定の宛先に対応しています。目的のデータ宛先に対応したTargetを選択する必要があります。
Targetのインストール
必要なTargetをインストールするために、pipコマンドを使用します。例えば、Postgres用のTargetをインストールするには、次のように入力します。
$ pip install target-postgres
Targetの設定
Targetも、目的の宛先に接続するために設定する必要があります。Tapsと同様に、設定にはアクセス認証情報やその他の宛先固有の設定が含まれます。
例えば、Postgres Targetを設定する場合、次の構造のconfig.json
ファイルを作成します。
{
"host": "your_postgres_host",
"port": "your_postgres_port",
"user": "your_postgres_username",
"password": "your_postgres_password",
"dbname": "your_postgres_database"
}
Singerパイプラインの実行
TapとTargetを設定したら、SingerのETLパイプラインを実行する準備が整いました。このプロセスでは、TapとTargetのスクリプトを同時に実行し、データがソースから抽出されて宛先にロードされるようにします。
TapsとTargetsの組み合わせ
Singerでは、任意のTapを任意のTargetに接続することができます。これにより、ETLワークフローを柔軟に管理することができます。この接続は、TapとTargetのスクリプトを同時に実行し、Tapの出力(抽出されたデータ)をTargetにパイプして(ロード先に渡して)実現されます。
パイプラインの実行
TapとTargetをインストールして設定したら、次の手順でパイプラインを実行します。
- ターミナルまたはコマンドラインを開く
まず、ターミナルまたはコマンドラインインターフェースを開きます。TapとTargetのconfig.json
ファイルが格納されているディレクトリに移動します。
- Singerパイプラインの実行
次のコマンドでSingerパイプラインを実行します。
$ tap-salesforce -c tap_config.json | target-postgres -c target_config.json
tap-salesforce -c tap_config.json
は、SalesforceのTapをtaps_config.json
の設定で実行します。|
(パイプ)記号は、Tapスクリプトの出力(抽出されたデータ)をTargetスクリプトの入力として渡します。target-postgres -c target_config.json
は、PostgresのTargetをtarget_config.json
の設定で実行します。
このコマンドを実行すると、TapスクリプトがSalesforceからデータを抽出し、TargetスクリプトがこのデータをPostgresデータベースにロードします。
参考