Skip to content
Last updated

Adobe Analytics Import Integration Using CLI

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

Install 'td' command v0.11.9 or later

最新のTreasure Data Toolbeltをインストールします。

$ 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を作成します。

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を作成します。

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を使用している場合は、次のように追加情報を追加します:

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.gzpath/to/sample_201502.csv.gz、…、path/to/sample_201505.csv.gz)。

利用可能なout modesの詳細については、Appendixを参照してください。

Guess Fields (Generate load.yml)

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

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

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

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を作成する必要があります。次の手順に従ってください:

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を参照)。オプションが指定されていない場合、data connectorは最初のlongまたはtimestamp columnをpartitioning timeとして選択します。--time-columnで指定されたcolumnのタイプは、longまたはtimestampタイプのいずれかである必要があります。

データにtime columnがない場合は、add_time filter optionを使用してtime columnを追加できます。詳細については、add_time filter pluginを参照してください。

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を手動で作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してdatabaseとtableを自動作成します:

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.gzpath/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。

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

Treasure Dataのstorageは時間でパーティショニングされているため、--time-columnオプションを指定することをお勧めします(data partitioningを参照)。

$ 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コマンドを実行して、現在スケジュールされているエントリのリストを確認できます。

td connector:list

Show the Setting and Schedule History

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

td connector:show daily_import

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

td connector:history daily_import

Delete the Schedule

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

td connector:delete daily_import

Appendix

Modes for out plugin

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

append (default)

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

in:
  ...
out:
  mode: append

replace (In td 0.11.10 and later)

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

in:
  ...
out:
  mode: replace