Modifier une table vous permet de faire évoluer le schéma (par exemple, en ajoutant des colonnes) et de mettre à jour les propriétés des métadonnées de la table.
Les modifications sont gérées par le catalogue d'environnements d'exécution Lakehouse.
Avant de commencer
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
-
Activez l'API BigLake.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles. - Configurez le catalogue d'environnements d'exécution Lakehouse avec le point de terminaison du catalogue REST Apache Iceberg.
Rôles requis
Pour obtenir les autorisations nécessaires pour modifier une table, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet et votre bucket de stockage :
-
Modifier une table en mode de distribution d'identifiants :
Éditeur BigLake (
roles/biglake.editor) : projet -
Modifier une table en mode de distribution d'identifiants :
- Éditeur BigLake (
roles/biglake.editor) : projet - Utilisateur d'objets Storage (
roles/storage.objectUser) : le bucket Cloud Storage
- Éditeur BigLake (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Fonctionnalités et compatibilité des tableaux
Lorsque vous utilisez des tables dans le catalogue Lakehouse Runtime, il est utile de comprendre les différents types de tables et leurs fonctionnalités d'activation. Pour en savoir plus sur l'utilisation des tables Apache Iceberg, consultez Présentation des tables Apache Iceberg.
Tables Iceberg compatibles
Seules les tables Apache Iceberg V2 (disponibilité générale) et V3 (bêta) sont acceptées. Les tables Iceberg V1 ne sont pas acceptées. Pour mettre à niveau les tables V1 existantes, consultez Mettre à niveau les tables Iceberg V1 vers V2.
Utiliser les options de tableau (aperçu)
Vous pouvez choisir d'utiliser les fonctionnalités gérées de BigQuery, telles que le langage de manipulation de données (LMD) BigQuery et la gestion automatique des tables, en configurant des propriétés de table spécifiques. Ces fonctionnalités sont activées de différentes manières selon l'endroit où le tableau est créé :
- Depuis BigQuery : le langage DML BigQuery et la gestion automatique des tables sont activés par défaut.
- À partir de moteurs Open Source : pour activer cette fonctionnalité, vous devez configurer explicitement les propriétés des tables. Pour en savoir plus, consultez Configurer les options de tableau.
Pour obtenir des instructions détaillées, consultez Configurer les options de tableau.
Modifier une table
Ajoutez une colonne au tableau :
Console
Dans la console Google Cloud , accédez à Lakehouse.
Sélectionnez un catalogue existant ou créez-en un si vous n'en avez pas.
Dans le tableau Détails de l'espace de noms, sélectionnez une table et développez les options du menu.
Cliquez sur Modifier.
Mettez à jour les valeurs du tableau dans la boîte de dialogue.
Cliquez sur Enregistrer.
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Pour activer l'interopérabilité en lecture/écriture et la gestion des tables, définissez les propriétés à l'aide de la clause SET TBLPROPERTIES :
SET TBLPROPERTIES (
'gcp.biglake.bigquery-dml.enabled' = true,
'gcp.biglake.table-management.enabled' = true
)
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;
Pour activer l'interopérabilité en lecture/écriture et la gestion des tables, vous pouvez configurer les propriétés de table suivantes :
'gcp.biglake.bigquery-dml.enabled' = true'gcp.biglake.table-management.enabled' = true
gcloud
Pour mettre à jour les propriétés d'une table à l'aide de gcloud, exécutez la commande gcloud biglake iceberg tables update.
gcloud biglake iceberg tables update TABLE_NAME \ --project="PROJECT_ID" \ --catalog="CATALOG_ID" \ --namespace="NAMESPACE_NAME" \ --update-properties="KEY=VALUE,..."
Remplacez les éléments suivants :
TABLE_NAME: nom de votre table Iceberg.PROJECT_ID: ID de votre projet Google Cloud .CATALOG_ID: ID de votre catalogue.NAMESPACE_NAME: nom de l'espace de noms de votre catalogue.KEY=VALUE,...: propriétés de table à ajouter ou à mettre à jour.
BigQuery
Pour mettre à jour les propriétés d'une table Apache Iceberg dans le catalogue du runtime Lakehouse depuis BigQuery (par exemple, pour activer le LMD BigQuery ou la gestion automatique des tables), utilisez l'instruction GoogleSQL ALTER TABLE suivante :
ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET OPTIONS (`properties.gcp.biglake.table-management` = "enabled");
Pour mettre à jour le schéma et ajouter une colonne dans une table Apache Iceberg du catalogue Lakehouse Runtime depuis BigQuery, utilisez l'instruction GoogleSQL ALTER TABLE suivante :
ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
ADD COLUMN new_column STRING;
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .CATALOG_ID: ID de votre catalogue d'environnements d'exécution Lakehouse.NAMESPACE: nom de votre espace de noms Iceberg.TABLE_NAME: nom de votre table Iceberg.
REST
Pour valider les modifications apportées à une table Iceberg à l'aide de l'API REST, envoyez une requête POST au point de terminaison UpdateIcebergTable (CommitTable) :
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME
Le corps de la requête doit contenir une charge utile JSON CommitTableRequest Iceberg valide définissant l'exigence de base et la liste des mises à jour de métadonnées à appliquer.
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .CATALOG_ID: ID de votre catalogue.NAMESPACE_NAME: nom de l'espace de noms de votre catalogue.TABLE_NAME: nom de votre table Iceberg.
Étapes suivantes
- Découvrez comment supprimer une table.