스키마 추종
    • PDF

    스키마 추종

    • PDF

    기사 요약

    개요

    스키마 추종은 '전송 대상 데이터'와 '전송 대상 커넥터 측 테이블' 간에 스키마 차이가 발생할 경우, 전송 대상 커넥터 측 테이블의 스키마를 자동 수정하여 스키마 차이를 해소하는 기능입니다.

    스키마 차이가 발생하는 경우

    다음은 스키마 차이가 발생하는 대표적인 사례 중 하나입니다.

    1. 전송 설정 만들기
    2. 전송 작업을 실행하여 Google BigQuery 측으로 테이블이 전송됨.
    3. 전송원 측의 데이터 스키마가 변경되는 경우(컬럼 추가/제거, 컬럼 이름 및 유형 변경 등)
    4. 전송 설정 편집 후 STEP2로 넘어갈 때 자동 데이터 설정하기
      -> 전송 설정 STEP2의 컬럼 정의에 전송원 측 데이터 스키마가 반영됨.

    위의 예시 등으로 인해 스키마 차이가 발생한 경우, 전송 작업을 다시 수행하기 전에 전송 대상 커넥터 측 테이블의 스키마를 수정해야 한다. (※ 일부 전송 모드에서는 수정이 필요 없음)
    하지만 스키마 추적을 이용하면 스키마 차이를 자동으로 해소할 수 있습니다.

    스키마 추적이 감지하는 차이

    다음과 같은 차이를 감지합니다.
    - 컬럼 추가
    - 컬럼 삭제
    - 컬럼 타입 변경

    대상 커넥터

    스키마 추종은 다음 전송 대상 커넥터에서 사용할 수 있습니다.

    • 전송처 Google BigQuery
    • 전송처Snowflake

    또한, 전송원 커넥터에 대해서는 특별한 제약 없이 사용할 수 있습니다.

    이용절차

    다음은 전송 대상인 Google BigQuery를 예로 들어 설명합니다.
    전제로 '기존 전송 설정을 편집하고 전송 설정 STEP2의 컬럼 정의가 변경된 상태'에서의 절차가 됩니다.

    1. 전송 설정 STEP3에서 저장 후 적용을 클릭합니다.
      아래와 같은 화면이 표시됩니다.
      schema-sync_001.png

    2. BigQuery에도 반영/업데이트를 선택한 상태에서 변경 대상인 각 컬럼의 동작을 지정합니다.

    지정할 수 있는 각 컬럼의 동작

    추가된 컬럼에 대해 기존 레코드에 채울 값을 아래와 같이 지정할 수 있습니다.
    - NULL로 채우기
    - 기본값(리터럴)으로 채우기
    - 각 유형에 맞는 리터럴 값(숫자, 문자열, TRUE/FALSE 등)으로 채웁니다.
    - 기본값(수식)으로 채우기
    - SQL 수식을 작성하여 채울 수 있습니다.

    • CURRENT_TIMESTAMP() 와 같은 함수를 이용하거나 식에 다른 컬럼 이름을 지정하여 다른 컬럼의 값을 이용할 수도 있다.

    또한, 컬럼의 타입이 지원하지 않는 값을 지정하면 스키마 추종에 실패한다. 주의하시기 바랍니다.

    1. 저장 및 적용을 클릭합니다.
      전송 설정 상세 화면으로 이동합니다. 자동으로 스키마 추적이 수행됩니다.
      schema-sync_002.png
    스키마 추종에 실패한 경우

    전송 설정 상세 화면에서 다시 실행할 수 있습니다.
    단, 후술하는 이용 제약사항에 명시된 경우에는 스키마 추적이 성공하지 못합니다. 양해 부탁드립니다.

    이용상의 제약

    각 전송 대상 커넥터에 공통적으로 적용되는 제약

    • 전송 대상 설정에서 테이블 이름 등에 커스텀 변수를 삽입한 경우 스키마 추적을 사용할 수 없습니다.
    • 아래 설정에 의한 컬럼 추가, 삭제, 변경은 스키마 추종 대상에서 제외됩니다.
    • TROCCO를 거치지 않고 전송 대상 커넥터에 있는 테이블의 스키마를 직접 변경하면 스키마 추적이 제대로 동작하지 않을 수 있습니다.
    컬럼 이름이 변경된 경우

    스키마 추종에서는 컬럼 이름이 변경된 경우 '컬럼이 삭제되고 다른 컬럼이 새로 추가된 것'으로 간주합니다.
    따라서 기존 컬럼에 포함된 값은 전송 설정 STEP3의 모달에서 지정한 값으로 덮어쓰게 됩니다. 주의하시기 바랍니다.

    스키마 추종 설정에 대해) (스키마 추종 설정에 대해

    스키마 추종이 실행되더라도 TROCCO에서 설정 가능한 설정은 추종 후의 테이블에 그대로 적용된다.
    예를 들어, 전송 대상 Google BigQuery의 전송 설정 STEP2 > 출력 옵션에서 설정할 수 있는 다음과 같은 설정이 그대로 이어집니다.
    - 컬럼 설명(Description)
    - 파티션 분할 테이블
    - 파티션의 수명

    한편, TROCCO에서 설정할 수 없는 각종 설정을 전송 대상 커넥터 측에서 직접 설정한 경우, 스키마 추종 시 해당 설정 내용이 손실될 수 있다. 주의하시기 바랍니다.

    전송처 Google BigQuery의 경우

    • 스키마 추종은 아래 전송 모드를 선택한 경우에만 사용할 수 있습니다.
      • 추기 (APPEND)
      • 추기 (APPEND DIRECT)
      • 전건 리필 (DELETE IN ADVANCE)
    • 다음 중 하나에 해당하는 경우 스키마 추적을 이용할 수 없습니다.
      • 전송 설정 STEP2 출력 옵션의****스키마 정보를 템플릿으로 참조하는 테이블을 사용하는 경우
      • 전송 대상 테이블에 RECORD형 컬럼이 포함된 경우

    전송처 Snowflake의 경우

    • 스키마 추종은 아래 전송 모드를 선택한 경우에만 사용할 수 있습니다.
      • 추기 (INSERT)
      • 추기 (INSERT DIRECT)
      • UPSERT``(MERGE)
    スキーマ追従後に転送ジョブに失敗する場合

    전송 대상인 Snowflake에서는 'Snowflake 측의 테이블 정의'와 'TROCCO의 전송 설정 STEP2의 컬럼 정의'의 컬럼 순서가 일치하지 않으면 전송 작업이 실패합니다.

    또한, 스키마 추종에 의해 새로 추가된 컬럼이나 컬럼 이름/컬럼 타입이 변경된 컬럼은 Snowflake 측 테이블 정의에서 해당 컬럼의 순서(ORDINAL)가 맨 뒤쪽으로 변경된다.

    따라서 스키마 추종 실행 후 전송 작업 오류가 발생하면 Snowflake 측 테이블 정의를 참조한 후 TROCCO의 컬럼 정의의 각 컬럼 순서를 바꿔야 한다.

    schema-sync_003.png

    보충 사항

    • 스키마 추종은 TROCCO의 전송 설정 정보를 기반으로 스키마 차이를 감지합니다.
    • 스키마 추종은 컬럼 정의 재로드, 스키마 변경 감지 등의 기능을 사용하거나 사용하지 않고도 사용할 수 있습니다.
    • 스키마 추종은 컬럼의 Description이나 전송 설정의 출력 옵션 변경(단, 데이터 타입 변경은 제외) 등은 감지하지 않습니다.
    • 전송처인 Google BigQuery의 경우, 스키마 추적이 실행되면 전체 SELECT 문 쿼리가 실행됩니다. 이에 따라 Google BigQuery 측에서 스캔이 발생함을 알려드립니다.

    이 문서가 도움이 되었습니까?