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