Especifica los valores predeterminados de la columna
En esta página, se describe cómo configurar un valor predeterminado para una columna en una tabla de BigQuery. Cuando agregas una fila a una tabla que no contiene datos en una columna con un valor predeterminado, el valor predeterminado se escribe en la columna.
Expresión de valor predeterminada
La expresión de valor predeterminada para una columna debe ser un literal o una de las siguientes funciones:
CURRENT_DATECURRENT_DATETIMECURRENT_TIMECURRENT_TIMESTAMPGENERATE_UUIDRANDSESSION_USERST_GEOGPOINT
Puedes redactar un valor predeterminado STRUCT o ARRAY con estas funciones, como [CURRENT_DATE(), DATE '2020-01-01'].
Las funciones se evalúan justo antes de que se escriban los datos en la tabla durante el procesamiento del trabajo. El tipo del valor predeterminado debe coincidir o convertirse al tipo de columna a la que se aplica. Si no se establece ningún valor predeterminado, el valor predeterminado es NULL.
Configura valores predeterminados
Puedes establecer el valor predeterminado para las columnas cuando creas una tabla nueva. Usa la declaración DDL CREATE TABLE y agrega la palabra clave DEFAULT y la expresión de valor predeterminada después del nombre y el tipo de columna. En el siguiente ejemplo, se crea una tabla llamada simple_table con dos columnas STRING, a y b. La columna b tiene el valor predeterminado 'hello'.
CREATE TABLE mydataset.simple_table ( a STRING, b STRING DEFAULT 'hello');
Cuando insertas datos en simple_table que omite la columna b, se usa el valor predeterminado 'hello', por ejemplo:
INSERT mydataset.simple_table (a) VALUES ('val1'), ('val2');
La tabla simple_table contiene los siguientes valores:
+------+-------+ | a | b | +------+-------+ | val1 | hello | | val2 | hello | +------+-------+
Si una columna tiene el tipo STRUCT, debes establecer el valor predeterminado para todo el campo STRUCT. No puedes establecer el valor predeterminado para un subconjunto de los campos. El valor predeterminado para un arreglo no puede ser NULL ni contener ningún elemento NULL.
En el siguiente ejemplo, se crea una tabla llamada complex_table y se establece un valor predeterminado para la columna struct_col, que contiene campos anidados, incluido un tipo ARRAY:
CREATE TABLE mydataset.complex_table ( struct_col STRUCT<x STRUCT<x1 TIMESTAMP, x2 NUMERIC>, y ARRAY<DATE>> DEFAULT ((CURRENT_TIMESTAMP(), NULL), [DATE '2022-01-01', CURRENT_DATE()]) );
No puedes establecer valores predeterminados que violen una restricción en la columna, como un valor predeterminado que no cumple con un tipo con parámetro o un valor predeterminado NULL cuando el modo de la columna es REQUIRED.
Cambia los valores predeterminados
Para cambiar el valor predeterminado de una columna, selecciona 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.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Configurar el valor predeterminado para una columna solo afecta las inserciones futuras en la tabla
y no cambia ningún dato de la tabla existente. En el siguiente ejemplo, se establece el valor predeterminado de la columna a en SESSION_USER();
ALTER TABLE mydataset.simple_table ALTER COLUMN a SET DEFAULT SESSION_USER();
Si insertas una fila en simple_table que omite la columna a, se usa el usuario de la sesión actual.
INSERT mydataset.simple_table (b) VALUES ('goodbye');
La tabla simple_table contiene los siguientes valores:
+------------------+---------+ | a | b | +------------------+---------+ | val1 | hello | | val2 | hello | | user@example.com | goodbye | +------------------+---------+
Quita los valores predeterminados
Para quitar el valor predeterminado de una columna, selecciona 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 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, busca el campo de nivel superior que deseas cambiar.
Ingresa
NULLpara el valor predeterminado.Haz clic en Guardar.
SQL
Usa la declaración DDL ALTER COLUMN DROP DEFAULT.
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, ingresa la siguiente sentencia:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name DROP DEFAULT;
También puedes quitar el valor predeterminado de una columna si cambias su valor a
NULLcon la declaración DDLALTER COLUMN SET DEFAULT.Haz clic en Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Usa declaraciones DML con valores predeterminados
Puedes agregar filas con valores predeterminados a una tabla con la INSERT sentencia DML.
El valor predeterminado se usa cuando no se especifica el valor de una columna o cuando se usa la palabra clave DEFAULT en lugar de la expresión de valor. En el siguiente ejemplo, se crea una tabla y se inserta una fila en la que cada valor es el predeterminado:
CREATE TABLE mydataset.mytable ( x TIME DEFAULT CURRENT_TIME(), y INT64 DEFAULT 5, z BOOL); INSERT mydataset.mytable (x, y, z) VALUES (DEFAULT, DEFAULT, DEFAULT);
La tabla mytable se ve de la siguiente manera:
+-----------------+---+------+ | x | y | z | +-----------------+---+------+ | 22:13:24.799555 | 5 | null | +-----------------+---+------+
La columna z no tiene un valor predeterminado, por lo que se usa NULL como predeterminado. Cuando el valor predeterminado es una función, como CURRENT_TIME(), se evalúa en el momento en que se escribe el valor. Llamar a INSERT con el valor predeterminado para la columna x vuelve a generar un valor diferente para TIME. En el siguiente ejemplo, solo la columna z tiene un valor establecido de forma explícita, y las columnas omitidas usan sus valores predeterminados:
INSERT mydataset.mytable (z) VALUES (TRUE);
La tabla mytable se ve de la siguiente manera:
+-----------------+---+------+ | x | y | z | +-----------------+---+------+ | 22:13:24.799555 | 5 | null | | 22:18:29.890547 | 5 | true | +-----------------+---+------+
Puedes actualizar una tabla con valores predeterminados mediante la sentencia DML MERGE.
En el siguiente ejemplo, se crean dos tablas y se actualiza una de ellas con una declaración MERGE:
CREATE TABLE mydataset.target_table ( a