CREATE CATALOG INTEGRATION (Snowflake Open Catalog)

为账户中的与 Snowflake Open Catalog 集成的 Apache Iceberg™ tables 创建新的 目录集成 或替换现有的目录集成。

另请参阅:

ALTER CATALOG INTEGRATIONDROP CATALOG INTEGRATIONSHOW CATALOG INTEGRATIONSDESCRIBE 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>' ]
Copy

必填参数

name

用于指定目录集成的标识符(名称)的字符串;在账户中必须唯一。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

CATALOG_SOURCE = POLARIS

指定 Snowflake Open Catalog 作为目录源。

TABLE_FORMAT = ICEBERG

指定 Apache Iceberg™ 作为目录提供的表格式。

CATALOG_NAMESPACE = 'open_catalog_namespace'

在 Open Catalog 中指定命名空间。Snowflake 对与此目录集成关联的所有 Iceberg 表使用此命名空间。

您可以在创建表时在表级别指定命名空间,从而替换此值。

REST_CONFIG = ( ... )

指定有关 Open Catalog 账户和目录名称的信息。

CATALOG_URI = 'https://open_catalog_account_url'

您的 Open Catalog 账户定位器 URL。

示例值:

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 到 86,400(含)

默认值:30 秒

COMMENT = 'string_literal'

字符串(字面量),用于指定集成注释。

默认:无值

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

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 命令和使用 RESULT_SCANcatalog_name 列进行筛选的查询。

    备注

    列标识符 (catalog_name) 区分大小写。指定与 SHOW ICEBERG TABLES 输出中显示的完全相同的列标识符。

    例如:

    SHOW ICEBERG TABLES;
    
    SELECT * FROM TABLE(
      RESULT_SCAN(
          LAST_QUERY_ID()
        )
      )
      WHERE "catalog_name" = 'my_catalog_integration_1';
    
    Copy
  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • 要解决创建目录集成时出现的问题,请参阅 您无法为 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.cn/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;
Copy
语言: 中文