使用 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;
备注
要找到您的 Snowflake 组织名称 (
<orgname>
),请按照 查找账户的组织和账户名称 中的步骤进行操作。在 Snowflake Open Catalog 文档中查找
<my-snowflake-open-catalog-account-name
, see Find the account name for a Snowflake Open Catalog account。
第 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';
您可以选择通过指定 AUTO_REFRESH = TRUE
启用表元数据的自动刷新。有关更多信息,请参阅 自动刷新 Apache Iceberg™ 表。
备注
要检索远程目录中的表或命名空间列表,可以使用以下函数:
第 4 步:使用 Snowflake 查询表¶
现在您可以使用 Snowflake 查询 Open Catalog 中的表。您还可以将查询结果与其他 Snowflake 表联接。
SELECT id, date
FROM open_catalog_iceberg_table
LIMIT 10;