Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
行跟踪允许 Azure Databricks 跟踪表中的行级世系。 某些具体化视图的增量更新需要启用此功能。
所有 Apache Iceberg v3 表都包含行跟踪。 对于 Delta Lake 表,必须显式启用行跟踪。
重要
Databricks Runtime 14.1 及更高版本中提供了行跟踪。
行跟踪是表格的一项功能,它使用的表写入协议比某些客户端更高。 表协议版本无法降级,启用了行跟踪的表不能由不支持所有已启用的编写器协议表功能的客户端写入。 请参阅 Delta Lake 功能兼容性和协议。
对 Delta 表启用行跟踪
若要在 Delta Lake 表上启用行跟踪,在创建表期间设置表属性 delta.enableRowTracking = true :
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
若要对现有 Delta Lake 表启用行跟踪,请使用以下示例:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
重要
对现有表启用行跟踪会自动将行 ID 和行提交版本分配给表中所有现有行。 此过程可能会导致创建多个新版本的表,并且可能需要很长时间。
克隆表会创建单独的历史记录,因此克隆表中的行 ID 和行提交版本与原始表中的行 ID 和行提交版本不匹配。
行跟踪元数据字段的架构是什么?
行跟踪将两个隐藏的元数据字段添加到表中。 可以将这些字段显式添加到查询以返回值。
| 列名称 | 类型 | 值 | 说明 |
|---|---|---|---|
_metadata.row_id |
长整型 | 行的唯一标识符。 | 每当使用 MERGE 或 UPDATE 语句修改行时,行将保留相同的 ID。 |
_metadata.row_commit_version |
长整型 | 上次插入或更新行的 Delta 日志或表版本。 | 每当使用 MERGE 或 UPDATE 语句修改行时,将为其分配新版本。 |
某些操作使用事务日志存储这些元数据字段。 对启用了行跟踪的表运行 OPTIMIZE 或 REORG 操作会重写数据文件以存储这些字段。
对 Delta 表禁用行跟踪
若要在 Delta Lake 表上禁用行跟踪,请将表属性设置为 false。
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
重要
禁用行跟踪不会删除相应的表功能,也不会降级表协议版本。 它也不会从目标表中删除元数据字段。
禁用行跟踪后,生成的行 ID 在跟踪唯一行方面不再可靠。
限制
读取更改数据馈送时无法访问行 ID 和行提交版本元数据字段。 请参阅在 Azure Databricks 上使用 Delta Lake 更改数据馈送。