# Adobe Analytics Import Integration Using CLI

command line interfaceからFTP data connectorを使用することもできます。次の手順は、CLIを使用してデータをインポートする方法を示しています。

## Install 'td' command v0.11.9 or later

最新の[Treasure Data Toolbelt](https://toolbelt.treasuredata.com/)をインストールします。


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

## Create Seed Config File (seed.yml)

次の例に示すように、Adobe AnalyticsのSFTP詳細を使用してseed.ymlを準備します。Public / Private Key PairとPasswordの2つのauthentication methodsをサポートしています。

### Case 1: Public / Private Key Pair Authentication

次の内容でseed.ymlを作成します。


```yaml
in:
  type: adobe_analytics
  host: HOST
  port: <PORT, default is 22>
  user: USER
  secret_key_file:
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      Proc-Type: 4,ENCRYPTED
      DEK-Info: AES-128-CBC...
      ...
      -----END RSA PRIVATE KEY-----
  secret_key_passphrase: PASSPHRASE
  user_directory_is_root: true
  timeout: 600
  path_prefix: /path/to/sample
out:
  mode: append
  exec: {}
```

`secret_key_file`はOpenSSH formatを必要とします。

### Case 2: Password Authentication

次の内容でseed.ymlを作成します。


```yaml
in:
  type: adobe_analytics
  host: HOST
  port: <PORT, default is 22>
  auth_method: password
  user: USER
  password: PASSWORD
  user_directory_is_root: true
  timeout: 600
  path_prefix: /path/to/sample
out:
  mode: append
  exec: {}
```

passwordで次の特殊文字を使用できます: "#$!*@"

proxyを使用している場合は、次のように追加情報を追加します:


```yaml
in:
  type: adobe_analytics
  host: HOST
  port: <PORT, default is 22>
  ....
  proxy:
    type: http
    host: PROXY_HOST
    port: PROXY_PORT
    user: PROXY_USER
    password: PROXY_PASSWORD
    command: SOMETHING COMMAND IF NEEDED
```

Adobe AnalyticsのData Connectorは、指定されたprefixに一致するすべてのファイルをインポートします(例: path_prefix: `path/to/sample_` –> `path/to/sample_201501.csv.gz`、`path/to/sample_201502.csv.gz`、…、`path/to/sample_201505.csv.gz`)。

利用可能なout modesの詳細については、[Appendix](/ja/int/adobe-analytics-import-integration-using-cli#h1__1835053169)を参照してください。

## Guess Fields (Generate load.yml)

connector:guessを使用します。このコマンドは、source fileを自動的に読み取り、file formatを評価(ロジックを使用して推測)します。


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

load.ymlを開くと、file formats、encodings、column names、typesを含む推測されたfile format定義が表示されます。この例では、csvファイルをロードしようとしています。


```yaml
in:
  type: adobe_analytics
  host: HOST
  port: <PORT, default is 22>
  user: USER
  secret_key_file:
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      Proc-Type: 4,ENCRYPTED
      DEK-Info: AES-128-CBC...
      ...
      -----END RSA PRIVATE KEY-----
  secret_key_passphrase: PASSPHRASE
  user_directory_is_root: true
  timeout: 600
  path_prefix: /path/to/sample
  parser:
    skip_header_lines: 1
    charset: UTF-8
    newline: CRLF
    type: csv
    delimiter: ','
    quote: '"'
    columns:
    - {name: id, type: long}
    - {name: account, type: long}
    - {name: time, type: timestamp, format: "%Y-%m-%d %H:%M:%S"}
    - {name: purchase, type: timestamp, format: "%Y%m%d"}
    - {name: comment, type: string}
    - {name: json_column, type: json}
out:
  mode: append
  exec: {}
```

その後、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 |
+-------+---------+----------+---------------------+
```

guessコマンドは、source dataファイルに3行以上、2カラム以上が必要です。これは、source dataのsample rowsを使用してcolumn定義を推測するためです。

システムがcolumn nameまたはcolumn typeを予期せず検出した場合は、load.ymlを直接変更して再度プレビューします。

現在、Data Connectorは"boolean"、"long"、"double"、"string"、"timestamp"タイプの解析をサポートしています。

また、data load jobを実行する前に、local databaseとtableを作成する必要があります。次の手順に従ってください:


```bash
td database:create td_sample_db
td table:create td_sample_db td_sample_table
```

## Execute Load Job

load jobを送信します。データのサイズによっては数時間かかる場合があります。データを保存するTreasure Dataのdatabaseとtableを指定します。

--time-columnオプションを指定することをお勧めします。Treasure Dataのstorageは時間でパーティショニングされているためです([data partitioning](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照)。オプションが指定されていない場合、data connectorは最初のlongまたはtimestamp columnをpartitioning timeとして選択します。--time-columnで指定されたcolumnのタイプは、longまたはtimestampタイプのいずれかである必要があります。

データにtime columnがない場合は、add_time filter optionを使用してtime columnを追加できます。詳細については、[add_time filter plugin](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。


```bash
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)*がすでに作成されていることを前提としています。databaseまたはtableがTDに存在しない場合、connector:issueコマンドは失敗するため、databaseとtableを[手動で](https://docs.treasuredata.com/smart/project-product-documentation/data-management)作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してdatabaseとtableを自動作成します:


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

Data Connectorはサーバー側でレコードをソートしません。time-basedパーティショニングを効果的に使用するには、事前にファイル内のレコードをソートしてください。

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


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

## Scheduled execution

incremental Adobe AnalyticsのSFTPファイルインポートのために、定期的なData Connector実行をスケジュールできます。高可用性を確保するために、schedulerを慎重に設定しています。この機能を使用することで、ローカルdata center上でcron daemonを使用する必要がなくなります。

scheduled importの場合、Adobe AnalyticsのData Connectorは、指定されたprefixに一致するすべてのファイルを最初にインポートし(例: path_prefix: `path/to/sample_` –> `path/to/sample_201501.csv.gz`、`path/to/sample_201502.csv.gz`、…、`path/to/sample_201505.csv.gz`)、次回の実行のためにlast path(`path/to/sample_201505.csv.gz`)を記憶します。

2回目以降の実行では、アルファベット(辞書式)順でlast pathの後に来るファイルのみをインポートします。(`path/to/sample_201506.csv.gz`、…)

### Create the schedule

td connector:createコマンドを使用して新しいscheduleを作成できます。次のものが必要です: scheduleの名前、cron-style schedule、データが保存されるdatabaseとtable、およびData Connector configuration file。


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

Treasure Dataのstorageは時間でパーティショニングされているため、--time-columnオプションを指定することをお勧めします([data partitioning](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照)。


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

`cron` parameterは、3つの特別なオプションも受け入れます: `@hourly`、`@daily`、`@monthly`。

デフォルトでは、scheduleはUTC timezoneで設定されます。`-t`または`--timezone`オプションを使用して、timezoneでscheduleを設定できます。`--timezone`オプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張timezone formatsのみをサポートします。PST、CSTなどのtimezone abbreviationsはサポートされておらず、予期しないschedulesにつながる可能性があります。

### List the Schedules

td connector:listコマンドを実行して、現在スケジュールされているエントリのリストを確認できます。


```bash
td connector:list
```

### Show the Setting and Schedule History

td connector:showは、schedule entryの実行設定を表示します。


```bash
td connector:show daily_import
```

td connector:historyは、schedule entryの実行履歴を表示します。各個別の実行の結果を調査するには、td job jobidを使用します。


```bash
td connector:history daily_import
```

### Delete the Schedule

td connector:deleteはscheduleを削除します。


```bash
td connector:delete daily_import
```

## Appendix

### Modes for out plugin

seed.ymlのoutセクションでfile import modeを指定できます。

#### append (default)

これはデフォルトのmodeで、レコードはtarget tableに追加されます。


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

#### replace (In td 0.11.10 and later)

このmodeは、target tableのデータを置き換えます。このmodeでは、target tableに加えられた手動のschema変更はそのまま保持されることに注意してください。


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