実データで覚える 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