Uso del seguimiento de filas para tablas Delta
El seguimiento de filas de Delta Lake permite a Azure Databricks realizar un seguimiento del linaje de nivel de fila en una tabla Delta. Esta característica es necesaria para algunas actualizaciones incrementales para las vistas materializadas.
Importante
El seguimiento de filas de Delta Lake está disponible en Databricks Runtime 14.1 y versiones posteriores.
El seguimiento de filas es una característica de tabla y usa un protocolo de escritura de tablas mayor que algunos clientes de Delta Lake. Las versiones de protocolo de tabla no se pueden cambiar a una versión anterior, y las tablas con el seguimiento de filas habilitado no son legibles por los clientes de Delta Lake que no admiten todas las características de tablas de protocolo de lectura Delta habilitadas. Consulte ¿Cómo administra Azure Databricks la compatibilidad de características de Delta Lake?.
Habilitación del seguimiento de filas
Debe habilitar explícitamente el seguimiento de filas estableciendo la propiedad de tabla delta.enableRowTracking = true
.
Puede hacerlo durante la creación de tablas, como en el ejemplo siguiente:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Puede modificar una tabla existente para habilitar el seguimiento de filas, como en el ejemplo siguiente:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Importante
Al habilitar el seguimiento de filas en las tablas existentes, se asignan automáticamente id. de fila y versiones de confirmación de fila a todas las filas existentes de la tabla. Este proceso puede dar lugar a la creación de varias versiones nuevas de la tabla y podría tardar mucho tiempo.
La clonación de una tabla Delta crea un historial independiente, por lo que los id. de fila y las versiones de confirmación de fila de las tablas clonadas no coinciden con los de la tabla original.
¿Cuál es el esquema de los campos de metadatos de seguimiento de filas?
El seguimiento de filas agrega dos campos de metadatos ocultos a la tabla. Puede agregar explícitamente estos campos a la consulta para devolver los valores.
Nombre de la columna | Tipo | Valores | Explicación |
---|---|---|---|
_metadata.row_id |
Largo | Identificador único de la fila. | Una fila mantiene el mismo id. cada vez que se modifica mediante una instrucción MERGE o UPDATE . |
_metadata.row_commit_version |
Largo | Versión de tabla o registro Delta en la que se insertó o actualizó por última vez la fila. | A una fila se le asigna una nueva versión cada vez que se modifica mediante una instrucción MERGE o UPDATE . |
Algunas operaciones almacenan estos campos de metadatos mediante el registro de transacciones. La ejecución de las operaciones OPTIMIZE
o REORG
en una tabla con el seguimiento de filas habilitado vuelve a escribir los archivos de datos para almacenar estos campos.
Deshabilitar el seguimiento de filas
Puede deshabilitar el seguimiento de filas estableciendo la propiedad table en false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Importante
Deshabilitar el seguimiento de filas no quita la característica de tabla correspondiente y no degrada la versión del protocolo de tabla. Tampoco quita los campos de metadatos de la tabla de destino.
Con el seguimiento de filas deshabilitado, los id. de fila generados ya no son confiables para realizar el seguimiento de filas únicas.
Limitaciones
No se puede tener acceso a los id. de fila y a los campos de metadatos de confirmación de fila al leer la fuente de distribución de datos modificados. Vea Uso de la fuente de distribución de datos de cambios de Delta Lake en Azure Databricks.