Categorias:

Funções do sistema (Controle do sistema)

SYSTEM$SET_CATALOG_INTEGRATION

Substitui a integração de catálogo associada a uma tabela Apache Iceberg™ gerenciada externamente.

Use esta função para atualizar uma tabela para funcionar com uma integração de catálogo Iceberg REST, que oferece suporte a uma variedade mais ampla de recursos do Iceberg, como suporte à gravação para tabelas Iceberg gerenciadas externamente. Você também pode usar esta função para reverter para a integração de catálogo Glue original, se necessário.

Você também pode usar essa função para migrar sua tabela de uma integração de catálogo Iceberg REST para outra.

Sintaxe

SYSTEM$SET_CATALOG_INTEGRATION(
  '<table_name>' ,
  '<new_catalog_integration_name>'
)
Copy

Argumentos

'table_name'

Nome da tabela Iceberg cuja integração de catálogo você deseja substituir.

'new_catalog_integration_name'

Nome da integração de catálogo para a qual você deseja migrar o table_name fornecido.

Retornos

A função retorna uma mensagem de status informando que a integração de catálogo para a tabela foi migrada com sucesso. Para obter um exemplo, consulte Exemplos.

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

OWNERSHIP

Tabela cuja integração de catálogo está sendo substituída.

USAGE

Integração de catálogo atual.

USAGE

Integração de catálogo de destino.

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema. Observe que uma função com privilégio concedido em um esquema permite que essa função resolva o esquema. Por exemplo, uma função com privilégio CREATE concedido em um esquema pode criar objetos nesse esquema sem também ter USAGE concedido nesse esquema.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Você só pode substituir a integração de catálogo para tabelas Iceberg gerenciadas externamente em um banco de dados Snowflake padrão. Você não pode substituir a integração de catálogo para tabelas Iceberg em um banco de dados vinculado a catálogo ou substituir a integração de catálogo para qualquer outro tipo de tabela Iceberg.

  • O tipo de integração de catálogo atual associado à tabela restringe os tipos de integrações de catálogo que você pode usar como substituição. A tabela a seguir lista as transições compatíveis quando você substitui um tipo de integração de catálogo por outro:

    Tipo de integração de catálogo atual

    Novo tipo de integração de catálogo

    Notas

    AWS Glue

    AWS Glue Iceberg REST

    AWS Glue Iceberg REST

    AWS Glue

    Retorne para uma integração de catálogo que use uma fonte de catálogo Glue AWS.

    Iceberg REST

    Iceberg REST

    Migre a tabela para uma integração de catálogo alternativa.

    Nenhuma outra combinação de transição é aceita.

  • table_name e new_catalog_integration_name são literais de cadeia de caracteres; portanto, você deve incluir os valores entre aspas simples.

  • As integrações de catálogo atual e de destino devem apontar para o mesmo catálogo externo.

  • As integrações de catálogo atual e de destino não podem ter o fornecimento de credenciais ativado.

Exemplos

Substitua a integração de catálogo do AWS Glue associada a uma tabela Iceberg denominada glue_table por uma integração de catálogo do AWS Glue Iceberg REST denominada glue_rest_catalog_int:

SELECT SYSTEM$SET_CATALOG_INTEGRATION('glue_table', 'glue_rest_catalog_int');
Copy

Exemplo de saída:

+------------------------------------------------------------------------------------------------------------------------------+
|                                                SYSTEM$SET_CATALOG_INTEGRATION                                                |
+------------------------------------------------------------------------------------------------------------------------------+
| Catalog integration for table GLUE_TABLE has been migrated from 'GLUE_CATALOG_INTEGRATION' to 'GLUE_REST_CATALOG_INT'        |
+------------------------------------------------------------------------------------------------------------------------------+
Copy

Solução de problemas

Se a função falhar, ela retornará uma resposta de erro. As mensagens de erro comuns incluem:

Mensagem de erro

Situação e solução

SYSTEM$SET_CATALOG_INTEGRATION não oferece suporte à transição da integração de catálogo “[CURRENT_CATALOG_INTEGRATION]” para “[TARGET_CATALOG_INTEGRATION]” devido à combinação de tipos não aceita.

A integração de catálogo atual ou de destino fornecida não corresponde aos tipos de integração de catálogo aceitos. Para conhecer os tipos aceitos, consulte as notas de uso.

SYSTEM$SET_CATALOG_INTEGRATION não pode fazer a transição de “[CURRENT_CATALOG_INTEGRATION]” para “[TARGET_CATALOG_INTEGRATION]” devido a configurações de integração de catálogo incompatíveis.

As integrações de catálogo fornecidas são do tipo aceito, mas não se alinham com uma das combinações de transição aceitas. Para as combinações de transição aceitas, consulte as notas de uso.

Atualmente, não há suporte para a execução de transição quando a integração de catálogo “[CATALOG_INTEGRATION]” tem o fornecimento de credenciais ativado.

A integração de catálogo fornecida tem o fornecimento de credenciais ativado. Forneça uma integração de catálogo com o fornecimento de credenciais desativado e tente novamente.

SYSTEM$SET_CATALOG_INTEGRATION só pode ser usado em tabelas Iceberg não gerenciadas.

A tabela fornecida não é uma tabela Iceberg gerenciada externamente. Forneça uma tabela Iceberg gerenciada externamente e tente de novo.