전송처 - Google BigQuery
    • PDF

    전송처 - Google BigQuery

    • PDF

    기사 요약

    개요

    Google Cloud의 BigQuery로 데이터를 전송하는 설정 도움말 페이지입니다.

    Google BigQuery와 TROCCO의 활용 사례

    TROCCO의 제품 사이트에서는 고객의 도입 사례를 소개하고 있습니다.
    본 도움말 페이지와 함께 참고하시기 바랍니다.

    제약조건

    설정 항목

    STEP1 기본 설정

    항목필수기본값내용
    Google BigQuery 연결 정보----------------------------------------------------------------------------------------------.미리 등록되어 있는 Google BigQuery 접속 정보 중 이번 전송 설정에 필요한 권한을 가진 것을 선택합니다.
    데이터 세트----------------------------------------------------------------------------------------------.전송할 데이터 세트 이름을 선택합니다.
    테이블----------------------------------------------------------------------------------------------.전송할 테이블 이름을 선택합니다.
    대상 테이블이 전송 대상 데이터 세트에 존재하지 않는 경우 자동으로 테이블이 생성됩니다.
    데이터 세트 위치US (미국)전송할 데이터 세트의 위치를 지정합니다.
    도쿄 지역을 지정하려면 asia-northeast1을 입력합니다.
    지정할 수 있는 위치에 대한 자세한 내용은 BigQuery 공식 문서 - BigQuery 위치에서 확인할 수 있습니다.
    데이터 세트 자동 생성 옵션생성하지 않음지정한 데이터 세트가 대상 프로젝트 산하에 존재하지 않는 경우 자동으로 생성합니다.
    전송 모드추기 (APPEND)전송 모드를 선택합니다.
    자세한 내용은 후술하는 전송 모드에 대해 참고하세요.
    데이터셋 테이블, 컬럼의 이름 지정 제약

    각각 명칭상의 제약이 있습니다.

    • 데이터 세트 이름(STEP1에서 지정)
    • 테이블 이름(STEP1에서 지정)
    • 컬럼 이름(STEP2 컬럼 정의에서 지정)
      • 영문, 숫자, 언더스코어로만 구성되어야 합니다.
      • 열 이름의 시작은 영문 또는 밑줄로 시작해야 합니다.
      • 공백이나 특수문자는 포함할 수 없습니다.
      • 자세한 내용은 BigQuery 공식 문서 - 스키마 지정에서 확인할 수 있습니다.

    STEP2 출력 옵션

    항목내용
    컬럼 설정후술할 컬럼 설정을 참고하세요.
    스키마 정보를 템플릿으로 참조하는 테이블BigQuery에 테이블을 새로 생성할 때 스키마로 BigQuery 측에 이미 존재하는 테이블의 스키마를 활용할 수 있습니다.
    이 경우, 전송 설정 STEP1에서 지정한 데이터셋 아래에 있는 테이블 이름을 입력합니다.
    파티셔닝후술하는 파티션 클러스터링 설정을 참고하세요.
    클러스터링후술하는 파티션 클러스터링 설정을 참고하세요.
    스키마 관련 설정이 적용되는 조건

    STEP2 출력 옵션의 아래 설정은 테이블을 새로 생성하는 경우에만 적용됩니다.

    • 컬럼 설정
    • 스키마 정보를 템플릿으로 참조하는 테이블
    • 파티셔닝
    • 클러스터링

    구체적으로 다음과 같은 조건에서 작업을 실행할 때 적용됩니다.

    • 전송 대상 테이블이 존재하지 않는 경우
    • 전송 모드에서 전건 교체 (REPLACE) 를 선택한 경우
      • 이 경우, 전송할 때마다 전송 대상 테이블의 스키마가 업데이트되기 때문에 위의 설정 내용이 매번 적용된다.

    보충 사항

    전송 모드에 대하여

    아래 설명은 모두 전송 대상 테이블이 이미 존재하는 경우의 동작입니다.
    전송 대상 테이블이 존재하지 않는 경우, 두 모드 모두 테이블을 새로 생성합니다.

    전송 모드스키마 변경트랜잭션행동보충자료
    추기 (APPEND)No표에 대한 추가 사항을 아래와 같이 추가합니다.
    1. 임시 테이블을 생성하고 데이터 투입하기
    2. 임시 테이블의 데이터를 대상 테이블에 WRITE_APPEND하기
    추기 (APPEND DIRECT)NoNo표를 아래와 같이 추가합니다.
    1. 데이터를 대상 테이블에 직접 WRITE_APPEND하기
  • 추가 (APPEND) 모드에 비해 처리 시간은 짧지만, 트랜잭션은 담보되지 않는다.
  • 따라서 전송이 중간에 실패할 경우, 중간에 추가된 행이 대상 테이블에 남아있을 수 있습니다.
  • 전건 리필 (DELETE IN ADVANCE)NoNo테이블 세척은 다음과 같이 진행합니다.
    1. 대상 테이블의 실제 데이터 DELETE하기
    2. 데이터를 대상 테이블에 WRITE_APPEND하기
  • 거래는 담보되지 않습니다.
  • 전건 교체 (REPLACE)테이블 세척은 다음과 같이 진행합니다.
    1. 임시 테이블을 생성하고 데이터 투입하기
    2. 임시 테이블의 데이터를 대상 테이블에 WRITE_TRUNCATE하기
  • 기존 테이블의 스키마는 삭제되고 새로운 테이블의 스키마로 업데이트됩니다.
  • 대상 테이블이 비파티션 분할 테이블인 경우, 파티셔닝이 설정된 전송 설정으로 작업을 실행하면 작업 오류가 발생합니다.
  • UPSERT를 수행하려는 경우

    전송 대상 Google BigQuery의 전송 모드에는 UPSERT(MERGE) 가 없습니다.
    UPSERT (MERGE) 를 수행하고자 하는 경우의 대안은 DWH의 마스터 테이블을 중복 없이 효율적으로 업데이트하기에서 설명하고 있습니다.
    꼭 참고하시기 바랍니다.

    WRITE_APPEND와 WRITE_TRUNCATE의 차이점

    BigQuery API 레퍼런스 - Job의writeDisposition 필드를 참조하세요.

    컬럼 설정

    컬럼에 대한 세부적인 설정을 할 수 있습니다.
    자세한 내용은 BigQuery 공식 문서 - 스키마 지정에서 확인할 수 있습니다.

    항목내용
    칼럼명전송 설정 STEP2 컬럼 정의의****컬럼 이름 목록에서 선택합니다.
    데이터 유형컬럼의 데이터 타입을 명시적으로 지정하고 싶을 때 선택합니다.
    모드컬럼의 모드를 명시적으로 지정하고 싶을 때 선택합니다.
    날짜 형식전송 설정 STEP2 컬럼 정의에서timestamp 타입으로 정의된 컬럼을 STRING 타입으로 전송하고자 할 때, 전개 시 사용할 날짜 형식을 입력할 수 있습니다.
    시간대전송 설정 STEP2 컬럼 정의에서timestamp 타입으로 정의된 컬럼을 STRING 타입 또는 DATETIME 타입으로 전송하고자 할 때, 배포 시 사용할 타임존을 입력할 수 있습니다.
    설명컬럼에 대한 설명을 입력할 수 있습니다.
    스키마 정보를 템플릿으로 참조하는 테이블을 이용하는 경우에도 본 항목에서 입력한 내용이 우선적으로 반영됩니다.

    파티셔닝 클러스터링 설정

    파티셔닝 및 클러스터링에 대한 자세한 내용은 파티션 분할 테이블 개요, 클러스터링 테이블 개요를 각각 참고하시기 바랍니다.

    항목필수내용
    파티셔닝다음 중 하나를 선택할 수 있습니다.
  • 인입 시간에 따라 분할: TROCCO의 작업 실행 시간에 따라 파티션이 나뉩니다.
  • 필드별 분할: 기준 컬럼을 기준으로 파티션이 분할됩니다.
  • 파티션 필드필드에 따라 분할을 선택했을 때 입력합니다.
    DATE, TIMESTAMP, DATETIME 중 한 가지 유형의 열 이름을 입력하세요.
    파티션 유형파티셔닝에서 분할 방식 중 하나를 선택한 경우 선택합니다.
    테이블 분할의 세분화 정도를 아래에서 선택해 주세요.
  • 1시간마다
  • 1일당
  • 1개월마다
  • 1년마다
  • 클러스터링----------------------------------------------------------------------------------------------.클러스터화 테이블을 생성하고 싶을 때 설정할 수 있습니다.
    클러스터링 컬럼에 컬럼 이름을 입력하면 해당 컬럼을 기준으로 테이블이 클러스터링된다.
    클러스터화 열은 최대 4개까지 지정할 수 있습니다.
    파티션의 수명----------------------------------------------------------------------------------------------.파티션의 유효기간을 지정할 수 있습니다.
    자세한 내용은 파티션 만료일 설정하기를 참고하세요.

    :::(경고) (파티셔닝 클러스터링 설정 적용 조건)

    파티셔닝 클러스터링 설정은 테이블을 새로 생성할 때만 유효합니다.
    출력처에 이미 테이블이 존재하는 경우, 본 설정의 내용이 아닌 기존 테이블의 설정 내용으로 작업이 실행됩니다.
    :::

    '캡처 시간에 따라 분할'에서 파티션 경계

    Google BigQuery의 사양상 파티션의 경계는 UTC 시간을 기준으로 합니다. 주의하시기 바랍니다.

    정수 범위 파티셔닝

    TROCCO에서는 특정 INTEGER 열의 값을 기준으로 테이블을 분할하는 정수 범위 파티셔닝을 지원하지 않습니다.

    필요한 권한

    이용에 필요한 권한은 다음과 같습니다.

    • bigquery.datasets.create
    • bigquery.datasets.get
    • bigquery.jobs.create
    • bigquery.tables.create
    • bigquery.tables.delete
    • bigquery.tables.export
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.list
    • bigquery.tables.update
    • bigquery.tables.updateData

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