- 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:
domain
O domínio para o qual enviar a notificação. É possível especificar um dos seguintes domínios:
DATABASE
SCHEMA
TABLE
Por exemplo, se quiser enviar uma notificação para tabelas sob um determinado esquema, especifique o
SCHEMA
.entity_name
O nome de uma entidade para o
domain
dado. Dependendo do domínio fornecido,entity_name
especifica o nome de um banco de dados, esquema ou tabela.
Opcional:
notification_type
O 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:
UPDATE
catalog_sync_integration_name
O 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_SYNC
da 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_type
em branco para usar seu valor padrão. Em outras palavras, se precisar especificar um valor paracatalog_sync_integration_name
em vez de usar o padrão, é preciso primeiro especificarUPDATE
ouDROP
paranotification_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
SCHEMA
paradomain
eschema1
paraentity_name
e usar o padrão paracatalog_sync_integration_name
, todas as tabelas emschema1
serã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'))));