CREATE CATALOG INTEGRATION(Snowflake Open Catalog)¶
계정에서 Snowflake Open Catalog 와 통합되는 Apache Iceberg™ 테이블 에 대한 새로운 카탈로그 통합 을 생성하거나 기존 카탈로그 통합을 대체합니다.
- 참고 항목:
ALTER CATALOG INTEGRATION , DROP CATALOG INTEGRATION , SHOW CATALOG INTEGRATIONS, DESCRIBE CATALOG INTEGRATION
구문¶
CREATE [ OR REPLACE ] CATALOG INTEGRATION [ IF NOT EXISTS ]
<name>
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<open_catalog_namespace>'
REST_CONFIG = (
CATALOG_URI = '<open_catalog_account_url>'
WAREHOUSE = '<open_catalog_catalog_name>'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = '<oauth_client_id>'
OAUTH_CLIENT_SECRET = '<oauth_secret>'
OAUTH_ALLOWED_SCOPES = ('<scope 1>', '<scope 2>')
)
ENABLED = { TRUE | FALSE }
[ REFRESH_INTERVAL_SECONDS = <value> ]
[ COMMENT = '<string_literal>' ]
필수 매개 변수¶
name
카탈로그 통합에 대한 식별자(이름)를 지정하는 문자열로, 계정에서 고유해야 합니다.
또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예:
"My object"
)로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
CATALOG_SOURCE = POLARIS
Snowflake Open Catalog 를 카탈로그 원본으로 지정합니다.
TABLE_FORMAT = ICEBERG
Apache Iceberg™를 카탈로그에서 제공하는 테이블 형식으로 지정합니다.
CATALOG_NAMESPACE = 'open_catalog_namespace'
:doc:` Open Catalog 에 카탈로그 통합을 생성하는 경우 Snowflake </user-guide/tables-iceberg-open-catalog-query>` 를 사용하여 Snowflake Open Catalog에서 테이블을 쿼리하고 네임스페이스를 지정합니다. Snowflake는 이 카탈로그 통합과 연관된 모든 Iceberg 테이블에 이 네임스페이스를 사용합니다.
테이블을 생성할 때 테이블 수준에서 네임스페이스를 지정하여 이 값을 재정의할 수 있습니다.
카탈로그 통합을 생성하여 Snowflake 관리 테이블을 Snowflake Open Catalog 와 동기화하는 경우
default
를 지정합니다. 이 값은 카탈로그의 기본 네임스페이스를 지정합니다.Snowflake 관리 테이블을 Open Catalog 와 동기화하면 Snowflake는 두 개의 상위 항목 네임스페이스를 사용하여 테이블의 카탈로그 통합과 연결된 카탈로그와 테이블을 동기화합니다. 네임스페이스는 Snowflake에서 테이블의 데이터베이스 및 스키마에 해당합니다. 예를 들어, Snowflake에 등록된
db1.public.table1
Iceberg 테이블이 있고 카탈로그 통합에서catalog1
을 지정하면catalog1.db1.public.table1
이라는 정규화된 이름으로 Open Catalog 에 동기화됩니다.
REST_CONFIG = ( ... )
Open Catalog 계정과 카탈로그 이름에 대한 정보를 지정합니다.
CATALOG_URI = 'https://open_catalog_account_url'
Open Catalog 계정 로케이터 URL.
예제 값:
https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/polaris/api/catalog
Snowflake 조직 이름(
< orgname >
)을 찾으려면 계정의 조직 및 계정 이름 찾기 단계를 따르십시오.<my-snowflake-open-catalog-account-name
을 찾으려면 Snowflake Open Catalog 설명서에서 Snowflake Open Catalog 계정의 계정 이름 찾기 섹션을 참조하십시오.
https://<계정_로케이터>.<클라우드_리전_id>.<클라우드>.snowflakecomputing.com/polaris/api/catalog
<account_locator>
,<cloud_region_id>
,<cloud>
를 찾으려면 형식 2: 리전의 계정 로케이터 섹션을 참조하십시오.
WAREHOUSE = 'open_catalog_name'
WAREHOUSE 매개 변수는 Open Catalog 에서 사용할 카탈로그의 이름을 지정합니다.
REST_AUTHENTICATION = ( ... )
Snowflake가 Open Catalog 에 연결하는 데 사용하는 인증 세부 정보를 지정합니다.
TYPE = OAUTH
OAuth를 사용할 인증 유형으로 지정합니다.
OAUTH_CLIENT_ID = 'oauth_client_id'
Open Catalog 서비스 연결과 관련된 OAuth2 자격 증명의 클라이언트 ID입니다.
OAUTH_CLIENT_SECRET = 'oauth_secret'
Open Catalog 서비스 연결과 관련된 OAuth2 자격 증명의 시크릿입니다.
OAUTH_ALLOWED_SCOPES = ( 'scope_1', 'scope_2')
OAuth 토큰의 범위입니다. Iceberg REST API 사양에는 범위가 하나만 포함되지만, 카탈로그는 구현에서 두 개 이상의 범위를 지원할 수 있습니다.
ENABLED = {TRUE | FALSE}
Iceberg 테이블에 카탈로그 통합을 사용할 수 있는지 여부를 지정합니다.
TRUE
로 지정하면 사용자가 이 통합을 참조하는 새 Iceberg 테이블을 만들 수 있습니다. 이 통합을 참조하는 기존 Iceberg 테이블은 정상적으로 작동합니다.FALSE
로 지정하면 사용자가 이 통합을 참조하는 새 Iceberg 테이블을 만들지 못하게 됩니다. 이 통합을 참조하는 기존 Iceberg 테이블은 테이블 정의의 카탈로그에 액세스할 수 없습니다.
선택적 매개 변수¶
REFRESH_INTERVAL_SECONDS = value
Snowflake가 자동 새로 고침 의 메타데이터 업데이트를 위해 외부 Iceberg 카탈로그를 폴링하는 시도 사이에 대기하는 시간(초)을 지정합니다.
값: 30~86400(포함)
기본값: 30초
COMMENT = 'string_literal'
통합에 대한 설명을 지정하는 문자열(리터럴)입니다.
기본값: 값 없음
액세스 제어 요구 사항¶
이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE INTEGRATION |
계정 |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
기존 카탈로그 통합은 수정할 수 없으며, 대신 CREATE OR REPLACE CATALOG INTEGRATION 문을 사용하십시오.
하나 이상의 Apache Iceberg™ 테이블이 카탈로그 통합에 연결되어 있는 경우 카탈로그 통합을 삭제하거나 교체할 수 없습니다.
카탈로그 통합에 종속된 테이블을 보려면 SHOW ICEBERG TABLES 명령과
catalog_name
열을 필터링하는 RESULT_SCAN 을 사용한 쿼리를 사용할 수 있습니다.참고
열 식별자(
catalog_name
)는 대/소문자를 구분합니다. SHOW ICEBERG TABLES 출력에 표시되는 열 식별자를 정확하게 지정합니다.예:
SHOW ICEBERG TABLES; SELECT * FROM TABLE( RESULT_SCAN( LAST_QUERY_ID() ) ) WHERE "catalog_name" = 'my_catalog_integration_1';
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
카탈로그 통합 생성과 관련된 문제를 해결하려면 Open Catalog에 대한 카탈로그 통합을 생성할 수 없습니다. 섹션을 참조하십시오.
예¶
다음 예제는 Open Catalog 내부 카탈로그의 특정 네임스페이스에 대해 Open Catalog 에 대한 카탈로그 통합을 생성하여 Snowflake에서 이 네임스페이스 아래에 그룹화된 테이블을 쿼리하는 것입니다. Open Catalog 의 내부 카탈로그에 대한 자세한 내용은 Open Catalog 설명서의 카탈로그 유형 섹션을 참조하십시오.
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my_catalog_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://my_org_name-my_snowflake_open_catalog_account_name.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'my_catalog_name'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my_client_id'
OAUTH_CLIENT_SECRET = 'my_client_secret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
다음 예제는 Open Catalog 에 대한 카탈로그 통합을 생성하여 외부 카탈로그인 Open Catalog 의 customers
카탈로그에 Snowflake 관리 테이블을 동기화하는 예제입니다. Open Catalog 의 외부 카탈로그에 대한 자세한 내용은 Open Catalog 설명서의 카탈로그 유형 섹션을 참조하십시오.
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int2
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'default'
REST_CONFIG = (
CATALOG_URI = 'https://my_org_name-my_snowflake_open_catalog_account_name.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'customers'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my_client_id'
OAUTH_CLIENT_SECRET = 'my_client_secret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;