구체화된 뷰 복제본 만들기
이 문서에서는 BigQuery에서 구체화된 뷰 복제본을 만드는 방법을 설명합니다. 구체화된 뷰 복제본은 BigQuery에서 데이터를 로컬로 사용할 수 있도록 외부 Amazon Simple Storage Service(Amazon S3), Apache Iceberg 또는 Salesforce Data Cloud 데이터를 BigQuery 데이터 세트에 복제합니다. 이를 통해 데이터 이그레스 비용을 방지하고 쿼리 성능을 개선할 수 있습니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 이 문서의 작업을 수행하는 데 필요한 Identity and Access Management(IAM) 권한이 있는지 확인합니다.
필요한 역할
이 문서의 모든 작업을 수행하는 데 필요한 권한을 얻으려면 관리자에게 BigQuery 관리자 (roles/bigquery.admin
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 이 문서의 작업을 수행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
이 문서의 태스크를 수행하려면 다음 권한이 필요합니다.
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
BigQuery IAM에 대한 자세한 내용은 BigQuery의 IAM 소개를 참조하세요.
구체화된 뷰 복제본의 데이터 세트 준비
구체화된 뷰 복제본을 만들기 전에 다음 태스크를 완료해야 합니다.
- Amazon S3를 지원하는 리전에 데이터 세트를 만듭니다.
- 이전 단계에서 만든 데이터 세트에 소스 테이블을 만듭니다. 소스 테이블은 다음 테이블 유형 중 하나일 수 있습니다.
- 메타데이터 캐싱이 사용 설정되어 있고 Iceberg 파일 형식을 사용하지 않는 Amazon S3 BigLake 테이블
- Iceberg BigLake 테이블
- Data Cloud 테이블
구체화된 뷰 복제본 만들기
다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 구체화된 뷰 복제본을 만들려는 프로젝트 및 데이터 세트로 이동한 다음 > 테이블 만들기를 클릭합니다.
작업 보기테이블 만들기 대화상자의 소스 섹션에서 다음을 수행합니다.
- 다음 항목으로 테이블 만들기에서 기존 테이블/뷰를 선택합니다.
- 프로젝트에 소스 테이블 또는 뷰가 있는 프로젝트를 입력합니다.
- 데이터 세트에 소스 테이블 또는 뷰가 있는 데이터 세트를 입력합니다.
- 뷰에 복제하려는 소스 테이블 또는 뷰를 입력합니다. 뷰를 선택하는 경우 승인된 뷰여야 하며, 그렇지 않은 경우 해당 뷰를 생성하는 데 사용되는 모든 테이블이 뷰의 데이터 세트에 있어야 합니다.
선택사항: 로컬 구체화된 뷰 최대 비활성에 로컬 구체화된 뷰의
max_staleness
값을 입력합니다.테이블 만들기 대화상자의 대상 섹션에서 다음을 수행합니다.
- 프로젝트에 구체화된 뷰 복제본을 만들 프로젝트를 입력합니다.
- 데이터 세트에 구체화된 뷰 복제본을 만들 데이터 세트를 입력합니다.
- 복제본 구체화된 뷰 이름에 복제본 이름을 입력합니다.
선택사항: 구체화된 뷰 복제본의 태그 및 고급 옵션을 지정합니다. 로컬 구체화된 뷰 데이터 세트의 데이터 세트를 지정하지 않으면 소스 데이터와 동일한 프로젝트 및 리전에서 자동으로 생성되고 이름이
bq_auto_generated_local_mv_dataset
로 지정됩니다. 로컬 구체화된 뷰 이름의 이름을 지정하지 않으면 소스 데이터와 동일한 프로젝트 및 리전에서 자동으로 생성되고 프리픽스bq_auto_generated_local_mv_
가 지정됩니다.테이블 만들기를 클릭합니다.
(지정되지 않은 경우) 새 로컬 구체화된 뷰가 생성되고 소스 데이터 세트에서 승인됩니다. 그러면 대상 데이터 세트에 구체화된 뷰 복제본이 생성됩니다.
SQL
- 자신이 만든 데이터 세트의 기본 테이블에 대해 구체화된 뷰를 만듭니다. Amazon S3 리전에 있는 다른 데이터 세트에서도 구체화된 뷰를 만들 수 있습니다.
- 구체화된 뷰를 만든 쿼리에 사용된 소스 테이블이 포함된 데이터 세트에서 구체화된 뷰를 승인합니다.
- 소스 테이블에 수동 메타데이터 캐시 새로고침을 구성한 경우
BQ.REFRESH_EXTERNAL_METADATA_CACHE
시스템 프러시저를 실행하여 메타데이터 캐시를 새로고침합니다. BQ.REFRESH_MATERIALIZED_VIEW
시스템 프로시저를 실행하여 구체화된 뷰를 새로고침합니다.CREATE MATERIALIZED VIEW AS REPLICA OF
문을 사용하여 구체화된 뷰 복제본을 만듭니다.CREATE MATERIALIZED VIEW PROJECT_ID.BQ_DATASET.REPLICA_NAME OPTIONS(replication_interval_seconds=REPLICATION_INTERVAL) AS REPLICA OF PROJECT_ID.S3_DATASET.MATERIALIZED_VIEW_NAME;
다음을 바꿉니다.
PROJECT_ID
: 구체화된 뷰 복제본을 만들 프로젝트의 이름입니다(예:myproject
).BQ_DATASET
: 구체화된 뷰 복제본을 만들 BigQuery 데이터 세트의 이름입니다(예:bq_dataset
). 데이터 세트는 소스 구체화된 뷰의 리전에 매핑되는 BigQuery 리전에 있어야 합니다.REPLICA_NAME
: 만들려는 구체화된 뷰 복제본의 이름입니다(예:my_mv_replica
).REPLICATION_INTERVAL
: 소스 구체화된 뷰의 데이터를 복제본에 복제하는 빈도(초)를 지정합니다. 60~3,600(포함) 사이의 값이어야 합니다. 기본값은 300(5분)입니다.S3_DATASET
: 소스 구체화된 뷰가 포함된 데이터 세트의 이름입니다(예:s3_dataset
).MATERIALIZED_VIEW_NAME
: 복제할 구체화된 뷰의 이름입니다(예:my_mv
).
다음 예시에서는
bq_dataset
에mv_replica
라는 구체화된 뷰 복제본을 만듭니다.CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica` OPTIONS( replication_interval_seconds=600 ) AS REPLICA OF `myproject.s3_dataset.my_s3_mv`
구체화된 뷰 복제본을 만들면 복제 프로세스에서 변경사항에 대한 소스 구체화된 뷰를 폴링하여 데이터를 구체화된 뷰 복제본에 복제하므로 replication_interval_seconds
또는 max_staleness
옵션에 지정된 간격으로 데이터가 새로고침됩니다. 첫 번째 백필이 완료되기 전에 복제본을 쿼리하면 backfill in progress
오류가 발생합니다. 첫 번째 복제가 완료된 후에 구체화된 뷰 복제본의 데이터를 쿼리할 수 있습니다.