Modifica esquemas de tabla
En este documento, se describe cómo cambiar las definiciones de esquema para tablas de BigQuery existentes.
Puedes hacer la mayoría de las modificaciones de esquema que se describen en este documento mediante declaraciones de lenguaje de definición de datos (DDL) de SQL. Estas declaraciones no generan cargos.
Puedes cambiar un esquema de tabla de todas las maneras que se describen en esta página si exportas los datos de tu tabla a Cloud Storage y, luego, cargas los datos en una tabla nueva con la definición de esquema modificada. Los trabajos de carga y extracción de BigQuery son gratuitos, pero se generan costos por almacenar los datos exportados en Cloud Storage. En las siguientes secciones, se describen otras formas de hacer varios tipos de modificaciones de esquema.
Agrega una columna
Puedes agregar columnas a la definición de esquema de una tabla existente a través de una de las siguientes opciones:
- Agrega una columna vacía nueva.
- Reemplaza una tabla por un trabajo de carga o consulta.
- Adjunta datos a una tabla con un trabajo de carga o consulta.
Toda columna que agregas se debe adherir a las funciones de BigQuery para los nombres de consultas. Para obtener más información sobre cómo crear componentes de esquema, consulta Especifica un esquema.
Agregar una columna vacía
Si agregas columnas nuevas a un esquema de tabla existente, las columnas deben ser NULLABLE o REPEATED. No puedes agregar una columna REQUIRED a un esquema de tabla existente. Agregar una columna REQUIRED a un esquema de tabla existente en la API o la herramienta de línea de comandos de bq genera un error. Sin embargo, puedes crear una columna REQUIRED anidada como parte de un campo RECORD nuevo.
Las columnas REQUIRED se pueden agregar solo cuando creas una tabla mientras cargas los datos o cuando creas una tabla vacía con una definición de esquema.
Para agregar columnas vacías a la definición de esquema de una tabla, sigue estos pasos:
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar:

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y, luego, selecciona un conjunto de datos.
Haz clic en Overview > Tables y, luego, selecciona la tabla.
En el panel de detalles, haz clic en la pestaña Esquema.
Haz clic en Editar esquema. Es posible que debas desplazarte para ver este botón.
En la página Esquema actual, en Campos nuevos, haz clic en Agregar campo.
- Para Nombre, escribe el nombre de la columna.
- Para Tipo, elige el tipo de datos.
- Para Modo, elige
NULLABLEoREPEATED.
Cuando termines de agregar columnas, haz clic en Guardar.
SQL
Usa la declaración DDL ALTER TABLE ADD COLUMN:
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
Haz clic en Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Ejecuta el comando bq update y proporciona un archivo de esquema JSON. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMA: la ruta al archivo de esquema JSON en tu máquina local.
Cuando especificas un esquema intercalado, no puedes especificar la descripción, el modo y el tipo RECORD (STRUCT) de la columna. Todos los modos de columna están establecidos en NULLABLE de forma predeterminada. Como resultado, si agregas una nueva columna anidada a un RECORD, debes proporcionar un archivo de esquema JSON.
Si intentas agregar columnas con una definición de esquema intercalada, debes suministrar la definición de esquema completa que incluye las columnas nuevas. Debido a que
no puedes especificar modos de columnas con una definición de esquema intercalada, la actualización
cambia cualquier columna REPEATED existente a NULLABLE, lo que
produce el siguiente error: BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
El método recomendado para agregar columnas a una tabla existente mediante la herramienta de línea de comandos de bq es suministrar un archivo de esquema JSON.
Para agregar columnas vacías al esquema de una tabla con un archivo de esquema JSON, sigue estos pasos:
Primero, ejecuta el comando
bq showcon la marca--schemay escribe el esquema de tabla existente en un archivo. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMAes el archivo de definición de esquema que se escribe en tu máquina local.
Por ejemplo, para escribir la definición de esquema de
mydataset.mytableen un archivo, escribe el siguiente comando.mydataset.mytableestá en tu proyecto predeterminado.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonAbre el archivo del esquema en un editor de texto. El esquema debe verse de la manera siguiente:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Agrega las columnas nuevas al final de la definición del esquema. Si intentas agregar columnas nuevas en otra parte del arreglo, se muestra el siguiente error:
BigQuery error in update operation: Precondition Failed.Con un archivo JSON, puedes especificar descripciones, modos
NULLABLEoREPEATED, y tiposRECORDpara columnas nuevas. Por ejemplo, mediante la definición de esquema del paso anterior, tu arreglo JSON nuevo se vería de la manera siguiente. En este ejemplo, se agrega una columnaNULLABLEnueva llamadacolumn4.column4incluye una descripción.[ { "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" } ]Para obtener más información sobre cómo trabajar con archivos de esquema JSON, consulta Especifica un archivo de esquema JSON.
Después de actualizar tu archivo de esquema, ejecuta el comando siguiente para actualizar el esquema de la tabla. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMAes el archivo de definición de esquema que se escribe en tu máquina local.
Por ejemplo, escribe el siguiente comando para actualizar la definición de esquema de
mydataset.mytableen tu proyecto predeterminado. La ruta al archivo de esquema en tu máquina local es/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
Llama al método tables.patch y usa la propiedad schema para agregar columnas vacías a la definición del esquema. Debido a que, con el método tables.update se reemplaza todo el recurso de tabla, es preferible usar el método tables.patch.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Agrega un objeto SchemaField nuevo a una copia de Table.schema y, a continuación, reemplaza el valor de la propiedad Table.schema por el esquema actualizado.Agrega una columna anidada a una columna RECORD
Además de agregar columnas nuevas al esquema de una tabla, también puedes agregar columnas anidadas nuevas a una columna RECORD. El proceso para agregar una columna anidada nueva es similar al proceso para agregar una columna nueva.
Console
La Google Cloud consola no admite agregar un nuevo campo anidado a una columna RECORD existente.
SQL
No se admite agregar un nuevo campo anidado a una columna RECORD existente mediante una instrucción de DDL de SQL.
bq
Ejecuta el comando bq update y proporciona un archivo de esquema JSON que agregue el campo anidado a la definición de esquema de la columna RECORD existente. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMA: es la ruta al archivo de esquema JSON en tu máquina local.
Cuando especificas un esquema intercalado, no puedes especificar la descripción, el modo y el tipo RECORD (STRUCT) de la columna. Todos los modos de columna están establecidos en NULLABLE de forma predeterminada. Como resultado, si agregas una nueva columna anidada a un RECORD, debes proporcionar un archivo de esquema JSON.
Para agregar una columna anidada a RECORD mediante un archivo de esquema JSON, haz lo siguiente:
Primero, ejecuta el comando
bq showcon la marca--schemay escribe el esquema de tabla existente en un archivo. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:PROJECT_ID:DATASET.TABLE.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMAes el archivo de definición de esquema que se escribe en tu máquina local.
Por ejemplo, para escribir la definición de esquema de
mydataset.mytableen un archivo, escribe el siguiente comando.mydataset.mytableestá en tu proyecto predeterminado.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonAbre el archivo del esquema en un editor de texto. El esquema debe verse de la manera siguiente. En este ejemplo,
column3es una columna repetida anidada. Las columnas anidadas sonnested1ynested2. El arreglofieldsenumera los campos anidados encolumn3.[ { "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" } ]Agrega la columna anidada nueva en el final del arreglo
fields. En este ejemplo,nested3es la columna anidada nueva.[ { "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" } ]Para obtener más información sobre cómo trabajar con archivos de esquema JSON, consulta Especifica un archivo de esquema JSON.
Después de actualizar tu archivo de esquema, ejecuta el comando siguiente para actualizar el esquema de la tabla. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMA: la ruta al archivo de esquema JSON en tu máquina local.
Por ejemplo, escribe el siguiente comando para actualizar la definición de esquema de
mydataset.mytableen tu proyecto predeterminado. La ruta al archivo de esquema en tu máquina local es/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
Llama al método tables.patch y usa la propiedad schema para agregar las columnas anidadas a tu definición de esquema. Debido a que, con el método tables.update se reemplaza todo el recurso de tabla, es preferible usar el método tables.patch.
Agrega columnas cuando reemplaces o agregues datos
Puedes agregar columnas nuevas a una tabla existente cuando cargas datos en esta y eliges reemplazar la tabla existente. Cuando reemplazas una tabla existente, el esquema de los datos que cargaste se usa para reemplazar el esquema de la tabla existente. Para obtener información sobre cómo reemplazar una tabla con un trabajo de carga, consulta el documento para el formato de tus datos:
Agrega columnas en un trabajo de anexo de carga
Puedes agregar columnas a una tabla cuando le anexas datos en un trabajo de carga. El esquema nuevo se determina a través de uno de los siguientes elementos:
- Detección automática (para archivos CSV y JSON)
- Un esquema especificado en un archivo de esquema JSON (para archivos CSV y JSON)
- Los datos fuente autodescriptivos de los archivos de exportación de Avro, ORC, Parquet y Datastore
Si especificas el esquema en un archivo JSON, las columnas nuevas se deben definir en él. Si faltan las definiciones nuevas de la columna, se muestra un error cuando intentas anexar los datos.
Cuando agregas columnas nuevas durante una operación de anexo, los valores en las columnas nuevas se establecen en NULL para las filas existentes.
Para agregar una columna nueva cuando anexas datos en una tabla durante un trabajo de carga, usa una de las siguientes opciones:
bq
Usa el comando bq load para cargar tus datos y especifica la marca --noreplace para indicar que anexas los datos a una tabla existente.
Si los datos que agregas están en formato CSV o JSON delimitado por saltos de línea, especifica la marca --autodetect para usar la detección automática de esquemas o suministra el esquema en un archivo de esquema JSON. Las columnas agregadas se pueden inferir de forma automática desde los archivos de exportación Avro o Datastore.
Establece la marca --schema_update_option en ALLOW_FIELD_ADDITION para indicar que los datos que anexas contienen nuevas columnas.
Si la tabla que anexas se encuentra en un conjunto de datos de un proyecto distinto a tu proyecto predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET.
Opcional: Proporciona la marca --location y configura el valor en tu ubicación.
Escribe el comando load de la siguiente manera:
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Reemplaza lo siguiente:
LOCATION: El nombre de tu ubicación. La marca--locationes opcional. Por ejemplo, si usas BigQuery en la región de Tokio, configura el valor de la marca comoasia-northeast1. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc.FORMAT: es el formato del esquema.NEWLINE_DELIMITED_JSON,CSV,AVRO,PARQUET,ORCoDATASTORE_BACKUP.PROJECT_ID: el ID de tu proyectoDATASET: Es el nombre del conjunto de datos que contiene la tabla.TABLE: es el nombre de la tabla que crearás.PATH_TO_SOURCE: un URI de Cloud Storage completamente calificado, una lista de URI separada por comas o la ruta a un archivo de datos en tu máquina local.SCHEMA: la ruta a un archivo de esquema JSON local. Solo se requiere un archivo de esquema para los archivos CSV y JSON cuando--autodetectno se especifica. Los esquemas de Avro y Datastore se infieren de los datos de origen.
Ejemplos:
Escribe el siguiente comando para anexar un archivo de datos de Avro local, /tmp/mydata.avro, a mydataset.mytable mediante un trabajo de carga. Debido a que los esquemas
se pueden deducir de forma automática de los datos de Avro, no es necesario usar
la marca --autodetect. mydataset está en tu proyecto predeterminado.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Escribe el siguiente comando para anexar un archivo de datos JSON delimitado por saltos de línea en Cloud Storage a mydataset.mytable mediante un trabajo de carga. La marca --autodetect se usa para detectar las columnas nuevas. mydataset está en tu proyecto predeterminado.
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
Escribe el siguiente comando para anexar un archivo de datos JSON delimitado por saltos de línea en Cloud Storage a mydataset.mytable mediante un trabajo de carga. El esquema que contiene las columnas nuevas se especifica en un archivo de esquema JSON local, /tmp/myschema.json. mydataset se encuentra en myotherproject, no en tu proyecto predeterminado.
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
Realiza una llamada al método jobs.insert. Configura un trabajo load y establece las propiedades siguientes:
- Haz referencia a tus datos en Cloud Storage mediante la propiedad
sourceUris. - Para especificar el formato de datos, configura la propiedad
sourceFormat. - Especifica el esquema en la propiedad
schema. - Especifica la opción de actualización del esquema con la propiedad
schemaUpdateOptions. - Establece la disposición de escritura de la tabla de destino en
WRITE_APPENDcon la propiedadwriteDisposition.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Agrega columnas en un trabajo de anexo de consulta
Puedes agregar columnas a una tabla cuando le anexas los resultados de consulta.
Cuando agregas columnas con una operación de anexo a un trabajo de consulta, el esquema de los resultados de la consulta se usa para actualizar el esquema de la tabla de destino. Ten en cuenta que no puedes consultar una tabla en una ubicación y escribir los resultados en una tabla de otra ubicación.
Para agregar una columna nueva cuando anexas datos en una tabla durante un trabajo de consulta, elige una de las siguientes opciones:
bq
Usa el comando bq query para consultar tus datos y especifica la marca --destination_table a fin de indicar qué tabla anexas.
Para especificar que anexas resultados de consulta a una tabla de destino existente, agrega la marca --append_table.
Establece la marca --schema_update_option en ALLOW_FIELD_ADDITION para indicar que los resultados de consulta que anexas contienen columnas nuevas.
Especifica la marca use_legacy_sql=false para usar la sintaxis de GoogleSQL en la consulta.
Si la tabla que anexas se encuentra en un conjunto de datos de un proyecto distinto a tu proyecto predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET. Ten en cuenta que la tabla que consultas y la tabla de destino deben estar en la misma ubicación.
Opcional: Proporciona la marca --location y configura el valor en tu ubicación.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
Reemplaza lo siguiente:
LOCATION: El nombre de tu ubicación. La marca--locationes opcional. Por ejemplo, si usas BigQuery en la región de Tokio, configura el valor de la marca comoasia-northeast1. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc. Ten en cuenta que no puedes agregar resultados de consultas a una tabla en otra ubicación.PROJECT_ID: el ID de tu proyectodataset: el nombre del conjunto de datos que contiene la tabla que deseas agregar.TABLE: es el nombre de la tabla que crearás.QUERY: Una consulta en la sintaxis de GoogleSQL.
Ejemplos:
Escribe el siguiente comando para consultar mydataset.mytable en tu proyecto predeterminado y anexar los resultados de consulta a mydataset.mytable2 (que también está en tu proyecto predeterminado).
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Ingresa el siguiente comando para consultar mydataset.mytable en tu proyecto predeterminado y anexar los resultados de consulta a mydataset.mytable2 en 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
Realiza una llamada al método jobs.insert. Configura un trabajo query y establece las propiedades siguientes:
- Especifica la tabla de destino con la propiedad
destinationTable. - Establece la disposición de escritura de la tabla de destino en
WRITE_APPENDcon la propiedadwriteDisposition. - Especifica la opción de actualización del esquema con la propiedad
schemaUpdateOptions. - Especifica la consulta de GoogleSQL mediante la propiedad
query.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Cambia el nombre de una columna
Para cambiar el nombre de una columna en una tabla, usa la
declaración DDL ALTER TABLE RENAME COLUMN. En el siguiente ejemplo, se cambia el nombre de la columna old_name a new_name en mytable:
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
Para obtener
más información sobre las declaraciones ALTER TABLE RENAME COLUMN, consulta
Detalles de DDL.
Cambia el tipo de datos de una columna
No se admite el cambio de tipo de datos de una columna en la consola de Google Cloud , la herramienta de línea de comandos de bq ni la API de BigQuery. Si intentas actualizar una tabla mediante la aplicación de un esquema que especifique un tipo de datos nuevo para una columna, se mostrará un error
Cambia el tipo de datos de una columna con una declaración DDL
Puedes usar GoogleSQL para realizar ciertos cambios en el tipo de datos de una
columna. Para obtener más información y una lista completa de las conversiones de tipos
de datos admitidas, consulta la
declaración DDL ALTER COLUMN SET DATA TYPE.
En el siguiente ejemplo, se crea una tabla con una columna de tipo INT64 y, luego,
se actualiza el tipo a NUMERIC:
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
En el siguiente ejemplo, se crea una tabla con una columna anidada con dos campos y, luego, se actualiza el tipo de una de las columnas de INT a 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>;
Cómo modificar tipos de columnas anidadas
Para los cambios de esquema anidados complejos, como modificar un campo dentro de un array de STRUCT, no se admite la instrucción ALTER TABLE de DDL.
Como solución alternativa, puedes usar la instrucción CREATE OR REPLACE TABLE con una instrucción SELECT para transformar los cambios del esquema anidado.
En el siguiente ejemplo, se muestra cómo transformar una columna dentro de un array de STRUCTS:
Considera una tabla samples.test con el siguiente esquema y datos:
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"));
El resultado es similar al siguiente:
+----------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":"u1","V":"v1"},{"R":"r2","U":"u2","V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------+
Supongamos que necesitas cambiar el tipo de campo U dentro del array anidado de STRUCTs a STRUCT<W STRING>. La siguiente instrucción de SQL muestra cómo lograrlo:
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
Esta sentencia crea una tabla nueva, samples.new_table, con el esquema de destino.
La función UNNEST expande el array de STRUCT dentro de t.D.L. La expresión STRUCT(tmp.U AS W) AS U construye el nuevo STRUCT con el campo W, completado con el valor del campo U original. La tabla resultante, samples.new_table, tiene el siguiente esquema y datos:
+----------------------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":{"W":"u1"},"V":"v1"},{"R":"r2","U":{"W":"u2"},"V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------------------+
Convierte el tipo de datos de una columna
Para cambiar el tipo de datos de una columna a un tipo convertible, usa una consulta en SQL para elegir los datos de la tabla, convierte la columna relevante y reemplaza la tabla. No se recomienda la conversión ni el reemplazo de tablas muy grandes, ya que esto requiere un análisis completo de las tablas.
En el siguiente ejemplo, se muestra una consulta de SQL en la que se seleccionan todos los datos de column_two y column_three en mydataset.mytable y se convierte column_one de DATE a STRING. El resultado de la consulta se usa para reemplazar los datos de la tabla existente. En la tabla cuyos datos se reemplazaron, se almacena column_one como un tipo de datos STRING.
Cuando usas CAST, la consulta puede fallar si BigQuery no puede hacer la transmisión. Para obtener más detalles sobre las reglas de conversión en GoogleSQL, consulta Transmisión.
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el Editor de consultas, escribe la siguiente consulta para elegir todos los datos de
column_twoycolumn_threeenmydataset.mytable, y para convertircolumn_onedeDATEaSTRING. La consulta usa un alias para convertircolumn_onede modo que conserve el mismo nombre.mydataset.mytableestá en tu proyecto predeterminado.SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
Haz clic en Más y elige Configuración de consulta.
En la sección Destino, haz lo siguiente:
Seleccione Establecer una tabla de destino para los resultados de la consulta (Set a destination table for query results).
En Nombre del proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene
mydataset.mytable.En Conjunto de datos, elige
mydataset.En el campo ID de tabla, escribe
mytable.En Preferencia de escritura para la tabla de destino, elige Reemplazar tabla. Con esta opción, se reemplaza
mytablecon los resultados de la consulta.
De manera opcional, elige la ubicación de tus datos.
Para actualizar la configuración, haz clic en Guardar.
Haz clic en Ejecutar.
Cuando se completa el trabajo de consulta, el tipo de datos de
column_oneesSTRING.
bq
Ingresa el comando bq query que se muestra a continuación para seleccionar todos los datos de column_two y column_three en mydataset.mytable, y convertir column_one de DATE a STRING. La consulta usa un alias para convertir column_one de modo que conserve el mismo nombre. mydataset.mytable está en tu proyecto predeterminado.
Los resultados de la consulta se escriben en mydataset.mytable con la marca --destination_table y la marca --replace se usa para reemplazar los datos de mytable. Especifica la marca use_legacy_sql=false para usar la sintaxis de GoogleSQL.
Opcionalmente, proporciona la marca --location y configura el valor según tu ubicación.
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
Para elegir todos los datos de column_two y column_three en mydataset.mytable, además de convertir column_one de DATE a STRING, haz una llamada al método jobs.insert y configura un trabajo de query. Opcionalmente, especifica tu ubicación en la propiedad location en la sección jobReference.
La consulta de SQL que se usa en el trabajo de consulta es la siguiente: SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable. La consulta usa un alias para convertir column_one de modo que conserve el mismo nombre.
Para reemplazar los datos de mytable por los resultados de la consulta, incluye mydataset.mytable en la propiedad configuration.query.destinationTable y especifica WRITE_TRUNCATE en la propiedad configuration.query.writeDisposition.
Cambia el modo de una columna
La única modificación que puedes hacer al modo de una columna es cambiar REQUIRED por NULLABLE. Cambiar el modo de una columna de REQUIRED a NULLABLE se denomina disminución de la rigurosidad del modo de una columna. También puedes disminuir la rigurosidad de una columna cuando cargas datos para reemplazar una tabla existente o cuando agregas datos a una tabla existente. No puedes cambiar el modo de una columna de NULLABLE a REQUIRED.
Haz que una columna sea NULLABLE en una tabla existente
Para cambiar el modo de una columna de REQUIRED a NULLABLE, elige una de
las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel de la izquierda, haz clic en Explorar:

En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y, luego, selecciona un conjunto de datos.
Haz clic en Overview > Tables y, luego, selecciona la tabla.
En el panel de detalles, haga clic en la pestaña Esquema.
Haz clic en Editar esquema. Es posible que debas desplazarte para ver este botón.
En la página Current schema (Esquema actual), busca el campo que deseas cambiar.
En la lista desplegable Modo, elige
NULLABLE.Para actualizar la configuración, haz clic en Guardar.
SQL
Usa la declaración DDL ALTER COLUMN DROP NOT NULL.
En el siguiente ejemplo, se cambia el modo de la columna mycolumn de
REQUIRED a NULLABLE:
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
Haz clic en Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Primero, ejecuta el comando
bq showcon la marca--schemay escribe el esquema de tabla existente en un archivo. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMA_FILE: es el archivo de definición de esquema que se escribe en tu máquina local.
Por ejemplo, para escribir la definición de esquema de
mydataset.mytableen un archivo, escribe el siguiente comando.mydataset.mytableestá en tu proyecto predeterminado.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonAbre el archivo del esquema en un editor de texto. El esquema debe verse de la manera siguiente:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Cambia el modo de una columna existente de
REQUIREDaNULLABLE. En este ejemplo, se disminuye la rigurosidad del modo decolumn1.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Para obtener más información sobre cómo trabajar con archivos de esquema JSON, consulta Especifica un archivo de esquema JSON.
Después de actualizar tu archivo de esquema, ejecuta el comando siguiente para actualizar el esquema de la tabla. Si la tabla que actualizas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoDATASET: es el nombre del conjunto de datos que contiene la tabla que estás actualizando.TABLE: Es el nombre de la tabla que estás actualizando.SCHEMA: la ruta al archivo de esquema JSON en tu máquina local.
Por ejemplo, escribe el siguiente comando para actualizar la definición de esquema de
mydataset.mytableen tu proyecto predeterminado. La ruta al archivo de esquema en tu máquina local es/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
Llama a tables.patch y usa la propiedad schema para cambiar una columna REQUIRED a NULLABLE en tu definición de esquema. Debido a que, con el método tables.update se reemplaza todo el recurso de tabla, es preferible usar el método tables.patch.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Reemplaza la propiedad Table.schema por una lista de objetos SchemaField con la propiedad mode establecida en'NULLABLE'
Haz que una columna sea NULLABLE con un trabajo de carga de anexo
Puedes disminuir la rigurosidad del modo de una columna cuando anexas datos a una tabla en un trabajo de carga. Selecciona una de las siguientes opciones según el tipo de archivo:
- Cuando se agregan datos de archivos CSV y JSON, se disminuye la rigurosidad del modo de las columnas individuales a través de la especificación de un archivo de esquema JSON.
- Cuando se agregan datos de archivos Avro, ORC o Parquet, se disminuye la rigurosidad de las columnas a
NULLen el esquema y se permite que la inferencia de esquemas detecte las columnas con rigurosidad disminuida.
Para disminuir la rigurosidad de una columna de REQUIRED a NULLABLE cuando anexas datos a una tabla
durante un trabajo de carga, elige una de las siguientes opciones:
Console
No puedes disminuir la rigurosidad del modo de una columna con la Google Cloud consola.
bq
Usa el comando bq load para cargar tus datos y especifica la marca --noreplace para indicar que anexas los datos a una tabla existente.
Si los datos que agregas están en formato CSV o JSON delimitado por saltos de línea, especifica las columnas con rigurosidad disminuida en un archivo de esquema JSON local o usa la marca --autodetect para usar la detección del esquema para detectar las columnas con rigurosidad disminuida en los datos de origen.
Las columnas con rigurosidad disminuida se pueden inferir de forma automática en los archivos Avro, ORC y Parquet. La disminución de la rigurosidad de columnas no se aplica a los anexos de exportación de Datastore. Las columnas en las tablas creadas mediante la carga de archivos de exportación de Datastore siempre son NULLABLE.
Establece la marca --schema_update_option en ALLOW_FIELD_RELAXATION para indicar que los datos que anexas contienen columnas con rigurosidad disminuida.
Si la tabla que anexas se encuentra en un conjunto de datos de un proyecto distinto a tu proyecto predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET.
Opcional: Proporciona la marca --location y configura el valor en tu ubicación.
Escribe el comando load de la siguiente manera:
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Reemplaza lo siguiente:
LOCATION: El nombre de tu ubicación. La marca--locationes opcional. Por ejemplo, si usas BigQuery en la región de Tokio, configura el valor de la marca comoasia-northeast1. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc.FORMAT: EsNEWLINE_DELIMITED_JSON,CSV,PARQUET,ORC, oAVRO. Los archivosDATASTORE_BACKUPno requieren disminuir la rigurosidad de las columnas. Las columnas de las tablas creadas a partir de archivos de exportación de Datastore siempre sonNULLABLE.PROJECT_ID: el ID de tu proyectodataset es el nombre del conjunto de datos que contiene la tabla.TABLE: es el nombre de la tabla que adjuntarás.PATH_TO_SOURCE: un URI de Cloud Storage completamente calificado, una lista de URI separada por comas o la ruta a un archivo de datos en tu máquina local.SCHEMA: la ruta a un archivo de esquema JSON local. Esta opción se usa solo para los archivos CSV y JSON. Las columnas con rigurosidad disminuida se infieren de forma automática desde los archivos Avro.
Ejemplos:
Escribe el siguiente comando para anexar un archivo de datos de Avro local, /tmp/mydata.avro, a mydataset.mytable mediante un trabajo de carga. Debido a que las columnas
con rigurosidad disminuida se pueden deducir de forma automática de los datos de Avro, no necesitas
especificar un archivo de esquema. mydataset está en tu proyecto predeterminado.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Escribe el siguiente comando para agregar datos de un archivo JSON delimitado por saltos de línea en Cloud Storage a mydataset.mytable mediante un trabajo de carga. El esquema que contiene las columnas con rigurosidad disminuida está en un archivo de esquema JSON local, /tmp/myschema.json. mydataset está en tu proyecto predeterminado.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
Escribe el siguiente comando para anexar datos de un archivo CSV en tu máquina local a mydataset.mytable mediante un trabajo de carga. El comando usa la detección automática de esquemas para detectar las columnas con rigurosidad disminuida en los datos de origen. mydataset se encuentra en myotherproject, no en tu proyecto predeterminado.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
Realiza una llamada al método jobs.insert. Configura un trabajo load y establece las propiedades siguientes:
- Haz referencia a tus datos en Cloud Storage mediante la propiedad
sourceUris. - Para especificar el formato de datos, configura la propiedad
sourceFormat. - Especifica el esquema en la propiedad
schema. - Especifica la opción de actualización del esquema con la propiedad
schemaUpdateOptions. - Establece la disposición de escritura de la tabla de destino en
WRITE_APPENDcon la propiedadwriteDisposition.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Haz que todas las columnas sean NULLABLE con un trabajo de anexo
Puedes disminuir la rigurosidad de todas las columnas de una tabla cuando le anexas los resultados de consulta. Puedes
disminuir la rigurosidad de todos los campos obligatorios en la tabla de destino si estableces la
marca --schema_update_option en ALLOW_FIELD_RELAXATION. No puedes reducir la rigurosidad de columnas individuales en una tabla de destino mediante un anexo de consulta. Para disminuir la rigurosidad de las columnas individuales con un trabajo de anexo de carga, consulta Haz que una columna sea NULLABLE con un trabajo de anexo.
Para disminuir la rigurosidad de todas las columnas cuando anexas los resultados de consulta a una tabla de destino, elige una de las siguientes opciones:
Console
No puedes disminuir la rigurosidad del modo de una columna con la Google Cloud consola.
bq
Usa el comando bq query para consultar tus datos y especifica la marca --destination_table a fin de indicar qué tabla anexas.
Para especificar que anexas resultados de consulta a una tabla de destino existente, agrega la marca --append_table.
Establece la marca --schema_update_option en ALLOW_FIELD_RELAXATION para indicar que todas las columnas REQUIRED en la tabla que anexas deben cambiarse a NULLABLE.
Especifica la marca use_legacy_sql=false para usar la sintaxis de GoogleSQL en la consulta.
Si la tabla que anexas se encuentra en un conjunto de datos de un proyecto distinto a tu proyecto predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET.
Opcional: Proporciona la marca --location y configura el valor en tu ubicación.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
Reemplaza lo siguiente:
LOCATION: El nombre de tu ubicación. La marca--locationes opcional. Por ejemplo, si usas BigQuery en la región de Tokio, configura el valor de la marca comoasia-northeast1. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc.PROJECT_ID: el ID de tu proyectoDATASET: el nombre del conjunto de datos que contiene la tabla que deseas agregar.TABLE: es el nombre de la tabla que crearás.QUERY: Una consulta en la sintaxis de GoogleSQL.
Ejemplos:
Escribe el siguiente comando para consultar mydataset.mytable en tu proyecto predeterminado y anexar los resultados de consulta a mydataset.mytable2 (que también está en tu proyecto predeterminado). El comando cambia todas las columnas REQUIRED de la tabla de destino a 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'
Escribe el siguiente comando para consultar mydataset.mytable en tu proyecto predeterminado y anexar los resultados de consulta a mydataset.mytable2 en myotherproject. El comando cambia todas las columnas REQUIRED de la tabla de destino a 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
Realiza una llamada al método jobs.insert. Configura un trabajo query y establece las propiedades siguientes:
- Especifica la tabla de destino con la propiedad
destinationTable. - Establece la disposición de escritura de la tabla de destino en
WRITE_APPENDcon la propiedadwriteDisposition. - Especifica la opción de actualización del esquema con la propiedad
schemaUpdateOptions. - Especifica la consulta de GoogleSQL mediante la propiedad
query.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Cambia el valor predeterminado de una columna
Para cambiar el valor predeterminado de una columna, elige una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar:

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En el panel Explorador, expande el proyecto, haz clic en Conjuntos de datos y, luego, selecciona el conjunto de datos.
Haz clic en Overview > Tables y, luego, en una tabla.
Haz clic en la pestaña Esquema.
Haz clic en Editar esquema. Es posible que debas desplazarte para ver este botón.
En la página Esquema actual, busca el campo de nivel superior que deseas cambiar.
Escribe el valor predeterminado para ese campo.
Haz clic en Guardar.
SQL
Usa la declaración DDL ALTER COLUMN SET DEFAULT.
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
Haz clic en Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Cómo cambiar la descripción de una columna
Para cambiar la descripción de una columna, elige una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar:

En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y, luego, selecciona un conjunto de datos.
Haz clic en Overview > Tables y, luego, selecciona la tabla.
En el panel de detalles, haga clic en la pestaña Esquema.
Haz clic en Editar esquema. Es posible que debas desplazarte para ver este botón.
En la página Current schema, busca el campo que deseas cambiar.
Ingresa la descripción de ese campo.
Haz clic en Guardar.
SQL
Usa la declaración DDL ALTER COLUMN SET OPTIONS.
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
Haz clic en Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Gemini
Puedes generar descripciones de columnas con Gemini en BigQuery utilizando estadísticas de datos. Las estadísticas de datos son una forma automatizada de explorar, comprender y seleccionar tus datos.
Para obtener más información sobre las estadísticas de datos, incluidos los pasos de configuración, los roles de IAM obligatorios y las prácticas recomendadas para mejorar la precisión de las estadísticas generadas, consulta Genera estadísticas de datos en BigQuery.
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar:

En el panel Explorador, expande el proyecto y el conjunto de datos y, luego, selecciona la tabla.
En el panel de detalles, haga clic en la pestaña Esquema.
Haz clic en Generar.
Gemini genera descripciones de las columnas y estadísticas sobre la tabla. La información tarda unos minutos en propagarse. Puedes ver las estadísticas generadas en la pestaña Estadísticas de la tabla.
Para editar y guardar las descripciones de las columnas generadas, haz lo siguiente:
Haz clic en Ver descripciones de columnas.
En la sección Descripciones de columnas, haz clic en Guardar en el esquema.
Las descripciones de las columnas generadas se completan en el campo Nueva descripción de cada columna.
Edita las descripciones de las columnas según sea necesario y, luego, haz clic en Guardar.
Las descripciones de las columnas se actualizan de inmediato.
Para cerrar el panel Preview descriptions, haz clic en Cerrar.
Borra una columna
Puedes borrar una columna de una tabla existente con la declaración DDL ALTER TABLE DROP COLUMN.
La declaración no libera de inmediato el almacenamiento asociado a la columna descartada. Para obtener más información sobre el impacto en el almacenamiento cuando descartas una columna en el almacenamiento, consulta Detalles de la declaración ALTER TABLE DROP COLUMN.
Hay dos opciones para reclamar el almacenamiento de inmediato:
Reemplaza una tabla con una consulta
SELECT * EXCEPT:CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable );Exporta los datos a Cloud Storage, borra las columnas no deseadas y, luego, carga los datos en una tabla nueva con el esquema correcto.