Catégories :

Fonctions système (Contrôle du système)

SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG

Envoie une notification à Snowflake Open Catalog pour mettre à jour les Tables Apache Iceberg™ gérées par Snowflake dans Open Catalog avec les dernières modifications de la table, et indique si la notification a bien été envoyée ainsi qu’un code d’erreur et un message d’erreur pour l’échec, le cas échéant.

Les notifications sont un mécanisme permettant de conserver les tables Iceberg gérées par Snowflake qui sont synchronisées avec Open Catalog mis à jour avec les dernières modifications de la table. Lorsque les tables sont synchronisées avec Open Catalog, des notifications leur sont envoyées en continu. Cependant, si les notifications ne sont pas envoyées à une table, vous pouvez appeler cette fonction et utiliser le message d’erreur qu’elle renvoie pour diagnostiquer la raison de l’échec de la synchronisation.

Syntaxe

SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG( '<domain>' , '<entity_name>' [ , '<notification_type>'] [ , '<catalog_sync_integration_name>'] )
Copy

Arguments

Obligatoire :

domain

Le domaine sur lequel envoyer la notification. Vous pouvez spécifier l’une des valeurs suivantes :

  • DATABASE

  • SCHEMA

  • TABLE

Par exemple, si vous souhaitez envoyer une notification aux tables sous un certain schéma, spécifiez SCHEMA.

entity_name

Le nom d’une entité pour l’objet donné domain. Selon le domaine donné, entity_name spécifie le nom d’une base de données, d’un schéma ou d’une table.

Facultatif :

notification_type

Le type de notification à envoyer à Open Catalog. Vous pouvez spécifier l’un des types de notifications suivants :

  • UPDATE : met à jour l’état de la table dans Open Catalog. Si la table n’existe pas encore, Open Catalog, crée la table.

  • DROP : supprime la table de Open Catalog si elle existe.

Par défaut : UPDATE

catalog_sync_integration_name

Le nom d’une intégration de catalogue pour Open Catalog auquel vous souhaitez appliquer les notifications. Les notifications ne sont envoyées à une table donnée que si le paramètre CATALOG_SYNC de la table est défini sur cette intégration de catalogue.

Important

Si vous devez spécifier une valeur pour catalog_sync_integration_name, vous ne pouvez pas laisser notification_type vide pour utiliser sa valeur par défaut. En d’autres termes, si vous devez spécifier une valeur pour catalog_sync_integration_name au lieu d’utiliser la valeur par défaut, vous devez d’abord spécifier UPDATE ou DROP pour notification_type.

Par défaut : si l’argument n’est pas spécifié, les notifications sont envoyées à toutes les tables du domaine spécifié par les arguments requis, quelle que soit leur intégration de synchronisation de catalogue. Par exemple, si vous spécifiez SCHEMA pour domain et schema1 pour entity_name et utilisez la valeur par défaut pour catalog_sync_integration_name, toutes les tables sous schema1 sont notifiées. Cet argument est utilisé pour limiter la portée des notifications à une seule intégration de synchronisation de catalogue.

Renvoie

La fonction renvoie un objet JSON avec les propriétés décrites ci-dessous :

Propriété

Description

TABLENAME

Nom de la table à laquelle la notification a été envoyée. Il est présenté comme le nom de table complet (Database.Schema.Table).

NOTIFICATIONSTATUS

Statut de la notification. Renvoie TRUE si la notification a été envoyée correctement à Open Catalog ou FALSE dans le cas contraire.

ERRORCODE

Code d’erreur pour l’échec d’envoi de la notification. Si la notification a été envoyée correctement, ce champ est vide.

ERRORMESSAGE

Message d’erreur décrivant pourquoi la notification a échoué. Si la notification a été envoyée correctement, ce champ est vide.

Notes sur l’utilisation

domain, entity_name, notification_type et catalog_sync_integration_name sont tous un type de données de chaîne, donc chacun doit être placé entre guillemets simples.

Exemples

Envoyer une notification UPDATE à n’importe quelle table Iceberg gérée par Snowflake dans Open Catalog située sous le schéma testSchema dans Snowflake et synchronisée avec Open Catalog.

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

Envoyer une notification DROP à n’importe quelle table Iceberg gérée par Snowflake dans Open Catalog qui s’appelle icebergTable et est synchronisé avec Open Catalog à travers l’intégration du catalogue my_catalog_sync_integration.

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