테이블 쿼리

테이블을 쿼리하면 Lakehouse 런타임 카탈로그에서 관리하는 메타데이터를 사용하여 기본 Cloud Storage 파일에서 데이터를 읽습니다.

Spark 및 Trino와 같은 오픈소스 엔진에서 또는 4부 테이블 이름 문법 (P.C.N.T 문법)을 사용하여 BigQuery에서 직접 쿼리를 실행할 수 있습니다.

시작하기 전에

  1. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  2. BigLake API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 가능성이 높습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할 부여 방법을 알아보세요.

    API 사용 설정하기

  3. Apache Iceberg REST 카탈로그 엔드포인트로 Lakehouse 런타임 카탈로그를 설정합니다.

필요한 역할

테이블을 쿼리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 및 스토리지 버킷에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

테이블 기능 및 지원

Lakehouse 런타임 카탈로그에서 테이블을 사용하는 경우 다양한 테이블 유형과 선택 기능에 대해 이해하는 것이 좋습니다. 특히 Apache Iceberg 테이블 사용에 대해 자세히 알아보려면 Apache Iceberg 테이블 개요를 참조하세요.

지원되는 Iceberg 테이블

Apache Iceberg V2 (GA) 및 V3 (미리보기) 테이블만 지원됩니다. Iceberg V1 테이블은 지원되지 않습니다. 기존 V1 테이블을 업그레이드하려면 Iceberg V1 테이블을 V2로 업그레이드하기를 참조하세요.

테이블 옵션 사용 (미리보기)

특정 테이블 속성을 구성하여 BigQuery DML 및 자동 테이블 관리와 같은 BigQuery 관리 기능을 선택할 수 있습니다. 이러한 기능은 테이블이 생성된 위치에 따라 다양한 방식으로 사용 설정됩니다.

  • BigQuery에서: BigQuery DML 및 자동 테이블 관리는 기본적으로 사용 설정됩니다.
  • 오픈소스 엔진에서: 선택하려면 테이블 속성을 명시적으로 구성해야 합니다. 자세한 내용은 테이블 옵션 구성을 참조하세요.

BigQuery에서 테이블을 쿼리할 때 표준 Iceberg 테이블과 BigQuery 관리 기능이 사용 설정된 테이블에 액세스할 수 있습니다. 자세한 안내는 테이블 옵션 구성을 참조하세요.

테이블 쿼리

테이블에서 모든 데이터를 선택합니다.

Spark

spark.sql("SELECT * FROM TABLE_NAME;").show()

Trino

SELECT * FROM TABLE_NAME;

BigQuery

BigQuery에서 Lakehouse 런타임 카탈로그의 Apache Iceberg 테이블을 쿼리하려면 다음 형식으로 쿼리에서 4부 테이블 이름을 사용합니다. PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.

SELECT * FROM `PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;

다음 값을 바꿉니다.

  • PROJECT_NAME: Lakehouse 런타임 카탈로그에서 카탈로그를 소유하는 Google Cloud 프로젝트입니다. 콘솔에서 선택한 Google Cloud 프로젝트에 쿼리 비용이 청구됩니다. Google Cloud

  • CATALOG_ID: 카탈로그가 생성될 때 지정된 Lakehouse 런타임 카탈로그의 ID입니다. 이 식별자는 BigQuery 쿼리에서 카탈로그 이름으로 사용됩니다.

    이 식별자는 Cloud Storage 버킷의 이름이기도 합니다.

    예를 들어 카탈로그를 저장하기 위해 버킷을 만들고 이름을 iceberg-bucket으로 지정한 경우 카탈로그 이름과 버킷 이름이 모두 iceberg-bucket입니다. 이는 나중에 BigQuery에서 P.C.N.T 문법을 사용하여 카탈로그를 쿼리할 때 사용됩니다. 예를 들어 my-project.catalog_id.quickstart_namespace.quickstart_table입니다.

  • NAMESPACE_OR_SCHEMA_NAME: Spark를 사용하는 경우 테이블 네임스페이스이고 Trino를 사용하는 경우 테이블 스키마 이름입니다.

  • TABLE_NAME: 테이블의 이름입니다.

시간 이동을 사용하여 쿼리

시간 이동을 사용하여 Lakehouse Iceberg 테이블에서 이전 데이터를 쿼리할 수 있습니다. FOR SYSTEM_TIME AS OF 절을 사용하여 BigQuery에서 시간 이동을 하거나 스냅샷 ID, 타임스탬프, 태그 또는 브랜치를 사용하여 Spark와 같은 오픈소스 엔진에서 시간 이동을 할 수 있습니다.

타임스탬프로 쿼리

특정 타임스탬프의 데이터를 쿼리하려면 다음 안내를 따르세요.

Spark

SELECT * FROM NAMESPACE.TABLE_NAME TIMESTAMP AS OF '2026-02-26 01:21:00';

BigQuery

SELECT * FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` FOR SYSTEM_TIME AS OF '2026-02-26 01:21:00';

스냅샷 ID로 쿼리

특정 스냅샷 ID의 데이터를 쿼리하려면 다음 안내를 따르세요.

Spark

SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 10963874102873;

태그로 쿼리

태그를 만들고 해당 태그의 데이터를 쿼리하려면 다음 안내를 따르세요.

Spark

-- Create tag 'historical-snapshot'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE TAG 'historical-snapshot' AS OF VERSION 123456789012345;

-- Query by tag
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'historical-snapshot';

브랜치로 쿼리

브랜치를 만들고 해당 브랜치의 데이터를 쿼리하려면 다음 안내를 따르세요.

Spark

-- Create branch 'audit-branch'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE BRANCH 'audit-branch' AS OF VERSION 123456789012345;

-- Query by branch
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'audit-branch';

다음 단계