
# expire_snapshots
#### 基本语法
在Iceberg中，每次写入、更新、删除、upsert、压缩操作都会生成新快照，同时保留旧数据和元数据，以支持快照隔离和时间旅行功能。**expire_snapshots** 可用于移除不再需要的旧快照及其文件，更多元数据管理操作请参见[Metadata management](https://iceberg.apache.org/docs/1.7.0/spark-procedures/#metadata-management)。
**expire_snapshots**会移除旧快照以及这些旧快照唯一需要的数据文件，意味着该操作绝不会移除仍被非过期快照所需要的文件。例如：
移除特定日期和时间之前的快照，但保留最后100个快照：
```
CALL prod.system.expire_snapshots('db.sample', TIMESTAMP '2021-06-30 00:00:00.000', 100);
```
相关参数介绍请参见[表1]。
 表1expire_snapshots参数介绍 
| 参数                     | 是否必选 | 类型            | 说明                                                                                                                                                                       |
|:---|:---|:---|:---|
| table                  | 必选   | string        | 需要更新的表名，必须设置。                                                                                                                                                            |
| older_than             | 可选   | timestamp     | 此时间戳之前的快照将被移除，默认值为5天前。                                                                                                                                                   |
| retain_last            | 可选   | int           | 保留的祖先快照数量，默认值为1，与"older_than"设置的时间戳无关。                                                                                                                                   |
| max_concurrent_deletes | 可选   | int           | 用于删除文件操作的线程池大小，默认情况下，不使用线程池。                                                                                                                                             |
| stream_results         | 可选   | boolean       | 当设置该参数为"true"时，删除文件将通过RDD分区发送到Spark驱动程序（默认情况下，所有文件都将发送到Spark驱动程序）。 建议将该参数设置为"true"，以防止Spark驱动程序因文件过大而发生内存溢出。 |
| snapshot_ids           | 可选   | array of long | 要过期的快照ID数组。                                                                                                                                                              |
   
如果不设置**older_than** 和**retain_last** ，将使用表的过期属性，仍被分支或标签引用的快照不会被移除。默认情况下，分支和标签永不过期，但可通过表属性**history.expire.max-ref-age-ms**更改其保留策略，且主分支永不过期。
输出结果介绍请参见[表2]。
 表2expire_snapshots操作输出结果 
| 参数                                  | 类型   | 说明              |
|:---|:---|:---|
| deleted_data_files_count            | long | 此操作删除的数据文件数量。   |
| deleted_position_delete_files_count | long | 此操作删除的位置删除文件数量。 |
| deleted_equality_delete_files_count | long | 此操作删除的等值删除文件数量。 |
| deleted_manifest_files_count        | long | 此操作删除的清单文件数量。   |
| deleted_manifest_lists_count        | long | 此操作删除的清单列表文件数量。 |
   
