Mailchimp Export Integrationについて詳しく学ぶ。
このデータコネクタを使用して、List Members、Member Activity、Campaigns、およびListsデータをTreasure Dataにインポートできます。
同じコネクションを使用して、Treasure DataでMailchimp Listを作成および更新できます。
- TD Toolbeltを含む、Treasure Dataの基本知識。
- Treasure Dataに権限を付与できるMailChimpアカウント。
各MailChimpユーザーアカウントは、最大10の同時HTTPコネクションが許可されています。現在、顧客ごとにこの制限を引き上げるオプションはありません。
同時にジョブを実行する場合、すべての同時ジョブのHTTPコネクションの合計数が10 HTTPコネクションを超えないようにしてください。そうでない場合、すべてのジョブが失敗します。MailChimpは、10 HTTPコネクション制限を超えると、ユーザーアカウントのすべてのHTTPコネクションをフラッシュします。
Batch Operationsを使用してMember Activityをインポートすると、MailChimp APIサーバーへのリクエストを削減し、レート制限を軽減できます。Member Activityのインポートを参照してください。
Integrations Hub -> Catalogに移動し、Mailchimpタイルを検索して選択します。
必要な認証情報を入力するダイアログが開きます。Authentication Methodを指定します。
Treasure DataをMailChimpで認証する方法は、データコネクタを有効にするために実行する手順に影響します。次の方法で認証を選択できます:
- API Key
- OAuth
MailChimp API Keyと認証情報を指定して、Treasure Dataアクセスを承認できます。API keyは、Mailchimpアカウントへのフルアクセスを許可します。
OAuthメソッドは、現在JPおよびIDCF顧客にはサポートされていないことに注意してください。
ドロップダウンから、MailChimpの既存のOAuthコネクションを選択できます。

または、OAuth connectionの下のリンクを選択して新しいものを作成できます。
Click here to connect a new accountを選択すると、ポップアップウィンドウでMailChimpアカウントにサインインする必要があります。

MailChimpにサインインすることで、認証を行っています。Mailchimpにサインインするアクションにより、OAuth認証が生成されます。
Treasure Data Catalogページにリダイレクトされます。最初のステップ(新しいコネクションを作成する)を繰り返し、新しいOAuthコネクションを選択してから、コネクションの作成を完了します。

次のステップでデータの入力(Treasure Dataへ)の設定を完了するために使用する、認証されたコネクタができました。
Continueを選択します。コネクタの名前を入力します。コネクタの作成の最初の部分が完了しました。
認証されたコネクションを作成した後、自動的にAuthenticationsタブに移動します。作成したコネクションを探し、New Sourceを選択します。

New Sourceダイアログで、Import DataにList Membersを選択し、すべてまたは特定のリストのデータをインポートするかどうかを選択し、Start Time(オプション)とEnd Time(オプション)を入力してから、Nextを選択します。

Incremental loadingオプションがチェックされている場合、前回のインポート以降に情報が更新されたメンバーを段階的にインポートします。
| パラメータ | 説明 |
|---|---|
| Import data for all lists | オプションがチェックされている場合、すべてのリストのデータをインポートします |
| List ID | 有効なMailChimpリストID |
| Add more list IDs | 必要に応じて、より多くのリストIDを入力します |
| Start Time | この時刻以降に情報が更新されたメンバーをインポートします(この時刻を含む) |
| End Time | この時刻より前に情報が更新されたメンバーをインポートします(この時刻を除く) |
次に、次のダイアログに似たリストメンバーデータのPreviewが表示されます。Nextを選択します。

New Sourceダイアログで、Import DataにMember Activityを選択し、すべてまたは特定のリストのデータをインポートするかどうかを選択してから、Nextを選択します。

メンバーのアクティビティの最後の50イベントのみがインポート可能です。
| パラメータ | 説明 |
|---|---|
| すべてのリストのデータをインポート | このオプションをチェックすると、すべてのリストのデータをインポートします |
| List ID | 有効なMailChimpのリストID |
| リストIDを追加 | 必要に応じてさらにリストIDを入力してください |
| バッチ操作を使用 | 10,000メンバーのアクティビティをインポートする場合、10,000件のリクエストが必要になります。バッチ操作を使用して、リクエストをグループ化し、一度に送信します。 |
次に、以下のダイアログと同様のメンバーアクティビティデータのプレビューが表示されます。Nextを選択します。

New Sourceダイアログで、Import DataにCampaignsを選択し、Start Time(オプション)とEnd Time(オプション)を入力して、Nextを選択します。

Incremental loadingオプションをチェックすると、前回のインポート以降に作成されたキャンペーンを増分的にインポートします。
| パラメータ | 説明 |
|---|---|
| Start Time | この時刻以降に作成されたキャンペーンをインポートします(この時刻を含む) |
| End Time | この時刻より前に作成されたキャンペーンをインポートします(この時刻を含まない) |
次に、以下のダイアログと同様のキャンペーンデータのプレビューが表示されます。Nextを選択します。

New Sourceダイアログで、Import DataにListsを選択し、Start Time(オプション)とEnd Time(オプション)を入力して、Nextを選択します。

Incremental loadingオプションをチェックすると、前回のインポート以降に作成されたリストを増分的にインポートします。
| パラメータ | 説明 |
|---|---|
| Start Time | この時刻以降に作成されたリストをインポートします(この時刻を含む) |
| End Time | この時刻より前に作成されたリストをインポートします(この時刻を含まない) |
次に、以下のダイアログと同様のリストデータのプレビューが表示されます。Nextを選択します。

以下のダイアログに示すように、データを転送するデータベースとテーブルを選択します:

新しいデータベースを作成する場合は、Create new databaseをチェックして、データベースに名前を付けます。Create new tableについても同様に行います。
既存のテーブルにレコードを追加するか、既存のテーブルを置き換えるかを選択します。
デフォルトキーとは異なるパーティションキーシードを設定したい場合は、ポップアップメニューを使用して指定できます。
最後に、以下のダイアログを使用してデータ転送のスケジュールを指定し、Start Transferを選択します:

My Input Transfersタブの下に、進行中の新しいデータ転送がリストされ、対応するジョブがJobsセクションにリストされます。
Whenタブでは、これを1回限りの転送として指定することも、自動化された繰り返しの転送をスケジュールすることもできます。Once nowを選択した場合は、Start Transferを選択します。Repeat…を選択した場合は、スケジュールオプションを指定してから、Schedule Transferを選択します。
転送の実行後、Databasesタブで転送の結果を確認できます。

これでデータの分析を開始する準備が整いました。
最新のTD Toolbeltをインストールできます。
$ td --version
0.15.8以下の例のように、MailChimpの認証情報と転送情報を含む設定ファイル(例: load.yml)を準備します。
in:
type: mailchimp
apikey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-dcxx
target: list_members
list_id: xxxxxxxxxxxxx
start_time: "2018-05-07T00:00:00Z"
end_time: "2018-05-08T00:00:00Z"
out:
mode: appendtd connector:previewコマンドを使用して、インポートされるデータをプレビューできます。
$ td connector:preview load.ymlロードジョブを送信します。データサイズによっては、数時間かかる場合があります。
$ td connector:issue load.yml \
--database td_sample_db \
--table td_sample_table \
--time-column last_changedデータが保存されるデータベースとテーブルを指定する必要があります。
Treasure Dataのストレージは時間によってパーティション分割されているため、--time-columnオプションを指定することを推奨します(データパーティショニングも参照してください)。このオプションが指定されていない場合、データコネクタは最初のlongまたはtimestampカラムをパーティショニング時間として選択します。--time-columnで指定されるカラムのタイプは、longまたはtimestamp型のいずれかである必要があります。
データに時間カラムがない場合は、add_timeフィルターオプションを使用して追加できます。詳細はadd_time filter pluginをご覧ください。
"--time-column"オプションによって、時間フォーマットカラムを「パーティショニングキー」に割り当てることができます。
td connector:issueコマンドは、*database(td_sample_db)とtable(td_sample_table)*が既に作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは成功しません。そのため、データベースとテーブルを手動で作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してデータベースとテーブルを自動作成してください。
td connector:issue load.yml \
--database td_sample_db \
--table td_sample_table \
--time-column last_changed \
--auto-create-table定期的なMailChimpインポートのために、定期的なデータコネクタの実行をスケジュールすることができます。高可用性を確保するために、スケジューラーを慎重に設定しています。この機能を使用することで、ローカルデータセンターでcronデーモンを実行する必要がなくなります。
td connector:createコマンドを使用して、新しいスケジュールを作成できます。スケジュールの名前、cronスタイルのスケジュール、データが保存されるデータベースとテーブル、およびデータコネクタの設定ファイルを指定する必要があります。
td connector:create \
daily_mailchimp_import \
"9 0 * * *" \
td_sample_db \
td_sample_table \
load.ymlcronパラメータは、@hourly、@daily、@monthlyの3つのオプションも受け入れます。デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーンフォーマットのみをサポートしています。PST、CSTなどのタイムゾーンの略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。
利用可能なinモードの詳細については、以下の表を参照してください。
| オプション名 | 説明 | タイプ | 必須? | デフォルト値 |
|---|---|---|---|---|
| auth_method | 認証方法。有効な値: api_key、oauth | string | yes | api_key |
| apikey | 有効なMailChimp APIキー | string | api_key認証方法の場合はyes | |
| access_token | 有効なMailChimpアクセストークン | string | oauth認証方法の場合はyes | |
| target | サポートされているデータターゲット: list_memebers、member_activity、campaigns、lists | string | yes | |
| list_id | 有効なMailChimpリストID。list_idとmore_list_idsの両方が指定されていない場合、すべてのリストをインポートします。list_membersおよびmember_activityターゲットに対してのみ有効 | string | no | |
| more_list_ids | 有効なMailChimpリストIDの配列。list_idとmore_list_idsの両方が指定されていない場合、すべてのリストをインポートします。list_membersおよびmember_activityターゲットに対してのみ有効 | array | no | |
| start_time | レコードを取得する日時を指定します。フォーマット: yyyy-MM-dd'T'hh:mm:ss'Z' (例: '2018-05-07T00:00:00Z')。この時刻を含む | string | no | |
| end_time | レコードを取得する許容期間を指定します。フォーマット: yyyy-MM-dd'T'hh:mm:ss'Z' (例: '2018-05-08T00:00:00Z')。この時刻を含まない | string | no | |
| incremental | "mode: append"の場合はtrue、"mode: replace"の場合はfalse(以下を参照) | boolean | no | true |
| use_batch_request | すべてのMailChimp API呼び出しをバッチにグループ化し、通常のAPI呼び出しを使用する代わりにバッチを送信します | boolean | no | false |
| オプション名 | 説明 | タイプ | デフォルト値 |
|---|---|---|---|
| http_max_connections | HTTP同時接続の最大数(最小: 1、最大: 10) | integer | 5 |
| skip_on_invalid_records | falseで高速失敗、trueで無効なレコード/エラーを無視して他のレコードの読み込みを続行 | boolean | false |
| max_records_per_request | バッチリクエストあたりの最大レコード数(最小: 10) | integer | 500 |
| max_requests_per_minute | 1分あたりの最大リクエスト数(最小: 1、最大: 300) | integer | 300 |
| maximum_retries | API呼び出しあたりの最大リトライ回数 | integer | 7 |
| initial_retry_interval_millis | API呼び出しあたりの初期リトライ間隔(ミリ秒) | integer | 1000 |
| maximum_retry_interval_millis | 最大HTTP同時接続数 | integer | 120000 |
| http_connect_timeout_millis | HTTP接続タイムアウト | integer | 60000 |
| http_read_timeout_millis | HTTP読み取りタイムアウト | integer | 300000 |
実行中のジョブのhttp_max_connectionsは5です。同時に2つ以上のジョブを実行する場合、HTTP接続の合計がMailChimpのレート制限である10接続を超えないように、パラメータ値を減らす必要があります。
http_max_connectionsは、CLIのhttp\_max\_connectionsパラメータを使用するか、TDコンソールの詳細設定 > プレビューステップで変更できます。
- 設定ファイル
in:
http_max_connections: 5
out:
mode: append- TDコンソール

MailChimpの内部実装により、バッチ操作を使用しても通常のインポート(同期リクエストの送信)と比較してパフォーマンスの向上はありません。その目的は、コネクタによって行われるリクエストの数を減らすことです。次のいずれかのイベントが発生した場合は、バッチ操作の使用を検討してください。
- バッチ操作以外を使用したインポートが失敗したか、成功できない場合
- コネクタによって行われるリクエストが多すぎるため、MailChimpジョブが頻繁にレート制限される場合
- MailChimpジョブで501、503のHTTPステータスコードのエラーが発生し、これらのエラーのリトライ制限に達した場合