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


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

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

Внимание

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

Секционированные таблицы с включенным сопоставлением столбцов используют случайные префиксы вместо имен столбцов для каталогов секций. См. Делятся ли Delta Lake и Parquet стратегиями секционирования?.

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

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

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

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

  • Программа для чтения версии 2 или выше.
  • Версия программы Writer 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 для удаления сопоставления столбцов из таблицы и понижения уровня протокола таблицы.

См. Функции удаления таблицы Delta.