概要
すでにTD上のテーブルに格納されている過去データを消すにはおおまかに分けて2つの方法がある。
- 期間を指定して削除コマンドを実行(partial_delete)
- CLI
- 一定期間経過による自動削除設定(Expire)
- Webコンソール
- CLI
ここで言う「過去データ」だが、これは「データの作成日(time)」を基準としている。
本エントリでは上記の太字で表記されている2つの手順についてまとめる。
手順
partial_delete
期間を指定してデータを削除することができるコマンド。
速度に関しては、50億レコード削除でだいたい10分程度。
爆速である。
マニュアルは以下のとおり
http://docs.treasuredata.com/articles/deletion
マニュアルにも書いてあるが、コマンド例としては以下のように実行すると良いと思う。
td table:partial_delete example_db table1 --from '2014-01-01 00:00:00 JST' --to '2015-01-01 00:00:00 JST'
これは去年一年分のデータ削除を行うコマンドとなる。
すると以下の様なジョブが走る。
DELETE FROM table1 WHERE 1388502000 <= time AND time < 1420038000
つまりfrom <= time < to
の範囲で削除を行う。
注意して欲しいのが、時刻表記上は分秒まで指定できるように見えるが、実際のところは1時間単位までしか指定できないという点。つまり、以下の様な期間指定は不可能となる。
td table:partial_delete example_db table1 --from '2014-01-01 00:00:00 JST' --to '2014-12-31 23:59:59 JST'
上記を実行しようとするとエラーが表示されるのですぐにわかると思う。
Expire
テーブルに設定しておくと、timeが一定期間を経過したデータが自動で削除される。例えばとあるログを最新1ヶ月だけTD上に保持しておきたい、という時なんかに使える。
こちらはCLIでもできるが、せっかくWebコンソールにて設定可能となっているのでこちらで設定するのがいいと思う。
マニュアルとしてはこのへん
http://docs.treasuredata.com/articles/database-and-table#expiring-data-from-a-table
手順
1.テーブル設定画面のSettingsタブ
を開く
2.Expire data?
をYesに設定する
3.afterテキストボックス
に日数を入力する
4.Update Tableボタン
を押下
上記の例だと150日間を過ぎたデータは自動削除される。データがTD上に格納されたらだいたい5ヶ月程度は保持され、それ以降は削除されるということである。
Expire設定を行った時点で5ヶ月前以前のデータが全て削除されるので注意
まとめ
TDはどんどん突っ込めるので便利ですが、契約内容にもよりますが溜め込みすぎると利用可能上限に達してしまうため、Expire設定を行うか期間指定によるデータ削除をおこなっていきましょー