TreasureData

TreasureData上の過去データを削除する

More than 3 years have passed since last update.


概要

すでに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ボタンを押下

2434234234234234432432432.png

上記の例だと150日間を過ぎたデータは自動削除される。データがTD上に格納されたらだいたい5ヶ月程度は保持され、それ以降は削除されるということである。

Expire設定を行った時点で5ヶ月前以前のデータが全て削除されるので注意


まとめ

TDはどんどん突っ込めるので便利ですが、契約内容にもよりますが溜め込みすぎると利用可能上限に達してしまうため、Expire設定を行うか期間指定によるデータ削除をおこなっていきましょー