Cambio de nombre y eliminación de columnas con la asignación de columnas de Delta Lake
Azure Databricks admite la asignación de columnas para las tablas de Delta Lake, lo que permite que los cambios de solo metadatos marquen las columnas como eliminadas o cambiadas de nombre sin volver a escribir los archivos de datos. También permite a los usuarios denominar columnas de tablas de Delta mediante caracteres no permitidos por Parquet, como los espacios, para que los usuarios puedan ingerir directamente datos de CSV o JSON en Delta sin necesidad de cambiar el nombre de las columnas debido a las restricciones de caracteres anteriores.
Importante
Las tablas con asignación de columnas habilitada solo se pueden leer en Databricks Runtime 10.4 LTS y versiones posteriores.
La habilitación de la asignación de columnas en tablas podría interrumpir las operaciones de bajada que dependen de la fuente de distribución de datos de cambios Delta. Consulte Cambio de las limitaciones de la fuente de distribución de datos para las tablas con la asignación de columnas habilitada.
La habilitación de la asignación de columnas en tablas podría interrumpir las lecturas de streaming de la tabla Delta como origen, incluso en Delta Live Tables. Consulte Streaming con asignación de columnas y cambios de esquema.
Habilitación de la asignación de columnas
La asignación de columnas requiere los siguientes protocolos Delta:
- Versión 2 o posterior del lector.
- Versión 5 o posterior del escritor.
Para una tabla de Delta con las versiones de protocolo necesarias, puede establecer delta.columnMapping.mode
en name
para habilitar la asignación de columnas.
Use el siguiente comando para habilitar la asignación de columnas:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Consulte Deshabilitar la asignación de columnas.
Cambio del nombre de una columna
Nota:
Disponible en Databricks Runtime 10.4 LTS y versiones posteriores.
Cuando la asignación de columnas está habilitada para una tabla de Delta, puede cambiar el nombre de una columna:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Para más ejemplos, consulte Actualización del esquema de tabla de Delta Lake.
Quitar columnas
Nota:
Disponible en Databricks Runtime 11.3 LTS y versiones posteriores.
Cuando está habilitada la asignación de columnas para una tabla Delta, puede eliminar una o más columnas:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Para más información, consulte Actualización del esquema de tabla de Delta Lake.
Caracteres admitidos en los nombres de columna
Cuando la asignación de columnas está habilitada para una tabla de Delta, puede incluir espacios y cualquiera de estos caracteres en los nombres de columna de la tabla: ,;{}()\n\t=
.
Streaming con asignación de columnas y cambios de esquema
Importante
Esta característica está en versión preliminar pública en Databricks Runtime 13.3 LTS y versiones posteriores.
Puede proporcionar una ubicación de seguimiento de esquemas para habilitar el streaming desde tablas Delta con la asignación de columnas habilitada. Esto soluciona un problema en el que los cambios de esquema no aditivos podrían dar lugar a secuencias rotas.
Cada lectura de streaming en un origen de datos debe tener su propia schemaTrackingLocation
especificada. La schemaTrackingLocation
especificada debe estar incluida en el directorio especificado para la checkpointLocation
de la tabla de destino para la escritura de streaming.
Nota:
Para las cargas de trabajo de streaming que combinan datos de varias tablas Delta de origen, debe especificar directorios únicos dentro de checkpointLocation
para cada tabla de origen.
La opción schemaTrackingLocation
se usa para especificar la ruta de acceso para el seguimiento de esquemas, como se muestra en el ejemplo de código siguiente:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)
Deshabilitar la asignación de columnas
En Databricks Runtime 15.3 y versiones posteriores, use el comando DROP FEATURE
para quitar la asignación de columnas de una tabla y degradar el protocolo de tabla.