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

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á deixar notification_type em branco para usar seu valor padrão. Em outras palavras, se precisar especificar um valor para catalog_sync_integration_name em vez de usar o padrão, é preciso primeiro especificar UPDATE ou DROP para notification_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 para domain e schema1 para entity_name e usar o padrão para catalog_sync_integration_name, todas as tabelas em schema1 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 TRUE se a notificação foi enviada com sucesso ao Open Catalog ou FALSE se não foi enviada com sucesso.

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

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