针对 Snowflake 管理的 Apache Iceberg™ v2 表的“带位置删除文件的读时合并”机制(待发布)¶
- 变更前:
对于 Iceberg v2 规格的 Snowflake 管理型 Apache Iceberg™ 表,当您运行 DELETE、UPDATE 或 MERGE 语句时,Snowflake 不会为读时合并写入 位置删除文件 (https://iceberg.apache.org/spec/#position-delete-files)。Snowflake 在这些操作中会采用写时复制的方式进行处理。
- 变更后:
当您的账户启用 2026_03 行为变更包后,对于 Iceberg v2 规格的 Snowflake 管理型 Apache Iceberg™ 表,其 DELETE、UPDATE 和 MERGE 操作将默认采用“带位置删除文件的读时合并”机制,前提是
ENABLE_ICEBERG_MERGE_ON_READ参数设置为 :code:`TRUE`(该参数为系统默认值)。Snowflake 会在表所在的 Iceberg 存储位置中,将位置删除文件与数据文件并排写入。这一行为与 Snowflake 在启用读时合并后处理“外部管理型 Iceberg v2 表”的方式保持一致。若要对这些 DML 操作关闭读时合并,改用写时复制,请将
ENABLE_ICEBERG_MERGE_ON_READ参数在表、架构或数据库级别设置为FALSE。有关更多信息,请参阅 ENABLE_ICEBERG_MERGE_ON_READ。与外部查询引擎的兼容性
位置删除文件需要外部引擎中 Iceberg 格式版本的支持。如果您使用的外部查询引擎依赖于 v2 之前的 Iceberg 版本,则该引擎可能不支持位置删除文件,并且在 Snowflake 写入位置删除文件后,可能无法读取您 Snowflake 管理型 Iceberg v2 表的表元数据。
在变更在生产账户中生效之前,请执行以下操作:
请确认您用于读取 Snowflake 管理的 Apache Iceberg™ v2 表的每个外部查询引擎都支持 `位置删除文件 <https://iceberg.apache.org/spec/#position-delete-files (https://iceberg.apache.org/spec/#position-delete-files)>`_(即 Iceberg v2 或更高版本)。
如果有任何引擎不支持位置删除文件,请将该引擎升级到基于 Iceberg v2 或更高版本的发行版,或者为相关表(或包含该表的架构或数据库)将
ENABLE_ICEBERG_MERGE_ON_READ设置为FALSE,以便 Snowflake 继续使用写时复制,而不写入位置删除文件。
有关 Snowflake 中的位置删除文件、读时合并和相关参数的更多信息,请参阅 使用行级删除。
参考:2279