# Salesforce Pardot Import Integration

Salesforce Pardot B2Bは、企業間取引(B2B)の営業とマーケティング自動化に主に焦点を当てた組織向けに設計された、Salesforceのマーケティング自動化ツールです。このメールマーケティングシステムは、B2B営業に関連する長期的な期間と複数ステップの意思決定に対する自動化されたサポートを提供し、マーケティング担当者がより多くのリードを作成し、より多くのパイプラインを生成し、営業がより多くの取引を成約できるよう支援します。

Salesforce Pardotインポート連携は、Pardotからデータを取り込んでTreasure Dataデータベースに格納し、カスタムセグメントをPardotに戻してアクティベートするというエンドツーエンドのソリューションを自動化します。

## 前提条件

- Treasure Dataの基本知識
- Salesforce Pardotの基本知識
- 動作しているSalesforce Pardotアカウント
- ビジネスユニットID
- 独自のSalesforce Pardot接続アプリを作成する権限、またはTreasure DataアプリにPardotデータへのアクセスを許可する権限


## 要件と制限事項

- タイムスタンプ列のインポートされた値は、Treasure Dataデータベースに文字列型として保存されます。タイムゾーンは利用できません。
- 大量のデータをインポートする場合はExport APIを使用しますが、増分読み込みはサポートされていません。


## Treasure Data Integration の静的 IP アドレス

セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります:
[IP Addresses for Integrations](/apis/endpoints/ip-addresses-integrations-result-workers)

## Pardotビジネスユニット IDの取得

[Pardotエクスポートドキュメント](/ja/int/salesforce-pardot-export-integration)の手順に従って、ビジネスユニットIDを取得してください。

## TD ConsoleによるSalesforce Pardotからのインポート

### 認証の作成

[Salesforce Pardotエクスポートドキュメント](/ja/int/salesforce-pardot-export-integration)の手順に従って、認証を作成してください。

### ソースの作成

1. TD Consoleを開きます。
2. Integrations Hub > Authenticationsに移動します。
3. 新しい認証を見つけて、New Sourceを選択します。


### 接続の作成

接続に対して次の表を入力してください。

| Parameter | Description |
|  --- | --- |
| Data Transfer Name | 転送の名前を定義できます。 |
| Authentication | 転送に使用される認証名。 |


1. Data Transfer Nameフィールドにソース名を入力します。
2. Nextを選択します。


**Source Table**タブが選択された状態で、Create Sourceページが表示されます。

### ソーステーブルの指定

![](/assets/screen-shot-2022-05-05-at-14.09.50.c032fb00dd8b4df04b7749b36f460d9be5a6b1fabaa37ba0e40146f815965a09.193b36ba.png)

| Parameter  | Description |
|  --- | --- |
| Data Object | インポートするPardotオブジェクト。サポートされているオブジェクト:   - CAMPAIGN - FORM - LIST - LIST_MEMBERSHIP - OPPORTUNITY - PROSPECT - PROSPECT_ACCOUNT - VISITOR - VISITOR_ACTIVITY - CUSTOM_FIELD - CUSTOM_REDIRECT - EMAIL_CLICK - USER - VISIT - TAG - TAG_OBJECT - DYNAMIC_CONTENT |
| Deleted? | 削除されたオブジェクトをリクエストします。Export APIを使用する場合、PROSPECT_UPDATED_ATでフィルタリングすると、削除されたProspectが対象となります。 |
| Use Export API | データをインポートするためにExport APIを使用します。大量のデータをインポートする場合、Export APIはより効率的です。さらに、Export APIはアカウントのAPIレート制限に達することを回避するのに役立ちます。 |
| Filter by
 | CREATED_AT、UPDATE_AT、またはPROSPECT_UPDATED_ATでデータをフィルタリングします。
PROSPECT_UPDATED_ATは、Export APIモードのみでPROSPECT_ACCOUNTおよびVISITORデータオブジェクトでサポートされています。
 |
| Visitor IDs | カンマ区切りのVisitor ID(スペースなし)。このフィールドはVisitオブジェクトのみで利用可能です。 |
| Prospect IDs | カンマ区切りのProspect ID(スペースなし)。このフィールドはVISITおよびVISITORオブジェクトのみで利用可能です。 |
| Visit IDs | カンマ区切りのProspect ID(スペースなし)。このフィールドはVisitオブジェクトのみで利用可能です。 |
| Start Time | この開始時刻以降のデータをインポートします。形式は"yyyy-MM-dd HH:mm:ss"に一致する必要があります。指定されていない場合、Export APIモードでは指定されたEnd Timeから1年間のデータがインポートされます。 |
| End Time | この時刻までのデータをインポートします。形式は"yyyy-MM-dd HH:mm:ss"に一致する必要があります。指定されていない場合、Export APIモードでは指定されたStart Timeから1年間のデータがインポートされます。 |
| Incremental Loading | 最後のインポートからの新しいデータのみをインポートします。このオプションはExport APIモードが使用されている場合は利用できません。 |


**Next**を選択します。

### データ設定の構成

![](/assets/data-settings.788684b2de1a6ff5a40098ee45809f0935f43d04d12fecf68784c0c88f6e7e5b.193b36ba.png)

Data Settingsでは、Salesforce PardotへのHTTPリクエストを微調整できます。設計した構成設定を更新し、**Next**を選択します。

| Parameter | Description |
|  --- | --- |
| Extra Columns (Optional) | カンマ区切りの列名リスト。APIレスポンスにデータが含まれている場合、列を文字列として保存します。このフィールドを使用すると、Pardotドキュメントで指定されていないが、リクエスト時にデータが存在する列のデータをインポートできます。 |
| Extra Request Params | Pardotサーバーに送信される追加のリクエストパラメータ。例えば、指定されたLIST ID = 370707412でList Membershipsをインポートする場合は、Name = list_id、Value = 370707412と設定します。注意: この設定はExport APIを使用する場合は利用できません。 |
| Max retry count per API call | API呼び出しあたりの最大再試行回数 |
| Initial retry interval per API call | API呼び出しあたりの初期再試行間隔(秒) |
| Max retry interval per API call | API呼び出しあたりの最大再試行間隔(秒) |
| HTTP Connection Timeout | HTTP接続タイムアウトを秒単位で設定します |


### 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** で転送の結果を確認できます。

## ワークフローによるSalesforce Pardotからのインポート

ワークフローのtd_load>: オペレーターを使用して、Salesforce Pardotからデータをインポートできます。既にSOURCEを作成している場合は実行できます。SOURCEを作成したくない場合は、ymlファイルを使用してインポートできます。

### ソースの使用

既存のソースを使用してワークフローをセットアップできます。
カスタム接続アプリを作成する権限がない場合は、Treasure Data接続アプリを使用できます。

1. ソースを特定します。
2. 一意のIDを取得するには、ソースリストを開き、Salesforce Pardotでフィルタリングします。
3. メニューを開き、Copy Unique IDを選択します。


![](/assets/image2021-10-12_12-26-58.09d9b84b0f1f752c7c95b0bc1c2d8e8b7302e5b91c6a3cb5f01309dadf53a604.193b36ba.png)

1. td_load>オペレーターを使用してワークフロータスクを定義します。



```yaml
+load:
  td_load>: unique_id_of_your_source
  database: ${td.dest_db}
  table: ${td.dest_table}
```

1. ワークフローを実行します。


### Yamlファイルの使用

Yaml構成ファイルを使用すると、構成を完全に制御できます。

1. Yamlファイルを特定します。Yamlファイルを作成する必要がある場合は、[Amazon S3インポート連携 (CLI使用)](/int/amazon-s3-import-integration-v2#AmazonS3ImportIntegrationv2-UsingtheCLItoConfiguretheConnector)を参考にしてください。
2. td_load>オペレーターを使用してワークフロータスクを定義します。



```yaml
+load:
  td_load>: config/daily_load.yml
  database: ${td.dest_db}
  table: ${td.dest_table}
```

1. ワークフローを実行します。


[CLIパラメータリファレンス](#parameters-reference)を参照してください。

### サンプルワークフローコード

サンプルワークフローコードについては、[Treasure Boxes](https://github.com/treasure-data/treasure-boxes/tree/master/td_load/s3)を参照してください。

## CLI (Toolbelt)によるSalesforce Pardotからのインポート

コネクターをセットアップする前に、最新の[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールしてください。

### 構成ファイル(load.yml)の作成

以下は、seed.ymlファイルを準備するためのAWSの例です。コードをお使いの製品に適したコードに置き換えてください。


```yaml
in:
  type: salesforce_pardot
  client_id: xxxx
  client_secret: yyyy
  refresh_token: zzzz
  data_object: prospect
  business_unit: 0Uv4W00000111111
  filter_by: 'created_at'
  incremental: true
  #  use_export_api: true
  start_time: "2020-12-13 03:20:00"
  end_time: "2021-12-20 03:30:00"
out:
  mode: append
```

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

| Name  | Description  | Value  | Default Value  | Required  |
|  --- | --- | --- | --- | --- |
| type | コネクタータイプ。 | salesforce_pardot |  | yes |
| client_id | 接続アプリのコンシューマーキー。 |  |  | yes |
| client_secret | 接続アプリのコンシューマーシークレット。 |  |  | yes |
| refresh_token | [カスタム接続アプリの使用](/ja/int/salesforce-pardot-export-integration#h2__1765871400)で説明されている手順を完了した後のリフレッシュトークン。 |  |  | yes |
| business_unit | Salesforce PardotビジネスユニットID。[PardotビジネスユニットIDの取得](/ja/int/salesforce-pardot-export-integration#h1__1031407665)を参照してください。 |  |  | yes |
| data_object | インポートするPardotオブジェクト。サポートされているオブジェクト：   - CAMPAIGN - FORM - LIST - LIST_MEMBERSHIP - OPPORTUNITY - PROSPECT - PROSPECT_ACCOUNT - VISITOR - VISITOR_ACTIVITY - CUSTOM_FIELD - CUSTOM_REDIRECT - EMAIL_CLICK - USER - VISIT - TAG - TAG_OBJECT - DYNAMIC_CONTENT |  |  | yes |
| use_export_api | Export APIを使用してデータをインポートします。大量のデータをインポートする場合、Export APIの方が効率的です。 |  | false | no |
| deleted | 削除されたオブジェクトをリクエストします。Export APIを使用する場合、PROSPECT_UPDATED_ATでフィルタリングすると削除されたProspectsが対象になります。 |  | 指定なし |  |
| filter_by | CREATED_AT、UPDATE_AT、またはPROSPECT_UPDATED_ATでデータをフィルタリングします。注：PROSPECT_UPDATED_ATは、Export APIモードでのPROSPECT_ACCOUNTおよびVISITORデータオブジェクトでのみサポートされています。 |  |  | no |
| start_time | この時刻以降のデータをインポートします。形式は「yyyy-MM-dd HH:mm:ss」に一致する必要があります。指定されていない場合、Export APIモードでは、指定された終了時刻の1年前からデータがインポートされます。 |  |  | no |
| end_time | この時刻までのデータをインポートします。形式は「yyyy-MM-dd HH:mm:ss」に一致する必要があります。指定されていない場合、Export APIモードでは、指定された開始時刻から1年間のデータがインポートされます。 |  |  | no |
| visitor_ids | カンマ区切りのVisitor ID（スペースなし）。このフィールドはVisitオブジェクトでのみ使用できます。 |  |  | no |
| prospect_ids | カンマ区切りのProspect ID（スペースなし）。このフィールドはVisitオブジェクトでのみ使用できます。 |  |  | no |
| visit_ids | カンマ区切りのProspect ID（スペースなし）。このフィールドはVisitオブジェクトでのみ使用できます。 |  |  | no |
| incremental | 最後のインポート以降の新しいデータのみをインポートします。このオプションは、Export APIモードを使用する場合は利用できません。 |  | false | no |
| extra_columns | カンマ区切りの列名リスト。APIレスポンスにデータが含まれている場合、その列を文字列として保存します。このフィールドを使用すると、Pardotドキュメントでは指定されていないが、リクエスト時にデータが存在する列をインポートできます。 |  |  |  |
| extra_request_params | Pardotサーバーに送信される追加のリクエストパラメータ。例えば、指定されたlist_id = LA00003のList Membershipsをインポートする場合、値を`- {"name": "list_id", "value": "LA00003"}`のように設定します。注：この設定は、Export APIを使用する場合は利用できません。 |  |  | no |
| maximum_retries | リクエストが失敗した場合の最大再試行回数。 |  | 8 | no |
| initial_retry_wait | 最初の再試行までの初期待機時間（秒単位）。 |  | 120 | no |
| maximum_retry_wait | 再試行の最大待機時間（秒単位）。 |  | 300 | no |
| connection_timeout | Pardotへのリクエストに対するHTTP接続タイムアウト（秒単位）。 |  | 300 | no |


データをプレビューするには、*td connector:preview*コマンドを使用します。


```
$ td connector:preview load.yml
+-------+---------+----------+---------------------+
| id    | company | customer | created_at          |
+-------+---------+----------+---------------------+
| 11200 | AA Inc. |    David | 2015-03-31 06:12:37 |
| 20313 | BB Imc. |      Tom | 2015-04-01 01:00:07 |
| 32132 | CC Inc. | Fernando | 2015-04-01 10:33:41 |
| 40133 | DD Inc. |    Cesar | 2015-04-02 05:12:32 |
| 93133 | EE Inc. |     Jake | 2015-04-02 14:11:13 |
+-------+---------+----------+---------------------+
```

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

ロードジョブを投入します。
データのサイズによっては数時間かかる場合があります。データを保存するTreasure Dataのデータベースとテーブルを必ず指定してください。

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

データに時刻列がない場合は、*add_time*フィルターオプションを使用して時刻列を追加できます。詳細については、[add_timeフィルタープラグイン](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。


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

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 created_at --auto-create-table
```

データコネクタはサーバー側でレコードをソートしません。時間ベースのパーティショニングを効果的に使用するには、事前にファイル内のレコードをソートしてください。

*time*というフィールドがある場合は、*--time-column*オプションを指定する必要はありません。


```
$ td connector:issue load.yml --database td_sample_db --table td_sample_table
```

### 実行のスケジューリング

新しいスケジュールは、*td connector:create*コマンドを使用して作成できます。


```
$ td connector:create daily_import "10 0 * * *"
    td_sample_db td_sample_table load.yml
```

Treasure Dataのストレージは時間によってパーティション化されているため（[データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)も参照）、*--time-column*オプションを指定することを推奨します。


```
$ td connector:create daily_import "10 0 * * *"
    td_sample_db td_sample_table load.yml
    --time-column created_at
```

`cron`パラメータは、`@hourly`、`@daily`、`@monthly`の3つの特別なオプションも受け入れます。

デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。`--timezone`オプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートしています。

PST、CSTなどのタイムゾーンの略称はサポートされて*おらず*、予期しないスケジュールになる可能性があります。

## Salesforce Pardotインテグレーションに関するFAQ

### 大規模なデータセットの増分インポートをスケジュールするにはどうすればよいですか？

推奨されているように、Pardotから大規模なデータセットをインポートする場合は、Export APIを使用する必要があります。ただし、Export APIは増分インポートをサポートしていません。この問題を解決するには：

- Export APIを使用して最近の日付までインポートします。例えば、**Filter By**と**End Time**を指定して今日までインポートすると、End Time値までのすべてのデータがインポートされます。
- ジョブ設定を変更し、Use Export APIチェックボックスのチェックを外し、**Start Time**を前回の実行のEnd Timeと同じに設定し、**Incremental Loading**を有効にします。