add_or_remove_partition.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import datetime
  2. from dateutil.relativedelta import relativedelta
  3. from service import trans_service
  4. from utils.log.trans_log import logger
  5. if __name__ == '__main__':
  6. datas = trans_service.get_all_partitioned_tables()
  7. now_month = datetime.datetime.now()
  8. next_month = now_month + relativedelta(months=1)
  9. pname = f'p{str(now_month.year) + str(now_month.month).zfill(2)}'
  10. date_str = f'{str(next_month.year)}-{str(next_month.month).zfill(2)}-01'
  11. for data in datas:
  12. trans_service.add_partition(data['TABLE_NAME'], pname, date_str)
  13. logger.info("添加分区成功")
  14. save_month_dict = trans_service.get_sys_conf('online_data_save_month')
  15. table_types = set()
  16. for data in datas:
  17. table_name = data['TABLE_NAME']
  18. wind_factory = table_name.split('_')[0]
  19. table_type = table_name.split('_')[1]
  20. table_types.add(table_type)
  21. del_month = save_month_dict.get(table_type, 12)
  22. pmonth = datetime.datetime.now() - relativedelta(months=del_month + 1)
  23. trans_service.delelet_partition(table_name, pmonth)
  24. for table_type in table_types:
  25. del_month = save_month_dict.get(table_type, 12)
  26. pmonth = datetime.datetime.now() - relativedelta(months=del_month)
  27. exists_date = f'{pmonth.year}-{pmonth.month}-01'
  28. trans_service.update_expired_data(table_type,exists_date)
  29. logger.info("删除过期分区成功")