구체화된 뷰 복제본 만들기

이 문서에서는 BigQuery에서 구체화된 뷰 복제본을 만드는 방법을 설명합니다. 구체화된 뷰 복제본은 BigQuery에서 데이터를 로컬로 사용할 수 있도록 외부 Amazon Simple Storage Service(Amazon S3), Apache Iceberg 또는 Salesforce Data Cloud 데이터를 BigQuery 데이터 세트에 복제합니다. 이를 통해 데이터 이그레스 비용을 방지하고 쿼리 성능을 개선할 수 있습니다.

시작하기 전에

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 이 문서의 작업을 수행하는 데 필요한 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 소개를 참조하세요.

구체화된 뷰 복제본을 위한 데이터 세트 준비

구체화된 뷰 복제본을 만들기 전에 다음 태스크를 완료해야 합니다.

  1. Amazon S3를 지원하는 리전데이터 세트를 만듭니다.
  2. 이전 단계에서 만든 데이터 세트에 소스 테이블을 만듭니다. 소스 테이블은 다음 테이블 유형 중 하나일 수 있습니다.

구체화된 뷰 복제본 만들기

다음 옵션 중 하나를 선택합니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색기 창에서 구체화된 뷰 복제본을 만들려는 프로젝트 및 데이터 세트로 이동한 다음 작업 보기 > 테이블 만들기를 클릭합니다.

  3. 테이블 만들기 대화상자의 소스 섹션에서 다음을 수행합니다.

    1. 다음 항목으로 테이블 만들기에서 기존 테이블/뷰를 선택합니다.
    2. 프로젝트에 소스 테이블 또는 뷰가 있는 프로젝트를 입력합니다.
    3. 데이터 세트에 소스 테이블 또는 뷰가 있는 데이터 세트를 입력합니다.
    4. 에 복제하려는 소스 테이블 또는 뷰를 입력합니다. 뷰를 선택하는 경우 승인된 뷰여야 하며, 그렇지 않은 경우 해당 뷰를 생성하는 데 사용되는 모든 테이블이 뷰의 데이터 세트에 있어야 합니다.
  4. 선택사항: 로컬 구체화된 뷰 최대 비활성의 경우 로컬 구체화된 뷰의 max_staleness을 입력합니다.

  5. 테이블 만들기 대화상자의 대상 섹션에서 다음을 수행합니다.

    1. 프로젝트에 구체화된 뷰 복제본을 만들 프로젝트를 입력합니다.
    2. 데이터 세트에 구체화된 뷰 복제본을 만들 데이터 세트를 입력합니다.
    3. 복제본 구체화된 뷰 이름에 복제본 이름을 입력합니다.
  6. 선택사항: 구체화된 뷰 복제본의 태그고급 옵션을 지정합니다. 로컬 구체화된 뷰 데이터 세트의 데이터 세트를 지정하지 않으면 소스 데이터와 동일한 프로젝트 및 리전에서 자동으로 생성되고 이름이 bq_auto_generated_local_mv_dataset로 지정됩니다. 로컬 구체화된 뷰 이름의 이름을 지정하지 않으면 소스 데이터와 동일한 프로젝트 및 리전에서 자동으로 생성되고 프리픽스 bq_auto_generated_local_mv_가 지정됩니다.

  7. 테이블 만들기를 클릭합니다.

(지정되지 않은 경우) 새 로컬 구체화된 뷰가 생성되고 소스 데이터 세트에서 승인됩니다. 그러면 대상 데이터 세트에 구체화된 뷰 복제본이 생성됩니다.

SQL

  1. 자신이 만든 데이터 세트의 기본 테이블에 대해 구체화된 뷰를 만듭니다. Amazon S3 리전에 있는 다른 데이터 세트에도 구체화된 뷰를 만들 수 있습니다.
  2. 구체화된 뷰를 만든 쿼리에 사용된 소스 테이블이 포함된 데이터 세트에서 구체화된 뷰를 승인합니다.
  3. 소스 테이블에 수동 메타데이터 캐시 새로고침을 구성한 경우 BQ.REFRESH_EXTERNAL_METADATA_CACHE 시스템 프러시저를 실행하여 메타데이터 캐시를 새로고침합니다.
  4. BQ.REFRESH_MATERIALIZED_VIEW 시스템 프로시저를 실행하여 구체화된 뷰를 새로고침합니다.
  5. 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_datasetmv_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 오류가 발생합니다. 첫 번째 복제가 완료된 후에 구체화된 뷰 복제본의 데이터를 쿼리할 수 있습니다.