
# 开启/关闭TTL
#### 命令功能
开启或者关闭Hudi表的TTL能力。
#### 命令格式
```
call ttl_configuration(table => "[table]", path => "[path]", enabled => "[enabled]", strategy => "[strategy]", value => "[value]", resolveConflictsBy => "[resolveConflictsBy]", runInline => "[runInline]")
```
#### 参数描述
| **参数**             | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 是否必填                                       |
|:---|:---|:---|
| table              | String类型，表名或者库名.表名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 否，table和path二选一                            |
| path               | String类型，表的绝对路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 否，table和path二选一                            |
| enabled            | String类型，是否开启TTL。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 否，false或者true，默认是false                     |
| strategy           | String类型，TTL的触发模式。 strategy为NUM_COMMITS时，value指定的值代表每\[value\]个commit/deltacommit会触发一次TTL。 strategy为TIME_ELAPSED时，value指定的值代表每\[value\]天会触发一次TTL。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 否，NUM_COMMITS或者TIME_ELAPSED，默认是NUM_COMMITS |
| value              | String类型，TTL的触发间隔时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 否，默认是10                                    |
| resolveConflictsBy | String类型，TTL的冲突解决策略。 - resolveConflictsBy属性用来处理TTL策略冲突，比如dt=2023/05/01分区同时命中以下两条TTL策略： - 策略A：call ttl_policy_save(table =\> 'hudi_table', spec =\> 'dt=2023/05/\*', units =\> 'DAYS', value =\> '2', level =\> 'PARTITION');  - 策略B：call ttl_policy_save(table =\> 'hudi_table', spec =\> 'dt=2023/05/01', units =\> 'DAYS', value =\> '1', level =\> 'PARTITION');    - 当resolveConflictsBy为MAX_TTL时，如果同一个分区命中多条TTL策略，则保留时间最长的策略优先级最高，对于dt=2023/05/01分区来说策略A会生效，策略B不生效。    - 当resolveConflictsBy为MIN_TTL时，如果同一个分区命中多条TTL策略，则保留时间最短的策略优先级最高，对于dt=2023/05/01分区来说策略B会生效，策略A不生效。   | 否，MAX_TTL或者MIN_TTL，默认是MAX_TTL              |
| runInline          | String类型，TTL是否在写操作完成时触发。 - true：TTL会在每次写入完成后会根据strategy和value属性的值去判断是否要检查所有分区的TTL情况，如果需要检查并且检查出老化的分区，**则逻辑删除老化的分区，逻辑删除操作会生成一个replacecommit，等执行clean操作时会自动物理删除老化的分区**。如果不需要检查，则跳过，进行下一次写入。  - false：不需要指定strategy和value属性，TTL会在每次clean操作过程中去判断所有分区是否满足老化的条件，如果满足则**直接物理删除老化的分区**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 否，true或者false，默认是false                     |
   
#### 示例
- 指定表名开启TTL（每10个replacecommit触发一次TTL）：
  ```
  call ttl_configuration(table => "hudi_table", enabled => "true", strategy => "NUM_COMMITS", value => "10", resolveConflictsBy => "MAX_TTL", runInline => "true")
  ```
  
- 指定路径开启TTL（每1天触发一次TTL）：
  ```
  call ttl_configuration(path => "hdfs://hacluster/user/hive/warehouse/hudi_table/", enabled => "true", strategy => "TIME_ELAPSED", value => "1", resolveConflictsBy => "MIN_TTL", runInline => "true")
  ```
  
- 指定表名开启TTL（每次clean触发TTL）：
  ```
  call ttl_configuration(table => "hudi_table", enabled => "true", resolveConflictsBy => "MAX_TTL", runInline => "false")
  ```
  
- 关闭TTL：
  ```
  call ttl_configuration(table => "hudi_table", enabled => "false")
  ```
  
 
