Поделиться через


Переименование и удаление столбцов с помощью сопоставления столбцов Delta Lake

Azure Databricks поддерживает сопоставление столбцов для таблиц Delta Lake, что позволяет изменять только метаданные, чтобы пометить столбцы как удаленные или переименованные без перезаписи файлов данных. Кроме того, пользователи могут называть столбцы таблицы Delta с помощью символов, которые не разрешены Parquet, например пробелы, чтобы пользователи могли напрямую получать данные CSV или JSON в Delta без необходимости переименовать столбцы из-за предыдущих ограничений символов.

Внимание

Таблицы с включенным сопоставлением столбцов можно читать только в Databricks Runtime 10.4 LTS и выше.

Включение сопоставления столбцов в таблицах может нарушить подчиненные операции, которые зависят от канала данных изменений Delta. Сведения об ограничениях канала изменений для таблиц с включенным сопоставлением столбцов.

Включение сопоставления столбцов в таблицах может нарушить потоковую передачу считывания из таблицы Delta в качестве источника, в том числе в разностных динамических таблицах. См. раздел Потоковая передача с сопоставлением столбцов и изменениями схемы.

Включение сопоставления столбцов

Для сопоставления столбцов требуются следующие протоколы Delta:

  • Читатель версии 2 или выше.
  • Запись версии 5 или более поздней.

Для таблицы Delta с необходимыми версиями протокола можно включить сопоставление столбцов, установив для nameпараметра delta.columnMapping.mode значение .

Для включения сопоставления столбцов можно использовать следующую команду:

  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

Дополнительные примеры см. в разделе "Обновление схемы таблицы Delta Lake".

Удаление столбцов

Примечание.

Доступно в 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, ...)

Дополнительные сведения см. в разделе "Обновление схемы таблицы Delta Lake".

Поддерживаемые символы в именах столбцов

Если сопоставление столбцов включено для таблицы Delta, можно включить пробелы и любые из этих символов в имена столбцов таблицы: ,;{}()\n\t=

Потоковая передача с изменениями сопоставления столбцов и схемы

Внимание

Эта функция доступна в общедоступной предварительной версии в Databricks Runtime 13.3 LTS и выше.

Вы можете предоставить расположение отслеживания схем для включения потоковой передачи из разностных таблиц с включенным сопоставлением столбцов. Это преодолевает проблему, при которой изменения схемы, не являющиеся аддитивными, могут привести к сломанным потокам.

Для каждого потока потоковой передачи для источника данных должен быть задан собственный schemaTrackingLocation . Указанный параметр schemaTrackingLocation должен содержаться в каталоге, указанном для checkpointLocation целевой таблицы для потоковой записи.

Примечание.

Для потоковых рабочих нагрузок, объединяющих данные из нескольких исходных разностных таблиц, необходимо указать уникальные каталоги в каждой исходной 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 команду для удаления сопоставления столбцов из таблицы и понижения уровня протокола таблицы.

См. сведения о функциях таблицы Drop Delta.