- Categorias:
Funções do sistema (Controle do sistema)
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG¶
Envia uma notificação ao Snowflake Open Catalog para atualizar as Tabelas Apache Iceberg™ gerenciadas pelo Snowflake no Open Catalog com as últimas alterações da tabela e retorna se a notificação foi enviada com sucesso, juntamente com um código de erro e uma mensagem de erro para a falha, se aplicável.
As notificações são um mecanismo para manter as tabelas Iceberg gerenciadas pelo Snowflake que são sincronizadas com o Open Catalog e atualizadas com as últimas alterações nas tabela. Quando as tabelas são sincronizadas com o Open Catalog, notificações são enviadas continuamente para elas. Entretanto, se as notificações não estiverem sendo enviadas para uma tabela, você pode chamar esta função e usar a mensagem de erro que ela retorna para diagnosticar o motivo da falha de sincronização.
Sintaxe¶
SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG( '<domain>' , '<entity_name>' [ , '<notification_type>'] [ , '<catalog_sync_integration_name>'] )
Argumentos¶
Obrigatório:
domainO domínio para o qual enviar a notificação. É possível especificar um dos seguintes domínios:
DATABASESCHEMATABLE
Por exemplo, se quiser enviar uma notificação para tabelas sob um determinado esquema, especifique o
SCHEMA.entity_nameO nome de uma entidade para o
domaindado. Dependendo do domínio fornecido,entity_nameespecifica o nome de um banco de dados, esquema ou tabela.
Opcional:
notification_typeO tipo de notificação a ser enviada para Open Catalog. É possível especificar um dos seguintes tipos de notificações:
UPDATE: Atualiza o estado da tabela em Open Catalog. Se a tabela ainda não existir, o Open Catalog cria a tabela.DROP: Descarta a tabela do Open Catalog caso ela exista.
Padrão:
UPDATEcatalog_sync_integration_nameO nome de uma integração de catálogo para o Open Catalog para a qual você deseja o escopo das notificações. As notificações só serão enviadas para uma determinada tabela se o parâmetro
CATALOG_SYNCda tabela estiver definido para esta integração de catálogo.Importante
Se precisar especificar um valor para
catalog_sync_integration_name, não poderá deixarnotification_typeem branco para usar seu valor padrão. Em outras palavras, se precisar especificar um valor paracatalog_sync_integration_nameem vez de usar o padrão, é preciso primeiro especificarUPDATEouDROPparanotification_type.Padrão: Se o argumento não for especificado, as notificações serão enviadas para todas as tabelas no domínio especificado pelos argumentos necessários, independentemente de sua integração de sincronização de catálogo. Por exemplo, se você especificar
SCHEMAparadomaineschema1paraentity_namee usar o padrão paracatalog_sync_integration_name, todas as tabelas emschema1serão notificadas. Este argumento é usado para limitar o escopo das notificações a uma única integração de sincronização de catálogo.
Retornos¶
A função retorna um objeto JSON com as propriedades descritas abaixo:
Propriedade |
Descrição |
|---|---|
TABLENAME |
Nome da tabela para a qual a notificação foi enviada. É apresentado como o nome da tabela totalmente qualificado (Database.Schema.Table). |
NOTIFICATIONSTATUS |
Status da notificação. Retorna |
ERRORCODE |
Código de erro para falha no envio de notificação. Se a notificação foi enviada com sucesso, este campo estará vazio. |
ERRORMESSAGE |
Mensagem de erro descrevendo o motivo da falha da notificação. Se a notificação foi enviada com sucesso, este campo estará vazio. |
Notas de uso¶
domain, entity_name, notification_type e catalog_sync_integration_name são todos um tipo de dados de cadeia de caracteres, portanto cada um deve ser colocado entre aspas simples.
Exemplos¶
Envie uma notificação UPDATE para qualquer tabela Iceberg gerenciada pelo Snowflake no Open Catalog que esteja sob o esquema testSchema no Snowflake e esteja sincronizada com 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'))));
Envie uma notificação DROP para qualquer tabela Iceberg gerenciada pelo Snowflake no Open Catalog nomeada icebergTable e esteja sincronizada com o Open Catalog por meio da integração de catálogo 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'))));