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>'] )
Copy

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 gibt entity_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 Sie notification_type nicht leer lassen, um den Standardwert zu verwenden. Mit anderen Worten: Wenn Sie einen Wert für catalog_sync_integration_name angeben müssen, anstatt den Standardwert zu verwenden, müssen Sie zuerst UPDATE oder DROP für notification_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ür domain und schema1 für entity_name angeben und die Standardeinstellung für catalog_sync_integration_name verwenden, werden alle Tabellen unter schema1 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 TRUE zurück, wenn die Benachrichtigung erfolgreich an Open Catalog gesendet wurde, oder FALSE, wenn sie nicht erfolgreich gesendet wurde.

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'))));
Copy

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'))));
Copy