为 Snowflake Postgres 配置目录集成¶
Snowflake Postgres 目录集成允许 Snowflake 访问由 Snowflake Postgres 实例所管理的 Apache Iceberg™ 表。当您为 Snowflake Postgres 创建目录集成时,Snowflake 会自动发现 Postgres 数据库中的表,并将其作为只读的 Iceberg 表提供。
Snowflake Postgres 目录集成使用 分发的凭据 来访问您在云存储中的表数据和元数据。您无需配置 外部卷,也无需单独管理存储凭据。
备注
Snowflake Postgres 目录集成目前仅在 AWS 上受支持。
先决条件¶
一个已启用 Snowflake Postgres 功能的 Snowflake 账户。
一个处于 READY 状态的 Postgres 实例。要创建 Postgres 实例,请参阅 CREATE POSTGRES INSTANCE。
创建目录集成的角色必须具有以下权限:
对 Postgres 实例具有
USAGE权限。对账户具有
CREATE INTEGRATION权限。
注意事项¶
使用 Snowflake Postgres 目录集成时,请考虑以下几点:
Snowflake Postgres 目录集成始终使用分发的凭据。您必须设置
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS。不支持EXTERNAL_VOLUME_CREDENTIALS模式。您无需指定
REST_AUTHENTICATION。Snowflake 会自动处理与 Postgres 实例的身份验证。自动刷新使用元数据轮询。不支持变更通知。
表是只读的。不支持对 Postgres 管理的 Iceberg 表进行写操作。
此功能不支持可突发 Postgres 实例。
此功能仅在 AWS 上受支持。
为 Snowflake Postgres 创建目录集成¶
要为 Snowflake Postgres 创建目录集成,请使用 CREATE CATALOG INTEGRATION (Snowflake Postgres) 命令。
例如:
有关完整的语法和参数参考,请参阅 CREATE CATALOG INTEGRATION (Snowflake Postgres)。
创建 Iceberg 表¶
创建目录集成后,您可以创建引用 Postgres 实例中表的 Iceberg 表。当您使用 Snowflake Postgres 目录集成创建 Iceberg 表时,您需要指定目录集成名称以及该表在 Postgres 数据库中的名称。
例如:
其中:
CATALOG = '<catalog_integration_name>':选择使用 时默认使用的角色和仓库。指定目录集成的名称。必填。CATALOG_TABLE_NAME = '<table_name>':选择使用 时默认使用的角色和仓库。指定该表在 Postgres 数据库中的名称。必填。CATALOG_NAMESPACE = '<schema_name>':选择使用 时默认使用的角色和仓库。(可选)指定包含该表的 Postgres 模式。默认为在目录集成上设置的CATALOG_NAMESPACE值。CATALOG_NAME = '<database_name>':选择使用 时默认使用的角色和仓库。(可选)指定包含该表的 Postgres 数据库。默认为在目录集成上设置的CATALOG_NAME值。AUTO_REFRESH = TRUE:选择使用 时默认使用的角色和仓库。(可选)启用自动元数据刷新。启用后,Snowflake 会定期轮询目录以获取元数据变更,并自动刷新表。
备注
当您使用 Snowflake Postgres 目录集成创建 Iceberg 表时,无需指定 EXTERNAL_VOLUME。
创建目录链接数据库¶
您无需创建单个 Iceberg 表,而是可以创建一个目录链接的数据库,该数据库会自动发现您的 Postgres 数据库中的表并与之同步。目录链接的数据库会在 Snowflake 中创建相应的模式和 Iceberg 表,这些表和您的 Postgres 数据库保持同步。
例如:
其中:
CATALOG = <catalog_integration_name>:选择使用 时默认使用的角色和仓库。指定 Snowflake Postgres 目录集成的名称。必填。目录链接的数据库会同步由目录集成上的CATALOG_NAME值所指定的 Postgres 数据库。ALLOWED_WRITE_OPERATIONS = NONE:选择使用 时默认使用的角色和仓库。对于 Snowflake Postgres 目录链接的数据库而言是必需的。Snowflake Postgres 表是只读的。
创建目录链接的数据库后,Snowflake 会自动发现 Postgres 数据库中的命名空间和表,并创建相应的模式和 Iceberg 表。有关更多信息,请参阅 为 Apache Iceberg™ 表使用目录链接的数据库。
查询 Iceberg 表¶
创建 Iceberg 表或目录链接的数据库后,您可以使用标准 SQL 查询这些表:
访问控制¶
目录集成所有者角色必须对 Postgres 实例具有 USAGE 权限。当您创建目录集成时,Snowflake 会检查此权限。
任何被授予了目录集成 USAGE 权限的角色都可以创建引用 Postgres 实例中表的 Iceberg 表。无需对 Postgres 实例授予额外权限。该角色还需要拥有在目标数据库和模式中创建表的标准 Snowflake 权限。
例如,要授予另一个角色使用该目录集成创建 Iceberg 表的能力: