Snowflake를 사용하여 Snowflake Open Catalog 의 테이블 쿼리하기

외부 카탈로그 를 사용하는 Apache Iceberg™ 테이블을 생성하여 Snowflake Open Catalog 에 등록된 테이블을 쿼리할 수 있습니다.

이 테이블은 Snowflake Open Catalog 의 Iceberg 테이블을 나타내며 읽기 전용 액세스를 제공합니다.

전제 조건

시작하기 전에 다음이 필요합니다.

  • Open Catalog 로 등록된 Iceberg 테이블.

  • Snowflake가 Open Catalog 에 연결할 때 사용할 수 있는 서비스 연결. 역할 및 권한을 설정한 기존 서비스 연결을 사용하거나 Snowflake에 대한 서비스 연결을 구성 할 수 있습니다. 새로운 서비스 연결을 구성하는 경우 해당 연결에 대한 액세스 제어도 구성해야 합니다.

1단계: Snowflake에서 외부 볼륨 만들기

아직 없다면 Snowflake에 외부 볼륨을 생성하여 시작합니다. 이 볼륨은 테이블 데이터와 메타데이터를 저장하는 클라우드 저장소 위치에 액세스할 수 있게 해줍니다.

클라우드 저장소 서비스에 대한 지침을 완료합니다.

2단계: Open Catalog 에 대한 카탈로그 통합 만들기

그런 다음 CREATE CATALOG INTEGRATION 명령을 사용하여 서비스 연결 자격 증명을 사용하여 Open Catalog 에 연결하기 위해 OAuth를 사용하는 Snowflake에서 카탈로그 통합을 생성합니다. CATALOG_NAMESPACE 매개 변수는 선택 사항입니다. 그러나 카탈로그 통합으로 지정하지 않은 경우 외부에서 관리되는 테이블을 생성할 때 지정해야 합니다. 이 섹션에는 다음과 같은 예가 포함되어 있습니다.

예시: 공개 인터넷을 사용하는 카탈로그 통합

CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
  CATALOG_SOURCE = POLARIS
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/polaris/api/catalog'
    CATALOG_NAME = 'myOpenCatalogName'
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_CLIENT_ID = 'my-client-id'
    OAUTH_CLIENT_SECRET = 'my-client-secret'
    OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
  )
  ENABLED = TRUE;
Copy

참고

예시: 비공개 IP 주소를 사용하는 카탈로그 통합

CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
  CATALOG_SOURCE = POLARIS
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://<open_catalog_privatelink_account_url>/polaris/api/catalog'
    CATALOG_API_TYPE = PRIVATE
    CATALOG_NAME = 'myOpenCatalogName'
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_CLIENT_ID = 'my-client-id'
    OAUTH_CLIENT_SECRET = 'my-client-secret'
    OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
  )
  ENABLED = TRUE;
Copy

참고

<open_catalog_privatelink_account_url> 에는 다음 값 중 하나를 입력합니다.

  • PrivateLink 계정 URL

  • Regionless PrivateLink 계정 URL

이러한 값을 얻으려면 비공개 연결에 대한 Open Catalog 계정 설정을 검색합니다. 자세한 내용은 Open Catalog 계정이 호스팅되는 클라우드 플랫폼에 대한 지침을 참조하십시오.

3단계: 외부 관리 테이블 만들기

이전에 구성한 외부 볼륨과 카탈로그 통합을 사용하여 Snowflake에 Iceberg 테이블을 생성합니다.

CATALOG_TABLE_NAME의 경우 Open Catalog 에 표시된 대로 테이블 이름을 지정합니다.

CREATE ICEBERG TABLE open_catalog_iceberg_table
  CATALOG = 'open_catalog_int'
  EXTERNAL_VOLUME = 'my_external_volume'
  CATALOG_TABLE_NAME = 'my_iceberg_table';
Copy

선택적으로 AUTO_REFRESH = TRUE 로 지정하여 테이블 메타데이터의 자동 새로 고침을 활성화할 수 있습니다. 자세한 내용은 Apache Iceberg™ 테이블 자동 새로 고침 섹션을 참조하십시오. 이전 단계에서 생성한 카탈로그 통합에 CATALOG_NAMESPACE 를 지정하지 않은 경우 이 매개 변수를 지정해야 테이블의 카탈로그 네임스페이스를 설정할 수 있습니다.

참고

원격 카탈로그에서 테이블 또는 네임스페이스 목록을 검색하려면 다음 함수를 사용하면 됩니다.

4단계: Snowflake를 사용하여 테이블 쿼리

이제 Snowflake를 사용하여 Open Catalog 에서 테이블을 쿼리할 수 있습니다. 쿼리 결과를 다른 Snowflake 테이블과 조인할 수도 있습니다.

SELECT id, date
  FROM open_catalog_iceberg_table
  LIMIT 10;
Copy