読者です 読者をやめる 読者になる 読者になる

実データで覚える Treasure Client コマンドラインリファンス 〜3.Data Processing〜

Treasure Data Analytics Treasure Client コマンドラインリファンス

本シリーズではTreasure Client ツールのコマンドラインリファレンスを以下の5つのレイヤーに分解し,各々について解説していくものとします。

No.レイヤーコマンド
1. Data Import

one-time import

bulk import

2. Data Management

db

table

3. Data Processing

schema

query

job

4. Data Scheduling

sched

result

5. Other

help

status

server

sample

 本日は 3. Data Processing に関するコマンドを紹介します。

1. schema コマンド

schema コマンドはインポートしたテーブルの各カラムに正確なスキーマを割り振ることでデータの質とパフォーマンスを上げるコマンドです。

$ td help schema

Additional commands, type "td help COMMAND" for more details:

  schema:show <db> <table>                   # Show schema of a table

  schema:set <db> <table> [columns...]       # Set new schema on a table

  schema:add <db> <table> <columns...>       # Add new columns to a table

  schema:remove <db> <table> <columns...>    # Remove columns from a table

スキーマを設定すると以下の様に td tables $table_name コマンドでテーブル内の各カラムに型が割り振られていることがわかります。

スキーマを設定することでクエリの記述が異なります。スキーマを設定しない場合はカラムへのアクセスが v['$column_name'] と記述する必要がありましたが,設定後は $column_name の記述が可能になります。

それではスキーマを設定してみます。

$ td schema:set carsensor brand_master country_name:string country_code:string name:string code:string

$ td schema:set carsensor body_master name:string code:string

$ td schema:set carsensor catalog body_code:string body_name:string code:string desc:string grade:string height:int length:int model:string name:string period:string person:int price:int series:string width:int

$ td schema:set carsensor color_master name:string code:string

$ td schema:set carsensor country_master name:string code:string

$ td schema:set carsensor large_area_master name:string code:int

$ td schema:set carsensor pref_master name:string code:int large_area_name:string large_area_code:int

$ td schema:set carsensor usedcar  carsensor usedcar body_name:string code:string color:string desc:string engine:string grade:string id:string inspection:string main_caption:string main_photo_l:string main_photo_s:string maintenance:string maintenance_comment:string maintenance_fee:string model:string name:string odd:string odd_km:int price:string recycle:string shop_datum:string shop_lat:float shop_lng:float shop_name:string shop_pref_code:int shop_pref_name:string url_mobile:string url_pc:string url_qr:string warranty:string warranty_comment:string warranty_distance:string warranty_fee:string warranty_length:string warranty_length_kigen:string warranty_length_kikan:string year:int

$ td schema:set carsensor usedcar_cube_without_catalog id:string name:string model:string body_name:string color:string engine:string grade:string inspection:string recycle:string year:int country_name:string used_price:string large_area_name:string shop_pref_name:string shop_lat:double shop_lng:double shop_name:string shop_pref_code:int maintenance:string maintenance_fee:string odd:string odd_numerics:double odd_unit:string odd_km:double warranty:string warranty_distance:string warranty_fee:string warranty_length_kigen:string warranty_length_kikan:string warranty_length_kikan_m:string main_photo_l:string desc:string

$ td schema:set carsensor usedcar_cube_with_catalog id:string name:string model:string body_name:string color:string engine:string grade:string grade_seq:long inspection:string recycle:string year_ym:int start_ym:int end_ym:int country_name:string series:string person:int height:int length:int width:int used_price:string new_price:int large_area_name:string shop_pref_name:string shop_lat:double shop_lng:double shop_name:string shop_pref_code:int maintenance:string maintenance_fee:string odd:string odd_numerics:double odd_unit:string odd_km:double warranty:string warranty_distance:string warranty_fee:string warranty_length_kigen:string warranty_length_kikan:string warranty_length_kikan_m:string main_photo_l:string desc:string

$ td schema:show carsensor brand_master  

で設定されているスキーマを確認できます。

2. query コマンド

query コマンドは記述したクエリを実行するコマンドです。

$ td help query

usage:

  $ td query [sql]

 example:

 $ td query -d example_db -w -r rset1 "select count(*) from table1"

 $ td query -d example_db -w -r rset1 -q query.txt 

description:

 Issue a query 

options:

 -d, --database DB_NAME           use the database (required)

 -w, --wait                       wait for finishing the job

 -G, --vertical                   use vertical table to show results

 -o, --output PATH                write result to the file

 -f, --format FORMAT              format of the result to write to the file (tsv, csv, json or msgpack)

 -r, --result RESULT_URL          write result to the URL (see also result:create subcommand)

 -u, --user NAME                  set user name for the result URL

 -p, --password                   ask password for the result URL

 -P, --priority PRIORITY          set priority

 -R, --retry COUNT                automatic retrying count

 -q, --query PATH                 use file instead of inline query

 -T, --type TYPE                  set query type (hive or pig)

     --sampling DENOMINATOR       enable random sampling to reduce records 1/DENOMINATOR

  -x, --exclude                    do not automatically retrieve the job result

頻繁に使用するオプションは

  • -w: 結果が返って来るまで待機
  • -o: 保存先を指定
  • -f: 出力フォーマットを指定
  • -q: クエリを記述したファイル名を指定

以下の2パターンを覚えていれば十分でしょう。

$ td query -w -d carsensor -q "scatter.sql" -f csv -o "scatter.csv" # -o で指定したファイルに scatter.sql クエリの実行

$ td query -w -d carsensor -q "scatter.sql" "SELECT v FROM usedcar LIMIT 10" # コンソール出力

3. job コマンド

job コマンドは query で実行中ジョブや終了したジョブを参照するコマンドです。このコマンドでジョブの

  • 進捗
  • 成功 / 失敗
  • 結果の取得

を確認することができます。終了済のジョブを指定してその結果を取得するには,

$ td jobs

+---------+---------+---------------------------+---------------+----------+--------+--------+------------------+--------------------------+

| JobID   | Status  | Start                     | Elapsed       | Priority | Result | Type   | Database         | Query                    |

+---------+---------+---------------------------+---------------+----------+--------+--------+------------------+--------------------------+

| 7522693 | success | 2014-02-04 01:37:47 +0900 |         28sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM joined_... |

| 7522617 | success | 2014-02-04 01:33:46 +0900 |         17sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM joined_... |

| 7522465 | success | 2014-02-04 01:24:22 +0900 |         31sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM joined_... |

| 7521447 | success | 2014-02-04 00:47:43 +0900 |         31sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM joined_... |

| 7521415 | success | 2014-02-04 00:42:39 +0900 |         38sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM transac... |

| 7521403 | success | 2014-02-04 00:41:05 +0900 |         48sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM transac... |

| 7521380 | success | 2014-02-04 00:39:15 +0900 |         52sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM transac... |

| 7521264 | success | 2014-02-04 00:29:05 +0900 |         45sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM transac... |

| 7521256 | success | 2014-02-04 00:26:41 +0900 |         44sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM transac... |

| 7521235 | success | 2014-02-04 00:23:05 +0900 |         46sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT * FROM transac... |

| 7521004 | error   | 2014-02-04 00:07:01 +0900 |         15sec | NORMAL   |        | hive   | pos_toshiba_tech | SELECT v[ plu_meishou... |

+---------+---------+---------------------------+---------------+----------+--------+--------+------------------+--------------------------+

20 rows in set

$ td job:show 7521235 -f csv -o output.csv