# Dotdigital Export Integration

Dotdigital Engagement Cloudは、メール、SMS、ソーシャルメディア、プッシュ通知などを通じてデータトリガー型キャンペーンを送信するオムニチャネルマーケティングソリューションです。Treasure DataからDotdigitalにジョブ結果を直接書き込むことができます。

## 前提条件

- [TD Toolbelt](https://toolbelt.treasuredata.com/)を含むTreasure Dataの基本知識。
- Dotdigitalのアカウント。
- DotdigitalのAPIアカウント。


## 制限事項

- Treasure Dataはキャンペーンを作成しません。
- トランザクションメールアクションは、API呼び出しのレート制限にカウントされません。
- dotdigital APIのレート制限（[https://developer.dotdigital.com/docs/getting-started-with-the-api#restrictions](https://developer.dotdigital.com/docs/getting-started-with-the-api#restrictions)）に従い、1回のUpload bulk contactsアクションには2回のAPI呼び出しが必要であり、これは全体のレート制限にカウントされます。


## APIアカウントの取得

1. DotDigitalにログインします。[https://login.dotdigital.com/login.aspx?ReturnUrl=/](https://login.dotdigital.com/login.aspx?ReturnUrl=/)に移動します。
2. [https://r1-app.dotdigital.com/access/api](https://r1-app.dotdigital.com/access/api)に移動し、**API users**タブを選択します。
![](/assets/screen-shot-2020-08-25-at-9.59.48-pm.ab8ae1140f18c142aa9706cd87d4c0926610da1d2c6422b78d310ac782d5b7ec.a8451e88.png)
3. **New user**を選択します。DotDigitalからメールアドレスが提供されます。パスワードを追加して確認し、フォームを完成させます。説明はオプションです。
![](/assets/screen-shot-2020-08-25-at-10.04.11-pm.c5b80b12d82e096dd55327a4ed2cdc22f47867d8679a81211ed4aec33d81432e.a8451e88.png)
4. **Save**をクリックします。


## Treasure コンソールで新しい接続を作成する

Treasure Dataでは、クエリを実行する前に、エクスポート用のデータ接続を作成して設定する必要があります。データ接続の一部として、統合にアクセスするための認証情報を提供します。

1. **Treasure コンソール**を開きます。
2. **Integrations Hub > Catalog**に移動します。
3. Catalog画面の右端にある検索アイコンをクリックし、**dotdigital**と入力します。
4. dotdigitalコネクタにカーソルを合わせ、**Create Authentication**を選択します。
![](/assets/dotdigital.e7d73b496bda4a3e67fe9c0c720ac4fafea8192da453f807eba89c69e402090f.a8451e88.png)
5. New Authenticationダイアログが開きます。
![](/assets/screen-shot-2020-08-25-at-10.26.23-pm.501b2be8b28bc3a455c6ecbdf4c86cc726adffc542bdd94dcedf3e99934bf213.a8451e88.png)
6. Regionを選択します。API User NameとAPI User Passwordフィールドが自動入力されます。
7. **Continue**を選択します。
8. 接続の名前を入力します。
9. **Done**を選択します。


## データ接続でエクスポート結果を設定する

次に、クエリを作成または再利用する必要があります。クエリでは、データ接続を設定します。クエリ内で列マッピングを定義する必要がある場合があります。

### パラメータを指定して接続を設定する

1. Treasure コンソールを開きます。
2. **Data Workbench** > **Queries**に移動します。
3. データのエクスポートに使用する予定のクエリを選択します。
4. クエリを**実行**します。
5. クエリエディタの上部にある**Export Results**を選択します。
Choose Integrationダイアログが開きます。
6. 結果をエクスポートするために使用する接続を選択する際、2つのオプションがあります。


- 既存の接続を使用する場合：
  - 検索ボックスに接続名を入力してフィルタリングします。
  - 接続を選択します。
- 新しいDotdigital接続を作成する場合：
  - フィールド値を入力して新しい接続を作成します。


新しいDotdigital接続に必要な認証情報を入力します。以下のパラメータを設定します。

| **パラメータ** | **要件** | **説明** |
|  --- | --- | --- |
| Export Mode | 必須 | データを移動する3つの異なる方法があります：   - **Transactional Email**（デフォルト）。Dotdigitalでトリガー型キャンペーンの送信メールをトリガーします：各レコードに1通のメールを送信します。 - **Bulk Contacts**：レコードを連絡先としてDotdigitalにアップロードします。 - **Unified Contacts**：レコードを連絡先としてDotdigitalにアップロード/削除します。Bulk Contactsの強化版で、連絡先とその依存関係を一度にアップロード/削除できます。 |


#### Transactional EmailのExport Mode

| **パラメータ** | **要件** | **説明** |
|  --- | --- | --- |
| Campaign ID | 必須 | トリガー型キャンペーンのID。 |
| JSON Personalization Columns | オプション | カンマで区切られたJSON列名。 |
| Ignore Invalid Records | オプション | 無効なレコードを無視してジョブを完了します。 |


- サンプル設定


![](/assets/image2023-6-27_10-56-35.a962d6be5b019aeac0257a360d70adbf086c61b2dd252e3462956c97c35d7152.a8451e88.png)

#### Bulk ContactsのExport Mode

| **パラメータ** | **要件** | **説明** |
|  --- | --- | --- |
| Export Operation | 必須 | Bulk Contactsモードでのエクスポート操作   - **Upload（デフォルト）**。レコードをアップロードします。 - **Delete**。アドレス帳からIDで連絡先を削除します |
| Add to Address Book | オプション | アドレス帳に追加します。 |
| Address Book   Identifier Mode | オプション | 操作するアドレス帳の識別子モード：   - **Id（デフォルト）**。 - **Name**。名前からIDを解決します |
| Address Book ID | オプション | 操作するアドレス帳ID。このパラメータは以下の状況で必要です：   - Export Operationが「Upload」で「Add to Address Book」が有効な場合 - Export Operationが「Delete」の場合 |
| Create A New Address Book When Not Found | オプション | 指定された名前のアドレス帳が見つからない場合、その名前で新しいアドレス帳を作成します。 |
| New Address Book Visibility | オプション | アドレス帳の表示設定   - **Private（デフォルト）**。 - **Public**。 |
| Address Book Name | オプション | 操作するアドレス帳名。このパラメータは以下の状況で必要です：   - Export Operationが「Upload」で「Add to Address Book」が有効な場合 - Export Operationが「Delete」の場合 |
| Merge Option | オプション | 以下のマージオプションが利用可能です：   - **None（デフォルト）**。マージしません。 - **Update All**。すべてのデータフィールドを更新します - `update_all` - **Ignore Blank**。クエリ結果セット内の空白値を無視します - `ignore_blank` - **Skip Existing Non-Empty Fields**。値を含むデータフィールドを更新しません - `skip_fields` |
| Ignore Invalid Records | オプション | 無効なレコードを無視してジョブを完了します。 |
| Enable Parallel Upload | オプション | 並列モードでジョブを実行します。 |
| Thread Count | オプション | 並列モードで実行されるスレッド数。 |


- サンプル設定


![](/assets/screenshot-2024-04-08-at-15.19.21.845242019f03f0ed5963e0f606f523eec7cd5bd78873798d91b8d7b3e4a20dce.a8451e88.png)

![](/assets/screenshot-2024-04-08-at-15.08.37.b831418dc1719dda05bfab5cd624b0e70b51c72a1d1b7b125614110ccae3c0ac.a8451e88.png)

#### **Unified Contacts**のエクスポートモード

| **パラメータ** | **要件** | **説明** |
|  --- | --- | --- |
| Export Operation | 必須 | unified contactsモードでのエクスポート操作   - **Upload (デフォルト)**。レコードをunified contactsとしてアップロードします。 - **Delete**。連絡先を削除します（ハード削除） |
| Add to List (旧 Address Book) | オプション | 連絡先をリストに追加します。 |
| List Identifier Mode | オプション | 操作対象のリスト識別子モード:   - **Id (デフォルト)**。 - **Name**。名前からIDを解決します |
| List ID | オプション | 操作対象のリストID。このパラメータは以下の状況で必要です:   - Export Operationが「Upload」で「Add to List」が有効な場合 - Export Operationが「Delete」の場合 |
| Create A New List When Not Found | オプション | 指定された名前のリストが見つからない場合、その名前で新しいリストを作成します。 |
| New List Visibility | オプション | リストの公開設定   - **Private (デフォルト)**。 - **Public**。 |
| List Name | オプション | 操作対象のリスト名。このパラメータは以下の状況で必要です:   - Export Operationが「Upload」で「Add to List」が有効な場合 - Export Operationが「Delete」の場合 |
| Merge Option | オプション | 以下のマージオプションが利用可能です:   - **overwrite (デフォルト)**。常にすべてのフィールドを上書きします。 - **overwriteIfEmpty**。空のフィールドのみを上書きします。 - **overwriteIfNotEmpty**。新しい値が空でない場合に上書きします。 |
| Ignore Invalid Records | オプション | 無効なレコードを無視してジョブを完了します。 |


- サンプル設定


Uploadオペレーション

![](/assets/screenshot-2025-05-02-at-10.23.40.6474457b5ef851e7bab3763a7bab94ef66e86e699ace9244d0d2588201a14b99.a8451e88.png)

Deleteオペレーション

![](/assets/screenshot-2025-05-02-at-10.27.30.edd907155b111fbcdb8c9b6ee12ea14741336eebca297b161dfea3ffcf41f484.a8451e88.png)

#### Dotdigitalにデータを投入するためのクエリの例

Treasure Dataから以下のクエリを実行し、結果をDotdigitalへの接続にエクスポートします。トランザクショナルメールでは大文字小文字を区別する列名を使用しますが、バルク連絡先では大文字小文字を区別しない列名を使用します。

- Transactional Emailsのクエリ



```
SELECT an_email_column AS email,
another_first_name AS FIRSTNAME
another_first_name AS LASTNAME
FROM your_table;
```

- Bulk Contacts Uploadのクエリ



```
SELECT an_email_column AS email,
another_first_name AS firstname
another_first_name AS lastname
FROM your_table;
```

- Bulk Contacts Deleteのクエリ


`SELECT contact_id AS id FROM your_table;`

- Unified Contactsのクエリ


**Uploadオペレーション**


```
SELECT match_identifier, contact_id, email, mobile_number, channel_properties, consent_records, firstname, lastname FROM your_table;
```

**Deleteオペレーション**


```
SELECT match_identifier, contact_id, email, mobile_number FROM your_table;
```

**データモデル**

| 列名 | 必須 | データ型 | 備考 |
|  --- | --- | --- | --- |
| match_identifier | はい | string | - 値: `contactId, email, mobileNumber` - 大文字小文字を区別します |
| contact_id | - **match_identifier**列の値に応じて、これらの識別子のいずれかが必要です - 残りの列はオプションです。 | int64 |  |
| email | string |  |  |
| mobile_number | string |  |  |
| channel_properties | いいえ | JSON形式の文字列 |  |
| preferences | いいえ | JSON形式の文字列 |  |
| consent_records | いいえ | JSON形式の文字列 |  |
| その他の列 | いいえ | string | datafieldにマッピングされます |


### (オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが `'0 0 1 * 1'` の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

#### Treasure コンソール を使用してジョブをスケジュールする

1. **Data Workbench > Queries** に移動します
2. 新しいクエリを作成するか、既存のクエリを選択します。
3. **Schedule** の横にある None を選択します。
![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png)
4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:
![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png)
| ドロップダウン値 | 説明 |
|  --- | --- |
| Custom cron... | [Custom cron... の詳細](#custom-cron-details)を参照してください。 |
| @daily (midnight) | 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 |
| @hourly (:00) | 毎時 00 分に実行します。 |
| None | スケジュールなし。 |


#### Custom cron... の詳細

![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png)

| **Cron 値** | **説明** |
|  --- | --- |
| `0 * * * *` | 1 時間に 1 回実行します。 |
| `0 0 * * *` | 1 日 1 回午前 0 時に実行します。 |
| `0 0 1 * *` | 毎月 1 日の午前 0 時に 1 回実行します。 |
| "" | スケジュールされた実行時刻のないジョブを作成します。 |



```
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)
```

次の名前付きエントリを使用できます:

- Day of Week: sun, mon, tue, wed, thu, fri, sat.
- Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.


各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

div
| フィールド値  | 例  | 例の説明  |
|  --- | --- | --- |
| 各フィールドに対して上記で表示された制限内の単一の値。 |  |  |
| フィールドに基づく制限がないことを示すワイルドカード
`'*'`。 | `'0 0 1 * *'` | 毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
| 範囲 `'2-5'`
フィールドの許可される値の範囲を示します。 | `'0 0 1-10 * *'` | 毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
| カンマ区切りの値のリスト `'2,3,4,5'`
フィールドの許可される値のリストを示します。 | `0 0 1,11,21 * *'` | 毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
| 周期性インジケータ `'*/5'`
フィールドの有効な値の範囲に基づいて、
スケジュールが実行を許可される頻度を表現します。 | `'30 */2 1 * *'` | 毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。
`'0 0 */5 * *'` は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
| `'*'`
ワイルドカードを除く上記の
いずれかのカンマ区切りリストもサポートされています
`'2,*/5,8-10'` | `'0 0 5,*/10,25 * *'` | 毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |


1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。


### クエリを実行する

クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。

設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。

(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

## Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

1. **Audience Studio** に移動します。
2. parent segment を選択します。
3. ターゲット segment を開き、右クリックして、**Create Activation** を選択します。
4. **Details** パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
5. **Output Mapping** パネルで activation 出力をカスタマイズします。


![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png)

- Attribute Columns
  - **Export All Columns** を選択すると、変更を加えずにすべての列をエクスポートできます。
  - **+ Add Columns** を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。**+ Add Columns** を選択し続けて、activation 出力用の新しい列を追加します。
- String Builder
  - **+ Add string** を選択して、エクスポート用の文字列を作成します。次の値から選択します:
    - String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
    - Timestamp: エクスポートの日時。
    - Segment Id: segment ID 番号。
    - Segment Name: segment 名。
    - Audience Id: parent segment 番号。


1. **Schedule** を設定します。


![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png)

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。


1. **Create** を選択します。


batch journey の activation を作成する必要がある場合は、[Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation) を参照してください。

Dotdigitalの場合、Audience StudioはAddress BookのIDの取得をサポートしており、ユーザーはリストからAddress Bookを選択できます。取得が成功しない場合のみ、手動入力が必要です。

![](/assets/screenshot-2024-10-01-at-09.06.53.50769d2bee74040749494f1f78c791ff515717311117032ca39d35b0fc68c6fe.a8451e88.png)

## ワークフローでエクスポート結果を設定する

### トランザクショナルメールをエクスポートするワークフローの例


```yaml
timezone: UTC

_export:
  td:
    database: sample_datasets

+export_to_dotdigital:
  td>: queries/sample.sql
  result_connection: my_dotdigital_output
  result_settings:
    campaign_id: 119178
    mode: transactional_email
    ignore_invalid_records: true
    json_columns: ORDER, ITEMS
```

### バルクコンタクトアップロードをエクスポートするワークフローの例


```yaml
timezone: UTC

_export:
  td:
    database: sample_datasets

+export_to_dotdigital:
  td>: queries/sample.sql
  result_connection: my_dotdigital_output
  result_settings:
    campaign_id: 119178
    mode: bulk_contacts
    ignore_invalid_records: true
    merge_option: update_all
    add_to_address_book: true
    address_book_id: 119178
    export_operation: upload
    address_book_name: "address_book_name"
    address_book_identifier_mode: name
    create_when_not_found: true
    new_address_book_visibility: private
```

### バルクコンタクト削除をエクスポートするワークフローの例


```yaml
timezone: UTC

_export:
  td:
    database: sample_datasets

+export_to_dotdigital:
  td>: queries/sample.sql
  result_connection: my_dotdigital_output
  result_settings:
    campaign_id: 119178
    mode: bulk_contacts
    ignore_invalid_records: true
    address_book_id_delete: 119178
    export_operation: delete
    address_book_name_delete: "address_book_name"
    address_book_identifier_mode_delete: name
```

### 統合コンタクトアップロードをエクスポートするワークフローの例


```yaml
timezone: UTC

_export:
  td:
    database: sample_datasets

+export_to_dotdigital:
  td>: queries/sample.sql
  result_connection: my_dotdigital_output
  result_settings:
    mode: unified_contacts
    ignore_invalid_records: true
    unified_cts_export_operation: upload
    unified_cts_merge_option: overwrite
    unified_cts_add_to_list: true
    unified_cts_list_identifier_mode: id
    unified_cts_list_id: 119178
```

### 統合コンタクト削除をエクスポートするワークフローの例


```
timezone: UTC

_export:
  td:
    database: sample_datasets

+export_to_dotdigital:
  td>: queries/sample.sql
  result_connection: my_dotdigital_output
  result_settings:
    mode: unified_contacts
    ignore_invalid_records: true
    unified_cts_export_operation: delete
```

ワークフローで統合を使用してデータをエクスポートする方法の詳細については、[TD Toolbeltを使用したワークフローでのデータエクスポート](https://docs.treasuredata.com/smart/project-product-documentation/exporting-data-with-parameters)を参照してください。