Отслеживание строк в Databricks

Отслеживание строк позволяет Azure Databricks отслеживать происхождение данных на уровне отдельных строк в таблице. Для некоторых добавочных обновлений для материализованных представлений требуется эта функция.

Все таблицы Apache Iceberg версии 3 включают отслеживание строк. Ознакомьтесь с функциями Apache Iceberg версии 3. Для таблиц Delta Lake необходимо явно включить отслеживание строк.

Внимание

Отслеживание строк доступно в Databricks Runtime 14.1 и выше.

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

Включение отслеживания строк в таблицах Delta

Чтобы включить отслеживание строк в таблице Delta Lake, задайте свойство delta.enableRowTracking = true таблицы во время создания таблицы:

CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;

Чтобы включить отслеживание строк в существующей таблице Delta Lake, используйте следующий пример:

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);

Внимание

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

Клонирование таблицы создает отдельную историю, поэтому идентификаторы строк и версии фиксации строк в клонированных таблицах не соответствуют исходной таблице.

Какова схема полей метаданных отслеживания строк?

Отслеживание строк добавляет в таблицу два скрытых поля метаданных. Вы можете явно добавить эти поля в запрос, чтобы вернуть значения.

Имя столбца Тип Значения Описание
_metadata.row_id длинный / долгий Уникальный идентификатор строки. Строка сохраняет тот же идентификатор всякий раз, когда её изменяют с помощью инструкции MERGE или UPDATE.
_metadata.row_commit_version длинный / долгий Версия Delta журнала или таблицы, на которой строка была в последний раз вставлена или обновлена. При каждой модификации строки с помощью инструкции MERGE или UPDATE ей назначается новая версия.

Некоторые операции хранят эти поля метаданных с помощью журнала транзакций. Выполнение OPTIMIZE или REORG операции в таблице с включенным отслеживанием строк перезаписывает файлы данных для хранения этих полей.

Отключение отслеживания строк в таблицах Delta

Чтобы отключить отслеживание строк в таблице Delta Lake, задайте для свойства таблицы значение false.

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);

Внимание

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

При отключении отслеживания строк созданные идентификаторы строк больше не являются надежными для отслеживания уникальных строк.

Ограничения

Идентификаторы строк и поля метаданных версий фиксации строк недоступны при чтении канала измененных данных. См. канал изменений данных Delta Lake на Azure Databricks.