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 exportació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 de BigQuery.
En el panel Explorador, expande el proyecto y conjunto de datos y, luego, elige 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 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
NULLABLE
oREPEATED
.
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 de 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 show
con la marca--schema
y 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.SCHEMA
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.mytable
en un archivo, escribe el siguiente comando.mydataset.mytable
está en tu proyecto predeterminado.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Abre 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
NULLABLE
oREPEATED
, y tiposRECORD
para 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 columnaNULLABLE
nueva llamadacolumn4
.column4
incluye 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.SCHEMA
es 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.mytable
en 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 consola de Google Cloud 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 show
con la marca--schema
y 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.SCHEMA
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.mytable
en un archivo, escribe el siguiente comando.mydataset.mytable
está en tu proyecto predeterminado.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Abre el archivo del esquema en un editor de texto. El esquema debe verse de la manera siguiente. En este ejemplo,
column3
es una columna repetida anidada. Las columnas anidadas sonnested1
ynested2
. El arreglofields
enumera 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,nested3
es 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.mytable
en 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--location
es 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
,ORC
oDATASTORE_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--autodetect
no 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_APPEND
con 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
para 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--location
es 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'
Escribe 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_APPEND
con 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>;
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 de BigQuery.
En el Editor de consultas, escribe la siguiente consulta para elegir todos los datos de
column_two
ycolumn_three
enmydataset.mytable
, y para convertircolumn_one
deDATE
aSTRING
. La consulta usa un alias para convertircolumn_one
de modo que conserve el mismo nombre.mydataset.mytable
está 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
mytable
con 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_one
esSTRING
.
bq
Escribe el comando bq query
que se muestra a continuación para elegir 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 Explorador, expande el proyecto y conjunto de datos y, luego, elige 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 de 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 show
con la marca--schema
y 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.mytable
en un archivo, escribe el siguiente comando.mydataset.mytable
está en tu proyecto predeterminado.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Abre 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
REQUIRED
aNULLABLE
. 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.mytable
en 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
NULL
en 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 mediante la consola de Google Cloud.
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--location
es 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_BACKUP
no 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_APPEND
con 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 mediante la consola de Google Cloud.
bq
Usa el comando bq query
para consultar tus datos y especifica la marca --destination_table
para 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--location
es 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_APPEND
con 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 de BigQuery.
En el panel Explorador, expande el proyecto y conjunto de datos y, luego, elige 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 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 de 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, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande el proyecto y conjunto de datos y, luego, elige 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.
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 de 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.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
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.