- 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>'
)
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 Iceberg REST
AWS Glue
Revenez à une intégration de catalogue qui utilise un source de catalogue AWS Glue.
Iceberg REST
Migrez la table vers une autre intégration de catalogue.
Aucune autre combinaison de transition n’est prise en charge.
table_nameetnew_catalog_integration_namesont 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');
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' |
+------------------------------------------------------------------------------------------------------------------------------+
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. |