다음을 통해 공유


델타 테이블에 행 추적 사용

Delta Lake 행 추적을 사용하면 Azure Databricks가 델타 테이블에서 행 수준 계보를 추적할 수 있습니다. 이 기능은 구체화된 뷰에 대한 일부 증분 업데이트에 필요합니다.

Important

Delta Lake 행 추적은 Databricks Runtime 14.1 이상에서 사용할 수 있습니다.

행 추적은 테이블 기능이며 일부 Delta Lake 클라이언트보다 높은 테이블 기록기 프로토콜을 사용합니다. 테이블 프로토콜 버전을 다운그레이드할 수 없으며 행 추적이 설정된 테이블은 모든 사용 가능한 Delta 기록기 프로토콜 테이블 기능을 지원하지 않는 Delta Lake 클라이언트에서 작성할 수 없습니다. 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);

Important

기존 테이블에서 행 추적을 사용하도록 설정하면 테이블의 모든 기존 행에 행 ID 및 행 커밋 버전이 자동으로 할당됩니다. 이 프로세스는 여러 새 버전의 테이블을 만들 수 있으며 상당한 시간이 걸릴 수 있습니다.

델타 테이블을 복제하면 별도의 기록이 만들어지므로 복제된 테이블의 행 ID 및 행 커밋 버전이 원래 테이블의 행 ID와 일치하지 않습니다.

메타데이터 필드를 추적하는 행의 스키마는 무엇인가요?

행 추적은 두 개의 숨겨진 메타데이터 필드를 테이블에 추가합니다. 이러한 필드를 쿼리에 명시적으로 추가하여 값을 반환할 수 있습니다.

열 이름 Type 설명
_metadata.row_id Long 행의 고유 식별자입니다. 행은 또는 UPDATE 문을 사용하여 수정할 때마다 동일한 ID를 MERGE 유지합니다.
_metadata.row_commit_version Long 행이 마지막으로 삽입되거나 업데이트된 델타 로그 또는 테이블 버전입니다. 행은 또는 UPDATE 문을 사용하여 수정될 때마다 새 버전이 MERGE 할당됩니다.

일부 작업은 트랜잭션 로그를 사용하여 이러한 메타데이터 필드를 저장합니다. 행 추적을 사용하도록 설정된 테이블에서 실행 OPTIMIZE 하거나 REORG 작업을 수행하면 데이터 파일을 다시 작성하여 이러한 필드를 저장합니다.

행 추적 사용 안 함

테이블 속성을 false.로 설정하여 행 추적을 사용하지 않도록 설정할 수 있습니다.

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

Important

행 추적을 사용하지 않도록 설정해도 해당 테이블 기능이 제거되지 않으며 테이블 프로토콜 버전이 다운그레이드되지 않습니다. 또한 대상 테이블에서 메타데이터 필드를 제거하지 않습니다.

행 추적을 사용하지 않도록 설정하면 생성된 행 ID가 더 이상 고유한 행을 추적할 수 없습니다.

제한 사항

변경 데이터 피드를 읽는 동안에는 행 ID 및 행 커밋 버전 메타데이터 필드에 액세스할 수 없습니다. Azure Databricks에서 Delta Lake 변경 데이터 피드 사용을 참조하세요.