# CLI を使用した Marketo インポート接続

CLI を使用して接続を設定できます。

このトピックには以下が含まれます:

## 制限事項

- -c、--config CONFIG_FILE オプションを使用した td connector:update によるコネクタ設定の更新はサポートされていません。


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

ターミナルを開き、次のコマンドを実行して最新の [Treasure Data Toolbelt](https://toolbelt.treasuredata.com/) をインストールします。


```
$ td --version
0.11.10
```

Guess と Preview は、リスト内のリード、プログラム内のリードでサポートされています。

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

以下の例に示すように、パラメータを指定して `seed.yml` を準備します


```yaml
in:
  type: marketo
  <parameter: value>
out:
  <mode: append
```

| **パラメータ** | **値** | **説明** |
|  --- | --- | --- |
| account_id | string | これらの値は、Marketo の Admin > Web Services ページで確認できます。必要に応じて、Marketo のドキュメントで認証情報へのアクセスに関する詳細情報を確認できます: [http://developers.marketo.com/blog/quick-start-guide-for-marketo-rest-api/](http://developers.marketo.com/blog/quick-start-guide-for-marketo-rest-api/) |
| client_id | string |  |
| client_secret | string |  |
| target | string | 次のターゲットのインポートをサポートします:   - lead - activity - campaign - all_lead_with_list_id - all_lead_with_program_id - program - custom_object - program_members |
| list_ids | string | **target: all_lead_with_list_id**。カンマ区切りのリスト ID。このフィールドを空白のままにすると、すべての個人レコードをインポートします。 |
| program_ids | string | **target: all_lead_with_program_id |
| activity_type_ids | string | **target: activity**。特定のタイプのアクティビティのみをフィルタリングします。指定しない場合はすべてのタイプを取得します。 |
| incremental | boolean | **target: lead |
| use_updated_at | boolean | **target: lead**。デフォルトでは、リードのインポートは createdAt 列でフィルタリングされます。選択すると、updatedAt 列でデータをフィルタリングします。この機能は、すべての Marketo サブスクリプションで利用できるわけではありません。[https://developers.marketo.com/rest-api/bulk-extract/bulk-lead-extract/#filters](https://developers.marketo.com/rest-api/bulk-extract/bulk-lead-extract/#filters) を参照してください |
| from_date | string | **target: lead |
| fetch_days | integer | **target: lead |
| escape | string | **target: lead |
| quote | string | **target: lead |
| query_by | string | **target: program.** サポートされる値: `tag_type` |
| tag_type | string | **target: program**。フィルタリングする Marketo タグのタイプ |
| tag_value | string | **target: program**。Marketo プログラムをフィルタリングするタグ値 |
| earliest_updated_at | string | **target: program**。この日付以前のプログラムを除外します。有効な ISO-8601 文字列である必要があります。[Datetime](http://developers.marketo.com/rest-api/lead-database/fields/field-types/) フィールドタイプの説明を参照してください。 |
| latest_updated_at | string | **target: program**。この日付以降のプログラムを除外します。有効な ISO-8601 文字列である必要があります。[Datetime](http://developers.marketo.com/rest-api/lead-database/fields/field-types/) フィールドタイプの説明を参照してください。 |
| filter_type | string | **target: program**。サポートされるフィルタタイプ:   - id - programId - folderId - workspace |
| filter_values | string array | **target: program**。フィルタ値 |
| custom_object_api_name | string | **target: custom_object.** カスタムオブジェクトの API 名 |
| custom_object_fields | string | **target: custom_object.** カスタムオブジェクトのフィールドのカンマ区切り API 名 (オプション)。 |
| custom_object_filter_type | string | **target: custom_object.** 結果をフィルタリングするために使用するカスタムオブジェクトのフィールドの API 名。整数フィールドのみをサポートします。 |
| custom_object_filter_values | string | **target: custom_object.** 一致するフィールド値のカンマ区切りリスト。この値が設定されている場合、**custom_object_filter_from_value** および **custom_object_filter_to_value** は無視されます |
| custom_object_filter_from_value | integer | **target: custom_object.** この値より大きい値を持つ Marketo カスタムオブジェクトをフィルタリングします |
| custom_object_filter_to_value | integer | **target: custom_object.** この値より小さい値を持つ Marketo カスタムオブジェクトをフィルタリングします。設定されていない場合、「From Value」より大きい値を持つレコードのみが返されます。300 回連続で値が見つからない場合、ジョブは停止します。 |
| included_fields | string array | データインポートに含めるリードフィールドのリストを追加します。リードファミリーターゲットにのみ影響します。 |
| marketo_limit_interval_milis | integer | リクエストが Marketo の同時実行制限に達した場合に次の呼び出しを待機する時間 (デフォルト 20000 ~ 20 秒) |
| maximum_retries | integer | エラーが発生した場合に Marketo リクエストを再試行する最大回数 (デフォルト 7) |
| batch_size | integer | Marketo REST API バッチサイズ (デフォルト 300) |
| max_return | integer | 単一のリクエストで返される最大レコード数。プログラムエンドポイントはページングにオフセットを使用します (デフォルト 200) |
| bulk_job_timeout_second | integer | ジョブが失敗する前にバルク抽出を待機する合計時間 (デフォルト 3600 ~ 1時間) |
| polling_interval_second | integer | ジョブステータスをポーリングする間隔 (デフォルト 60 秒) |
| read_timeout_millis | integer | Marketo レスポンスを待機する時間 (デフォルト 60000~ 60 秒) |


この設定は、「replace」モードが指定されているため、target フィールドで指定された Marketo オブジェクトをダンプします。

利用可能な出力モードの詳細については、付録を参照してください。

## フィールドの推測 (load.yml の生成)

`connector:guess` を使用します。このコマンドは、ターゲットファイルを自動的に読み取り、ファイル形式を評価し(ロジックを使用して推測)、load.yml に出力します。ファイル load.yml には、リードのスキーマが含まれます。


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

`load.yml` を開くと、場合によってはファイル形式、エンコーディング、列名、タイプなど、評価されたファイル形式の定義が表示されます。

次に、`preview` コマンドを使用して、システムがファイルをどのように解析するかをプレビューできます。


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

システムが列名またはタイプを誤って検出した場合は、`load.yml` を直接変更して再度プレビューします。

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

## ロードジョブの実行

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


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

connector:issue コマンドは、すでに*データベース(td_sample_db)* と*テーブル(td_sample_table)* が作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは失敗しますので、データベースとテーブルを[手動で](https://docs.treasuredata.com/smart/project-product-documentation/data-management)作成するか、`td connector:issue` コマンドで `--auto-create-table` オプションを使用してデータベースとテーブルを自動作成してください:


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

"--time-column" オプションを使用して、Time Format カラムを「パーティショニングキー」に割り当てることができます。

# スケジュール実行

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

スケジュールインポートの場合、Data Connector for Marketo はすべてのレコードをインポートします。

## スケジュールの作成

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


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

cron パラメータは、`@hourly`、`@daily`、`@monthly` の3つの特別なオプションも使用できます。詳細については、[Scheduled Jobs](https://docs.treasuredata.com/smart/project-product-documentation/scheduling-jobs-using-td-console)を参照してください。

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

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

`td connector:list` を使用して、スケジュールエントリのリストを表示できます。


```
$ td connector:list
+-----------------------------------+---------------+----------+-------+-----------------+----------------------+
| Name                              | Cron          | Timezone | Delay | Database        | Table                |
+-----------------------------------+---------------+----------+-------+-----------------+----------------------+
| daily_marketo_leads_import.       | 10 0 * * *    | UTC      | 0     | td_sample_table | sample_table         |
+-----------------------------------+---------------+----------+-------+-----------------+----------------------+
```

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

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


```
% td connector:show daily_marketo_leads_import
```

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


```bash
td connector:history daily_marketo_leads_import
```

## スケジュールの削除

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


```
$ td connector:delete daily_marketo_leads_import
```

## Out Plugin のモード

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

### append (デフォルト)

これはデフォルトのモードで、レコードはターゲットテーブルに追加されます。


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

### replace (td 0.11.10 以降)

このモードは、ターゲットテーブルのデータを置き換えます。ターゲットテーブルに手動で加えたスキーマの変更は、このモードでは保持されます。


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