Modifier des schémas de table
Ce document décrit comment modifier les définitions de schéma pour les tables BigQuery existantes.
Vous pouvez effectuer la plupart des modifications de schéma décrites dans ce document à l'aide d'instructions LDD (langage de définition de données) SQL. Ces instructions n'entraînent aucuns frais.
Vous pouvez modifier le schéma d'une table de toutes les manières décrites sur cette page :exportation de vos données de table dans Cloud Storage, puis chargement des données dans une nouvelle table avec la définition de schéma modifiée Les jobs de chargement et d'extraction BigQuery sont gratuits, mais des frais s'appliquent pour le stockage des données exportées dans Cloud Storage. Les sections suivantes décrivent d'autres façons d'effectuer différents types de modifications de schéma.
Ajouter une colonne
Vous pouvez ajouter des colonnes à la définition de schéma d'une table existante à l'aide de l'une des options suivantes :
- Ajoutez une colonne vide.
- Écrasez une table avec une tâche de chargement ou de requête.
- Ajoutez des données à une table avec une tâche de chargement ou de requête.
Toute colonne que vous ajoutez doit respecter les règles de BigQuery pour les noms de colonnes. Pour en savoir plus sur la création de composants de schéma, consultez l'article Spécifier un schéma.
Ajouter une colonne vide
Si vous ajoutez des colonnes à un schéma de table existant, celles-ci doivent être définies comme NULLABLE ou REPEATED. Vous ne pouvez pas ajouter une colonne REQUIRED à un schéma de table existant. L'ajout d'une colonne REQUIRED à un schéma de table existant dans l'API ou l'outil de ligne de commande bq génère une erreur. Toutefois, vous pouvez créer une colonne REQUIRED imbriquée dans un nouveau champ RECORD.
Vous ne pouvez ajouter des colonnes définies comme REQUIRED que lorsque vous créez une table lors du chargement des données ou lorsque vous créez une table vide avec une définition de schéma.
Pour ajouter des colonnes vides à la définition de schéma d'une table, procédez comme suit.
Console
Dans la console Google Cloud , accédez à la page "BigQuery".
Dans le panneau de gauche, cliquez sur Explorer :

Si le volet de gauche n'apparaît pas, cliquez sur Développer le volet de gauche pour l'ouvrir.
Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Cliquez sur Vue d'ensemble > Tables, puis sélectionnez le tableau.
Dans le volet des détails, cliquez sur l'onglet Schéma.
Cliquez sur Modifier le schéma. Vous devrez peut-être faire défiler la page pour voir ce bouton.
Sur la page Current schema (Schéma actuel), sous New fields (Nouveaux champs), cliquez sur Add field (Ajouter un champ).
Lorsque vous avez terminé d'ajouter des colonnes, cliquez sur Enregistrer.
SQL
Utilisez l'instruction LDD ALTER TABLE ADD COLUMN :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Exécutez la commande bq update et fournissez un fichier de schéma JSON. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant : PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: chemin d'accès au fichier de schéma JSON sur votre ordinateur local.
Lorsque vous spécifiez un schéma intégré, vous ne pouvez pas spécifier la description, le mode, ni le type RECORD (STRUCT) de la colonne. Tous les modes de colonne sont définis par défaut sur NULLABLE. Par conséquent, si vous ajoutez une nouvelle colonne imbriquée à un type RECORD, vous devez fournir un fichier de schéma JSON.
Si vous essayez d'ajouter des colonnes à l'aide d'une définition de schéma intégrée, vous devez fournir l'intégralité de la définition de schéma, y compris les nouvelles colonnes. Étant donné que vous ne pouvez pas indiquer de mode de colonne à l'aide d'une définition de schéma intégrée, le processus de mise à jour modifie les colonnes REPEATED existantes en NULLABLE, ce qui génère l'erreur suivante : BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
Pour ajouter des colonnes à une table existante à l'aide de l'outil de ligne de commande bq, il est préférable de fournir un fichier de schéma JSON.
Pour ajouter des colonnes vides au schéma d'une table à l'aide d'un fichier de schéma JSON :
Tout d'abord, exécutez la commande
bq showavec l'option--schemaet écrivez le schéma de table existant dans un fichier. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant :PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: fichier de définition de schéma écrit sur votre ordinateur local.
Par exemple, pour écrire la définition de schéma de
mydataset.mytabledans un fichier, entrez la commande suivante.mydataset.mytablese trouve dans votre projet par défaut.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonOuvrez le fichier de schéma dans un éditeur de texte. Le fichier doit se présenter comme suit :
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Ajoutez les colonnes à la fin de la définition de schéma. Si vous tentez d'ajouter des colonnes ailleurs dans le tableau, l'erreur suivante est renvoyée :
BigQuery error in update operation: Precondition Failed.Avec un fichier JSON, vous pouvez spécifier des descriptions, des modes
NULLABLEouREPEATED, et des typesRECORDpour les nouvelles colonnes. Par exemple, en utilisant la définition de schéma de l'étape précédente, votre nouveau tableau JSON devrait se présenter comme suit. Dans cet exemple, une colonneNULLABLEnomméecolumn4est ajoutée. Cette colonnecolumn4comprend une description.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" }, { "description": "my new column", "mode": "NULLABLE", "name": "column4", "type": "STRING" } ]Pour en savoir plus sur l'utilisation des fichiers de schéma JSON, consultez l'article Spécifier un fichier de schéma JSON.
Après avoir mis à jour votre fichier de schéma, exécutez la commande suivante pour mettre à jour le schéma de la table. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant :
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: fichier de définition de schéma écrit sur votre ordinateur local.
Par exemple, saisissez la commande suivante pour mettre à jour la définition de schéma de
mydataset.mytabledans votre projet par défaut./tmp/myschema.jsonest le chemin d'accès du fichier de schéma sur votre ordinateur local.bq update mydataset.mytable /tmp/myschema.json
API
Appelez la méthode tables.patch, puis utilisez la propriété schema pour ajouter des colonnes vides à votre définition de schéma. Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, la méthode tables.patch est préférable.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Ajoutez un nouvel objet SchemaField à une copie de la propriété Table.schema, puis remplacez la valeur de la propriété Table.schema par le schéma mis à jour.Ajouter une colonne imbriquée à une colonne RECORD
En plus d'ajouter des colonnes au schéma d'une table, vous pouvez également ajouter des colonnes imbriquées à une colonne RECORD. Le processus d'ajout des colonnes imbriquées est très similaire à celui des colonnes classiques.
Console
L'ajout d'un champ imbriqué à une colonne RECORD existante n'est pas possible dans la console Google Cloud .
SQL
Il n'est pas possible d'ajouter un nouveau champ imbriqué à une colonne RECORD existante en utilisant une instruction LDD SQL.
bq
Exécutez la commande bq update et fournissez un fichier de schéma JSON qui ajoute le champ imbriqué à la définition de schéma de la colonne RECORD existante. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant : PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: chemin d'accès au fichier de schéma JSON sur votre ordinateur local.
Lorsque vous spécifiez un schéma intégré, vous ne pouvez pas spécifier la description, le mode, ni le type RECORD (STRUCT) de la colonne. Tous les modes de colonne sont définis par défaut sur NULLABLE. Par conséquent, si vous ajoutez une nouvelle colonne imbriquée à un type RECORD, vous devez fournir un fichier de schéma JSON.
Pour ajouter une colonne imbriquée à un type RECORD en utilisant un fichier de schéma JSON, procédez comme suit :
Tout d'abord, exécutez la commande
bq showavec l'option--schemaet écrivez le schéma de table existant dans un fichier. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant :PROJECT_ID:DATASET.TABLE.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: fichier de définition de schéma écrit sur votre ordinateur local.
Par exemple, pour écrire la définition de schéma de
mydataset.mytabledans un fichier, entrez la commande suivante.mydataset.mytablese trouve dans votre projet par défaut.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonOuvrez le fichier de schéma dans un éditeur de texte. Le fichier doit se présenter comme suit. Dans cet exemple,
column3correspond à une colonne imbriquée répétée. Les colonnes imbriquées sontnested1etnested2. Le tableaufieldsrépertorie les champs imbriqués danscolumn3.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]Ajoutez la colonne imbriquée à la fin du tableau
fields. Dans cet exemple,nested3correspond à la nouvelle colonne imbriquée.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested3", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]Pour en savoir plus sur l'utilisation des fichiers de schéma JSON, consultez l'article Spécifier un fichier de schéma JSON.
Après avoir mis à jour votre fichier de schéma, exécutez la commande suivante pour mettre à jour le schéma de la table. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant :
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: chemin d'accès au fichier de schéma JSON sur votre ordinateur local.
Par exemple, saisissez la commande suivante pour mettre à jour la définition de schéma de
mydataset.mytabledans votre projet par défaut./tmp/myschema.jsonest le chemin d'accès du fichier de schéma sur votre ordinateur local.bq update mydataset.mytable /tmp/myschema.json
API
Appelez la méthode tables.patch, puis utilisez la propriété schema pour ajouter des colonnes imbriquées à votre définition de schéma. Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, la méthode tables.patch est préférable.
Ajouter des colonnes lorsque vous écrasez ou ajoutez des données
Vous pouvez ajouter des colonnes à une table existante lorsque vous y chargez des données et choisissez d'écraser cette table. Le schéma des données chargées est alors utilisé pour écraser le schéma de la table existante. Pour en savoir plus sur l'écrasement d'une table avec une tâche de chargement, consultez le document correspondant au format de vos données :
Ajouter des colonnes dans un job de chargement ajoutant des données
Vous pouvez ajouter des colonnes à une table lorsque vous y ajoutez des données via un job de chargement. Le nouveau schéma est déterminé par l'un des éléments suivants :
- Détection automatique (pour les fichiers CSV et JSON)
- Un schéma spécifié dans un fichier de schéma JSON (pour les fichiers CSV et JSON)
- Les données sources autodescriptives pour les fichiers d'exportation Avro, ORC, Parquet et Datastore
Si vous spécifiez le schéma dans un fichier JSON, les nouvelles colonnes doivent y être définies. Si les nouvelles définitions de colonnes ne sont pas indiquées, une erreur est renvoyée lorsque vous tentez d'ajouter des données.
Lorsque vous ajoutez des colonnes lors d'une opération d'ajout, les valeurs des nouvelles colonnes sont définies sur NULL pour les lignes existantes.
Pour ajouter une colonne lorsque vous ajoutez des données à une table lors d'un job de chargement, utilisez l'une des options suivantes :
bq
Exécutez la commande bq load pour charger vos données et spécifiez l'option --noreplace pour indiquer que vous ajoutez les données à une table existante.
Si les données que vous ajoutez sont au format JSON délimité par un retour à la ligne ou CSV, spécifiez l'option --autodetect pour utiliser la détection automatique de schéma ou fournissez le schéma dans un fichier de schéma JSON. Les colonnes ajoutées peuvent être obtenues automatiquement à partir des fichiers d'exportation Avro ou Cloud Datastore.
Définissez l'option --schema_update_option sur ALLOW_FIELD_ADDITION pour indiquer que les données que vous ajoutez contiennent de nouvelles colonnes.
Si la table que vous ajoutez se trouve dans un ensemble de données d'un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant : PROJECT_ID:DATASET.
(Facultatif) Spécifiez l'option --location et définissez la valeur correspondant à votre emplacement.
Saisissez la commande load comme suit :
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Remplacez les éléments suivants :
LOCATION: nom de votre emplacement. L'option--locationest facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1. Vous pouvez définir une valeur par défaut correspondant à l'emplacement à l'aide du fichier .bigqueryrc.FORMAT: format du schéma.NEWLINE_DELIMITED_JSON,CSV,AVRO,PARQUET,ORCouDATASTORE_BACKUP.PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table.TABLE: nom de la table que vous ajoutez.PATH_TO_SOURCE: URI Cloud Storage complet, liste d'URI séparés par une virgule ou chemin d'accès d'un fichier de données se trouvant sur votre machine locale.SCHEMA: chemin d'accès à un fichier de schéma JSON local. Un fichier de schéma n'est requis que pour les fichiers CSV et JSON lorsque l'option--autodetectn'est pas spécifiée. Les schémas Avro et Cloud Datastore sont obtenus à partir des données sources.
Exemples :
Saisissez la commande suivante pour ajouter un fichier de données Avro local, /tmp/mydata.avro, à mydataset.mytable à l'aide d'une tâche de chargement. Comme les schémas peuvent être automatiquement obtenus à partir des données Avro, l'option --autodetect n'est pas nécessaire. mydataset se trouve dans votre projet par défaut.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Saisissez la commande suivante pour ajouter un fichier de données JSON délimité par des retours à la ligne dans Cloud Storage à mydataset.mytable à l'aide d'une tâche de chargement. L'option --autodetect permet de détecter les nouvelles colonnes. mydataset se trouve dans votre projet par défaut.
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
Saisissez la commande suivante pour ajouter un fichier de données JSON délimité par des retours à la ligne dans Cloud Storage à mydataset.mytable à l'aide d'une tâche de chargement. Le schéma contenant les nouvelles colonnes est spécifié dans un fichier de schéma JSON local, /tmp/myschema.json. mydataset se trouve dans myotherproject, et non dans votre projet par défaut.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
myotherproject:mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
API
Appelez la méthode jobs.insert. Configurez une tâche load et définissez les propriétés suivantes :
- Référencez vos données dans Cloud Storage à l'aide de la propriété
sourceUris. - Spécifiez le format de données en définissant la propriété
sourceFormat. - Spécifiez le schéma dans la propriété
schema. - Spécifiez l'option de mise à jour de schéma à l'aide de la propriété
schemaUpdateOptions. - Définissez la disposition d'écriture de la table de destination sur
WRITE_APPENDà l'aide de la propriétéwriteDisposition.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Ajouter des colonnes dans un job de requête ajoutant des résultats de requête
Vous pouvez ajouter des colonnes à une table lorsque vous y ajoutez des résultats de requête.
Lorsque vous ajoutez des colonnes à l'aide d'une opération d'ajout dans une tâche de requête, le schéma des résultats de requête est utilisé pour mettre à jour le schéma de la table de destination. Notez que vous ne pouvez pas interroger une table dans un emplacement spécifique et écrire les résultats dans une table dont l'emplacement est différent.
Pour ajouter une colonne lorsque vous ajoutez des données à une table lors d'un job de requête, sélectionnez l'une des options suivantes :
bq
Exécutez la commande bq query pour interroger vos données et spécifiez l'option --destination_table pour indiquer la table que vous ajoutez.
Pour spécifier que vous ajoutez des résultats de requête à une table de destination existante, spécifiez l'option --append_table.
Définissez l'option --schema_update_option sur ALLOW_FIELD_ADDITION pour indiquer que les résultats de requête que vous ajoutez contiennent de nouvelles colonnes.
Spécifiez l'option use_legacy_sql=false afin d'utiliser la syntaxe GoogleSQL pour la requête.
Si la table que vous ajoutez se trouve dans un ensemble de données d'un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant : PROJECT_ID:DATASET. Notez que la table que vous interrogez et la table de destination doivent se trouver au même emplacement.
(Facultatif) Spécifiez l'option --location et définissez la valeur correspondant à votre emplacement.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
Remplacez l'élément suivant :
LOCATION: nom de votre emplacement. L'option--locationest facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1. Vous pouvez définir une valeur par défaut correspondant à l'emplacement en utilisant le fichier .bigqueryrc. Notez que vous ne pouvez pas ajouter les résultats d'une requête à une table dont l'emplacement est différent.PROJECT_ID: ID de votre projet.dataset: nom de l'ensemble de données contenant la table que vous ajoutez.TABLE: nom de la table que vous ajoutez.QUERY: requête en syntaxe GoogleSQL.
Exemples :
Saisissez la commande suivante pour interroger mydataset.mytable dans votre projet par défaut et pour ajouter les résultats de la requête à mydataset.mytable2 (également dans votre projet par défaut).
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Saisissez la commande suivante pour interroger mydataset.mytable dans votre projet par défaut et pour ajouter les résultats de la requête à mydataset.mytable2 dans myotherproject.
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
Appelez la méthode jobs.insert. Configurez une tâche query et définissez les propriétés suivantes :
- Spécifiez la table de destination à l'aide de la propriété
destinationTable. - Définissez la disposition d'écriture de la table de destination sur
WRITE_APPENDà l'aide de la propriétéwriteDisposition. - Spécifiez l'option de mise à jour de schéma à l'aide de la propriété
schemaUpdateOptions. - Spécifiez la requête GoogleSQL à l'aide de la propriété
query.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Renommer une colonne
Pour renommer une colonne d'une table, utilisez l'instruction LDD ALTER TABLE RENAME COLUMN. L'exemple suivant renomme la colonne old_name en new_name sur mytable :
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
Pour en savoir plus sur les instructions ALTER TABLE RENAME COLUMN, consultez la section Détails des instructions LDD.
Modifier le type de données d'une colonne
Vous ne pouvez pas modifier le type de données d'une colonne à l'aide de la console Google Cloud , de l'outil de ligne de commande bq ni de l'API BigQuery. Si vous essayez de mettre à jour une table en appliquant un schéma qui spécifie un nouveau type de données pour une colonne, une erreur est renvoyée.
Modifier le type de données d'une colonne avec une instruction LDD
Vous pouvez utiliser le langage GoogleSQL pour apporter certaines modifications au type de données d'une colonne. Pour en savoir plus et obtenir la liste complète des conversions de types de données compatibles, consultez la section Instruction LDD ALTER COLUMN SET DATA TYPE.
L'exemple suivant crée une table avec une colonne de type INT64, puis met à jour le type sur NUMERIC :
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
L'exemple suivant crée une table avec une colonne imbriquée avec deux champs, puis met à jour le type de l'une des colonnes de INT à NUMERIC :
CREATE TABLE mydataset.mytable(s1 STRUCT<a INT64, b STRING>); ALTER TABLE mydataset.mytable ALTER COLUMN s1 SET DATA TYPE STRUCT<a NUMERIC, b STRING>;
Modifier les types de colonnes imbriquées
Pour les modifications complexes de schémas imbriqués, comme la modification d'un champ dans un tableau de STRUCT, l'instruction LDD ALTER TABLE n'est pas acceptée.
Pour contourner ce problème, vous pouvez utiliser l'instruction CREATE OR REPLACE TABLE avec une instruction SELECT pour transformer les modifications apportées à votre schéma imbriqué.
L'exemple suivant montre comment transformer une colonne dans un tableau de STRUCTS :
Prenons l'exemple d'une table samples.test avec le schéma et les données suivants :
CREATE OR REPLACE TABLE samples.test(D STRUCT <L ARRAY<STRUCT<R STRING, U STRING, V STRING>>, F STRING>); INSERT INTO samples.test(D) VALUES (STRUCT([STRUCT("r1", "u1", "v1"), STRUCT("r2", "u2", "v2")], "f1"));
Le résultat doit ressembler à ce qui suit :
+----------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":"u1","V":"v1"},{"R":"r2","U":"u2","V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------+
Supposons que vous deviez modifier le type du champ U dans le tableau imbriqué de STRUCT en STRUCT<W STRING>. L'instruction SQL suivante montre comment procéder :
CREATE OR REPLACE TABLE samples.new_table AS SELECT STRUCT(ARRAY( SELECT STRUCT(tmp.R, STRUCT(tmp.U AS W) AS U, tmp.V) FROM UNNEST(t.D.L) AS tmp) AS L, t.D.F) AS D FROM samples.test AS t
Cette instruction crée une table, samples.new_table, avec le schéma cible.
La fonction UNNEST développe le tableau de STRUCT dans t.D.L. L'expression STRUCT(tmp.U AS W) AS U construit le nouveau STRUCT avec le champ W, rempli par la valeur du champ U d'origine. La table obtenue, samples.new_table, présente le schéma et les données suivants :
+----------------------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":{"W":"u1"},"V":"v1"},{"R":"r2","U":{"W":"u2"},"V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------------------+
Caster le type de données d'une colonne
Pour modifier le type de données d'une colonne en type castable, exécutez une requête SQL pour sélectionner les données de la table, puis castez la colonne concernée et écrasez la table. Le casting et l'écrasement ne sont pas recommandés pour les très grandes tables, car ils nécessitent une analyse complète de la table.
L'exemple suivant montre une requête SQL qui sélectionne toutes les données de column_two et column_three dans mydataset.mytable, et caste column_one de DATE en STRING. Le résultat de la requête permet d'écraser la table existante. La table écrasée stocke column_one en tant que type de données STRING.
En cas d'utilisation de CAST, une requête peut échouer si BigQuery est incapable d'effectuer le casting. Pour en savoir plus sur le casting de règles dans GoogleSQL, consultez la page Casting.
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez la requête suivante pour sélectionner toutes les données de
column_twoetcolumn_threedansmydataset.mytable, ainsi que pour castercolumn_onedeDATEenSTRING. La requête utilise un alias pour castercolumn_oneavec le même nom.mydataset.mytablese trouve dans votre projet par défaut.SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
Cliquez sur Plus et sélectionnez Paramètres de requête.
Dans la section Destination, procédez comme suit :
Cochez la case Set a destination table for query results (Définir une table de destination pour les résultats de la requête).
Dans le champ Nom du projet, laissez la valeur définie sur votre projet par défaut. Il s'agit du projet contenant
mydataset.mytable.Dans le champ Ensemble de données, choisissez
mydataset.Dans le champ ID de la table, saisissez
mytable.Dans la section Destination table write preference (Préférence d'écriture pour la table de destination), choisissez Overwrite table (Écraser la table). Cette option écrase
mytableà l'aide des résultats de la requête.
(Facultatif) Choisissez l'emplacement de vos données.
Pour mettre à jour les paramètres, cliquez sur Enregistrer.
Cliquez sur Exécuter.
Une fois la tâche de requête terminée, le type de données de
column_onedevientSTRING.
bq
Saisissez la commande bq query suivante pour sélectionner toutes les données de column_two et column_three dans mydataset.mytable, ainsi que pour caster column_one de DATE en STRING. La requête utilise un alias pour caster column_one avec le même nom. mydataset.mytable se trouve dans votre projet par défaut.
Les résultats de la requête sont écrits dans mydataset.mytable à l'aide de l'option --destination_table. L'option --replace permet quant à elle d'écraser mytable. Spécifiez l'option use_legacy_sql=false pour utiliser la syntaxe GoogleSQL.
(Facultatif) spécifiez l'option --location et définissez la valeur correspondant à votre emplacement.
bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
column_two,
column_three,
CAST(column_one AS STRING) AS column_one
FROM
mydataset.mytable'
API
Pour sélectionner toutes les données de column_two et column_three dans mydataset.mytable, et caster column_one de DATE en STRING, appelez la méthode jobs.insert et configurez une tâche de requête (query). (Facultatif) Spécifiez l'emplacement dans la propriété location de la section jobReference.
La requête SQL utilisée dans la tâche de requête devrait ressembler à ceci : SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable. La requête utilise un alias pour caster column_one avec le même nom.
Pour écraser mytable avec les résultats de la requête, incluez mydataset.mytable dans la propriété configuration.query.destinationTable, puis spécifiez WRITE_TRUNCATE dans la propriété configuration.query.writeDisposition.
Modifier le mode d'une colonne
La seule modification qu'il est possible d'apporter au mode d'une colonne consiste à la passer du mode REQUIRED à NULLABLE. Changer le mode d'une colonne de REQUIRED en NULLABLE revient à assouplir cette colonne. Vous pouvez également assouplir une colonne lorsque vous chargez des données pour écraser une table existante ou lorsque vous ajoutez des données à une table existante. Vous ne pouvez pas modifier le mode d'une colonne de NULLABLE à REQUIRED.
Rendre une colonne NULLABLE dans une table existante
Pour passer le mode d'une colonne de REQUIRED à NULLABLE, sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Dans le panneau de gauche, cliquez sur Explorer :

Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Cliquez sur Vue d'ensemble > Tables, puis sélectionnez le tableau.
Dans le panneau des détails, cliquez sur l'onglet Preview (Aperçu).
Cliquez sur Modifier le schéma. Vous devrez peut-être faire défiler la page pour voir ce bouton.
Sur la page Schéma actuel, repérez le champ que vous souhaitez modifier.
Dans la liste déroulante Mode de ce champ, sélectionnez
NULLABLE.Pour mettre à jour les paramètres, cliquez sur Enregistrer.
SQL
Utilisez l'instruction LDD ALTER COLUMN DROP NOT NULL :
L'exemple suivant modifie le mode de la colonne mycolumn de REQUIRED à NULLABLE :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
bq
Tout d'abord, exécutez la commande
bq showavec l'option--schemaet écrivez le schéma de table existant dans un fichier. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant :PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA_FILE: fichier de définition de schéma écrit sur votre ordinateur local.
Par exemple, pour écrire la définition de schéma de
mydataset.mytabledans un fichier, entrez la commande suivante.mydataset.mytablese trouve dans votre projet par défaut.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonOuvrez le fichier de schéma dans un éditeur de texte. Le fichier doit se présenter comme suit :
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Faites passer une colonne existante du mode
REQUIREDau modeNULLABLE. Dans cet exemple, le mode de la colonnecolumn1est assoupli.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Pour en savoir plus sur l'utilisation des fichiers de schéma JSON, consultez l'article Spécifier un fichier de schéma JSON.
Après avoir mis à jour votre fichier de schéma, exécutez la commande suivante pour mettre à jour le schéma de la table. Si la table que vous mettez à jour se trouve dans un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant :
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous mettez à jour.TABLE: nom de la table que vous mettez à jour.SCHEMA: chemin d'accès au fichier de schéma JSON sur votre ordinateur local.
Par exemple, saisissez la commande suivante pour mettre à jour la définition de schéma de
mydataset.mytabledans votre projet par défaut./tmp/myschema.jsonest le chemin d'accès du fichier de schéma sur votre ordinateur local.bq update mydataset.mytable /tmp/myschema.json
API
Appelez la méthode tables.patch et utilisez la propriété schema pour faire passer une colonne du mode REQUIRED au mode NULLABLE dans votre définition de schéma. Étant donné que la méthode tables.update remplace l'intégralité de la ressource de table, la méthode tables.patch est préférable.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Écrasez la propriété Table.schema avec une liste d'objets SchemaField dont la propriété mode est définie sur'NULLABLE'.
Rendre une colonne NULLABLE avec un job de chargement par ajout
Vous pouvez assouplir le mode d'une colonne lorsque vous ajoutez des données à une table via un job de chargement. Sélectionnez l'une des options suivantes en fonction du type de fichier :
- Lorsque vous ajoutez des données à partir de fichiers CSV et JSON, assouplissez le mode de colonnes individuelles en spécifiant un fichier de schéma JSON.
- Lorsque vous ajoutez des données à partir de fichiers Avro, ORC ou Parquet, assouplissez les colonnes sur
NULLdans votre schéma et laissez l'inférence de schéma détecter les colonnes dont le mode a été assoupli.
Pour assouplir une colonne du mode REQUIRED au mode NULLABLE lorsque vous ajoutez des données à une table lors d'un job de chargement, sélectionnez l'une des options suivantes :
Console
Il n'est pas possible d'assouplir le mode d'une colonne à l'aide de la console Google Cloud .
bq
Exécutez la commande bq load pour charger vos données et spécifiez l'option --noreplace pour indiquer que vous ajoutez les données à une table existante.
Si les données que vous ajoutez sont au format JSON délimité par des retours à la ligne ou CSV, spécifiez les colonnes dont le mode a été assoupli dans un fichier de schéma JSON local. Vous pouvez également utiliser l'option --autodetect pour procéder à la détection de schéma afin d'identifier les colonnes dont le mode a été assoupli dans les données sources.
Les colonnes dont le mode a été assoupli peuvent être automatiquement obtenues à partir des fichiers Avro, ORC et Parquet. L'assouplissement du mode des colonnes ne peut pas être appliqué aux fichiers d'exportation Cloud Datastore ajoutés. Les colonnes des tables créées en chargeant les fichiers d'exportation Cloud Datastore sont toujours définies comme NULLABLE.
Définissez l'option --schema_update_option sur ALLOW_FIELD_RELAXATION pour indiquer que les données que vous ajoutez contiennent de nouvelles colonnes.
Si la table que vous ajoutez se trouve dans un ensemble de données d'un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant : PROJECT_ID:DATASET.
(Facultatif) Spécifiez l'option --location et définissez la valeur correspondant à votre emplacement.
Saisissez la commande load comme suit :
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Remplacez les éléments suivants :
LOCATION: nom de votre emplacement. L'option--locationest facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1. Vous pouvez définir une valeur par défaut correspondant à l'emplacement à l'aide du fichier .bigqueryrc.FORMAT:NEWLINE_DELIMITED_JSON,CSV,PARQUET,ORCouAVRO. Les fichiersDATASTORE_BACKUPne nécessitent pas que le mode des colonnes soit assoupli. Les colonnes des tables créées à partir des fichiers d'exportation Cloud Datastore sont toujours définies commeNULLABLE.PROJECT_ID: ID de votre projet.dataset : nom de l'ensemble de données contenant la table.TABLE: nom de la table que vous ajoutez.PATH_TO_SOURCE: URI Cloud Storage complet, liste d'URI séparés par une virgule ou chemin d'accès d'un fichier de données se trouvant sur votre machine locale.SCHEMA: chemin d'accès à un fichier de schéma JSON local. Cette option n'est utilisée que pour les fichiers CSV et JSON. Les colonnes dont le mode a été assoupli sont automatiquement obtenues à partir des fichiers Avro.
Exemples :
Saisissez la commande suivante pour ajouter un fichier de données Avro local, /tmp/mydata.avro, à mydataset.mytable à l'aide d'une tâche de chargement. Comme les colonnes dont le mode a été assoupli peuvent être automatiquement obtenues à partir des données Avro, vous n'avez pas besoin de spécifier un fichier de schéma. mydataset se trouve dans votre projet par défaut.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Saisissez la commande suivante pour ajouter les données d'un fichier JSON délimité par des retours à la ligne dans Cloud Storage à mydataset.mytable à l'aide d'une tâche de chargement. Le schéma contenant les colonnes assouplies se trouve dans un fichier de schéma JSON local nommé /tmp/myschema.json. mydataset se trouve dans votre projet par défaut.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
Entrez la commande suivante pour ajouter les données d'un fichier CSV sur votre ordinateur local dans mydataset.mytable à l'aide d'une tâche de chargement. La commande utilise la détection automatique de schéma pour déterminer les colonnes dont le mode a été assoupli dans les données sources. mydataset se trouve dans myotherproject, et non dans votre projet par défaut.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
Appelez la méthode jobs.insert. Configurez une tâche load et définissez les propriétés suivantes :
- Référencez vos données dans Cloud Storage à l'aide de la propriété
sourceUris. - Spécifiez le format de données en définissant la propriété
sourceFormat. - Spécifiez le schéma dans la propriété
schema. - Spécifiez l'option de mise à jour de schéma à l'aide de la propriété
schemaUpdateOptions. - Définissez la disposition d'écriture de la table de destination sur
WRITE_APPENDà l'aide de la propriétéwriteDisposition.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Rendre toutes les colonnes NULLABLE avec un job d'ajout
Vous pouvez assouplir toutes les colonnes d'une table lorsque vous y ajoutez des résultats de requête. Vous pouvez assouplir tous les champs obligatoires dans la table de destination en définissant l'option --schema_update_option sur ALLOW_FIELD_RELAXATION. Vous ne pouvez pas assouplir le mode des colonnes individuelles dans une table de destination à l'aide d'un job de requête ajoutant des résultats de requête. Pour assouplir le mode de colonnes individuelles avec un job de chargement ajoutant des données, consultez la section Rendre une colonne NULLABLE avec un job d'ajout.
Pour assouplir toutes les colonnes lorsque vous ajoutez des résultats de requête à une table de destination, sélectionnez l'une des options suivantes :
Console
Il n'est pas possible d'assouplir le mode d'une colonne à l'aide de la console Google Cloud .
bq
Exécutez la commande bq query pour interroger vos données et spécifiez l'option --destination_table pour indiquer la table que vous ajoutez.
Pour spécifier que vous ajoutez des résultats de requête à une table de destination existante, spécifiez l'option --append_table.
Définissez l'option --schema_update_option sur ALLOW_FIELD_RELAXATION pour indiquer que toutes les colonnes REQUIRED de la table que vous ajoutez doivent être remplacées par NULLABLE.
Spécifiez l'option use_legacy_sql=false afin d'utiliser la syntaxe GoogleSQL pour la requête.
Si la table que vous ajoutez se trouve dans un ensemble de données d'un projet qui n'est pas celui par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en utilisant le format suivant : PROJECT_ID:DATASET.
(Facultatif) Spécifiez l'option --location et définissez la valeur correspondant à votre emplacement.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
Remplacez l'élément suivant :
LOCATION: nom de votre emplacement. L'option--locationest facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1. Vous pouvez définir une valeur par défaut correspondant à l'emplacement à l'aide du fichier .bigqueryrc.PROJECT_ID: ID de votre projet.DATASET: nom de l'ensemble de données contenant la table que vous ajoutez.TABLE: nom de la table que vous ajoutez.QUERY: requête en syntaxe GoogleSQL.
Exemples :
Saisissez la commande suivante pour interroger mydataset.mytable dans votre projet par défaut et pour ajouter les résultats de la requête à mydataset.mytable2 (également dans votre projet par défaut). La commande modifie toutes les colonnes REQUIRED de la table de destination en mode NULLABLE.
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Saisissez la commande suivante pour interroger mydataset.mytable dans votre projet par défaut et pour ajouter les résultats de la requête à mydataset.mytable2 dans myotherproject. La commande modifie toutes les colonnes REQUIRED de la table de destination en mode NULLABLE.
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
Appelez la méthode jobs.insert. Configurez une tâche query et définissez les propriétés suivantes :
- Spécifiez la table de destination à l'aide de la propriété
destinationTable. - Définissez la disposition d'écriture de la table de destination sur
WRITE_APPENDà l'aide de la propriétéwriteDisposition. - Spécifiez l'option de mise à jour de schéma à l'aide de la propriété
schemaUpdateOptions. - Spécifiez la requête GoogleSQL à l'aide de la propriété
query.
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Modifier la valeur par défaut d'une colonne
Pour modifier la valeur par défaut d'une colonne, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le panneau de gauche, cliquez sur Explorer :

Si le volet de gauche n'apparaît pas, cliquez sur Développer le volet de gauche pour l'ouvrir.
Dans le volet Explorateur, développez le projet, cliquez sur Ensembles de données, puis sélectionnez l'ensemble de données.
Cliquez sur Présentation > Tables, puis sur une table.
Cliquez sur l'onglet Schéma.
Cliquez sur Modifier le schéma. Vous devrez peut-être faire défiler la page pour voir ce bouton.
Sur la page Schéma actuel, localisez le champ de premier niveau que vous souhaitez modifier.
Saisissez la valeur par défaut pour ce champ.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction LDD ALTER COLUMN SET DEFAULT :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
Modifier la description d'une colonne
Pour modifier la description d'une colonne, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le panneau de gauche, cliquez sur Explorer :

Dans le volet Explorateur, développez votre projet, cliquez sur Ensembles de données, puis sélectionnez un ensemble de données.
Cliquez sur Vue d'ensemble > Tables, puis sélectionnez le tableau.
Dans le panneau des détails, cliquez sur l'onglet Preview (Aperçu).
Cliquez sur Modifier le schéma. Vous devrez peut-être faire défiler la page pour voir ce bouton.
Sur la page Schéma actuel, repérez le champ que vous souhaitez modifier.
Saisissez la description de ce champ.
Cliquez sur Enregistrer.
SQL
Utilisez l'instruction LDD ALTER COLUMN SET OPTIONS :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
Cliquez sur Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
Gemini
Vous pouvez générer des descriptions de colonnes avec Gemini dans BigQuery à l'aide des insights sur les données. Les insights sur les données sont un moyen automatisé d'explorer, de comprendre et de gérer vos données.
Pour en savoir plus sur les insights sur les données, y compris sur les étapes de configuration, les rôles IAM requis et les bonnes pratiques permettant d'améliorer la précision des insights générés, consultez Générer des insights sur les données dans BigQuery.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le panneau de gauche, cliquez sur Explorer :

Dans le volet Explorateur, développez votre projet et votre ensemble de données, puis sélectionnez la table.
Dans le panneau des détails, cliquez sur l'onglet Preview (Aperçu).
Cliquez sur Générer.
Gemini génère des descriptions de colonnes et des insights sur la table. L'insertion des informations prend quelques minutes. Vous pouvez consulter les insights générés dans l'onglet Insights du tableau.
Pour modifier et enregistrer les descriptions de colonnes générées :
Cliquez sur Afficher les descriptions des colonnes.
Dans la section Descriptions de colonne, cliquez sur Enregistrer dans le schéma.
Les descriptions de colonnes générées sont renseignées dans le champ Nouvelle description pour chaque colonne.
Modifiez les descriptions des colonnes si nécessaire, puis cliquez sur Enregistrer.
Les descriptions de colonnes sont mises à jour immédiatement.
Pour fermer le panneau Aperçu des descriptions, cliquez sur Fermer.
Supprimer une colonne
Vous pouvez supprimer une colonne d'une table existante à l'aide de l'instruction LDD ALTER TABLE DROP COLUMN.
L'instruction ne libère pas immédiatement l'espace de stockage associé à la colonne supprimée. Pour en savoir plus sur l'impact de la suppression d'une colonne sur le stockage, consultez les détails de l'instruction ALTER TABLE DROP COLUMN.
Deux options sont possibles afin de récupérer immédiatement l'espace de stockage :
Écraser une table avec une requête
SELECT * EXCEPT:CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable );Exporter les données vers Cloud Storage, supprimer les colonnes indésirables, puis charger les données dans une nouvelle table avec le schéma approprié.