- 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>'] )
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 laissernotification_type
vide pour utiliser sa valeur par défaut. En d’autres termes, si vous devez spécifier une valeur pourcatalog_sync_integration_name
au lieu d’utiliser la valeur par défaut, vous devez d’abord spécifierUPDATE
ouDROP
pournotification_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
pourdomain
etschema1
pourentity_name
et utilisez la valeur par défaut pourcatalog_sync_integration_name
, toutes les tables sousschema1
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 |
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'))));
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'))));