使用 Snowflake 查询 Snowflake Open Catalog 中的表

要使用 Snowflake 查询在 Snowflake Open Catalog 中注册的表,可以创建使用 外部目录 的 Apache Iceberg™ 表。

该表表示 Snowflake Open Catalog 中的 Iceberg 表,并提供只读访问。

先决条件

在开始之前,您需要准备好以下各项:

  • 向 Open Catalog 注册的 Iceberg 表。

  • Snowflake 可用于连接到 Open Catalog 的服务连接。您可以使用已为其设置角色和权限的现有服务连接,或者为 Snowflake 配置服务连接。如果配置新的服务连接,还必须为其配置访问控制。

第 1 步:在 Snowflake 中创建外部卷

如果您还没有,请先在 Snowflake 中创建一个外部卷,该卷提供对存储表数据和元数据的云存储位置的访问权限。

完成云存储服务的说明:

第 2 步:为 Open Catalog 创建目录集成

接下来,使用 CREATE CATALOG INTEGRATION 命令在 Snowflake 中创建目录集成,该集成通过 OAuth 使用服务连接凭据连接到 Open Catalog。

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.cn/polaris/api/catalog'
    WAREHOUSE = '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

备注

第 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™ 表

备注

要检索远程目录中的表或命名空间列表,可以使用以下函数:

第 4 步:使用 Snowflake 查询表

现在您可以使用 Snowflake 查询 Open Catalog 中的表。您还可以将查询结果与其他 Snowflake 表联接。

SELECT id, date
  FROM open_catalog_iceberg_table
  LIMIT 10;
Copy
语言: 中文