# CLIを使用したThe Trade Deskインポート連携

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

最新の[Treasure Data Toolbelt](https://toolbelt.treasuredata.com/)をインストールしてください。

## 設定ファイル（load.yml）の作成

設定ファイルには、The Trade Deskからコネクタに取り込まれるものを指定するin:セクションと、コネクタがTreasure Dataのデータベースに出力するものを指定するout:セクションが含まれます。利用可能なoutモードの詳細については、[付録](/int/the-trade-desk-import-integration)を参照してください。

以下の例は、Advertiserのインポート指定方法を示しています。


```yaml
in:
  type: the_trade_desk
  login_credential: login_credential
  password: password
  target: advertiser
out:
  mode: append
```

以下の例は、Campaignのインポート指定方法を示しています。


```yaml
in:
  type: the_trade_desk
  login_credential: login_credential
  password: password
  target: campaign
  advertiser_id: advertiser_id1, advertiser_id2, advertiser_id3
out:
 mode: append
```

以下の例は、Data Groupのインポート指定方法を示しています。


```yaml
in:
  type: the_trade_desk
  login_credential: login_credential
  password: password
  target: data_group
  advertiser_id: advertiser_id1, advertiser_id2, advertiser_id3
out:
 mode: append
```

以下の例は、Tracking Tagsのインポート指定方法を示しています。


```yaml
in:
  type: the_trade_desk
  login_credential: login_credential
  password: password
  target: tracking_tags
  advertiser_id: advertiser_id1, advertiser_id2, advertiser_id3
out:
 mode: append
```

## インポートするデータのプレビュー（オプション）

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


```
$ td connector:preview load.yml
```

## ロードジョブの実行

ジョブを実行するには、`td connector:issue` を使用します。

ロードジョブを実行する前に、データを保存するデータベースとテーブルを指定する必要があります。例：td_sample_db、td_sample_table


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

Treasure Data のストレージは時間によってパーティション分割されるため、`--time-column` オプションを指定することを推奨します。このオプションが指定されていない場合、データコネクタは最初の long 型または timestamp 型のカラムをパーティション時刻として選択します。`--time-column` で指定するカラムの型は、long 型または timestamp 型である必要があります（使用可能なカラム名と型を確認するには、プレビュー結果を使用してください。一般的に、ほとんどのデータ型には last_modified_date カラムがあります）。

データに時刻カラムがない場合は、add_time フィルターオプションを使用してカラムを追加できます。詳細は [add_time filter](https://support.treasuredata.com/hc/en-us/articles/360001405587-add-time-filter-plugin-for-Data-Connector) プラグインを参照してください。

`td connector:issue` は、データベース（sample_db）とテーブル（sample_table）が既に作成されていることを前提としています。データベースまたはテーブルが TD に存在しない場合、`td connector:issue` は失敗します。したがって、データベースとテーブルを手動で作成するか、`td connector:issue` で `--auto-create-table` を使用してデータベースとテーブルを自動的に作成する必要があります。


```bash
$ td connector:issue load.yml \
      --database td_sample_db \
      --table td_sample_table \
      --time-column date_time_column \
      --auto-create-table
```

コマンドラインからロードジョブを送信します。データサイズによっては、処理に数時間かかる場合があります。

# 付録

## out プラグインのモード

load.yml ファイルの out セクションでファイルインポートモードを指定できます。

out: セクションは、データを Treasure Data テーブルにインポートする方法を制御します。
たとえば、Treasure Data の既存のテーブルにデータを追加するか、データを置換するかを選択できます。

出力モードは、データが Treasure Data に配置されるときにデータを変更する方法です。

- **Append**（デフォルト）：レコードがターゲットテーブルに追加されます。
- **Replace**（td 0.11.10 以降で利用可能）：ターゲットテーブルのデータを置き換えます。ターゲットテーブルに対して行われた手動のスキーマ変更はそのまま残ります。


例：


```
in:
  ...
out:
  mode: append
in:
  ...
out:
  mode: replace
```

## 無効な ID のエラーハンドリング

ユーザーが無効な ID（広告主 ID）の文字列を入力すると、最初の無効な ID が検出され、エラーメッセージが表示されます。無効な ID が最初の ID でない場合、無効な ID は検出されず、ジョブは実行されますが、無効な ID は出力ログに表示されます。