Snowflake의 스키마 감지 및 매핑
이 가이드에서는 Snowflake에서 BigQuery로 데이터를 전송할 때 스키마를 정의하는 방법을 보여줍니다. BigQuery Data Transfer Service를 사용하여 스키마 및 데이터 유형 매핑을 자동으로 감지하거나 변환 엔진을 사용하여 스키마 및 데이터 유형을 수동으로 정의할 수 있습니다.
기본 스키마 감지
Snowflake 커넥터는 Snowflake 테이블 스키마를 자동으로 감지할 수 있습니다. 자동 스키마 감지를 사용하려면 Snowflake 전송을 설정할 때 번역 출력 GCS 경로 필드를 비워 두면 됩니다.
다음 목록은 Snowflake 커넥터가 Snowflake 데이터 유형을 BigQuery로 매핑하는 방법을 보여줍니다.
- 다음 데이터 유형은 BigQuery에서
STRING로 매핑됩니다.TIMESTAMP_TZTIMESTAMP_LTZOBJECTVARIANTARRAY
- 다음 데이터 유형은 BigQuery에서
TIMESTAMP로 매핑됩니다.TIMESTAMP_NTZ
다른 모든 Snowflake 데이터 유형은 BigQuery의 해당 유형에 직접 매핑됩니다.
스키마에 변환 엔진 출력 사용
스키마를 수동으로 정의하려면 (예: 특정 스키마 속성을 재정의) 다음 단계에 따라 메타데이터를 생성하고 변환 엔진을 실행하면 됩니다.
제한사항
데이터는 BigQuery에 로드되기 전에 Parquet 데이터 형식으로 Snowflake에서 추출됩니다.
- 다음 Parquet 데이터 유형은 지원되지 않습니다.
TIMESTAMP_TZ,TIMESTAMP_LTZ- 자세한 내용은 Snowflake 데이터 평가를 참조하세요.
다음 Parquet 데이터 유형은 지원되지 않지만 변환될 수는 있습니다.
TIMESTAMP_NTZOBJECT,VARIANT,ARRAY
변환 엔진을 실행할 때 이러한 데이터 유형의 기본 동작을 재정의하려면 전역 유형 변환 구성 YAML을 사용합니다.
구성 YAML은 다음 예시와 비슷할 수 있습니다.
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP json: VARCHAR
- 다음 Parquet 데이터 유형은 지원되지 않습니다.
Snowflake용 BigQuery Data Transfer Service 커넥터는 Snowflake 테이블을 BigQuery로 마이그레이션할 때 스키마 매핑에 BigQuery 마이그레이션 서비스 변환 엔진을 사용합니다. Snowflake 데이터 전송을 완료하려면 먼저 변환에 사용할 메타데이터를 생성한 후 변환 엔진을 실행해야 합니다.
- Snowflake용
dwh-migration-tool을 실행합니다. 자세한 내용은 변환 및 평가를 위한 메타데이터 생성을 참조하세요. - 생성된
metadata.zip파일을 Cloud Storage 버킷에 업로드합니다.metadata.zip파일은 변환 엔진의 입력으로 사용됩니다. target_types필드를metadata로 지정하여 일괄 변환 서비스를 실행합니다. 자세한 내용은 변환 API를 사용한 SQL 쿼리 변환을 참조하세요.- 다음은 Snowflake의 일괄 변환을 실행하는 명령어의 예시입니다.
curl -d "{ \"name\": \"sf_2_bq_translation\", \"displayName\": \"Snowflake to BigQuery Translation\", \"tasks\": { string: { \"type\": \"Snowflake2BigQuery_Translation\", \"translation_details\": { \"target_base_uri\": \"gs://sf_test_translation/output\", \"source_target_mapping\": { \"source_spec\": { \"base_uri\": \"gs://sf_test_translation/input\" } }, \"target_types\": \"metadata\", } } }, }" \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows- BigQuery의 SQL 변환 페이지에서 이 명령어 상태를 확인할 수 있습니다.
일괄 변환 작업 출력은
gs://translation_target_base_uri/metadata/config/에 저장됩니다.
필수 서비스 계정 권한
Snowflake 전송에서는 지정된 Cloud Storage 경로의 변환 엔진 출력에서 데이터를 읽는 데 서비스 계정이 사용됩니다.
서비스 계정에 storage.objects.get 및 storage.objects.list 권한을 부여해야 합니다.
서비스 계정은 전송 구성과 대상 데이터 세트가 생성된 동일한 Google Cloud 프로젝트에 속하는 것이 좋습니다. 서비스 계정이 BigQuery 데이터 전송을 만든 프로젝트와 다른 Google Cloud 프로젝트에 있으면 교차 프로젝트 서비스 계정 승인을 사용 설정해야 합니다.
자세한 내용은 BigQuery IAM 역할 및 권한을 참조하세요.