Catégories :

Fonctions système (Contrôle du système)

SYSTEM$SET_CATALOG_INTEGRATION

Remplace l’intégration de catalogue associée à une Table Apache Iceberg™ gérée en externe.

Utilisez cette fonction pour mettre à jour une table afin de travailler avec une intégration de catalogue REST, qui prend en charge un plus large éventail de fonctionnalités Iceberg, telles que la Prise en charge de l’écriture pour les tables Iceberg gérées en externe. Vous pouvez également utiliser cette fonction pour revenir à l” intégration de catalogue Glue d’origine, si nécessaire.

Vous pouvez aussi utiliser cette fonction pour migrer votre table d’une intégration de catalogue REST à une autre.

Syntaxe

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

Arguments

'table_name'

Nom de la table Iceberg dont vous souhaitez remplacer l’intégration de catalogue.

'new_catalog_integration_name'

Nom de l’intégration de catalogue vers laquelle vous souhaitez migrer le:samp:{table_name}.

Renvoie

La fonction renvoie un message d’état indiquant que l’intégration de catalogue de la table a bien été migrée. Pour un exemple, voir Exemples.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Objet

OWNERSHIP

Table dont l’intégration de catalogue est remplacée.

USAGE

Intégration de catalogue actuelle.

USAGE

Intégration de catalogue cible

Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma. Notez qu’un rôle doté d’un privilège quelconque sur un schéma permet à ce rôle de résoudre le schéma. Par exemple, un rôle doté du privilège CREATE sur un schéma peut créer des objets sur ce schéma sans également avoir le privilège USAGE attribué sur ce schéma.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Vous ne pouvez remplacer l’intégration de catalogue que pour les tables Iceberg gérées en externe dans une base de données Snowflake standard. Vous ne pouvez pas remplacer l’intégration de catalogue pour les tables Iceberg dans une base de données liée à un catalogue ni remplacer l’intégration de catalogue pour tout autre type de table Iceberg.

  • Le type de l’intégration de catalogue actuelle associée à la table restreint les types d’intégrations de catalogue que vous pouvez utiliser comme remplacement. Le tableau suivant répertorie les transitions prises en charge lorsque vous remplacez un type d’intégration de catalogue par un autre :

    Type d’intégration de catalogue actuel

    Nouveau type d’intégration de catalogue

    Remarques

    AWS Glue

    AWS Glue Iceberg REST

    AWS Glue Iceberg REST

    AWS Glue

    Revenez à une intégration de catalogue qui utilise un source de catalogue AWS Glue.

    Iceberg REST

    Iceberg REST

    Migrez la table vers une autre intégration de catalogue.

    Aucune autre combinaison de transition n’est prise en charge.

  • table_name et new_catalog_integration_name sont des littéraux de chaînes, vous devez donc inclure les valeurs entre guillemets simples.

  • Les intégrations de catalogue actuelles et cibles doivent pointer vers le même catalogue externe.

  • Les intégrations de catalogue actuelle et cible ne peuvent pas avoir la distribution d’identifiants activée.

Exemples

Remplacez l’intégration de catalogue AWS Glue associée à une table Iceberg nommée glue_table par une intégration AWS Iceberg Glue REST nommée glue_rest_catalog_int :

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

Exemple de sortie :

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

Résolution des problèmes

Si la fonction échoue, elle renvoie une réponse d’erreur. Les messages d’erreur courants sont les suivants :

Message d’erreur

Situation et solution

SYSTEM$SET_CATALOG_INTEGRATION ne prend pas en charge le passage de l’intégration de catalogue [CURRENT_CATALOG_INTEGRATION] à [TARGET_CATALOG_INTEGRATION] en raison d’une combinaison de types non prise en charge

L’intégration de catalogue actuelle ou cible fournie ne correspond pas aux types d’intégrations de catalogue pris en charge. Pour les types pris en charge, consultez les notes sur l’utilisation.

SYSTEM$SET_CATALOG_INTEGRATION ne peut pas passer de [CURRENT_CATALOG_INTEGRATION] à [TARGET_CATALOG_INTEGRATION] en raison de configurations d’intégration de catalogue incompatibles

Les intégrations de catalogue données sont du type pris en charge mais ne s’alignent pas sur l’une des combinaisons de transition prises en charge. Pour les combinaisons de transition prises en charge, consultez les notes sur l’utilisation.

Actuellement, ne prend pas en charge la transition lorsque l’intégration de catalogue [CATALOG_INTEGRATION] a activé la distribution d’identifiants

La distribution d’identifiants est activée dans l’intégration de catalogue fournie. Fournissez une intégration de catalogue avec la distribution d’identifiants désactivée et réessayez.

SYSTEM$SET_CATALOG_INTEGRATION peut uniquement être utilisé sur des tables Iceberg non gérées

La table fournie n’est pas une table Iceberg gérée en externe. Fournissez une table Iceberg gérée en externe et réessayez.