- Kategorien:
Systemfunktionen (Systemsteuerung)
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG¶
Sendet eine Benachrichtigung an Snowflake Open Catalog, um Snowflake-verwaltete Apache Iceberg™-Tabellen in Open Catalog mit den neuesten Tabellenänderungen zu aktualisieren, und gibt zurück, ob die Benachrichtigung erfolgreich gesendet wurde, sowie ggf. einen Fehlercode und eine Fehlermeldung für den Fehler.
Benachrichtigungen sind ein Mechanismus, um von Snowflake verwaltete Iceberg-Tabellen, die mit Open Catalog synchronisiert werden, mit den neuesten Tabellenänderungen auf dem neuesten Stand zu halten. Wenn Tabellen mit Open Catalog synchronisiert werden, werden kontinuierlich Benachrichtigungen an sie gesendet. Wenn jedoch keine Benachrichtigungen an eine Tabelle gesendet werden, können Sie diese Funktion aufrufen und die von ihr zurückgegebene Fehlermeldung verwenden, um den Grund für das Scheitern der Synchronisierung zu diagnostizieren.
Syntax¶
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG( '<domain>' , '<entity_name>' [ , '<notification_type>'] [ , '<catalog_sync_integration_name>'] )
Argumente¶
Benötigt:
domain
Die Domäne, an die die Benachrichtigung gesendet werden soll. Sie können eine der folgenden Domänen angeben:
DATABASE
SCHEMA
TABLE
Wenn Sie zum Beispiel eine Benachrichtigung an Tabellen unter einem bestimmten Schema senden möchten, geben Sie
SCHEMA
an.entity_name
Der Name einer Entität für die angegebene
domain
. Abhängig von der angegebenen Domäne gibtentity_name
den Namen einer Datenbank, eines Schemas oder einer Tabelle an.
Optional:
notification_type
Die Art der Benachrichtigung, die an Open Catalog gesendet werden soll Sie können eine der folgenden Benachrichtigungstypen angeben:
UPDATE
: Aktualisiert den Status der Tabelle in Open Catalog. Wenn die Tabelle noch nicht existiert, erstellt Open Catalog die Tabelle.DROP
: Löscht die Tabelle aus Open Catalog, falls sie existiert.
Standard:
UPDATE
catalog_sync_integration_name
Der Name einer Katalogintegration für Open Catalog, auf die Sie die Benachrichtigungen beschränken möchten. Die Benachrichtigungen werden nur an eine bestimmte Tabelle gesendet, wenn der Parameter
CATALOG_SYNC
für die Tabelle auf diese Katalogintegration eingestellt ist.Wichtig
Wenn Sie einen Wert für
catalog_sync_integration_name
angeben müssen, können Sienotification_type
nicht leer lassen, um den Standardwert zu verwenden. Mit anderen Worten: Wenn Sie einen Wert fürcatalog_sync_integration_name
angeben müssen, anstatt den Standardwert zu verwenden, müssen Sie zuerstUPDATE
oderDROP
fürnotification_type
angeben.Standard: Wenn das Argument nicht angegeben wird, werden Benachrichtigungen an alle Tabellen in der durch die erforderlichen Anforderungen angegebenen Domäne gesendet, unabhängig von ihrer Katalogsynchronisationsintegration. Wenn Sie z. B.
SCHEMA
fürdomain
undschema1
fürentity_name
angeben und die Standardeinstellung fürcatalog_sync_integration_name
verwenden, werden alle Tabellen unterschema1
benachrichtigt. Dieses Argument wird verwendet, um den Umfang der Benachrichtigungen auf eine einzelne Katalogsynchronisierungsintegration zu beschränken.
Rückgabewerte¶
Die Funktion gibt ein JSON-Objekt mit den unten beschriebenen Eigenschaften zurück:
Eigenschaft |
Beschreibung |
---|---|
TABLENAME |
Tabellenname, an den die Benachrichtigung gesendet wurde Er wird als voll qualifizierter Tabellenname (Database.Schema.Table) dargestellt. |
NOTIFICATIONSTATUS |
Status der Benachrichtigung. Gibt |
ERRORCODE |
Fehlercode für den Fehler beim Senden der Benachrichtigung. Wenn die Benachrichtigung erfolgreich gesendet wurde, ist dieses Feld leer. |
ERRORMESSAGE |
Fehlermeldung, die beschreibt, warum die Benachrichtigung fehlgeschlagen ist. Wenn die Benachrichtigung erfolgreich gesendet wurde, ist dieses Feld leer. |
Nutzungshinweise¶
domain
, entity_name
, notification_type
und catalog_sync_integration_name
sind alle ein Zeichenfolgen-Datentyp und müssen daher in einfache Anführungszeichen gesetzt werden.
Beispiele¶
Senden Sie eine UPDATE
-Benachrichtigung an jede von Snowflake verwaltete Iceberg-Tabelle in Open Catalog, die unter dem Schema testSchema
in Snowflake liegt und mit Open Catalog synchronisiert wird.
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'))));
Senden Sie eine DROP
-Benachrichtigung an jede von Snowflake verwaltete Iceberg-Tabelle in Open Catalog, die icebergTable
heißt und über die my_catalog_sync_integration
-Katalogintegration mit Open Catalog synchronisiert wird.
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'))));