Переименовать и удалить столбцы с помощью сопоставления столбцов в Delta Lake
Azure Databricks поддерживает сопоставление столбцов для таблиц Delta Lake, что позволяет изменять только метаданные, чтобы пометить столбцы как удаленные или переименованные без перезаписи файлов данных. Кроме того, пользователи могут называть столбцы таблицы Delta с помощью символов, которые не разрешены Parquet, например пробелы, чтобы пользователи могли напрямую получать данные CSV или JSON в Delta без необходимости переименовать столбцы из-за предыдущих ограничений символов.
Внимание
Таблицы с включенным сопоставлением столбцов можно читать только в Databricks Runtime 10.4 LTS и выше.
Включение сопоставления столбцов в таблицах может нарушить последующие операции, которые зависят от потока данных изменений Delta. Ознакомьтесь с ограничениями на передачу данных об изменениях для таблиц с включенной функцией сопоставления столбцов.
Включение сопоставления столбцов в таблицах может нарушить потоковую передачу считывания из таблицы Delta в качестве источника, в том числе в разностных динамических таблицах. См. потоковую передачу с сопоставлением столбцов и изменениями схемы.
Включение сопоставления столбцов
Для сопоставления столбцов требуются следующие протоколы Delta:
- Читатель версии 2 или выше.
- Запись версии 5 или более поздней.
Для таблицы Delta с необходимыми версиями протокола можно включить сопоставление столбцов, установив значение delta.columnMapping.mode
как name
.
Для включения сопоставления столбцов можно использовать следующую команду:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
См. "Отключить сопоставление столбцов".
Переименование столбца
Примечание.
Доступно в Databricks Runtime 10.4 LTS и более поздних версиях.
Если сопоставление столбцов включено для таблицы Delta, можно переименовать столбец:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Дополнительные примеры см. в разделе Update Delta Lake table schema.
Отбросить столбцы
Примечание.
Доступно в Databricks Runtime 11.3 LTS и более поздних версиях.
Если сопоставление столбцов включено для таблицы Delta, можно удалить один или несколько столбцов:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Дополнительные сведения см. в разделе Update Delta Lake table schema.
Поддерживаемые символы в именах столбцов
Если сопоставление столбцов включено для таблицы Delta, можно включить пробелы и любые из этих символов в имена столбцов таблицы: ,;{}()\n\t=
.
потоковая передача с сопоставлением столбцов и изменением схемы
Внимание
Эта функция доступна в общедоступной предварительной версии в Databricks Runtime 13.3 LTS и выше.
Вы можете предоставить местоположение схемы отслеживания для активации потоковой передачи из таблиц Delta с включенным сопоставлением столбцов. Это преодолевает проблему, при которой изменения схемы, не являющиеся аддитивными, могут привести к сломанным потокам.
Для каждого потока потоковой передачи для источника данных должен быть задан собственный schemaTrackingLocation
. Указанный schemaTrackingLocation
должен содержаться в каталоге, указанном для checkpointLocation
целевой таблицы потоковой записи.
Примечание.
Для рабочих нагрузок потоковой передачи, которые объединяют данные из нескольких исходных таблиц Delta, необходимо указать уникальные каталоги в checkpointLocation
для каждой исходной таблицы.
Параметр schemaTrackingLocation
используется для указания пути для отслеживания схем, как показано в следующем примере кода:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)
Отключить сопоставление столбцов
В Databricks Runtime 15.3 и более поздних версиях можно использовать команду DROP FEATURE
для удаления сопоставления столбцов из таблицы и понижения уровня протокола таблицы.