# 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のインポートを参照してください。 ## TD Consoleを使用する ### 新しいコネクションを作成する 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`パラメータを使用するか、TDコンソールの詳細設定 > プレビューステップで変更できます。 - 設定ファイル ```yaml in: http_max_connections: 5 out: mode: append ``` - TDコンソール ![](/assets/image-20191013-184142.4bcc7748a7ed3e5feb90be10f6926d8ee34f5813c2f8fff485eb0a1436609c86.4fc380c5.png) ### バッチ操作の使用 MailChimpの内部実装により、バッチ操作を使用しても通常のインポート(同期リクエストの送信)と比較してパフォーマンスの向上はありません。その目的は、コネクタによって行われるリクエストの数を減らすことです。次のいずれかのイベントが発生した場合は、バッチ操作の使用を検討してください。 - バッチ操作以外を使用したインポートが失敗したか、成功できない場合 - コネクタによって行われるリクエストが多すぎるため、MailChimpジョブが頻繁にレート制限される場合 - MailChimpジョブで501、503のHTTPステータスコードのエラーが発生し、これらのエラーのリトライ制限に達した場合