- 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:
domainDie Domäne, an die die Benachrichtigung gesendet werden soll. Sie können eine der folgenden Domänen angeben:
DATABASESCHEMATABLE
Wenn Sie zum Beispiel eine Benachrichtigung an Tabellen unter einem bestimmten Schema senden möchten, geben Sie
SCHEMAan.entity_nameDer Name einer Entität für die angegebene
domain. Abhängig von der angegebenen Domäne gibtentity_nameden Namen einer Datenbank, eines Schemas oder einer Tabelle an.
Optional:
notification_typeDie 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:
UPDATEcatalog_sync_integration_nameDer 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_SYNCfür die Tabelle auf diese Katalogintegration eingestellt ist.Wichtig
Wenn Sie einen Wert für
catalog_sync_integration_nameangeben müssen, können Sienotification_typenicht leer lassen, um den Standardwert zu verwenden. Mit anderen Worten: Wenn Sie einen Wert fürcatalog_sync_integration_nameangeben müssen, anstatt den Standardwert zu verwenden, müssen Sie zuerstUPDATEoderDROPfürnotification_typeangeben.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.
SCHEMAfürdomainundschema1fürentity_nameangeben und die Standardeinstellung fürcatalog_sync_integration_nameverwenden, werden alle Tabellen unterschema1benachrichtigt. 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'))));