# 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: 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: 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: .... 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: 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 ```