每天我将全量数据插入时间分区中,但是为了节约空间,我只想保留最近十天的分区信息,比如,更新频繁的用户信息表t_user_info,每天我都会全量插入当天的时间分区中,今天是8月29日,我将数据插入20170828分区,但是10天前(20170818)的所有分区我想删掉,这个曹组哦我想每天自动进行。
是使用表生命周期么?如果是,改怎么操作?
alter table bigdata_aaron.t_user_info drop if exists partition (pt=dateadd(${bdp.system.bizdate},-9,'dd'))
我用这用方式不行呀
您好,有两种方式。
一种是使用表的生命周期,
语法
ALTER TABLE table_name SET lifecycle days;
如果 table_name 是分区表,则根据各分区的 LastDataModifiedTime 判断该分区是否该被回收。
另一种方式是:
您可以通过创建一个sql脚本定期删除分区,定时操作。删除命令例如
alter table sale_detail drop if exists partition(sale_date='201312');
yyyymmdd,(pt=dateadd(${bdp.system.bizdate},-9,'dd')),dateadd函数中${bdp.system.bizdate}需要是datetime类型,格式需要是
2017-08-29 14:12:54 这种
${bdp.system.bizdate}是
yyyymmdd。
您可以根据需要需要,设置自定义的时间参数,参考
文档下方自定义参数
https://help.aliyun.com/document_detail/30281.html?spm=5176.doc52330.6.604.tn0odl
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。