Использование отслеживания строк для таблиц Delta
Отслеживание строк Delta Lake позволяет Azure Databricks отслеживать происхождение на уровне строк в таблице Delta. Эта функция требуется для некоторых добавочных обновлений для материализованных представлений.
Внимание
Отслеживание строк Delta Lake доступно в Databricks Runtime 14.1 и выше.
Отслеживание строк — это функция таблицы и использует более высокий протокол записи таблиц, чем некоторые клиенты Delta Lake. Версии протокола таблицы не могут быть понижены, а таблицы с включенным отслеживанием строк не могут записываться клиентами Delta Lake, которые не поддерживают все функции таблицы протокола delta write. См. статью Как Azure Databricks управляет совместимостью функций Delta Lake?.
Включение отслеживания строк
Необходимо явно включить отслеживание строк, задав свойство delta.enableRowTracking = true
таблицы.
Это можно сделать во время создания таблицы, как показано в следующем примере:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Чтобы включить отслеживание строк, можно изменить существующую таблицу, как показано в следующем примере:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Внимание
Включение отслеживания строк в существующих таблицах автоматически назначает идентификаторы строк и версии фиксации строк всем существующим строкам в таблице. Этот процесс может привести к созданию нескольких новых версий таблицы и может занять значительное время.
Клонирование таблицы Delta создает отдельную историю, поэтому идентификаторы строк и версии фиксации строк в клонированных таблицах не соответствуют исходной таблице.
Какова схема полей метаданных отслеживания строк?
Отслеживание строк добавляет в таблицу два скрытых поля метаданных. Вы можете явно добавить эти поля в запрос, чтобы вернуть значения.
Имя столбца | Тип | Значения | Описание |
---|---|---|---|
_metadata.row_id |
Long | Уникальный идентификатор строки. | Строка сохраняет тот же идентификатор всякий раз, когда он изменяется с помощью инструкции или UPDATE инструкцииMERGE . |
_metadata.row_commit_version |
Long | Разностный журнал или версия таблицы, по которой строка была вставлена или обновлена. | Строка назначается новой версии всякий раз, когда она изменяется с помощью инструкции или UPDATE инструкцииMERGE . |
Некоторые операции хранят эти поля метаданных с помощью журнала транзакций. Выполнение OPTIMIZE
или REORG
операции в таблице с включенным отслеживанием строк перезаписывает файлы данных для хранения этих полей.
Отключение отслеживания строк
Отслеживание строк можно отключить, задав для свойства таблицы значение false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Внимание
Отключение отслеживания строк не удаляет соответствующую функцию таблицы и не изменяет версию протокола таблицы. Он также не удаляет поля метаданных из целевой таблицы.
При отключении отслеживания строк созданные идентификаторы строк больше не являются надежными для отслеживания уникальных строк.
Ограничения
Идентификаторы строк и поля метаданных фиксации строк нельзя получить при чтении веб-канала измененных данных. См. статью Использование веб-канала изменений данных Delta Lake в Azure Databricks.