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'exportation 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 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 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 show
avec l'option--schema
et é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.mytable
dans un fichier, entrez la commande suivante.mydataset.mytable
se trouve dans votre projet par défaut.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Ouvrez 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
NULLABLE
ouREPEATED
, et des typesRECORD
pour 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 colonneNULLABLE
nomméecolumn4
est ajoutée. Cette colonnecolumn4
comprend 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.mytable
dans votre projet par défaut./tmp/myschema.json
est 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 show
avec l'option--schema
et é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.mytable
dans un fichier, entrez la commande suivante.mydataset.mytable
se trouve dans votre projet par défaut.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Ouvrez le fichier de schéma dans un éditeur de texte. Le fichier doit se présenter comme suit. Dans cet exemple,
column3
correspond à une colonne imbriquée répétée. Les colonnes imbriquées sontnested1
etnested2
. Le tableaufields
ré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,nested3
correspond à 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.mytable
dans votre projet par défaut./tmp/myschema.json
est 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--location
est 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
,ORC
ouDATASTORE_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--autodetect
n'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--location
est 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, de l'outil de ligne de commande bq ou 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>;
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_two
etcolumn_three
dansmydataset.mytable
, ainsi que pour castercolumn_one
deDATE
enSTRING
. La requête utilise un alias pour castercolumn_one
avec le même nom.mydataset.mytable
se 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_one
devientSTRING
.
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 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 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 show
avec l'option--schema
et é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.mytable
dans un fichier, entrez la commande suivante.mydataset.mytable
se trouve dans votre projet par défaut.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Ouvrez 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
REQUIRED
au modeNULLABLE
. Dans cet exemple, le mode de la colonnecolumn1
est 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.mytable
dans votre projet par défaut./tmp/myschema.json
est 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
NULL
dans 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--location
est 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
,ORC
ouAVRO
. Les fichiersDATASTORE_BACKUP
ne 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--location
est 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 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 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 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 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.
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é.