- 类别:
:doc:`/sql-reference/functions-system`(系统控制)
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG¶
向 Snowflake Open Catalog 发送通知,以使用最新的表更改来更新 Open Catalog 中由 Snowflake 管理的 Apache Iceberg™ 表,并返回通知是否已成功发送,以及错误代码和失败的错误消息(如果适用)。
通知是一种机制,用于保持与 Open Catalog 同步的由 Snowflake 管理的 Iceberg 表随着最新的表更改而更新。当将表同步到 Open Catalog 时,会不断向它们发送通知。但是,如果通知没有发送到表,则可以调用此函数并使用它返回的错误消息来诊断同步失败的原因。
语法¶
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG( '<domain>' , '<entity_name>' [ , '<notification_type>'] [ , '<catalog_sync_integration_name>'] )
实参¶
必填:
domain
要在其中发送通知的域。可以指定以下域中的一个:
DATABASE
SCHEMA
TABLE
例如,如果要向某个架构下的表发送通知,可指定
SCHEMA
。entity_name
给定
domain
的实体的名称。根据给定的域entity_name
,指定数据库、架构或表的名称。
可选:
notification_type
要发送到 Open Catalog 的通知的类型。可以指定以下通知类型之一:
UPDATE
:更新 Open Catalog 中表的状态。如果该表尚不存在,则可在 Open Catalog 中创建该表。DROP
:如果该表存在,则从 Open Catalog 中删除该表。
默认:
UPDATE
catalog_sync_integration_name
Open Catalog 的目录集成的名称(要将通知的范围限定到此目录集成)。只有当给定表的
CATALOG_SYNC
参数设置为此编目集成时,才会将通知发送到此表。重要
如果需要为
catalog_sync_integration_name
指定一个值,则不能将notification_type
留空以使用其默认值。换句话说,如果需要为catalog_sync_integration_name
指定一个值而不是使用默认值,则必须首先为notification_type
指定UPDATE
或DROP
。默认值:如果未指定该参数,则通知将发送到由所需参数指定的域中的所有表,而不管其目录同步集成如何。例如,如果为
domain
指定SCHEMA
,为entity_name
指定schema1
,并为catalog_sync_integration_name
使用默认值,则schema1
下的所有表都将得到通知。此参数用于将通知的范围限制为单个目录同步集成。
返回¶
该函数返回一个 JSON 对象,其属性如下所述:
属性 |
描述 |
---|---|
TABLENAME |
将通知发送到的表名称。它表示为完全限定的表名 (Database.Schema.Table)。 |
NOTIFICATIONSTATUS |
通知的状态。如果通知成功发送到 Open Catalog,则返回 |
ERRORCODE |
发送通知失败的错误代码。如果通知已成功发送,则此字段为空。 |
ERRORMESSAGE |
描述通知失败原因的错误消息。如果通知已成功发送,则此字段为空。 |
使用说明¶
domain
、entity_name
、notification_type
和 catalog_sync_integration_name
都是字符串数据类型,因此必须用单引号括起来。
示例¶
向 Open Catalog 中位于 Snowflake 的 testSchema
架构下并与 Open Catalog 同步的任何由 Snowflake 管理的 Iceberg 表发送 UPDATE
通知。
SELECT VALUE[0]::STRING AS tableName,
VALUE[1]::BOOLEAN notificationStatus,
VALUE[2]::STRING errorCode,
VALUE[3]::STRING errorMessage
FROM TABLE(FLATTEN(PARSE_JSON(
SELECT SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG(
'SCHEMA',
'testSchema'))));
向 Open Catalog 中名为 icebergTable
并通过 my_catalog_sync_integration
目录集成同步到 Open Catalog 的任何由 Snowflake 管理的 Iceberg 表发送 DROP
通知。
SELECT VALUE[0]::STRING AS tableName,
VALUE[1]::BOOLEAN notificationStatus,
VALUE[2]::STRING errorCode,
VALUE[3]::STRING errorMessage
FROM TABLE(FLATTEN(PARSE_JSON(
SELECT SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG(
'TABLE',
'icebergTable',
'DROP',
'my_catalog_sync_integration'))));