Skip to content
Last updated

Mailchimp Import Integration

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のインポートを参照してください。

TD Consoleを使用する

新しいコネクションを作成する

Integrations Hub -> Catalogに移動し、Mailchimpタイルを検索して選択します。

必要な認証情報を入力するダイアログが開きます。Authentication Methodを指定します。

コネクションの認証

Treasure DataをMailChimpで認証する方法は、データコネクタを有効にするために実行する手順に影響します。次の方法で認証を選択できます:

  • API Key
  • OAuth

API Keyを使用して認証する

MailChimp API Keyと認証情報を指定して、Treasure Dataアクセスを承認できます。API keyは、Mailchimpアカウントへのフルアクセスを許可します。

OAuthを使用して認証する

OAuthメソッドは、現在JPおよびIDCF顧客にはサポートされていないことに注意してください。

ドロップダウンから、MailChimpの既存のOAuthコネクションを選択できます。

または、OAuth connectionの下のリンクを選択して新しいものを作成できます。

新しいOAuth Connectionを作成する

Click here to connect a new accountを選択すると、ポップアップウィンドウでMailChimpアカウントにサインインする必要があります。

MailChimpにサインインすることで、認証を行っています。Mailchimpにサインインするアクションにより、OAuth認証が生成されます。

Treasure Data Catalogページにリダイレクトされます。最初のステップ(新しいコネクションを作成する)を繰り返し、新しいOAuthコネクションを選択してから、コネクションの作成を完了します。

次のステップでデータの入力(Treasure Dataへ)の設定を完了するために使用する、認証されたコネクタができました。

Continueを選択します。コネクタの名前を入力します。コネクタの作成の最初の部分が完了しました。

新しいSourceを作成する

認証されたコネクションを作成した後、自動的にAuthenticationsタブに移動します。作成したコネクションを探し、New Sourceを選択します。

List Members

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を選択します。

Member Activity

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

メンバーのアクティビティの最後の50イベントのみがインポート可能です。

パラメータ説明
すべてのリストのデータをインポートこのオプションをチェックすると、すべてのリストのデータをインポートします
List ID有効なMailChimpのリストID
リストIDを追加必要に応じてさらにリストIDを入力してください
バッチ操作を使用10,000メンバーのアクティビティをインポートする場合、10,000件のリクエストが必要になります。バッチ操作を使用して、リクエストをグループ化し、一度に送信します。

次に、以下のダイアログと同様のメンバーアクティビティデータのプレビューが表示されます。Nextを選択します。

Campaigns

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

Incremental loadingオプションをチェックすると、前回のインポート以降に作成されたキャンペーンを増分的にインポートします。

パラメータ説明
Start Timeこの時刻以降に作成されたキャンペーンをインポートします(この時刻を含む)
End Timeこの時刻より前に作成されたキャンペーンをインポートします(この時刻を含まない)

次に、以下のダイアログと同様のキャンペーンデータのプレビューが表示されます。Nextを選択します。

Lists

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

Incremental loadingオプションをチェックすると、前回のインポート以降に作成されたリストを増分的にインポートします。

パラメータ説明
Start Timeこの時刻以降に作成されたリストをインポートします(この時刻を含む)
End Timeこの時刻より前に作成されたリストをインポートします(この時刻を含まない)

次に、以下のダイアログと同様のリストデータのプレビューが表示されます。Nextを選択します。

Transfer to

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

新しいデータベースを作成する場合は、Create new databaseをチェックして、データベースに名前を付けます。Create new tableについても同様に行います。

既存のテーブルにレコードを追加するか、既存のテーブルを置き換えるかを選択します。

デフォルトキーとは異なるパーティションキーシードを設定したい場合は、ポップアップメニューを使用して指定できます。

Schedule

最後に、以下のダイアログを使用してデータ転送のスケジュールを指定し、Start Transferを選択します:

My Input Transfersタブの下に、進行中の新しいデータ転送がリストされ、対応するジョブがJobsセクションにリストされます。

Whenタブでは、これを1回限りの転送として指定することも、自動化された繰り返しの転送をスケジュールすることもできます。Once nowを選択した場合は、Start Transferを選択します。Repeat…を選択した場合は、スケジュールオプションを指定してから、Schedule Transferを選択します。

転送の実行後、Databasesタブで転送の結果を確認できます。

これでデータの分析を開始する準備が整いました。

Use Command Line

Install 'td' Command v0.11.9 or Later

最新のTD Toolbeltをインストールできます。

$ td --version
0.15.8

Create Configuration File

以下の例のように、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: append

Preview Data to Import (Optional)

td 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.yml

cronパラメータは、@hourly@daily@monthlyの3つのオプションも受け入れます。デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーンフォーマットのみをサポートしています。PST、CSTなどのタイムゾーンの略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。

設定

利用可能なinモードの詳細については、以下の表を参照してください。

基本設定

オプション名説明タイプ必須?デフォルト値
auth_method認証方法。有効な値: api_key、oauthstringyesapi_key
apikey有効なMailChimp APIキーstringapi_key認証方法の場合はyes
access_token有効なMailChimpアクセストークンstringoauth認証方法の場合はyes
targetサポートされているデータターゲット: list_memebers、member_activity、campaigns、listsstringyes
list_id有効なMailChimpリストID。list_idとmore_list_idsの両方が指定されていない場合、すべてのリストをインポートします。list_membersおよびmember_activityターゲットに対してのみ有効stringno
more_list_ids有効なMailChimpリストIDの配列。list_idとmore_list_idsの両方が指定されていない場合、すべてのリストをインポートします。list_membersおよびmember_activityターゲットに対してのみ有効arrayno
start_timeレコードを取得する日時を指定します。フォーマット: yyyy-MM-dd'T'hh:mm:ss'Z' (例: '2018-05-07T00:00:00Z')。この時刻を含むstringno
end_timeレコードを取得する許容期間を指定します。フォーマット: yyyy-MM-dd'T'hh:mm:ss'Z' (例: '2018-05-08T00:00:00Z')。この時刻を含まないstringno
incremental"mode: append"の場合はtrue、"mode: replace"の場合はfalse(以下を参照)booleannotrue
use_batch_requestすべてのMailChimp API呼び出しをバッチにグループ化し、通常のAPI呼び出しを使用する代わりにバッチを送信しますbooleannofalse

詳細設定

オプション名説明タイプデフォルト値
http_max_connectionsHTTP同時接続の最大数(最小: 1、最大: 10)integer5
skip_on_invalid_recordsfalseで高速失敗、trueで無効なレコード/エラーを無視して他のレコードの読み込みを続行booleanfalse
max_records_per_requestバッチリクエストあたりの最大レコード数(最小: 10)integer500
max_requests_per_minute1分あたりの最大リクエスト数(最小: 1、最大: 300)integer300
maximum_retriesAPI呼び出しあたりの最大リトライ回数integer7
initial_retry_interval_millisAPI呼び出しあたりの初期リトライ間隔(ミリ秒)integer1000
maximum_retry_interval_millis最大HTTP同時接続数integer120000
http_connect_timeout_millisHTTP接続タイムアウトinteger60000
http_read_timeout_millisHTTP読み取りタイムアウトinteger300000

最大同時HTTP接続数

実行中のジョブの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ステータスコードのエラーが発生し、これらのエラーのリトライ制限に達した場合