Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отслеживание строк в Delta Lake позволяет Azure Databricks отслеживать происхождение данных на уровне строк в таблице Delta. Эта функция требуется для некоторых добавочных обновлений для материализованных представлений.
Внимание
Отслеживание строк Delta Lake доступно в Databricks Runtime 14.1 и выше.
Функция отслеживания строк в таблице использует более продвинутый протокол записи таблиц, чем некоторые клиенты Delta Lake. Версии протокола таблиц не могут быть понижены, и таблицы с включенным отслеживанием строк не могут быть записаны клиентами Delta Lake, которые не поддерживают все включенные функции протокола записи Delta. См. сведения о совместимости функций 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 |
длинный / долгий | Уникальный идентификатор строки. | Строка сохраняет тот же идентификатор всякий раз, когда её изменяют с помощью инструкции MERGE или UPDATE . |
_metadata.row_commit_version |
длинный / долгий | Версия Delta журнала или таблицы, на которой строка была в последний раз вставлена или обновлена. | При каждой модификации строки с помощью инструкции MERGE или UPDATE ей назначается новая версия. |
Некоторые операции хранят эти поля метаданных с помощью журнала транзакций. Выполнение OPTIMIZE
или REORG
операции в таблице с включенным отслеживанием строк перезаписывает файлы данных для хранения этих полей.
Отключение отслеживания строк
Отслеживание строк можно отключить, задав для свойства таблицы значение false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Внимание
Отключение отслеживания строк не удаляет соответствующую функцию таблицы и не изменяет версию протокола таблицы. Он также не удаляет поля метаданных из целевой таблицы.
При отключении отслеживания строк созданные идентификаторы строк больше не являются надежными для отслеживания уникальных строк.
Ограничения
Идентификаторы строк и поля метаданных версий фиксации строк нельзя получить при чтении канала данных изменений. См. Использование канала изменений данных Delta Lake в Azure Databricks.