# Salesforce SFDC Legacy Import Integration

Salesforceとtreasure Dataを接続することで、Salesforceデータをより適切に管理し、マーケティングおよびセールスオペレーションスタック内の他のビジネスアプリケーションとの統合を改善できます。

SalesforceとTreasure Dataを統合することで、次のことが簡単に実現できます:

- **Salesforceに新しい機能を追加する。** 例えば、Webの使用状況を追跡し、顧客の製品使用量が減少した際にアラートを受信することで、解約を防止できます。
- **Salesforceデータを使用して、マーケティングスタックの他の部分を改善する。** 例えば、新規顧客をFacebook Custom Audiencesから自動的に削除することで、Facebook AdsのROIを向上させることができます。


Salesforceからデータをインポートするサンプルワークフローについては、[Treasure Boxes](https://github.com/treasure-data/treasure-boxes/tree/master/td_load/sfdc)を参照してください。

まだTreasure アカウントをお持ちでない場合は、お問い合わせいただければセットアップをサポートいたします。

次のトピックに進んでください:

## 制限事項

- **サポートされていないSOQL** (Salesforce Object Query Language) **構文**。制限事項として、当社のデータコネクターは、count() FROM Objectなどのソql構文をサポートしていません。
- **Bulk APIの制限**。Bulk APIは高速な取り込みを提供しますが、24時間以内に10,000バッチの割り当てという制限もあります。ターゲットが大きい場合、利用可能なバッチ割り当て全体が消費され、最終的にジョブが失敗する可能性があります。Bulk APIを使用しようとして、結果としてすべてのレコードが取り込まれる場合は、**synchronous transfer only**オプションを有効にしてREST APIを使用することを検討してください。REST APIを使用すると、バッチ割り当ての制限を回避できますが、速度が遅くなる可能性があります。
- インポートでは**認証にSession IDを使用すること**はサポートされていません。Session IDは、[Salesforce Export Integration](/ja/int/salesforce-export-integration)でのみサポートされています。
- **サポートされていないOAuth**。Salesforce Import Integrationは、非標準のログインURL(https://logins.salesforce.com/以外)のOAuthをサポートしていません。


## サポート

SFDC importは以下の認証タイプをサポートしています:

- Credential
- OAuth


## Treasure コンソールを使用してSalesforceに接続する

Treasure コンソールを使用してSalesforceに接続するのは迅速かつ簡単です。または、[コマンドラインを使用してSalesforce接続を作成](/ja/int/salesforce-marketing-cloud-import-integration-cli)することもできます。import integrationはcredentialsをサポートしています。credentialsを使用して認証するには、client IDとclient secretが必要です。

### SalesforceでTDがSalesforceにアクセスできるようにする

以下の手順は、credentialsを使用して認証するために必要なclient IDとclient secretを見つける方法を示しています。

1. Setup > Apps > App Manageに移動します。
2. **New Connected App**を選択します。
手順は、実行しているSalesforceのバージョンによって異なる場合があります。Spring 19 classic UIの場合: **Setup** > **Build** > **Create** > **Apps** > **Connected Apps** > **New**。
![](/assets/image-20191016-212112.34bf9a35799ad52037ac9d706273111d492e8423e31d403d5d5042ccf542e4da.e58c3e6b.png)
3. **Setup** > **Build** > **Create (Apps)**に移動し、すべてのconnected appsを検証します:
![](/assets/image-20191016-212122.da1646f28dcdae6835ad39ad7369c17d35de960b60f4e3232f1401a4a0b81371.e58c3e6b.png)
4. アプリ名を選択して、connected appに関するすべての情報を表示および管理できるページに移動します。
5. **Consumer Key** (client_id)と**Consumer Secret** (client_secret)を書き留めるかコピーします。
![](/assets/image-20191016-212130.7a0ddeaa20b89e503da0fe8b15b78b28a19100f7235986e512811ffff9648fec.e58c3e6b.png)
6. 安全なアカウントアクセスのために、Salesforce Security Tokenを取得します。Security Tokenをお持ちでない場合は、**Account** > **Settings** > **Reset My Security Token**に移動し、**Reset Security Token**を選択します。Security Tokenがメールで送信されます。


Spring 19 classic UIの場合: **My account** > **My Settings** > **Personal** > **Reset My Security Token**。

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

1. **Treasure コンソール**を開きます。
2. **Integrations Hub** > **Catalog**に移動し、**Salesforce**を検索します。


Credentialsで認証するには

1. credentialsで認証するには、ユーザー名(メールアドレス)とパスワード、Client ID、Client Secret、およびSecurity Tokenを入力します。
2. ダイアログボックスで、login.salesforce.com/?locale=jpを入力するか、login.salesforce.comを使用します。


![](/assets/image-20200703-001720.af452b1f9ec571b64403178a495107a980e547d907f48f30614cf4b53843e7ed.e58c3e6b.png)

OAuthで認証するには

![](/assets/image-20201029-003333.3c371aa8231f40a349fe8bb1f49641b0c7abe05195705af5e11af1a6027b1d1c.e58c3e6b.png)

1. **Continue**を選択します。
2. 接続にわかりやすい名前を付け、**Create Connection**を選択します。


### Salesforce接続を検証する

ユーザー権限を検証するには、Salesforceを使用して以下を確認してください:

- Authority: Salesforce import integration接続手順を確認してください。
- Treasure DataからSalesforceへのアクセスが許可されていること: これを構成するには、TD static IPアドレスを知り、構成する必要がある場合があります。static IPアドレス情報が必要な場合は、サポートにお問い合わせください。


適切に構成されたauthorityとaccessがない場合、アクセス制限エラーが発生する可能性があります。例:


```
Response not 2xx:
400 Bad Request {"error":"invalid_grant","error_description":"authentication failure"}
```

### SalesforceアカウントデータをTreasure Dataに転送する

認証された接続を作成すると、自動的にAuthenticationsに移動します。

1. 作成した接続を検索します。
2. **New Source**を選択します。
3. Data Transfer フィールドに**Source**の名前を入力します。


![](/assets/image-20200710-205832.2c1ff801d788249554ab89bd4e24919ef34ff56a9aa225d3aff6de57181e008b.e58c3e6b.png)
4. **Next**をクリックします。
5. 以下のパラメータを編集します:

![](/assets/image-20200710-210028.37482785cab2d316edadd716f5eb88ee867bd570ec1f508e025977427fb834c5.e58c3e6b.png)

| **Parameters** | **Description** |
|  --- | --- |
| **Source** | インポートするオブジェクトの名前 |
| **Include deleted records** | 削除されたレコードを含めることを有効にします |
| **Use synchronous transfer only** | REST APIを使用した同期転送を有効にします |
| **Incremental** | 前回のインポート以降の新しいデータのみをインポートします |


### **Data Settings**

1. **Next**を選択します。Data Settingsページが開きます。
2. ここで、SOQLクエリ、WHERE条件、およびSchema設定を編集できます。
3. オプションで、ダイアログのこのページをスキップできます。
![](/assets/image-20200710-211039.6d38d12794407b568ad98bca8ab96943b9c044037c5e15c8dc249c258f62d7c4.e58c3e6b.png)


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