
# 管理TTL策略
#### 命令功能
开启TTL后，使用此命令添加/更新/删除/清空TTL策略。
#### 命令格式
- 添加TTL策略：
  ```
  call ttl_policy_save(table => "[table]", path => "[path]", spec => "[spec]", level => "[level]", value => "[value]", units => "[units]")
  ```
  ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
  - spec使用正则表达式来选择需要TTL的分区，可以执行**show partitions**命令查看Hudi表的分区格式，然后写正确的正则表达式来匹配分区。
  
  - value和units要搭配使用，value给定的是整数值，units是数值的单位，表示数据要保留的时长。
    
- 更新TTL策略：
  ```
  call ttl_policy_save(table => "[table]", path => "[path]", spec => "[spec]", level => "[level]", value => "[value]", units => "[units]")
  ```
  ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
  如果spec相同，历史的TTL策略就会被更新。
  
- 删除TTL策略：
  ```
  call ttl_policy_delete(table => "[table]", path => "[path]", spec => "[spec]")
  ```
  
- 清空TTL策略：
  ```
  call ttl_policy_empty(table => "[table]", path => "[path]")
  ```
  
- 查看TTL策略：
  ```
  call ttl_policy_show(table => "[table]", path => "[path]")
  ```
  
 
#### 参数描述
ttl_policy_save命令：
| **参数** | **描述**                                                                                          | 是否必填 |
|:---|:---|:---|
| table  | 该参数用于指定Hudi表名，String类型，支持表名或者库名.表名格式，与path二选一。                                                  | 否    |
| path   | 该参数用于指定Hudi表的绝对路径，String类型，与table二选一。                                                           | 否    |
| spec   | 该参数用于定义匹配TTL目标分区的正则表达式，String类型。                                                                | 是    |
| level  | 该参数用于设置TTL级别，String类型。 取值范围：PARTITION或者RECORD，目前仅支持PARTITION。 | 是    |
| value  | 该参数用于设置数据保留的时长，String类型                                                                         | 是    |
| units  | 该参数用于设置数据保留时长的单位，String类型。 取值范围：YEARS、MONTHS、WEEKS、DAYS。      | 是    |
   
ttl_policy_delete命令：
| **参数** | **描述**                                         | 是否必填 |
|:---|:---|:---|
| table  | 该参数用于指定Hudi表名，String类型，支持表名或者库名.表名格式，与path二选一。 | 否    |
| path   | 该参数用于指定Hudi表的绝对路径，String类型，与table二选一。          | 否    |
| spec   | 该参数用于定义匹配TTL目标分区的正则表达式，String类型。               | 是    |
   
ttl_policy_empty命令：
| **参数** | **描述**                                         | 是否必填 |
|:---|:---|:---|
| table  | 该参数用于指定Hudi表名，String类型，支持表名或者库名.表名格式，与path二选一。 | 否    |
| path   | 该参数用于指定Hudi表的绝对路径，String类型，与table二选一。          | 否    |
   
ttl_policy_show命令：
| **参数** | **描述**                                         | 是否必填 |
|:---|:---|:---|
| table  | 该参数用于指定Hudi表名，String类型，支持表名或者库名.表名格式，与path二选一。 | 否    |
| path   | 该参数用于指定Hudi表的绝对路径，String类型，与table二选一。          | 否    |
   
#### 示例
**场景：**
Hudi表是3级别分区，年/月/日，分区字段是dt。
- 添加TTL策略（2023年5月的分区保留1天）：
  ```
  call ttl_policy_save(table => 'hudi_table', spec => 'dt=2023/05/*', units => 'DAYS', value => '1', level => 'PARTITION')
  ```
  
- 更新TTL策略（2023年5月的分区保留1年）：
  ```
  call ttl_policy_save(table => 'hudi_table', spec => 'dt=2023/05/*', units => 'YEARS', value => '1', level => 'PARTITION')
  ```
  
- 删除TTL策略：
  ```
  call ttl_policy_delete(table => "hudi_table", spec => "dt=2023/05/*")
  ```
  
- 清空TTL策略：
  ```
  call ttl_policy_empty(table => "hudi_table")
  ```
  
- 查看TTL策略：
  ```
  call ttl_policy_show(table => "hudi_table")
  ```
  
 
