# Mailchimp Import Integration

[Mailchimp Export Integrationについて詳しく学ぶ。](/ja/int/mailchimp-export-integration)

このデータコネクタを使用して、List Members、Member Activity、Campaigns、およびListsデータをTreasure Dataにインポートできます。

同じコネクションを使用して、Treasure DataでMailchimp Listを作成および更新できます。

## 前提条件

- [TD Toolbelt](https://toolbelt.treasuredata.com)を含む、Treasure Dataの基本知識。
- Treasure Dataに権限を付与できるMailChimpアカウント。


## レート制限

各MailChimpユーザーアカウントは、最大10の同時HTTPコネクションが許可されています。現在、顧客ごとにこの制限を引き上げるオプションはありません。

同時にジョブを実行する場合、すべての同時ジョブのHTTPコネクションの合計数が10 HTTPコネクションを超えないようにしてください。そうでない場合、すべてのジョブが失敗します。MailChimpは、10 HTTPコネクション制限を超えると、ユーザーアカウントのすべてのHTTPコネクションをフラッシュします。

Batch Operationsを使用してMember Activityをインポートすると、MailChimp APIサーバーへのリクエストを削減し、レート制限を軽減できます。Member Activityのインポートを参照してください。

## Treasure コンソールを使用する

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

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

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

### コネクションの認証

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

- API Key
- OAuth


### API Keyを使用して認証する

[MailChimp API Key](https://mailchimp.com/help/about-api-keys/?utm_source=mc-api&utm_medium=docs&utm_campaign=apidocs)と認証情報を指定して、Treasure Dataアクセスを承認できます。API keyは、Mailchimpアカウントへのフルアクセスを許可します。

### OAuthを使用して認証する

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

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

![](/assets/image-20191013-183746.500a5933493f84e0c9854acf4a439081298d5e11324d327d51663e6da5382eaa.4fc380c5.png)

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

### 新しいOAuth Connectionを作成する

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

![](/assets/image-20191013-183809.d907b70a2d1a239d5b3914941a0460def982bb939763e3a612c94e9a00bb113a.4fc380c5.png)

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

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

![](/assets/image-20191013-183845.2fac9b364dba1b96e2ad03cb4df3354e58a82f33422d9fd2ea71069450d3ac63.4fc380c5.png)

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

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

### 新しいSourceを作成する

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

![](/assets/image-20191013-183857.787257ef8783db6c7a7f8e84880a62cc051c07ee6d3c83114ee26dc9636fed5c.4fc380c5.png)

### List Members

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

![](/assets/image-20191013-183913.97f937322c78618567467cac761a8dc5fded8c924dc9012c5684dc9e7bd57a9d.4fc380c5.png)

Incremental loadingオプションがチェックされている場合、前回のインポート以降に情報が更新されたメンバーを段階的にインポートします。

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


次に、次のダイアログに似たリストメンバーデータのPreviewが表示されます。**Next**を選択します。

![](/assets/image-20191013-183929.39d6451930bf55c408d1b5719493cabff9f0434e124660d13b1121e1a36637c2.4fc380c5.png)

#### Member Activity

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

![](/assets/image-20191013-183943.ac5cf788e3bec84bb5e6a5c8c645fd220d741753b74a5024950757a297c378a7.4fc380c5.png)

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

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


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

![](/assets/image-20191013-183954.341221a76db1f067bd5e71680aed1416582a809aec40ba1c00619990b9e78881.4fc380c5.png)

#### Campaigns

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

![](/assets/image-20191013-184007.af1c8f00f4bf639e46abf46d731abbf220ab95d409986c91212e5e55d87489bd.4fc380c5.png)

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

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


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

![](/assets/image-20191013-184020.2fb843cac01de350e2bcaed048ed040e9463f2172476c22e1a1b47c161e14571.4fc380c5.png)

#### Lists

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

![](/assets/image-20191013-184031.4dc220479657d0c2331ee06ac30fd4596f68e0528e15d876c6edd8f6ae9cd52c.4fc380c5.png)

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

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


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

![](/assets/image-20191013-184041.ab90318dabb04505dc55e7ad3b0b53a0346fd25702146f5597fcc369ebeef4d5.4fc380c5.png)

### Transfer to

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

![](/assets/image-20191013-184055.6ab726c9b2e13a75d2c6d1662ab5e4f428925440df290ffa95d5764123a69899.4fc380c5.png)

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

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

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

### Schedule

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

![](/assets/image-20191013-184108.bcf984edf58a382be5fcf8d1cf368f0bee58971fcee35204dd08e37391ac5caa.4fc380c5.png)

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

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

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

![](/assets/image-20191013-184117.5b269953fa6d868d5e47f0ee9710def0d0c5202a6e1f17f73f52bd99a8f86102.4fc380c5.png)

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

## Use Command Line

### Install 'td' Command v0.11.9 or Later

最新の[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールできます。


```
$ td --version
0.15.8
```

### Create Configuration File

以下の例のように、MailChimpの認証情報と転送情報を含む設定ファイル(例: `load.yml`)を準備します。


```yaml
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`コマンドを使用して、インポートされるデータをプレビューできます。


```bash
$ td connector:preview load.yml
```

### ロードジョブの実行

ロードジョブを送信します。データサイズによっては、数時間かかる場合があります。


```bash
$ td connector:issue load.yml \
--database td_sample_db \
--table td_sample_table \
--time-column last_changed
```

データが保存されるデータベースとテーブルを指定する必要があります。

Treasure Dataのストレージは時間によってパーティション分割されているため、`--time-column`オプションを指定することを推奨します([データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)も参照してください)。このオプションが指定されていない場合、データコネクタは最初の`long`または`timestamp`カラムをパーティショニング時間として選択します。`--time-column`で指定されるカラムのタイプは、`long`または`timestamp`型のいずれかである必要があります。

データに時間カラムがない場合は、`add_time`フィルターオプションを使用して追加できます。詳細は[add_time filter plugin](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)をご覧ください。

"--time-column"オプションによって、時間フォーマットカラムを「パーティショニングキー」に割り当てることができます。

`td connector:issue`コマンドは、*database(td_sample_db)*と*table(td_sample_table)*が既に作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは成功しません。そのため、データベースとテーブルを[手動で](https://docs.treasuredata.com/smart/project-product-documentation/data-management)作成するか、`td connector:issue`コマンドで`--auto-create-table`オプションを使用してデータベースとテーブルを自動作成してください。


```bash
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スタイルのスケジュール、データが保存されるデータベースとテーブル、およびデータコネクタの設定ファイルを指定する必要があります。


```bash
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、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接続数

実行中のジョブのhttp_max_connectionsは5です。同時に2つ以上のジョブを実行する場合、HTTP接続の合計がMailChimpのレート制限である10接続を超えないように、パラメータ値を減らす必要があります。

http_max_connectionsは、CLIの`http\_max\_connections`パラメータを使用するか、Treasure コンソールの詳細設定 > プレビューステップで変更できます。

- 設定ファイル



```yaml
in:
  http_max_connections: 5
out:
  mode: append
```

- Treasure コンソール


![](/assets/image-20191013-184142.4bcc7748a7ed3e5feb90be10f6926d8ee34f5813c2f8fff485eb0a1436609c86.4fc380c5.png)

### バッチ操作の使用

MailChimpの内部実装により、バッチ操作を使用しても通常のインポート(同期リクエストの送信)と比較してパフォーマンスの向上はありません。その目的は、コネクタによって行われるリクエストの数を減らすことです。次のいずれかのイベントが発生した場合は、バッチ操作の使用を検討してください。

- バッチ操作以外を使用したインポートが失敗したか、成功できない場合
- コネクタによって行われるリクエストが多すぎるため、MailChimpジョブが頻繁にレート制限される場合
- MailChimpジョブで501、503のHTTPステータスコードのエラーが発生し、これらのエラーのリトライ制限に達した場合