# Iterable Import Integration

Iterableは、完全なクロスチャネルカスタマーエンゲージメントプラットフォームです。電子メール、SMS、埋め込みメッセージ、アプリ内メッセージ、プッシュ通知、Webプッシュ通知を通じて顧客にメッセージを送信し、顧客基盤を拡大し、エンゲージメントを高め、ユーザーのライフタイムバリューを向上させることができます。

このインポート統合により、TDユーザーはIterableからキャンペーン、リスト、エクスポートデータをTreasure Dataに接続して取得できます。

## 前提条件

- Treasure Dataの基本知識
- Iterable APIキー


## 制限事項

- ユーザーリストの取得レート制限（5リクエスト/分）のため、1つのジョブですべてのリストを取得することはできません。ユーザーは各ジョブでインポートする単一のリストIDを指定する必要があります。


## IterableからAPIキーを取得する

1. IterableのEUインスタンスを使用している場合は、[https://app.iterable.com/settings/apiKeys](https://app.iterable.com/settings/apiKeys)または[https://app.eu.iterable.com/settings/apiKeys](https://app.eu.iterable.com/settings/apiKeys)に移動します
![](/assets/screen_shot_2021-01-27_at_5_56_06_am.0f31f9c556a720eb69c3989b6be74cbfd0c4391a7c688645d842b67d4d94b53d.1ada2165.png)
2. **New API KEY**をクリックします
3. **Standard (Server-side)**を選択します
4. Treasure Dataから認証するために**APIキー**を使用できます。


## Treasure コンソールを使用してコネクションを作成する

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

Treasure Dataでは、クエリを実行する前にデータコネクションを作成して設定する必要があります。データコネクションの一部として、統合にアクセスするための認証を提供します。

1. **Treasure コンソール**を開きます。
2. **Integrations Hub** > **Catalog**に移動します。
3. Iterableを検索して選択します。
4. 次のダイアログが開きます。
![](/assets/screenshot-2025-07-09-at-15.44.03.bb98f8e651076a7f07d444b18e7745d2e9d91385fc91cc20606a5cd24e0ae7b5.1ada2165.png)
5. APIキーを入力し、リージョンを選択します。
6. コネクションの名前を入力します。
7. **Continue**を選択します。


### Treasure Dataにデータを転送する

認証されたコネクションを作成すると、自動的にAuthentications画面に移動します。作成したコネクションを検索します。

1. **New Source**を選択します。
2. Data Transfer フィールドに**Source**の名前を入力します。


![](/assets/screen-shot-2021-01-27-at-6.03.00-am.585a020bbd84c481402aa3e7bd8c7814881fa5fd5467c901edf9b2dbbb859689.1ada2165.png)

1. **Next**を選択します。
Source Tableダイアログが開きます。


![](/assets/screenshot-2025-07-09-at-15.10.06.59490fa93c240803d1c99ec4aed3c4dc24526af9ddb09b8b02976c67f421568f.1ada2165.png)

![](/assets/screenshot-2025-07-09-at-15.10.10.363ffee4d9a1a64539dc32f10ab4475dd7dfcd578e060d95941b8043daf31e07.1ada2165.png)

![](/assets/screenshot-2025-07-09-at-15.10.18.47c1023dccee8ddd3f8c5474745ef824725432d367719fdfde741db2abc72e5f.1ada2165.png)

1. 次のパラメータを編集します：


| パラメータ | 説明 |  |
|  --- | --- | --- |
| **Data Type** | インポートするデータタイプ： - Campaign - List - Export Data |  |
| **Export Data Type** | エクスポートするデータのタイプを指定します。Iterableでサポートされているタイプのいずれかと一致する必要があります。[これらのデータタイプ](https://api.eu.iterable.com/api/docs#export_exportDataCsv)がサポートされています。 |  |
| **Canpaign id(s)** | カンマで区切られたキャンペーンIDの配列。すべてのキャンペーンをインポートする場合は空白のままにしてください。 |  |
| **List id** | それに属するすべてのユーザーを取得するためのリストID |  |
| **Start Time** | UI設定の場合、サポートされているブラウザから日付と時刻を選択するか、ブラウザの日時形式に合った日付を入力できます。たとえば、Chromeでは年、月、日、時、分を選択するカレンダーが表示されます。Safariでは、2020-10-25T00:00のようなテキストを入力する必要があります。CLI設定の場合は、RFC3339 UTC"Zulu"形式のタイムスタンプが必要で、ナノ秒まで正確です。例："2014-10-02T15:01:23" |  |
| **End Time** | UI設定の場合、サポートされているブラウザから日付と時刻を選択するか、ブラウザの日時形式に合った日付を入力できます。たとえば、Chromeでは年、月、日、時、分を選択するカレンダーが表示されます。Safariでは、2020-10-25T00:00のようなテキストを入力する必要があります。CLI設定の場合は、RFC3339 UTC"Zulu"形式のタイムスタンプが必要で、ナノ秒まで正確です。例："2014-10-02T15:01:23" |  |
| **Number of Ids for Each Request** | 1つのリクエストあたりのIDの数。1から20まで |  |
| **Incremental** | 前回の実行から新しいデータのみをインポートします。インクリメンタルローディングについてを参照してください。 |  |
| **Use Date Range** | 日付範囲の使用を有効にします。 |  |
| **Date Range** | 事前設定された日付範囲、例： - `"Today"`, `"Yesterday"`, `"BeforeToday"`, `"All"` - 実際の日付を指定せずに素早くエクスポートするのに便利です。 |  |
| **Omit Fields (Optional)** | エクスポートに**含める**フィールド名の配列。存在する場合、これら以外のすべてのフィールドが返されます。カンマで区切ります。 |  |
| **Only Fields (Optional)** | エクスポートから**除外する**フィールド名の配列。存在する場合、これらのフィールドのみが結果に表示されます。カンマで区切ります。 |  |
| **Campaign Id (Optional)** | キャンペーン関連イベント（例：`emailSend`）をエクスポートする際に、特定のキャンペーンにデータをフィルタリングします。データの範囲を絞り込むのに便利です。 |  |


### データ設定

1. データ設定を構成します。
![](/assets/screenshot-2025-07-09-at-15.32.53.13f603d9ec4ae4e7cceb6afc45532f561cf864caf987ed7c4c17ffc5a78a95fc.1ada2165.png)


| パラメータ | 説明 |
|  --- | --- |
| Retry Limit | インポートが失敗するまでの再試行回数。 |
| Initial retry time wait in millis | 再試行する前に待機する初期時間（ミリ秒）。 |
| Max retry wait in millis | 再試行する前に待機する最大時間（ミリ秒）。 |
| スキーマ設定 | スキーマはサンプルデータから推測されました。PREVIEWおよびRUNの前に、タイプとフォーマットを変更できます。 |


- **注意:**
  - JSONフィールドのトップレベル1のみをサポートします。JSONオブジェクトのキーと値のペアの解析はサポートしていません。
  - データを取得するには、JSONフィールドを文字列からJSONデータ型に変更することを忘れないでください。通常、推測されたフィールドのデータ型は文字列です。
  - 必要でない場合は、フィールド名を変更しないでください。
  - カスタムクエリで何かを変更した後は、スキーマ設定をもう一度確認して編集する必要があります。


### Data Preview

インポートを実行する前に、Generate Preview を選択してデータの[プレビュー](/products/customer-data-platform/integration-hub/batch/import/previewing-your-source-data)を表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

1. **Next** を選択します。Data Preview ページが開きます。
2. データをプレビューする場合は、**Generate Preview** を選択します。
3. データを確認します。


### Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

1. **Next** を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。
2. **Database** を選択 > **Select an existing** または **Create New Database** を選択します。
3. オプションで、database 名を入力します。
4. **Table** を選択 > **Select an existing** または **Create New Table** を選択します。
5. オプションで、table 名を入力します。
6. データをインポートする方法を選択します。
  - **Append** (デフォルト) - データインポートの結果は table に追加されます。
table が存在しない場合は作成されます。
  - **Always Replace** - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
  - **Replace on New Data** - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
7. **Timestamp-based Partition Key** 列を選択します。
デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。
8. データストレージの **Timezone** を選択します。
9. **Schedule** の下で、このクエリを実行するタイミングと頻度を選択できます。


#### 一度だけ実行

1. **Off** を選択します。
2. **Scheduling Timezone** を選択します。
3. **Create & Run Now** を選択します。


#### 定期的に繰り返す

1. **On** を選択します。
2. **Schedule** を選択します。UI では、*@hourly*、*@daily*、*@monthly*、またはカスタム *cron* の 4 つのオプションが提供されます。
3. **Delay Transfer** を選択して、実行時間の遅延を追加することもできます。
4. **Scheduling Timezone** を選択します。
5. **Create & Run Now** を選択します。


転送が実行された後、**Data Workbench** > **Databases** で転送の結果を確認できます。

## コマンドラインを使用した接続の作成

Treasure コンソールを使用して接続を設定できます。

### Treasure Data Toolbeltのインストール

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

### 設定ファイル(seed.yaml)の作成

設定ファイルには、Iterableからコネクタに入力される内容を指定するin-セクションと、コネクタからTreasure Dataのデータベースに出力される内容を指定するout-セクションが含まれます。


```yaml
in:
  api_key: xxxxxxxxxxxxxxxx
  type: iterable
  data_type: export_data
  region: eu
  export_data_type: user
  use_date_range: false
  incremental: true
  start_time: '2024-01-01T08:51:00Z'
  end_time: '2024-12-01T08:51:00Z'
```

**パラメータリファレンス**

| 名前 | 説明 | 値 | デフォルト値 | 必須 |
|  --- | --- | --- | --- | --- |
| type | インポートのソース。 | "iterable" |  | はい |
| api_key | Iterable UIで統合用に生成されたAPI Keyの文字列。 | 文字列 |  | はい |
| region | api_keyを登録するリージョン。エンドポイントに応じて、ベースURLも変更されます。 | 文字列。   - us - eu | "us" | はい |
| data_type | インポートするデータタイプ:   - campaign - list - export_data | 文字列。 | "campaign" | はい |
| export_data_type | エクスポートするデータのタイプを指定します。Iterableでサポートされているタイプのいずれかと一致する必要があります。サポートされる[データタイプはこちら](https://api.eu.iterable.com/api/docs#export_exportDataCsv)。 | 文字列 |  | はい(data_typeがexport_dataの場合)。 |
| campaign_ids | キャンペーンIDの配列をカンマで区切ります。すべてのキャンペーンをインポートする場合は空白のままにしてください。 | 文字列 |  | いいえ |
| list_id | それに属するすべてのユーザーを取得するリストID | 文字列 |  | いいえ |
| incremental | インクリメンタルローディングを有効にします。 | ブール値。 | False | いいえ |
| start_date | データのエクスポートを開始する開始タイムスタンプ | 文字列。フォーマット: yyyy-MM-dd'T'HH:mm:ss.SS'Z' |  | いいえ |
| end_date | データのエクスポートを終了する終了タイムスタンプ | 文字列。フォーマット: yyyy-MM-dd'T'HH:mm:ss.SS'Z' |  | いいえ |
| number_of_ids_for_each_request | 1リクエストあたりのID数。1から20まで。 | 整数 | 1 | いいえ |
| use_date_range | 日付範囲の使用を有効にします。 | ブール値 | False | はい |
| date_range | 事前設定された日付範囲、例:   - `"Today"`, `"Yesterday"`, `"BeforeToday"`, `"All"` - 実際の日付を指定せずにエクスポートするのに便利です。 | 文字列  サポートされる値:   - today - yesterday - before_today - all | "Today" | いいえ |
| omit_fields | エクスポートに**含める**フィールド名の配列。存在する場合、これら以外のすべてのフィールドが返されます。カンマで区切ります。 | 文字列 |  | いいえ |
| only_fields | エクスポートから**除外する**フィールド名の配列。存在する場合、これらのフィールドのみが結果に表示されます。カンマで区切ります。 | 文字列 |  | いいえ |
| campaign_id | キャンペーン関連イベント(例: `emailSend`)をエクスポートする際に、特定のキャンペーンにデータをフィルタリングします。データの範囲を絞り込むのに便利です。 | 文字列 |  | いいえ |


### Guessコマンドを実行して実行設定ファイル(load.yaml)を生成


```bash
td connector:guess seed.yaml -o load.yaml
```


```yaml
in:
  api_key: xxxxxxxxxxxxxxxxxx
  type: iterable
  data_type: export_data
  region: eu
  export_data_type: user
  use_date_range: false
  incremental: true
  start_time: '2024-01-01T08:51:00Z'
  end_time: '2024-12-01T08:51:00Z'
  columns:
    - {format: 'yyyy-MM-dd HH:mm:ss xxx', name: signup_date, type: timestamp}
    - {name: itbl_internal.email_domain, type: string}
    - {name: subscribed_message_type_ids, type: string}
    - {name: user_id, type: long}
    - {name: prefer_user_id, type: boolean}
    - {name: signup_source, type: string}
    - {name: user_id, type: long}
    - {name: user_list_ids, type: string}
    - {name: unsubscribed_message_type_ids, type: string}
    - {name: itbl_user_id, type: string}
    - {name: email, type: string}
    - {name: merge_nested_objects, type: boolean}
    - {format: 'yyyy-MM-dd HH:mm:ss xxx', name: profile_updated_at, type: timestamp}
    - {name: unsubscribed_channel_ids, type: string}
```

データを推測するには、td connector:guess コマンドを使用します。(まずguessを使用してスキーマを推測し、その後"columns"プロパティで期待通りにスキーマを変更する必要があります)。

### インポートされるデータのプレビュー(オプション)

td connector: previewコマンドを使用して、インポートされるデータをプレビューできます。


```bash
td connector:preview load.yaml
```

カラム名やタイプが予期しないものとしてシステムが検出した場合は、`load.yaml`を直接変更して、再度プレビューします。

現在、Data Connectorは"boolean"、"long"、"double"、"string"、および"timestamp"タイプの解析をサポートしています。

### Load Jobの実行

Load Jobを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。


```bash
td connector:issue load.yaml \
--database td_sample_db \
--table td_sample_table
```

上記のコマンドは、すでに*データベース (td_sample_db)* と*テーブル (td_sample_table)* を作成していることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは成功しません。データベースとテーブルを手動で作成するか、コマンドのオプションを使用して自動作成することができます。


```bash
td connector:issue load.yaml --database td_sample_db --table td_sample_table --time-column created_at --auto-create-table
```

### スケジュール実行

定期的なIterableインポートのために、定期的なData Connector実行をスケジュールすることができます。高可用性を確保するためにスケジューラーを慎重に管理しています。この機能を使用することで、ローカルデータセンターで`cron`デーモンを使用する必要がなくなります。

### スケジュールの作成

新しいスケジュールは、td connector: createコマンドを使用して作成できます。スケジュールの名前、cron形式のスケジュール、データが保存されるデータベースとテーブル、およびData Connector設定ファイルが必要です。

`cron`パラメータは、`@hourly`、`@daily`、`@monthly`のオプションを受け付けます。

デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。`--timezone`オプションは、''Asia/Tokyo''、''America/Los Angeles''などの拡張タイムゾーン形式のみをサポートします。PSTやCSTなどのタイムゾーン略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。


```bash
$ td connector:create \
daily_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.yaml
```

- スケジュールの名前
- cron形式のスケジュール
- データが保存されるデータベースとテーブル
- Data Connector設定ファイルが必要です。TreasureDataのストレージは時間でパーティション分割されているため、*--time-column*オプションを指定することも推奨されます。



```bash
td connector:create daily_import "10 0 * * *" \
td_sample_db td_sample_table load.yaml --time-column created_at
```

### スケジュールのリスト表示

td connector: listコマンドを入力すると、スケジュールされたエントリのリストを確認できます。


```bash
td connector:List
```

### スケジュールの設定と履歴の表示

`td connector:show`は、スケジュールエントリの実行設定を表示します。


```
$ td connector:show daily_iterable_import  Name     : daily_iterable_import  Cron     : 10 0 * * *  Timezone : UTC  Delay    : 0  Database : sample_db  Table    : sample_table
```

`td connector:history`は、スケジュールエントリの実行履歴を表示します。各実行の結果を調査するには、`td job:show jobid`を使用します。


```
  | 577914 | success | 20000   | sample_db | sample_table | 0        | 2015-04-16 00:10:03 +0000 | 152      |  | 577872 | success | 20000   | sample_db | sample_table | 0        | 2015-04-15 00:10:04 +0000 | 163      |  | 577810 | success | 20000   | sample_db | sample_table | 0        | 2015-04-14 00:10:04 +0000 | 164      |  | 577766 | success | 20000   | sample_db | sample_table | 0        | 2015-04-13 00:10:04 +0000 | 155      |  | 577710 | success | 20000   | sample_db | sample_table | 0        | 2015-04-12 00:10:05 +0000 | 156      |  | 577610 | success | 20000   | sample_db | sample_table | 0        | 2015-04-11 00:10:04 +0000 | 157      |  +--------+---------+---------+-----------+--------------+----------+---------------------------+----------+
```

### スケジュールの削除

`td connector:delete`は、スケジュールを削除します。


```
$ td connector:delete daily_iterable_import
```

## 参考資料

- API概要: [https://api.iterable.com/api/docs](https://api.iterable.com/api/docs)
- APIデータエクスポート:  [https://api.eu.iterable.com/api/docs#export_exportDataJson](https://api.eu.iterable.com/api/docs#export_exportDataJson)