実データで覚える Treasure Client コマンドラインリファンス 〜3.Data Processing〜
本シリーズでは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