기본 콘텐츠로 건너뛰기

변경 테이블

대상 종료 지점에 대한 도구를 사용하면 변경 테이블의 메타데이터를 사용하여 정보를 가져올 수 있습니다. 이 데이터는 변경 테이블 스키마에 추가된 헤더 열에 의해 정의됩니다. 이러한 헤더는 아래 표에 설명되어 있습니다.

복제 작업의 모든 대상 테이블에 대해 해당 이름의 변경 테이블은 대상 테이블이 있는 데이터베이스에서 Qlik Cloud Data Integration에 의해 유지 관리됩니다. 자세한 내용은 변경 테이블 작업을 참조하십시오. 변경 테이블에는 원본 테이블 열과 헤더 열이 포함됩니다. 헤더 열에는 이름이 소스 테이블 열 이름과 충돌하지 않도록 접두사가 포함됩니다. 기본 접두사는 header__입니다. 이 접두사를 변경하는 방법에 대한 자세한 내용은 작업 설정의 메타데이터 아래에 나열된 변경 테이블을 참조하십시오. 다음 표에는 기본 변경 테이블 헤더 열이 나열되어 있습니다.

열 이름 유형 설명

[header__]change_seq

varchar(35)

작업의 모든 변경 테이블에 공통적으로 적용되는 단조롭게 증가하는 변경 시퀀스입니다. 변경 시퀀스의 형식은 다음과 같습니다.

YYYYMMDDHHmmSShhxxxxxxxxxxxxxxxxxxx

여기서:

  • YYYY는 4자리 연도입니다(예: 2012).
  • MM은 두 자리 월입니다(범위: 01-12).
  • DD는 두 자리 날짜입니다(범위: 01-31).

  • HH는 하루 중 시간입니다(범위: 00-23).
  • mm은 시간의 분입니다(범위: 00-59).
  • SS는 분의 초입니다(범위: 00-59).
  • hh는 1/100초입니다(범위: 00-99).
  • xxxxxxxxxxxxxxxxxxx는 19자리이며 접두사가 0인 변경 번호입니다(작업당 전역).

시간 부분은 일반적으로 변경 레코드를 포함하는 트랜잭션의 커밋 시간을 나타냅니다. Data Movement gateway에는 시퀀스 번호의 단조성을 유지하는 논리가 포함되어 있으므로 종료 지점 시간을 수정하거나 조정하면 동일한 타임스탬프 내에 있지만 변경 번호가 증가하는 것처럼 여러 변경 내용이 발생할 수 있습니다.

xxx...xxx는 일반적으로 BEFORE-IMAGE 레코드의 경우 일치하는 UPDATE 레코드의 변경 번호와 동일하다는 점을 제외하면 데이터 레코드의 내부 변경 번호입니다(예를 들어, BEFORE-IMAGE의 변경 번호가 1000이고 UPDATE의 변경 번호가 1001인 경우, 둘 다 1001이 포함됨). 이를 통해 테이블과 테이블 자체 사이의 간단한 왼쪽 외부 조인이 가능합니다. 여기서 왼쪽에서는 특정 시점까지 검색하지만 operation=before-image을 필터링하며, 오른쪽에서는 change_oper이 'B'인 동일한 change_seq에 조인합니다.

[header__]change_oper

varchar(1)

작업 유형입니다. 이는 다음 중 하나일 수 있습니다.

  • I: INSERT
  • D: DELETE
  • U: UPDATE
  • B: 이전 이미지

[header__] change_mask

varbinary(128)

변경 마스크는 변경 테이블의 어떤 데이터 열이 소스 테이블에서 변경된 열과 연결되어 있는지 나타냅니다.

변경 마스크의 비트 위치는 변경 테이블의 열 서수를 기반으로 합니다. 이는 5개의 헤더 열이 있는 경우 변경 마스크에서 비트 0~4를 차지하고 첫 번째 데이터 열이 비트 5임을 의미합니다.

변경 마스크는 Little-endian 순서로 변경 마스크를 나타내는 이진 열(바이트 배열)입니다.

바이트 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

바이트 1 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

이 예에서 bit#N은 서수 N의 변경 테이블 열이 소스 테이블에서 변경된 열과 관련되어 있음을 나타냅니다. 업데이트 마스크가 11000이고 열 서수가 3이면 열이 변경되지 않았습니다.

다음은 비트 의미를 설명합니다.

  • INSERT 레코드의 경우 삽입된 모든 열에는 연결된 비트 집합이 있습니다.
  • DELETE 레코드의 경우 기본 키(또는 고유 인덱스) 열에만 관련 비트 집합이 있습니다. 이를 통해 적용자는 다른 소스에서 기본 키 필드를 찾을 필요 없이 DELETE 문을 구성할 수 있습니다.
  • BEFORE-IMAGE 레코드의 경우 모든 비트가 지워집니다(변경 마스크는 비어 있을 수 있음).
  • UPDATE 레코드의 경우 BEFORE-IMAGE와 UPDATE 사이에 값이 변경된 각 열에 연관된 비트 집합이 있습니다.

공간 및 처리 효율성을 위해 변경 마스크에 저장된 실제 바이트 수는 Null이 잘릴 수 있습니다. 이는 후행 0을 저장할 필요가 없음을 의미합니다. 처리 논리에서는 이를 고려해야 합니다.

[header__] stream_position

varchar(128)

소스 CDC 스트림 위치입니다.

[header__] operation

varchar(12)

변경 레코드와 관련된 작업입니다. 다음 중 하나일 수 있습니다.

  • INSERT
  • UPDATE
  • DELETE
  • BEFOREIMAGE

[header__] transaction_id

varchar(32)

변경 레코드가 속한 트랜잭션의 ID입니다.

값은 128비트 트랜잭션 ID의 16진수 문자열입니다.

[header__] timestamp

타임스탬프

원본 변경 UTC 타임스탬프입니다(값은 대략적일 수 있음).

정보 메모 PostgreSQL 소스를 사용하면 타임스탬프는 커밋이 발생한 후에만 알려집니다. 따라서 변경 내용이 소스 테이블에 커밋될 때까지 기본 날짜가 표시됩니다(예: 1970-01-01).

[header__] partition_name

문자열

데이터 파티션 변경이 활성화된 경우 대상에 만들어진 파티션의 이름입니다. 파티션 이름은 파티션 시작 및 종료 시간으로 구성됩니다.

예:

20170313T123000_20170313T170000

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!