Usa declaraciones del lenguaje de definición de datos

Las declaraciones del lenguaje de definición de datos (DDL) te permiten crear y modificar recursos de BigQuery mediante la sintaxis de consultas SQL estándar. Actualmente, puedes usar comandos de DDL en BigQuery para las siguientes tareas:

Declaración CREATE TABLE

Para crear una tabla en BigQuery, usa la declaración DDL CREATE TABLE.

Sintaxis

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE}
[[project_name.]dataset_name.]table_name
[(
  column_name column_schema[, ...]
)]
[PARTITION BY partition_expression]
[CLUSTER BY clustering_column_list]
[OPTIONS(table_option_list)]
[AS query_statement]

Donde:

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE} es una de las siguientes declaraciones:

  • CREATE TABLE: crea una nueva tabla.
  • CREATE TABLE IF NOT EXISTS: crea una nueva tabla solo si la tabla no existe actualmente en el conjunto de datos especificado.
  • CREATE OR REPLACE TABLE: crea una tabla y reemplaza una tabla existente con el mismo nombre en el conjunto de datos especificado.

Las declaraciones CREATE TABLE deben cumplir con las siguientes reglas:

  • Se permite solo una declaración CREATE.
  • La lista de columnas, la cláusula as query_statement o ambas deben estar presentes.
  • Cuando tanto la lista de columnas como la cláusula as query_statement están presentes, BigQuery ignora los nombres en la cláusula as query_statement y hace coincidir las columnas con la lista de columnas por posición.
  • Cuando la cláusula as query_statement está presente, pero la lista de columnas está ausente, BigQuery determina los nombres y tipos de columnas a partir de la cláusula as query_statement.
  • Los nombres de las columnas deben especificarse mediante la lista de columnas o con la cláusula as query_statement.
  • No se permiten nombres de columnas duplicados.

Ruta de acceso de la tabla

project_name es el nombre del proyecto en el que crearás la tabla. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos en el que crearás la tabla. El valor predeterminado es defaultDataset en la solicitud.

table_name es el nombre de la tabla que creas. El nombre de la tabla debe ser único por conjunto de datos. El nombre de la tabla debe cumplir los siguientes requisitos:

  • Contiene hasta 1,024 caracteres
  • Contiene letras (mayúsculas o minúsculas), números o guiones bajos

column_name y column_schema

(column_name column_schema[, ...]) contiene la información de esquema de la tabla en una lista separada por comas:

  • column_name es el nombre de la columna. Los nombres de columnas deben tener las siguientes características:
    • Contener solo letras (a-z, A-Z), números (0-9) o guiones bajos (_)
    • Comenzar con una letra o un guion bajo
    • Tener un máximo de 128 caracteres
  • column_schema es similar a un tipo de datos, pero admite una restricción NOT NULL opcional para tipos distintos de ARRAY. column_schema también admite opciones en columnas de nivel superior y campos STRUCT.
column_schema :=
   {simple_type [NOT NULL] |
    STRUCT<field_list> [NOT NULL] |
    ARRAY<array_element_schema>}
   [OPTIONS(column_option_list)]

field_list := field_name column_schema [, ...]

array_element_schema := {simple_type | STRUCT<field_list>} [NOT NULL]

simple_type es cualquier tipo de datos compatible aparte de STRUCT y ARRAY.

field_name es el nombre del campo struct. Los nombres de los campos struct tienen las mismas restricciones que los nombres de columnas.

Cuando la restricción NOT NULL está presente para una columna o un campo, la columna o el campo se crean con el modo REQUIRED. Por el contrario, cuando la restricción NOT NULL está ausente, la columna o el campo se crean con el modo NULLABLE.

Las columnas y los campos del tipo ARRAY no son compatibles con el modificador NOT NULL. Por ejemplo, un column_schema de ARRAY<INT64> NOT NULL no es válido, ya que las columnas ARRAY tienen el modo REPEATED y pueden estar vacías, pero no pueden ser NULL. Un elemento ARRAY en una tabla nunca puede ser NULL, independientemente de si se especifica la restricción NOT NULL. Por ejemplo, ARRAY<INT64> es equivalente a ARRAY<INT64 NOT NULL>.

El atributo NOT NULL del column_schema de una tabla no se propaga a través de las consultas en la tabla. Si la tabla T contiene una columna declarada como x INT64 NOT NULL, por ejemplo, CREATE TABLE dataset.newtable AS SELECT x FROM T crea una tabla llamada dataset.newtable en la que x es NULLABLE.

column_schema solo se puede usar en la lista de definición de columnas de las declaraciones CREATE TABLE. No se puede utilizar como tipo en las expresiones. Por ejemplo, CAST(1 AS INT64 NOT NULL) no es válido.

partition_expression

PARTITION BY es una cláusula opcional que controla la partición de la tabla. partition_expression es una expresión que determina cómo particionar la tabla. La expresión de partición puede contener los siguientes valores:

  • PARTITION BY DATE(_PARTITIONTIME): particiona la tabla con la marca de tiempo basada en la fecha en _PARTITIONTIME pseudo column. Esta sintaxis solo se admite con CREATE TABLE sin la cláusula AS query_statement.
  • PARTITION BY _PARTITIONDATE: particiona la tabla con _PARTITIONDATE pseudo column. Esta sintaxis solo se admite con CREATE TABLE sin la cláusula AS query_statement y es equivalente a usar PARTITION BY DATE(_PARTITIONTIME).
  • PARTITION BY DATE(<timestamp_column>): particiona la tabla con la fecha de la columna TIMESTAMP.
  • PARTITION BY <date_column>: particiona la tabla mediante la columna DATE.
  • PARTITION BY <integer_column>: particiona la tabla mediante la columna INTEGER.

clustering_column_list

CLUSTER BY es una cláusula opcional que controla el agrupamiento en clústeres de la tabla. clustering_column_list es una lista separada por comas que determina cómo agrupar la tabla. La lista de columnas de agrupación en clústeres puede contener un máximo de cuatro de estas columnas.

table_option_list

La lista de opciones te permite configurar las opciones de la tabla, como una etiqueta y una fecha y hora de vencimiento. Puedes incluir varias opciones mediante una lista separada por comas.

Especifica una lista de opciones de la tabla con el siguiente formato:

NAME=VALUE, ...

La combinación de NAME y VALUE debe ser una de las siguientes:

NAME VALUE Detalles
expiration_timestamp TIMESTAMP

Ejemplo: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Esta propiedad es equivalente a la propiedad de recurso de tabla expirationTime.

partition_expiration_days

FLOAT64

Ejemplo: partition_expiration_days=7

Esta propiedad es equivalente a la propiedad de recurso de tabla timePartitioning.expirationMs, pero utiliza días en lugar de milisegundos. Un día equivale a 86,400,000 milisegundos o 24 horas.

Esta propiedad solo se puede configurar si la tabla está particionada.

require_partition_filter

BOOL

Ejemplo: require_partition_filter=true

Esta propiedad es equivalente a la propiedad de recurso de tabla timePartitioning.requirePartitionFilter.

Esta propiedad solo se puede configurar si la tabla está particionada.

kms_key_name

STRING

Ejemplo: kms_key_name="projects/project_id/locations/location/keyRings/keyring/cryptoKeys/key"

Esta propiedad es equivalente a la propiedad de recurso de tabla encryptionConfiguration.kmsKeyName.

Para obtener más detalles, consulta Cómo proteger los datos con claves de Cloud KMS.

friendly_name

STRING

Ejemplo: friendly_name="my_table"

Esta propiedad es equivalente a la propiedad de recurso de tabla friendlyName.

description

STRING

Ejemplo: description="a table that expires in 2025"

Esta propiedad es equivalente a la propiedad de recurso de tabla description.

labels

ARRAY<STRUCT<STRING, STRING>>

Ejemplo: labels=[("org_unit", "development")]

Esta propiedad es equivalente a la propiedad de recurso de tabla labels.

VALUE es una expresión constante que contiene solo literales, parámetros de búsqueda y funciones escalares. Si la expresión constante se evalúa como null, el NAME de la opción correspondiente se ignora.

La expresión constante no puede contener lo siguiente:

  • Una referencia a una tabla
  • Subconsultas o instrucciones de SQL, como SELECT, CREATE y UPDATE
  • Funciones definidas por el usuario, funciones agregadas o funciones estadísticas
  • Las siguientes funciones escalares:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

column_option_list

La column_option_list de column_schema te permite especificar opciones de campo o columna opcionales. Las opciones de columna tienen la misma sintaxis y los mismos requisitos que las opciones de tabla, pero la lista de elementos NAME y VALUE difiere:

NAME VALUE Detalles
description

STRING

Ejemplo: description="a unique id"

Esta propiedad es equivalente a la propiedad de recurso de tabla schema.fields[].description.

query_statement

La cláusula AS query_statement especifica la consulta a partir de la cual se debe crear la tabla. Consulta la Sintaxis de consultas de SQL estándar para conocer la forma compatible de query_statement.

Limitaciones conocidas:

  • No es posible crear una tabla particionada por tiempo de transferencia a partir del resultado de una consulta. En cambio, usa una declaración DDL CREATE TABLE para crear la tabla y, luego, utiliza una Declaración DML INSERT a fin de ingresar datos.
  • No es posible utilizar el modificador OR REPLACE para reemplazar una tabla con un tipo diferente de partición. En su lugar, descarta la tabla (con DROP) y usa una declaración CREATE TABLE ... AS SELECT ... para volver a crearla.

Tablas temporales

Para crear una tabla temporal, usa la palabra clave TEMP o TEMPORARY cuando uses la declaración CREATE TABLE.

Sintaxis

{ CREATE {TEMP|TEMPORARY} TABLE |
  CREATE {TEMP|TEMPORARY} TABLE IF NOT EXISTS |
  CREATE OR REPLACE {TEMP|TEMPORARY} TABLE } ...

Además del uso de TEMP o TEMPORARY, la sintaxis es idéntica a la sintaxis CREATE TABLE.

Cuando se crea una tabla temporal, la tabla existirá durante todo el ciclo de vida de la secuencia de comandos actual. Los nombres de tablas temporales no deben estar calificados, es decir, el nombre no tiene un calificador de proyecto o conjunto de datos. Las tablas temporales creadas dentro de un procedimiento todavía están disponibles cuando vuelve la llamada del procedimiento, hasta que finaliza la secuencia de comandos primaria.

Para crear una tabla temporal, sigue estos pasos:

CREATE TEMP TABLE Example
(
  x INT64,
  y STRING
);

INSERT INTO Example
VALUES (5, 'foo');

INSERT INTO Example
VALUES (6, 'bar');

SELECT *
FROM Example;

Esta secuencia de comandos muestra el siguiente resultado:

+-----+---+-----+
| Row | x | y   |
+-----+---|-----+
| 1   | 5 | foo |
| 2   | 6 | bar |
+-----+---|-----+

Puedes eliminar una tabla temporal explícitamente antes de que se complete la secuencia de comandos mediante la ejecución de una declaración DROP TABLE:

CREATE TEMP TABLE foo(x INT64);
SELECT * FROM foo;  -- Succeeds
DROP TABLE foo;
SELECT * FROM foo;  -- Results in an error

Cuando se usan tablas temporales con un conjunto de datos predeterminado, los nombres de tablas no calificados se refieren a lo siguiente:

  • una tabla temporal, si existe una
  • de lo contrario, una tabla en el conjunto de datos predeterminado

La excepción es para las declaraciones CREATE TABLE, en las que la tabla de destino se considera una tabla temporal solo si está presente la palabra clave TEMP o TEMPORARY.

Por ejemplo, considera la siguiente secuencia de comandos:

-- Create table t1 in the default dataset
CREATE TABLE t1 (x INT64);

-- Create temporary table t1
CREATE TEMP TABLE t1 (x INT64);

-- This statement will select from the temporary table
SELECT * FROM t1;

-- Drop the temporary table
DROP TABLE t1;

-- Now that the temporary table is dropped, this statement will select from
-- the table in the default dataset
SELECT * FROM t1;

Puedes indicar explícitamente que se refiere a una tabla temporal si calificas el nombre de la tabla con _SESSION:

-- Create a temp table
CREATE TEMP TABLE t1 (x INT64);

-- Create a temp table using the `_SESSION` qualifier
CREATE TEMP TABLE _SESSION.t2 (x INT64);

-- Select from a temporary table using the `_SESSION` qualifier
SELECT * FROM _SESSION.t1;

Si usas el calificador _SESSION para una consulta de una tabla temporal que no existe, recibirás un error que indica que la tabla no existe. Por ejemplo, si no hay una tabla temporal llamada t3, recibirás el error incluso si existe una tabla llamada t3 en el conjunto de datos predeterminado.

No puedes usar _SESSION para crear una tabla no temporal:

CREATE TABLE _SESSION.t4 (x INT64);  -- Fails

Ejemplos de CREATE TABLE

Crea una tabla nueva

La declaración DDL CREATE TABLE crea una tabla con las opciones especificadas. Si el nombre de la tabla ya existe en el conjunto de datos, se muestra el siguiente error:

Already Exists: project_id:dataset.table

En el siguiente ejemplo, se crea una tabla particionada llamada newtable en mydataset. Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.newtable`.

En la tabla se usa la siguiente partition_expression para particionar la tabla: PARTITION BY _PARTITIONDATE. Esta expresión particiona la tabla con la fecha en la seudocolumna _PARTITIONDATE.

El esquema de la tabla contiene dos columnas:

  • x: un número entero, con la descripción “Un campo opcional de NÚMERO ENTERO”
  • y: UNA STRUCT que contiene dos columnas:

    • a: un arreglo de strings, con la descripción “Un campo de STRING repetido”
    • b: un valor booleano

La lista de opciones de la tabla especifica lo siguiente:

  • Fecha y hora de vencimiento de la tabla: 1 de enero de 2025, a las 00:00:00 UTC
  • Vencimiento de la partición: 1 día
  • Descripción: Una tabla que vence en 2025
  • Etiqueta: org_unit = desarrollo

Para crear una tabla nueva con DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.newtable
     (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >
     )
     PARTITION BY _PARTITIONDATE
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2025, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE mydataset.newtable
     (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >
     )
     PARTITION BY _PARTITIONDATE
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2025, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable
(
  x INT64 OPTIONS(description="An optional INTEGER field"),
  y STRUCT<
    a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
    b BOOL
  >
)
PARTITION BY _PARTITIONDATE
OPTIONS(
  expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
  partition_expiration_days=1,
  description="a table that expires in 2025, with each partition living for 24 hours",
  labels=[("org_unit", "development")]
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla nueva a partir de una tabla existente

La declaración DDL CREATE TABLE ... AS SELECT crea una tabla a partir de una consulta. Si el nombre de la tabla ya existe en el conjunto de datos, se muestra el siguiente error:

Already Exists: project_id:dataset.table

En el siguiente ejemplo, se crea una tabla llamada top_words en mydataset. Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.rainy_days`.

El esquema de la tabla contiene 2 columnas:

  • corpus: el nombre de un corpus de Shakespeare
  • top_words : un ARRAY de STRUCT que contiene 2 campos: word (una STRING) y word_count (un INT64 con el recuento de palabras )

La lista de opciones de la tabla especifica lo siguiente:

  • Descripción: las diez palabras más frecuentes en el corpus de Shakespeare

Para crear una tabla nueva con DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count)
                 ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM `bigquery-public-data.samples.shakespeare`
     GROUP BY corpus;'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla solo si la tabla no existe

La declaración DDL CREATE TABLE IF NOT EXISTS crea una tabla con las opciones especificadas solo si el nombre de la tabla no existe en el conjunto de datos. Si el nombre de la tabla existe en el conjunto de datos, no se muestra ningún error y no se realiza ninguna acción.

En el siguiente ejemplo, se crea una tabla llamada newtable en mydataset solo si no existe una tabla llamada newtable en mydataset. Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.newtable`.

El esquema de la tabla contiene 2 columnas:

  • x: un número entero
  • y: un STRUCT que contiene a (un arreglo de strings) y b (un valor booleano)

La lista de opciones de la tabla especifica lo siguiente:

  • Fecha y hora de vencimiento: 1 de enero de 2025, a las 00:00:00 UTC
  • Descripción: Una tabla que vence en 2025
  • Etiqueta: org_unit = desarrollo

Para crear una tabla nueva con DDL solo si el nombre de la tabla no existe en el conjunto de datos, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
       description="a table that expires in 2025",
       labels=[("org_unit", "development")]
     )
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
       description="a table that expires in 2025",
       labels=[("org_unit", "development")]
     )
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
   description="a table that expires in 2025",
   labels=[("org_unit", "development")]
 )'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea o reemplaza una tabla

La declaración DDL CREATE OR REPLACE TABLE crea una tabla con las opciones especificadas. Si el nombre de la tabla existe en el conjunto de datos, esta se reemplaza con una tabla vacía:

En el siguiente ejemplo, se crea una tabla llamada newtable en mydataset y, si newtable existe en mydataset, esta se reemplaza. Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.newtable`.

El esquema de la tabla contiene 2 columnas:

  • x: un número entero
  • y: un STRUCT que contiene a (un arreglo de strings) y b (un valor booleano)

La lista de opciones de la tabla especifica lo siguiente:

  • Fecha y hora de vencimiento: 1 de enero de 2025, a las 00:00:00 UTC
  • Descripción: Una tabla que vence en 2025
  • Etiqueta: org_unit = desarrollo

Para crear una tabla nueva con DDL y reemplazar una tabla con el mismo nombre, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
       description="a table that expires in 2025",
       labels=[("org_unit", "development")]
     )
     

  4. Haz clic en ejecutar.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
       description="a table that expires in 2025",
       labels=[("org_unit", "development")]
     )
     

  4. Haz clic en Ejecutar consulta.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC",
   description="a table that expires in 2025",
   labels=[("org_unit", "development")]
 )'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla con columnas REQUIRED

El modificador NOT NULL en la lista de definición de columnas de una declaración CREATE TABLE especifica que una columna o un campo se crea en modo REQUIRED.

En el siguiente ejemplo, se crea una tabla llamada newtable en mydataset. Si el nombre de la tabla ya existe en el conjunto de datos, se muestra el siguiente error:

Already Exists: project_id:dataset.table

Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.newtable`.

El esquema de la tabla contiene 3 columnas:

  • x: un número entero REQUIRED
  • y: un STRUCT REQUIRED que contiene a (un arreglo de strings), b (un valor booleano REQUIRED) y c (un valor flotante NULLABLE)
  • z: una string NULLABLE

Para crear una tabla nueva con columnas REQUIRED mediante DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE my_dataset.new_table (
       x INT64 NOT NULL,
       y STRUCT<
         a ARRAY<STRING>,
         b BOOL NOT NULL,
         c FLOAT64
       > NOT NULL,
       z STRING
     )
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE my_dataset.new_table (
       x INT64 NOT NULL,
       y STRUCT<
         a ARRAY<STRING>,
         b BOOL NOT NULL,
         c FLOAT64
       > NOT NULL,
       z STRING
     )
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
 CREATE TABLE my_dataset.new_table (
   x INT64 NOT NULL,
   y STRUCT<
     a ARRAY<STRING>,
     b BOOL NOT NULL,
     c FLOAT64
   > NOT NULL,
   z STRING
 )'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla con particiones

En el siguiente ejemplo, se crea una tabla particionada llamada newtable en mydataset mediante una columna DATE. Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.newtable`.

El esquema de la tabla contiene 2 columnas:

  • transaction_id: un número entero
  • transaction_date: una fecha

La lista de opciones de la tabla especifica lo siguiente:

  • Vencimiento de la partición: tres días
  • Descripción : una tabla particionada por transaction_date

Para crear una tabla nueva con DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
     PARTITION BY transaction_date
     OPTIONS(
       partition_expiration_days=3,
       description="a table partitioned by transaction_date"
     )
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
     PARTITION BY transaction_date
     OPTIONS(
       partition_expiration_days=3,
       description="a table partitioned by transaction_date"
     )
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
PARTITION BY transaction_date
OPTIONS(
  partition_expiration_days=3,
  description="a table partitioned by transaction_date"
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla con particiones a partir del resultado de una consulta

En el siguiente ejemplo, se crea una tabla particionada llamada days_with_rain en mydataset mediante una columna DATE. Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.newtable`.

El esquema de la tabla contiene 2 columnas:

  • date: la DATE de recopilación de los datos
  • station_name: el nombre de la estación meteorológica como un valor STRING
  • prcp: el volumen de precipitaciones en pulgadas como un valor FLOAT64

La lista de opciones de la tabla especifica lo siguiente:

  • Vencimiento de la partición: un año
  • Descripción: estaciones meteorológicas con precipitaciones, particionada por día

Para crear una tabla nueva con DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.days_with_rain
     PARTITION BY date
     OPTIONS (
       partition_expiration_days=365,
       description="weather stations with precipitation, partitioned by day"
     ) AS
     SELECT
       DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
       (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
        WHERE stations.usaf = stn) AS station_name,  -- Stations can have multiple names
       prcp
     FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
     WHERE prcp != 99.9  -- Filter unknown values
       AND prcp > 0      -- Filter stations/days with no precipitation
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE mydataset.days_with_rain
     PARTITION BY date
     OPTIONS (
       partition_expiration_days=365,
       description="weather stations with precipitation, partitioned by day"
     ) AS
     SELECT
       DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
       (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
        WHERE stations.usaf = stn) AS station_name,  -- Stations can have multiple names
       prcp
     FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
     WHERE prcp != 99.9  -- Filter unknown values
       AND prcp > 0      -- Filter stations/days with no precipitation
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.days_with_rain
PARTITION BY date
OPTIONS (
  partition_expiration_days=365,
  description="weather stations with precipitation, partitioned by day"
) AS
SELECT
  DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
  (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
   WHERE stations.usaf = stn) AS station_name,  -- Stations can have multiple names
  prcp
FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
WHERE prcp != 99.9  -- Filter unknown values
  AND prcp > 0      -- Filter stations/days with no precipitation
'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla agrupada en clústeres

Ejemplo 1

En el siguiente ejemplo, se crea una tabla agrupada en clústeres llamada myclusteredtable en mydataset. La tabla es una tabla particionada; particionada por una columna TIMESTAMP y agrupada por una columna STRING llamada customer_id.

Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.myclusteredtable`.

El esquema de la tabla contiene 3 columnas:

  • timestamp: la fecha y hora de recopilación de los datos como TIMESTAMP
  • customer_id: el ID de cliente como STRING
  • transaction_amount: el importe de la transacción como NUMERIC

La lista de opciones de la tabla especifica lo siguiente:

  • Vencimiento de la partición: 3 días
  • Descripción: "Una tabla agrupada en clústeres por customer_id"

Para crear una tabla agrupada en clústeres con una declaración DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL CREATE TABLE en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(timestamp)
CLUSTER BY customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Ejemplo 2

En el siguiente ejemplo, se crea una tabla agrupada en clústeres llamada myclusteredtable en mydataset. Es una tabla particionada por tiempo de transferencia.

Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.myclusteredtable`.

El esquema de la tabla contiene 3 columnas:

  • timestamp: la fecha y hora de recopilación de los datos como TIMESTAMP
  • customer_id: el ID de cliente como STRING
  • transaction_amount: el importe de la transacción como NUMERIC

La lista de opciones de la tabla especifica lo siguiente:

  • Vencimiento de la partición: 3 días
  • Descripción: "Una tabla agrupada en clústeres por customer_id"

Para crear una tabla agrupada en clústeres con una declaración DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(_PARTITIONTIME)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL CREATE TABLE en el área de texto Consulta nueva.

     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(_PARTITIONTIME)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(_PARTITIONTIME)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla agrupada en clústeres a partir del resultado de una consulta

En el siguiente ejemplo, se crea una tabla agrupada en clústeres llamada myclusteredtable en mydataset con el resultado de una consulta. Se trata de una tabla particionada por una columna TIMESTAMP.

Si no tienes un proyecto predeterminado configurado, agrégalo al nombre del conjunto de datos en el siguiente formato: `project_id.dataset.table` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.myclusteredtable`.

El esquema de la tabla contiene 3 columnas:

  • timestamp: la fecha y hora de recopilación de los datos como TIMESTAMP
  • customer_id: el ID de cliente como STRING
  • transaction_amount: el importe de la transacción como NUMERIC

La lista de opciones de la tabla especifica lo siguiente:

  • Vencimiento de la partición: 3 días
  • Descripción: "Una tabla agrupada en clústeres por customer_id"

Para crear una tabla agrupada en clústeres con una declaración DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )
     AS SELECT * FROM mydataset.myothertable

  4. Haz clic en ejecutar. Cuando se completa la consulta, la tabla aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL CREATE TABLE en el área de texto Consulta nueva.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )
     AS SELECT * FROM mydataset.myothertable

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
  (
    timestamp TIMESTAMP,
    customer_id STRING,
    transaction_amount NUMERIC
  )
PARTITION BY DATE(timestamp)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)
AS SELECT * FROM mydataset.myothertable'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración CREATE VIEW

Para crear una vista en BigQuery, usa la declaración DDL CREATE VIEW.

Sintaxis

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
[[project_name.]dataset_name.]view_name
[OPTIONS(view_option_list)]
AS query_expression

Donde:

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW} es una de las siguientes declaraciones:

  • CREATE VIEW: crea una nueva vista.
  • CREATE VIEW IF NOT EXISTS: crea una nueva vista solo si la vista no existe actualmente en el conjunto de datos especificado.
  • CREATE OR REPLACE VIEW: crea una vista y reemplaza una existente con el mismo nombre en el conjunto de datos especificado.

project_name es el nombre del proyecto en el que crearás la vista. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos en el que crearás la vista. El valor predeterminado es defaultDataset en la solicitud.

view_name es el nombre de la vista que crearás. El nombre de la vista debe ser único por conjunto de datos. El nombre de la vista debe cumplir los siguientes requisitos:

  • Contiene hasta 1,024 caracteres
  • Contiene letras (mayúsculas o minúsculas), números o guiones bajos

view_option_list te permite especificar opciones adicionales de creación de vistas, como una etiqueta y una fecha y hora de vencimiento.

Las declaraciones CREATE VIEW deben cumplir con las siguientes reglas:

  • Se permite solo una declaración CREATE.

query_expression es la expresión de consulta de SQL estándar utilizada para definir la vista.

view_option_list

La lista de opciones te permite establecer las opciones de la vista, como una etiqueta y una fecha y hora de vencimiento. Puedes incluir varias opciones mediante una lista separada por comas.

Especifica una lista de opciones de la vista en el siguiente formato:

NAME=VALUE, ...

La combinación de NAME y VALUE debe ser una de las siguientes:

NAME VALUE Detalles
expiration_timestamp TIMESTAMP

Ejemplo: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Esta propiedad es equivalente a la propiedad de recurso de tabla expirationTime.

friendly_name

STRING

Ejemplo: friendly_name="my_view"

Esta propiedad es equivalente a la propiedad de recurso de tabla friendlyName.

description

STRING

Ejemplo: description="a view that expires in 2025"

Esta propiedad es equivalente a la propiedad de recurso de tabla description.

labels

ARRAY<STRUCT<STRING, STRING>>

Ejemplo: labels=[("org_unit", "development")]

Esta propiedad es equivalente a la propiedad de recurso de tabla labels.

VALUE es una expresión constante que contiene solo literales, parámetros de búsqueda y funciones escalares. Si la expresión constante se evalúa como null, el NAME de la opción correspondiente se ignora.

La expresión constante no puede contener lo siguiente:

  • Una referencia a una tabla
  • Subconsultas o instrucciones de SQL, como SELECT, CREATE y UPDATE
  • Funciones definidas por el usuario, funciones agregadas o funciones estadísticas
  • Las siguientes funciones escalares:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Proyecto predeterminado en el cuerpo de la vista

Si la vista se crea en el mismo proyecto que se usa para ejecutar la declaración CREATE VIEW, el cuerpo de la vista query_expression puede hacer referencia a entidades sin especificar el proyecto. El proyecto predeterminado es aquel al que pertenece la vista. Considera la siguiente consulta de muestra.

CREATE VIEW myProject.myDataset.myView AS SELECT * FROM anotherDataset.myTable;

Después de ejecutar la consulta CREATE VIEW anterior en el proyecto myProject, puedes ejecutar la consulta SELECT * FROM myProject.myDataset.myView. Sin importar qué proyecto elijas para ejecutar esta consulta SELECT, la tabla anotherDataset.myTable a la que se hace referencia siempre se resuelve en el proyecto myProject.

Si la vista no se crea en el mismo proyecto que se usa para ejecutar la declaración CREATE VIEW, todas las referencias en el cuerpo de la vista query_expression deben calificarse con los ID del proyecto. Por ejemplo, la consulta CREATE VIEW de muestra anterior no es válida si se ejecuta en un proyecto diferente de myProject.

Ejemplos

Crea una vista nueva

La declaración DDL CREATE VIEW crea una vista con las opciones especificadas. Si el nombre de la vista existe en el conjunto de datos, se muestra el siguiente error:

Already Exists: project_id:dataset.table

En el siguiente ejemplo, se crea una vista llamada newview en mydataset.

La vista se define mediante la siguiente consulta de SQL estándar:

SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

La lista de opciones de vista especifica lo siguiente:

  • Vencimiento: 48 horas después de la creación de la vista
  • Nombre descriptivo: newview
  • Descripción: una vista que vence en 2 días
  • Etiqueta: org_unit = desarrollo

Para crear una vista nueva con DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la vista aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE `myproject.mydataset.newview`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

JAVA

Llama al método BigQuery.create() para iniciar un trabajo de consulta. Llama al método Job.waitFor() para esperar que la consulta de DDL finalice.

// import com.google.cloud.bigquery.*;
// String projectId = "my-project";
// String datasetId = "my_dataset";
// String tableId = "new_view";
// BigQuery bigquery = BigQueryOptions.getDefaultInstance().toBuilder()
//     .setProjectId(projectId)
//     .build().getService();

String sql =
    String.format(
        "CREATE VIEW `%s.%s.%s`\n"
            + "OPTIONS(\n"
            + "  expiration_timestamp=TIMESTAMP_ADD(\n"
            + "    CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),\n"
            + "  friendly_name=\"new_view\",\n"
            + "  description=\"a view that expires in 2 days\",\n"
            + "  labels=[(\"org_unit\", \"development\")]\n"
            + ")\n"
            + "AS SELECT name, state, year, number\n"
            + "  FROM `bigquery-public-data.usa_names.usa_1910_current`\n"
            + "  WHERE state LIKE 'W%%';\n",
        projectId, datasetId, tableId);

// Make an API request to run the query job.
Job job = bigquery.create(JobInfo.of(QueryJobConfiguration.newBuilder(sql).build()));

// Wait for the query to finish.
job = job.waitFor();

QueryJobConfiguration jobConfig = (QueryJobConfiguration) job.getConfiguration();
System.out.printf(
    "Created new view \"%s.%s.%s\".\n",
    jobConfig.getDestinationTable().getProject(),
    jobConfig.getDestinationTable().getDataset(),
    jobConfig.getDestinationTable().getTable());

Node.js

// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function ddlCreateView() {
  // Creates a view via a DDL query

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const projectId = "my_project"
  // const datasetId = "my_dataset"
  // const tableId = "my_new_view"

  const query = `
  CREATE VIEW \`${projectId}.${datasetId}.${tableId}\`
  OPTIONS(
      expiration_timestamp=TIMESTAMP_ADD(
          CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
      friendly_name="new_view",
      description="a view that expires in 2 days",
      labels=[("org_unit", "development")]
  )
  AS SELECT name, state, year, number
      FROM \`bigquery-public-data.usa_names.usa_1910_current\`
      WHERE state LIKE 'W%'`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
  const options = {
    query: query,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  job.on('complete', metadata => {
    console.log(`Created new view ${tableId} via job ${metadata.id}`);
  });
}

PYTHON

Llama al método Client.query() para iniciar un trabajo de consulta. Llama al método QueryJob.result() para esperar que la consulta de DDL se complete.

# from google.cloud import bigquery
# project = 'my-project'
# dataset_id = 'my_dataset'
# table_id = 'new_view'
# client = bigquery.Client(project=project)

sql = """
CREATE VIEW `{}.{}.{}`
OPTIONS(
    expiration_timestamp=TIMESTAMP_ADD(
        CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
    friendly_name="new_view",
    description="a view that expires in 2 days",
    labels=[("org_unit", "development")]
)
AS SELECT name, state, year, number
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state LIKE 'W%'
""".format(
    project, dataset_id, table_id
)

job = client.query(sql)  # API request.
job.result()  # Waits for the query to finish.

print(
    'Created new view "{}.{}.{}".'.format(
        job.destination.project,
        job.destination.dataset_id,
        job.destination.table_id,
    )
)

Crea una vista solo si la vista no existe

La declaración DDL CREATE VIEW IF NOT EXISTS crea una vista con las opciones especificadas solo si el nombre de la vista no existe en el conjunto de datos. Si el nombre de la vista existe en el conjunto de datos, no se muestra ningún error ni se realiza ninguna acción.

En el siguiente ejemplo, se crea una vista llamada newview en mydataset solo si no existe una vista con el nombre newview en mydataset.

La vista se define mediante la siguiente consulta de SQL estándar:

SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

La lista de opciones de vista especifica lo siguiente:

  • Vencimiento: 48 horas después de la creación de la vista
  • Nombre descriptivo: newview
  • Descripción: una vista que vence en 2 días
  • Etiqueta: org_unit = desarrollo

Para crear una vista nueva con DDL solo si el nombre de la vista no existe en el conjunto de datos, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la vista aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea o reemplaza una vista

La declaración DDL CREATE OR REPLACE VIEW crea una vista con las opciones especificadas. Si el nombre de la vista existe en el conjunto de datos, esta se reemplaza mediante la expresión de consulta especificada:

En el siguiente ejemplo, se crea una vista llamada newview en mydataset y, si newview existe en mydataset, esta se reemplaza.

La vista se define mediante la siguiente consulta de SQL estándar:

    SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

La lista de opciones de vista especifica lo siguiente:

  • Vencimiento: 48 horas después de la creación de la vista
  • Nombre descriptivo: newview
  • Descripción: una vista que vence en 2 días
  • Etiqueta: org_unit = desarrollo

Para crear una vista nueva con DDL y reemplazar una vista con el mismo nombre, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE OR REPLACE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista aparece en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     CREATE OR REPLACE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la vista aparece en el panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE OR REPLACE VIEW `myproject.mydataset.newview`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración CREATE MATERIALIZED VIEW

Para crear una vista materializada en BigQuery, usa la declaración DDL CREATE MATERIALIZED VIEW.

Sintaxis

{CREATE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW IF NOT EXISTS }
[[project_name.]dataset_name.]materialized_view_name
[OPTIONS(materialized_view_option_list)]
AS query_expression

Donde:

{CREATE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW IF NOT EXISTS } es una de las siguientes declaraciones:

  • CREATE MATERIALIZED VIEW: Crea una vista materializada nueva.

  • CREATE MATERIALIZED VIEW IF NOT EXISTS: Crea una vista materializada nueva solo si esta no existe en el conjunto de datos especificado.

project_name es el nombre del proyecto en el que crearás la vista materializada. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

Si se omite project_name o es el mismo que el proyecto que ejecuta esta consulta de DDL, este último también se usa como el proyecto predeterminado de las referencias a tablas, funciones, etc., en query_expression (el proyecto predeterminado de las referencias es fijo y no depende de las consultas futuras que invoquen la vista materializada nueva). De lo contrario, todas las referencias en query_expression deben calificarse con proyectos.

dataset_name es el nombre del conjunto de datos en el que crearás la vista materializada. El valor predeterminado es defaultDataset en la solicitud.

materialized_view_name es el nombre de la vista materializada que crearás. El nombre de la vista materializada debe ser único en cada conjunto de datos. El nombre de la vista materializada tiene las siguientes características:

  • Contiene hasta 1,024 caracteres
  • Contiene letras (mayúsculas o minúsculas), números o guiones bajos

materialized_view_option_list te permite especificar opciones adicionales de las vistas materializadas, como la habilitación de las actualizaciones, el intervalo de actualización, una etiqueta, y una fecha y hora de vencimiento.

Las declaraciones CREATE MATERIALIZED VIEW deben cumplir con la siguiente regla:

  • Se permite solo una declaración CREATE.

query_expression es la expresión de consulta de SQL estándar que se usa para definir la vista materializada.

materialized_view_option_list

La lista de opciones te permite establecer las opciones de la vista materializada, como la habilitación de las actualizaciones, el intervalo de actualización, una etiqueta, y una fecha y hora de vencimiento. Puedes incluir varias opciones mediante una lista separada por comas.

Especifica una lista de opciones de la vista materializada en el siguiente formato:

NAME=VALUE, ...

La combinación de NAME y VALUE debe ser una de las siguientes:

NAME VALUE Detalles
enable_refresh BOOLEAN

Ejemplo: enable_refresh=false

refresh_interval_minutes FLOAT64

Ejemplo: refresh_interval_minutes=20

expiration_timestamp TIMESTAMP

Ejemplo: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Esta propiedad es equivalente a la propiedad de recurso de tabla expirationTime.

friendly_name

STRING

Ejemplo: friendly_name="my_mv"

Esta propiedad es equivalente a la propiedad de recurso de tabla friendlyName.

description

STRING

Ejemplo: description="a materialized view that expires in 2025"

Esta propiedad es equivalente a la propiedad de recurso de tabla description.

labels

ARRAY<STRUCT<STRING, STRING>>

Ejemplo: labels=[("org_unit", "development")]

Esta propiedad es equivalente a la propiedad de recurso de tabla labels.

Proyecto predeterminado en el cuerpo de la vista materializada

Si la vista materializada se crea en el mismo proyecto que se usa para ejecutar la declaración CREATE MATERIALIZED VIEW, el cuerpo de la vista materializada query_expression puede hacer referencia a entidades sin especificar el proyecto. El proyecto predeterminado es aquel al que pertenece la vista materializada. Considera la siguiente consulta de muestra.

CREATE MATERIALIZED VIEW myProject.myDataset.myView AS SELECT * FROM anotherDataset.myTable;

Después de ejecutar la consulta CREATE MATERIALIZED VIEW anterior en el proyecto myProject, puedes ejecutar la consulta SELECT * FROM myProject.myDataset.myView. Sin importar qué proyecto elijas para ejecutar esta consulta SELECT, la tabla anotherDataset.myTable a la que se hace referencia siempre se resuelve en el proyecto myProject.

Si la vista materializada no se crea en el mismo proyecto que se usa para ejecutar la declaración CREATE VIEW, todas las referencias en el cuerpo de la vista materializada query_expression deben calificarse con los ID del proyecto. Por ejemplo, la consulta CREATE MATERIALIZED VIEW de muestra anterior no es válida si se ejecuta en un proyecto diferente de myProject.

Ejemplos

Crea una vista materializada nueva

Con la declaración DDL CREATE MATERIALIZED VIEW, se crea una vista materializada con las opciones especificadas. Si el nombre de la vista materializada ya existe en el conjunto de datos, se muestra el siguiente error:

Already Exists: project_id:dataset.materialized_view

En el siguiente ejemplo, se crea una vista materializada llamada new_mv en mydataset. Cuando usas una declaración DDL para crear una vista materializada, debes especificar el proyecto, el conjunto de datos y la vista materializada en el siguiente formato: `project_id.dataset.materialized_view` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.new_mv`.

La vista materializada se define mediante la siguiente consulta de SQL estándar:

SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

La lista materializada de opciones de vista especifica lo siguiente:

  • Vencimiento: 48 horas después de la creación de la vista materializada
  • Nombre descriptivo: new_mv
  • Descripción: una vista materializada que vence en 2 días
  • Etiqueta: org_unit = desarrollo
  • Actualización habilitada: verdadero
  • Intervalo de actualización: 20 minutos

Sigue estos pasos para crear una nueva vista materializada con DDL:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE MATERIALIZED VIEW `myproject.mydataset.new_mv`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="new_mv",
       description="a materialized view that expires in 2 days",
       labels=[("org_unit", "development")].
       enable_refresh=true,
       refresh_interval_minutes=20
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista materializada aparece en el panel de recursos.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE MATERIALIZED VIEW `myproject.mydataset.new_mv`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="new_mv",
   description="a materialized view that expires in 2 days",
   labels=[("org_unit", "development")],
   enable_refresh=true,
   refresh_interval_minutes=20
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una vista materializada solo si esta no existe

Con la declaración DDL CREATE MATERIALIZED VIEW IF NOT EXISTS, se crea una vista materializada con las opciones especificadas solo si el nombre de esta no existe en el conjunto de datos. Si el nombre de la vista materializada ya existe en el conjunto de datos, no se muestra ningún error ni se realiza ninguna acción.

En el siguiente ejemplo, se crea una vista materializada llamada new_mv en mydataset solo si no existe una con el nombre new_mv en mydataset.

La vista materializada se define mediante la siguiente consulta de SQL estándar:

SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

La lista materializada de opciones de vista especifica lo siguiente:

  • Vencimiento: 48 horas después de la creación de la vista
  • Nombre descriptivo: new_mv
  • Descripción: una vista que vence en 2 días
  • Etiqueta: org_unit = desarrollo
  • Actualización habilitada: falso

Para crear una vista materializada nueva mediante DDL solo si el nombre de la vista no existe en el conjunto de datos, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     CREATE MATERIALIZED VIEW IF NOT EXISTS `myproject.mydataset.new_mv`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="new_mv",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")],
       enable_refresh=false
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista aparece en el panel de recursos.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
CREATE MATERIALIZED VIEW IF NOT EXISTS `myproject.mydataset.new_mv`
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="new_mv",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")],
   enable_refresh=false
 )
 AS SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración CREATE FUNCTION

BigQuery admite funciones definidas por el usuario (UDF). Una UDF te permite crear una función con una expresión SQL o JavaScript. Estas funciones aceptan columnas de entrada y realizan acciones, para luego mostrar el resultado de esas acciones como un valor.

Las UDF pueden ser persistentes o temporales. Puedes reutilizar las UDF persistentes en varias consultas, mientras que solo puedes usar las UDF temporales en una única consulta. Para obtener más información sobre las UDF, consulta las funciones definidas por el usuario.

Sintaxis de las UDF

Para crear una UDF persistente, usa la siguiente sintaxis:

CREATE [OR REPLACE] FUNCTION [IF NOT EXISTS]
    [[project_name.]dataset_name.]function_name
    ([named_parameter[, ...]])
  [RETURNS data_type]
  { sql_function_definition | javascript_function_definition }

Para crear una UDF temporal, usa la siguiente sintaxis:

CREATE [OR REPLACE] {TEMPORARY | TEMP} FUNCTION [IF NOT EXISTS]
    function_name
    ([named_parameter[, ...]])
  [RETURNS data_type]
  { sql_function_definition | javascript_function_definition }

named_parameter:
  param_name param_type

sql_function_definition:
  AS (sql_expression)

javascript_function_definition:
  LANGUAGE js
  [OPTIONS (library = library_array)]
  AS javascript_code

Esta sintaxis consta de los siguientes componentes:

  • CREATE { FUNCTION | OR REPLACE FUNCTION | FUNCTION IF NOT EXISTS }. Crea una función o la actualiza. Para reemplazar una función existente con el mismo nombre, usa la palabra clave OR REPLACE. Usa la cláusula IF NOT EXISTS si deseas tratar la consulta como completada y quieres que no se realice ninguna acción en el caso de que ya exista una función con el mismo nombre.

  • project_name es el nombre del proyecto en el que crearás la función. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

  • dataset_name es el nombre del conjunto de datos en el que crearás la función. El valor predeterminado es defaultDataset en la solicitud.

  • named_parameter. Consiste en un par de param_name y param_type separados por comas. El valor de param_type es un tipo de datos de BigQuery. Para una UDF de SQL, el valor de param_type también puede ser ANY TYPE.

  • [RETURNS data_type]. Especifica el tipo de datos que muestra la función.

    • Si la función está definida en SQL, la cláusula RETURNS es opcional. Si se omite la cláusula RETURNS, BigQuery deduce el tipo de resultado de la función a partir del cuerpo de la función SQL cuando una consulta llama a la función.
    • Si la función está definida en JavaScript, la cláusula RETURNS es obligatoria. Si deseas obtener más información sobre los valores permitidos para data_type, consulta Tipos de datos de UDF de JavaScript admitidos.
  • AS (sql_expression). Especifica la expresión SQL que define la función.

  • [OPTIONS (library = library_array)]. Para una UDF de JavaScript, especifica un arreglo de bibliotecas de JavaScript para incluir en la definición de función.

  • AS javascript_code. Especifica la definición de una función de JavaScript. javascript_code es un literal de string.

Estructura de UDF de SQL

Crea UDF de SQL con la siguiente sintaxis:

CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS]
    [[`project_name`.]dataset_name.]function_name
    ([named_parameter[, ...]])
  [RETURNS data_type]
  AS (sql_expression)

named_parameter:
  param_name param_type

Parámetros de UDF de SQL con plantilla

Un parámetro con plantilla con param_type = ANY TYPE puede coincidir con más de un tipo de argumento cuando se llama a la función.

  • Si hay más de un parámetro con el tipo ANY TYPE, BigQuery no impone ninguna relación entre estos argumentos.
  • La función tipo de datos que se muestra no puede ser ANY TYPE. Debe omitirse, lo que significa que se determina de forma automática en función de sql_expression, o debe ser un tipo explícito.
  • Si pasas los argumentos de funciones de tipos que son incompatibles con la definición de la función, se producirá un error durante la llamada.

Proyecto predeterminado en el cuerpo de la UDF de SQL

Si la UDF de SQL se crea en el mismo proyecto que se usa para ejecutar la declaración CREATE FUNCTION, el cuerpo de la UDF sql_expression puede hacer referencia a entidades sin especificar el proyecto. El proyecto predeterminado es aquel al que pertenece la UDF. Considera la siguiente consulta de muestra.

CREATE FUNCTION myProject.myDataset.myFunction() AS (anotherDataset.anotherFunction());

Después de ejecutar la consulta CREATE FUNCTION anterior en el proyecto myProject, puedes ejecutar la consulta SELECT myProject.myDataset.myFunction(). Sin importar qué proyecto elijas para ejecutar esta consulta SELECT, la función anotherDataset.anotherFunction a la que se hace referencia siempre se resuelve en el proyecto myProject.

Si la UDF no se crea en el mismo proyecto que se usa para ejecutar la declaración CREATE FUNCTION, todas las referencias en el cuerpo de la UDF sql_expression deben calificarse con los ID del proyecto. Por ejemplo, la consulta CREATE FUNCTION de muestra anterior no es válida si se ejecuta en un proyecto diferente de myProject.

Ejemplos de UDF de SQL

En el siguiente ejemplo, se crea una UDF de SQL persistente. Supone que existe un conjunto de datos llamado mydataset en el proyecto activo. Si no existe un conjunto de datos con este nombre, consulta la documentación sobre cómo crear conjuntos de datos.

CREATE FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
AS (x * y);

Después de ejecutar la declaración CREATE FUNCTION, puedes usar la nueva función persistente definida por el usuario en una consulta separada. Reemplaza el editor de consultas con los siguientes contenidos y, luego, ejecuta la consulta:

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x, y, mydataset.multiplyInputs(x, y) as product
FROM numbers;

En el ejemplo anterior, se produce el siguiente resultado:

+-----+-----+--------------+
| x   | y   | product      |
+-----+-----+--------------+
| 1   | 5   | 5            |
| 2   | 10  | 20           |
| 3   | 15  | 45           |
+-----+-----+--------------+

En el siguiente ejemplo se muestra una UDF persistente de SQL que usa un parámetro con plantilla. La función resultante acepta argumentos de varios tipos.

CREATE FUNCTION mydataset.addFourAndDivideAny(x ANY TYPE, y ANY TYPE) AS (
  (x + 4) / y
);

Después de ejecutar la declaración CREATE FUNCTION, puedes usar la nueva función persistente definida por el usuario en una consulta separada:

SELECT addFourAndDivideAny(3, 4) AS integer_output,
       addFourAndDivideAny(1.59, 3.14) AS floating_point_output;

Esta consulta muestra el siguiente resultado:

+----------------+-----------------------+
| integer_output | floating_point_output |
+----------------+-----------------------+
| 1.75           | 1.7802547770700636    |
+----------------+-----------------------+

En el siguiente ejemplo, se puede ver una UDF de SQL que usa un parámetro con plantilla para mostrar el último elemento de un arreglo de cualquier tipo.

CREATE FUNCTION mydataset.lastArrayElement(arr ANY TYPE) AS (
  arr[ORDINAL(ARRAY_LENGTH(arr))]
);

Después de ejecutar la declaración CREATE FUNCTION, puedes usar la nueva función persistente definida por el usuario en una consulta separada:

SELECT
  names[OFFSET(0)] AS first_name,
  lastArrayElement(names) AS last_name
FROM (
  SELECT ['Fred', 'McFeely', 'Rogers'] AS names UNION ALL
  SELECT ['Marie', 'Skłodowska', 'Curie']
);

La consulta anterior muestra el siguiente resultado:

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Fred       | Rogers    |
| Marie      | Curie     |
+------------+-----------+

Estructura de una UDF de JavaScript

Crea UDF persistentes de JavaScript con la siguiente sintaxis.

CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS]
    [[`project_name`.]dataset_name.]function_name
    ([named_parameter[, ...]])
  RETURNS data_type
  LANGUAGE js
  [OPTIONS (library = library_array)]
  AS javascript_code

Consulta los tipos de datos compatibles con la UDF de JavaScript con el fin de obtener más información sobre los valores permitidos para data_type y los tipos de parámetros.

Ejemplos de UDF de JavaScript

CREATE TEMP FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x*y;
""";

Después de ejecutar la declaración CREATE FUNCTION, puedes usar la UDF nueva y persistente de JavaScript en una consulta separada:

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x, y, multiplyInputs(x, y) as product
FROM numbers;

En el ejemplo anterior, se muestra el siguiente resultado:

+-----+-----+--------------+
| x   | y   | product      |
+-----+-----+--------------+
| 1   | 5   | 5            |
| 2   | 10  | 20           |
| 3   | 15  | 45           |
+-----+-----+--------------+

Puedes pasar el resultado de una UDF como entrada para otra UDF. Por ejemplo, crea una UDF persistente con la siguiente consulta:

CREATE FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x*y;
""";

Luego, ejecuta otra consulta para crear una segunda UDF persistente:

CREATE FUNCTION mydataset.divideByTwo(x FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS """
  return x/2;
""";

Ahora, ejecuta la siguiente consulta para usar ambas UDF persistentes en la misma consulta:

WITH numbers AS
  (SELECT 1 AS x, 5 as y
  UNION ALL
  SELECT 2 AS x, 10 as y
  UNION ALL
  SELECT 3 as x, 15 as y)
SELECT x,
  y,
  mydataset.multiplyInputs(
    mydataset.divideByTwo(x), mydataset.divideByTwo(y)) as half_product
FROM numbers;

En el ejemplo anterior, se muestra el siguiente resultado:

+-----+-----+--------------+
| x   | y   | half_product |
+-----+-----+--------------+
| 1   | 5   | 1.25         |
| 2   | 10  | 5            |
| 3   | 15  | 11.25        |
+-----+-----+--------------+

El siguiente ejemplo suma los valores de todos los campos llamados “foo” en la string de JSON dada.

CREATE FUNCTION mydataset.SumFieldsNamedFoo(json_row STRING)
  RETURNS FLOAT64
  LANGUAGE js
  AS """
  function SumFoo(obj) {
    var sum = 0;
    for (var field in obj) {
      if (obj.hasOwnProperty(field) && obj[field] != null) {
        if (typeof obj[field] == "object") {
          sum += SumFoo(obj[field]);
        } else if (field == "foo") {
          sum += obj[field];
        }
      }
    }
    return sum;
  }
  var row = JSON.parse(json_row);
  return SumFoo(row);
  """;

Después de ejecutar la declaración CREATE FUNCTION, puedes usar la nueva función persistente definida por el usuario en una consulta separada:

WITH Input AS (
  SELECT STRUCT(1 AS foo, 2 AS bar, STRUCT('foo' AS x, 3.14 AS foo) AS baz) AS s, 10 AS foo UNION ALL
  SELECT NULL, 4 AS foo UNION ALL
  SELECT STRUCT(NULL, 2 AS bar, STRUCT('fizz' AS x, 1.59 AS foo) AS baz) AS s, NULL AS foo
)
SELECT
  TO_JSON_STRING(t) AS json_row,
  mydataset.SumFieldsNamedFoo(TO_JSON_STRING(t)) AS foo_sum
FROM Input AS t;

En el ejemplo anterior, se muestra el siguiente resultado:

+---------------------------------------------------------------------+---------+
| json_row                                                            | foo_sum |
+---------------------------------------------------------------------+---------+
| {"s":{"foo":1,"bar":2,"baz":{"x":"foo","foo":3.14}},"foo":10}       | 14.14   |
| {"s":null,"foo":4}                                                  | 4       |
| {"s":{"foo":null,"bar":2,"baz":{"x":"fizz","foo":1.59}},"foo":null} | 1.59    |
+---------------------------------------------------------------------+---------+

Reglas de entrecomillado

Debes encerrar el código de JavaScript entre comillas. Para fragmentos de código simples de una línea, puedes usar una string entre comillas estándar:

CREATE FUNCTION mydataset.plusOne(x FLOAT64)
RETURNS FLOAT64
LANGUAGE js
AS "return x+1;";

En los casos en que el fragmento contiene comillas o consta de varias líneas, usa bloques con comillas triples:

CREATE FUNCTION mydataset.customGreeting(a STRING)
RETURNS STRING
LANGUAGE js AS """
  var d = new Date();
  if (d.getHours() &lt; 12) {
    return 'Good Morning, ' + a + '!';
  } else {
    return 'Good Evening, ' + a + '!';
  }
  """;

Incluye bibliotecas de JavaScript

Puedes extender tus UDF de JavaScript mediante la sección OPTIONS. Esta sección te permite especificar bibliotecas de código de JavaScript para la UDF.

CREATE FUNCTION mydataset.myFunc(a FLOAT64, b STRING)
  RETURNS STRING
  LANGUAGE js
  OPTIONS (
    library=["gs://my-bucket/path/to/lib1.js", "gs://my-bucket/path/to/lib2.js"]
  )
  AS
  """
      // Assumes 'doInterestingStuff' is defined in one of the library files.
      return doInterestingStuff(a, b);
  """;

SELECT mydataset.myFunc(3.14, 'foo');

En el ejemplo anterior, el código en lib1.js y lib2.js está disponible para cualquier código en la sección javascript_code de la UDF. Ten en cuenta que puedes especificar archivos de biblioteca mediante sintaxis de elemento único o arreglo.

Las UDF y la IU web

Puedes usar la IU web de BigQuery para crear funciones persistentes definidas por el usuario.

Ejecuta una consulta para crear una UDF persistente

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración de UDF en el área de texto del Editor de consultas. Por ejemplo:

      CREATE FUNCTION mydataset.timesTwo(x FLOAT64)
      RETURNS FLOAT64
        LANGUAGE js AS """
        return x*2;
      """;
    
  4. Haz clic en ejecutar.

  5. Después de crear la función persistente definida por el usuario, reemplaza el contenido del editor con una nueva consulta que la use:

      SELECT mydataset.timesTwo(numbers) AS doubles
      FROM UNNEST([1, 2, 3, 4, 5]) AS numbers;
    
  6. Haz clic en ejecutar.

Las UDF y la herramienta de línea de comandos de bq

Puedes usar la herramienta de línea de comandos bq del SDK de Cloud para crear UDF persistentes.

Usa la siguiente sintaxis a fin de ejecutar una consulta para crear una UDF persistente:

bq query --use_legacy_sql=false '
  CREATE FUNCTION mydataset.AddTwo(x INT64) AS (x + 2);
'

Declaración CREATE PROCEDURE

Sintaxis

CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
[[project_name.]dataset_name.]procedure_name (procedure_argument[, ...] )
[OPTIONS(procedure_option_list)]
BEGIN
statement_list
END;

procedure_argument: [procedure_argument_mode] argument_name argument_type

procedure_argument_mode: IN | OUT | INOUT

Descripción

Crea un procedimiento, que es un bloque de declaraciones a las que se puede llamar desde otras consultas.

project_name es el nombre del proyecto en el que crearás el procedimiento. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos en el que crearás el procedimiento. El valor predeterminado es defaultDataset en la solicitud.

statement_list es una lista de declaraciones de BigQuery. Una lista de declaraciones es una serie de declaraciones que terminan con punto y coma.

argument_type es cualquier tipo de BigQuery válido.

procedure_argument_mode especifica si un argumento es una entrada, una salida o ambas.

Los procedimientos pueden llamarse a sí mismos de forma recursiva.

procedure_option_list

procedure_option_list te permite especificar opciones de procedimiento. Las opciones de procedimiento tienen los mismos requisitos y la misma sintaxis que las opciones de tabla, pero con una lista diferente de NAME y VALUE:

NAME VALUE Detalles
strict_mode

BOOL

Ejemplo: strict_mode=FALSE

Si strict_mode es TRUE, el cuerpo del procedimiento se someterá a verificaciones adicionales para detectar errores, como tablas o columnas inexistentes. La declaración CREATE PROCEDURE fallará si el cuerpo falla en alguna de estas verificaciones.

Si bien strict_mode es útil para detectar varios tipos comunes de errores, no es exhaustivo; la creación correcta de un procedimiento con strict_mode no garantiza que este se ejecutará con éxito en el entorno de ejecución.

Si strict_mode es FALSE, solo se verifica la sintaxis del cuerpo del procedimiento. Los procedimientos que se invocan de forma recursiva deben crearse con strict_mode=FALSE para evitar que se generen errores a causa de los procedimientos aún inexistentes mientras se están validando.

El valor predeterminado es TRUE.

Modo de argumento

IN indica que el argumento es solo una entrada del procedimiento. Puedes especificar una variable o una expresión de valor para los argumentos IN.

OUT indica que el argumento es un resultado del procedimiento. Un argumento OUT se inicializa en NULL cuando comienza el procedimiento. Debes especificar una variable para los argumentos OUT.

INOUT indica que el argumento es tanto una entrada como un resultado del procedimiento. Debes especificar una variable para los argumentos INOUT. En el cuerpo de un procedimiento, se puede hacer referencia a un argumento INOUT como una variable y asignarle valores nuevos.

Si no se especifica IN, OUT ni INOUT, el argumento se trata como un argumento IN.

Alcance de la variable

Si una variable se declara fuera de un procedimiento, si se pasa como un argumento INOUT o OUT a un procedimiento, y el procedimiento asigna un valor nuevo a esa variable, ese valor nuevo es visible fuera del procedimiento.

Las variables declaradas en un procedimiento no son visibles fuera de este y viceversa.

A los argumentos OUT o INOUT se les puede asignar un valor mediante SET, en cuyo caso el valor modificado es visible fuera del procedimiento. Si el procedimiento se ejecuta de manera correcta, el valor de los argumentos OUT o INOUT es el valor final asignado a esa variable INOUT.

Las tablas temporales duran lo mismo que la secuencia de comandos, por lo que si un procedimiento crea una tabla temporal, el emisor del procedimiento también podrá hacer referencia a esa tabla.

Proyecto predeterminado en el cuerpo del procedimiento

Los cuerpos de procedimientos pueden hacer referencia a entidades sin especificar el proyecto. El proyecto predeterminado es aquel al que pertenece el procedimiento, no siempre se trata del que se usó para ejecutar la declaración CREATE PROCEDURE. Considera la siguiente consulta de muestra.

CREATE PROCEDURE myProject.myDataset.QueryTable()
BEGIN
  SELECT * FROM anotherDataset.myTable;
END;

Después de crear el procedimiento anterior, puedes ejecutar la consulta CALL myProject.myDataset.QueryTable(). Sin importar qué proyecto elijas para ejecutar esta consulta CALL, la tabla anotherDataset.myTable a la que se hace referencia siempre se resuelve en el proyecto myProject.

Ejemplos

En el siguiente ejemplo, se crea un procedimiento que toma x como argumento de entrada y muestra x como resultado. Como no hay modo de argumento presente para el argumento delta, es un argumento de entrada. El procedimiento consiste en un bloque que contiene una sola declaración, que asigna la suma de los dos argumentos de entrada a x.

CREATE PROCEDURE mydataset.AddDelta(INOUT x INT64, delta INT64)
BEGIN
  SET x = x + delta;
END;

En el siguiente ejemplo, se llama al procedimiento AddDelta del ejemplo anterior, pasándole la variable accumulator ambas veces. Como los cambios a x dentro de AddDelta son visibles fuera de AddDelta, este procedimiento llama al incremento accumulator en un total de 8.

DECLARE accumulator INT64 DEFAULT 0;
CALL mydataset.AddDelta(accumulator, 5);
CALL mydataset.AddDelta(accumulator, 3);
SELECT accumulator;

Esto muestra lo siguiente:

+-------------+
| accumulator |
+-------------+
|           8 |
+-------------+

En el siguiente ejemplo, se crea el procedimiento SelectFromTablesAndAppend, que toma target_date como argumento de entrada y muestra rows_added como resultado. El procedimiento crea una tabla temporal DataForTargetDate a partir de una consulta; luego, calcula la cantidad de filas en DataForTargetDate y asigna el resultado a rows_added. A continuación, inserta una nueva fila en TargetTable y pasa el valor de target_date como uno de los nombres de columna. Por último, descarta la tabla DataForTargetDate y muestra rows_added.

CREATE PROCEDURE mydataset.SelectFromTablesAndAppend(
  target_date DATE, OUT rows_added INT64)
BEGIN
  CREATE TEMP TABLE DataForTargetDate AS
  SELECT t1.id, t1.x, t2.y
  FROM dataset.partitioned_table1 AS t1
  JOIN dataset.partitioned_table2 AS t2
  ON t1.id = t2.id
  WHERE t1.date = target_date
    AND t2.date = target_date;

  SET rows_added = (SELECT COUNT(*) FROM DataForTargetDate);

  SELECT id, x, y, target_date  -- note that target_date is a parameter
  FROM DataForTargetDate;

  DROP TABLE DataForTargetDate;
END;

En el siguiente ejemplo, se declara una variable rows_added. Luego, se la pasa como argumento al procedimiento SelectFromTablesAndAppend del ejemplo anterior, junto con el valor de CURRENT_DATE. Después, se muestra un mensaje que indica cuántas filas se agregaron.

DECLARE rows_added INT64;
CALL mydataset.SelectFromTablesAndAppend(CURRENT_DATE(), rows_added);
SELECT FORMAT('Added %d rows', rows_added);

Declaración ALTER TABLE SET OPTIONS

Para configurar las opciones de una tabla en BigQuery, usa la declaración DDL ALTER TABLE SET OPTIONS.

Sintaxis

ALTER TABLE [IF EXISTS] [[project_name.]dataset_name.]table_name
SET OPTIONS(<a href="#table_set_options_list">table_set_options_list</a>)

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la tabla especificada no existe. Si está ausente, la consulta falla cuando la tabla especificada no existe.

project_name es el nombre del proyecto que contiene la tabla que modificarás. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la tabla que modificarás. El valor predeterminado es defaultDataset en la solicitud.

table_name es el nombre de la tabla que modificarás.

table_set_options_list

La lista de opciones te permite configurar las opciones de la tabla, como una etiqueta y una fecha y hora de vencimiento. Puedes incluir varias opciones mediante una lista separada por comas.

Especifica una lista de opciones de la tabla con el siguiente formato:

NAME=VALUE, ...

La combinación de NAME y VALUE debe ser una de las siguientes:

NAME VALUE Detalles
expiration_timestamp TIMESTAMP

Ejemplo: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Esta propiedad es equivalente a la propiedad de recurso de tabla expirationTime.

partition_expiration_days

FLOAT64

Ejemplo: partition_expiration_days=7

Esta propiedad es equivalente a la propiedad de recurso de tabla timePartitioning.expirationMs, pero utiliza días en lugar de milisegundos. Un día equivale a 86,400,000 milisegundos o 24 horas.

Esta propiedad solo se puede configurar si la tabla está particionada.

require_partition_filter

BOOL

Ejemplo: require_partition_filter=true

Esta propiedad es equivalente a la propiedad de recurso de tabla timePartitioning.requirePartitionFilter.

Esta propiedad solo se puede configurar si la tabla está particionada.

kms_key_name

STRING

Ejemplo: kms_key_name="projects/project_id/locations/location/keyRings/keyring/cryptoKeys/key"

Esta propiedad es equivalente a la propiedad de recurso de tabla encryptionConfiguration.kmsKeyName.

Para obtener más detalles, consulta Cómo proteger los datos con claves de Cloud KMS.

friendly_name

STRING

Ejemplo: friendly_name="my_table"

Esta propiedad es equivalente a la propiedad de recurso de tabla friendlyName.

description

STRING

Ejemplo: description="a table that expires in 2025"

Esta propiedad es equivalente a la propiedad de recurso de tabla description.

labels

ARRAY<STRUCT<STRING, STRING>>

Ejemplo: labels=[("org_unit", "development")]

Esta propiedad es equivalente a la propiedad de recurso de tabla labels.

VALUE es una expresión constante que contiene solo literales, parámetros de búsqueda y funciones escalares. Si la expresión constante se evalúa como null, el NAME de la opción correspondiente se ignora.

La expresión constante no puede contener lo siguiente:

  • Una referencia a una tabla
  • Subconsultas o instrucciones de SQL, como SELECT, CREATE y UPDATE
  • Funciones definidas por el usuario, funciones agregadas o funciones estadísticas
  • Las siguientes funciones escalares:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Cuando se establece el VALUE, se reemplaza el valor existente de esa opción para la tabla, si había uno. Cuando se establece el VALUE como NULL, se borra el valor de la tabla para esa opción.

Ejemplos

Configura la marca de tiempo de vencimiento y la descripción en una tabla

En el siguiente ejemplo, se establece la marca de tiempo de vencimiento en una tabla a siete días desde el tiempo de ejecución de la declaración ALTER TABLE, además de la descripción:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="Table that expires seven days from now"
     )
     

  4. Haz clic en ejecutar.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="Table that expires seven days from now"
     )
     

  4. Haz clic en Ejecutar consulta.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
ALTER TABLE mydataset.mytable
SET OPTIONS (
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
  description="Table that expires seven days from now"
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Configura el atributo de filtro de partición requerido en una tabla particionada

En el siguiente ejemplo, se configura el atributo timePartitioning.requirePartitionFilter en una tabla particionada. Cuando se configura como verdadero, las consultas que hacen referencia a esta tabla deben usar un filtro en la columna de partición; de lo contrario, BigQuery mostrará un error. Configurar esta opción como verdadera puede ayudar a evitar errores cuando se consultan más datos de lo previsto:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     ALTER TABLE mydataset.mypartitionedtable
     SET OPTIONS (require_partition_filter=true)
     

  4. Haz clic en ejecutar.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     ALTER TABLE mydataset.mypartitionedtable
     SET OPTIONS (require_partition_filter=true)
     

  4. Haz clic en Ejecutar consulta.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
ALTER TABLE mydataset.mypartitionedtable
SET OPTIONS (require_partition_filter=true)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Borra la marca de tiempo de vencimiento en una tabla

En el siguiente ejemplo, se borra la marca de tiempo de vencimiento en una tabla para que no caduque:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     ALTER TABLE mydataset.mytable
     SET OPTIONS (expiration_timestamp=NULL)
     

  4. Haz clic en ejecutar.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (expiration_timestamp=NULL)
     

  4. Haz clic en Ejecutar consulta.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
ALTER TABLE mydataset.mytable
SET OPTIONS (expiration_timestamp=NULL)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración ALTER VIEW SET OPTIONS

Para configurar las opciones en una vista en BigQuery, usa la declaración DDL ALTER VIEW SET OPTIONS.

Sintaxis

ALTER VIEW [IF EXISTS] [[project_name.]dataset_name.]view_name
SET OPTIONS(<a href="#view_set_options_list">view_set_options_list</a>)

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la vista especificada no existe. Si está ausente, la consulta falla cuando la vista especificada no existe.

project_name es el nombre del proyecto que contiene la vista que modificarás. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la vista que modificarás. El valor predeterminado es defaultDataset en la solicitud.

view_name es el nombre de la vista que modificarás.

view_set_options_list

La lista de opciones te permite establecer las opciones de la vista, como una etiqueta y una fecha y hora de vencimiento. Puedes incluir varias opciones mediante una lista separada por comas.

Especifica una lista de opciones de la vista en el siguiente formato:

NAME=VALUE, ...

La combinación de NAME y VALUE debe ser una de las siguientes:

NAME VALUE Detalles
expiration_timestamp TIMESTAMP

Ejemplo: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Esta propiedad es equivalente a la propiedad de recurso de tabla expirationTime.

friendly_name

STRING

Ejemplo: friendly_name="my_view"

Esta propiedad es equivalente a la propiedad de recurso de tabla friendlyName.

description

STRING

Ejemplo: description="a view that expires in 2025"

Esta propiedad es equivalente a la propiedad de recurso de tabla description.

labels

ARRAY<STRUCT<STRING, STRING>>

Ejemplo: labels=[("org_unit", "development")]

Esta propiedad es equivalente a la propiedad de recurso de tabla labels.

VALUE es una expresión constante que contiene solo literales, parámetros de búsqueda y funciones escalares. Si la expresión constante se evalúa como null, el NAME de la opción correspondiente se ignora.

La expresión constante no puede contener lo siguiente:

  • Una referencia a una tabla
  • Subconsultas o instrucciones de SQL, como SELECT, CREATE y UPDATE
  • Funciones definidas por el usuario, funciones agregadas o funciones estadísticas
  • Las siguientes funciones escalares:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Cuando se establece el VALUE, se reemplaza el valor existente de esa opción para la vista, si había uno. Cuando se configura el VALUE como NULL, se borra el valor de la vista para esa opción.

Ejemplos

Configura la marca de tiempo de vencimiento y la descripción en una vista

En el siguiente ejemplo, se establece la marca de tiempo de vencimiento de una vista en siete días desde el momento de ejecución de la declaración ALTER VIEW y también se establece la descripción:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     ALTER VIEW mydataset.myview
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="View that expires seven days from now"
     )
     

  4. Haz clic en ejecutar.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     ALTER VIEW mydataset.myview
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="View that expires seven days from now"
     )
     

  4. Haz clic en Ejecutar consulta.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
ALTER VIEW mydataset.myview
SET OPTIONS (
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
  description="View that expires seven days from now"
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración ALTER MATERIALIZED VIEW SET OPTIONS

Para configurar las opciones de una vista materializada en BigQuery, usa la declaración DDL ALTER MATERIALIZED VIEW SET OPTIONS.

Sintaxis

ALTER MATERIALIZED VIEW [IF EXISTS] [[project_name.]dataset_name.]materialized_view_name
SET OPTIONS(<a href="#materialized_view_set_options_list">materialized_view_set_options_list</a>)

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la vista especificada no existe. Si está ausente, la consulta falla cuando la vista especificada no existe.

project_name es el nombre del proyecto que contiene la vista materializada que modificarás. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la vista materializada que modificarás. El valor predeterminado es defaultDataset en la solicitud.

materialized_view_name es el nombre de la vista materializada que modificarás.

materialized_view_set_options_list

La lista de opciones te permite establecer las opciones de la vista materializada, como la habilitación de las actualizaciones, el intervalo de actualización, una etiqueta, y una fecha y hora de vencimiento. Puedes incluir varias opciones mediante una lista separada por comas.

Especifica una lista de opciones de la vista materializada en el siguiente formato:

NAME=VALUE, ...

La combinación de NAME y VALUE debe ser una de las siguientes:

NAME VALUE Detalles
enable_refresh BOOLEAN

Ejemplo: enable_refresh=false

refresh_interval_minutes FLOAT64

Ejemplo: refresh_interval_minutes=20

expiration_timestamp TIMESTAMP

Ejemplo: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Esta propiedad es equivalente a la propiedad de recurso de tabla expirationTime.

friendly_name

STRING

Ejemplo: friendly_name="my_mv"

Esta propiedad es equivalente a la propiedad de recurso de tabla friendlyName.

description

STRING

Ejemplo: description="a materialized view that expires in 2025"

Esta propiedad es equivalente a la propiedad de recurso de tabla description.

labels

ARRAY<STRUCT<STRING, STRING>>

Ejemplo: labels=[("org_unit", "development")]

Esta propiedad es equivalente a la propiedad de recurso de tabla labels.

Cuando se establece el VALUE, se reemplaza el valor existente de esa opción para la vista materializada, si es que había uno. Cuando se configura el VALUE como NULL, se borra el valor de la vista materializada para esa opción.

Ejemplos

Configura el estado de habilitación de actualizaciones y el intervalo de actualización en una vista materializada

En el siguiente ejemplo, se habilita la actualización y se establece un intervalo de actualización de 20 minutos para una vista materializada:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     ALTER MATERIALIZED VIEW mydataset.my_mv
     SET OPTIONS (
       enable_refresh=true,
       refresh_interval_minutes=20
     )
     

  4. Haz clic en Ejecutar.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
ALTER MATERIALIZED VIEW mydataset.my_mv
SET OPTIONS (
  enable_refresh=true,
  refresh_interval_minutes=20
)'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración DROP TABLE

Para borrar una tabla en BigQuery, usa la declaración DDL DROP TABLE.

Sintaxis

DROP TABLE [IF EXISTS] [[project_name.]dataset_name.]table_name

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la tabla especificada no existe. Si está ausente, la consulta falla cuando la tabla especificada no existe.

project_name es el nombre del proyecto que contiene la tabla que se borrará. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la tabla que se borrará. El valor predeterminado es defaultDataset en la solicitud.

table_name es el nombre de la tabla que se borrará.

Ejemplos

Borra una tabla

La declaración DDL DROP TABLE borra una tabla en el conjunto de datos especificado. Si el nombre de la tabla no existe en el conjunto de datos, se muestra el siguiente error:

Error: Not found: Table myproject:mydataset.mytable

Para borrar una tabla mediante DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     DROP TABLE mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, se quita la tabla del panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     DROP TABLE mydataset.mytable
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla se quita del panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
DROP TABLE mydataset.mytable'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Borra una tabla solo si la tabla existe

La declaración DDL DROP TABLE IF EXISTS borra una tabla en el conjunto de datos especificado solo si la tabla existe. Si el nombre de la tabla no existe en el conjunto de datos, no se muestra ningún error ni se realiza ninguna acción.

Para borrar una tabla mediante DDL, solo si esta existe, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     DROP TABLE IF EXISTS mydataset.mytable
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, se quita la tabla del panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     DROP TABLE IF EXISTS mydataset.mytable
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla se quita del panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
DROP TABLE IF EXISTS mydataset.mytable'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración DROP VIEW

Para borrar una vista en BigQuery, usa la declaración DDL DROP VIEW.

Sintaxis

DROP VIEW [IF EXISTS] [[project_name.]dataset_name.]view_name

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la vista especificada no existe. Si está ausente, la consulta falla cuando la vista especificada no existe.

project_name es el nombre del proyecto que contiene la vista que se borrará. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la vista que se borrará. El valor predeterminado es defaultDataset en la solicitud.

view_name es el nombre de la vista que borrarás.

Ejemplos

Borra una vista

La declaración DDL DROP VIEW borra una vista en el conjunto de datos especificado. Si el nombre de la vista no existe en el conjunto de datos, se muestra el siguiente error:

Error: Not found: Table myproject:mydataset.myview

Para borrar una vista mediante DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     DROP VIEW mydataset.myview
     

  4. Haz clic en ejecutar. Cuando finaliza la consulta, la vista se quita en el panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     DROP VIEW mydataset.myview
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la vista se quita del panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
DROP VIEW mydataset.myview'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Borra una vista solo si existe

La declaración DDL DROP VIEW IF EXISTS borra una vista en el conjunto de datos especificado solo si la vista existe. Si el nombre de la vista no existe en el conjunto de datos, no se muestra ningún error ni se realiza ninguna acción.

Para borrar una vista mediante DDL, solo si esta existe, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     DROP VIEW IF EXISTS mydataset.myview
     

  4. Haz clic en ejecutar. Cuando finaliza la consulta, la vista se quita del panel de recursos.

IU clásica

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Ingresa tu declaración DDL en el área de texto Consulta nueva.

     #standardSQL
     DROP VIEW IF EXISTS mydataset.myview
     

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la vista se quita del panel de navegación.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
DROP VIEW IF EXISTS mydataset.myview'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración DROP MATERIALIZED VIEW

Para borrar una vista materializada en BigQuery, usa la declaración DDL DROP MATERIALIZED VIEW.

Sintaxis

DROP MATERIALIZED VIEW [IF EXISTS] [[project_name.]dataset_name.]mv_name

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la vista materializada especificada no existe. Si está ausente, la consulta falla cuando la vista materializada especificada no existe.

project_name es el nombre del proyecto que contiene la vista materializada que se borrará. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la vista materializada que se borrará. El valor predeterminado es defaultDataset en la solicitud.

mv_name es el nombre de la vista materializada que borrarás.

Ejemplos

Borra una vista materializada

Con la declaración DDL DROP VIEW, se borra una vista materializada en el conjunto de datos especificado. Si el nombre de la vista materializada no existe en el conjunto de datos, se muestra el siguiente error:

Error: Not found: Table myproject:mydataset.my_mv

Si borras una vista materializada en otro proyecto, debes especificar el proyecto, el conjunto de datos y la vista materializada en el siguiente formato: `project_id.dataset.materialized_view` (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.my_mv`.

Para borrar una vista materializada mediante DDL, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     DROP MATERIALIZED VIEW mydataset.my_mv
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista materializada se quita del panel de recursos.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
DROP MATERIALIZED VIEW mydataset.my_mv'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Borra una vista materializada solo si esta existe

Con la declaración DDL DROP MATERIALIZED VIEW IF EXISTS, se borra una vista materializada del conjunto de datos especificado solo si la vista existe. Si el nombre de la vista materializada no existe en el conjunto de datos, no se muestra ningún error ni se realiza ninguna acción.

Si borras una vista materializada en otro proyecto, debes especificar el proyecto, el conjunto de datos y la vista materializada en el siguiente formato: `project_id.dataset.materialized_view`, (incluidos los acentos graves si project_id contiene caracteres especiales); por ejemplo, `myproject.mydataset.my_mv`.

Para borrar una vista materializada mediante DDL, solo si esta existe, haz lo siguiente:

Console

  1. Abre la IU web de BigQuery en Cloud Console.
    Ir a Cloud Console

  2. Haz clic en Compose new query (Redactar consulta nueva).

    Redactar consulta nueva

  3. Ingresa la declaración DDL en el área de texto Editor de consultas. Por ejemplo:

     DROP MATERIALIZED VIEW IF EXISTS mydataset.my_mv
     

  4. Haz clic en ejecutar. Cuando se completa la consulta, la vista materializada se quita del panel de recursos.

bq

Ingresa el comando bq query y proporciona la declaración DDL como parámetro de consulta.

bq query --use_legacy_sql=false '
DROP MATERIALIZED VIEW IF EXISTS mydataset.my_mv'

API

Llama al método jobs.query y proporciona la declaración DDL en la propiedad query del cuerpo de la solicitud.

La funcionalidad de DDL amplía la información que muestra un recurso Jobs. statistics.query.statementType incluye los siguientes valores adicionales para la compatibilidad con DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tiene 2 campos adicionales:

  • ddlOperationPerformed: la operación de DDL realizada, que posiblemente depende de la existencia del objetivo de DDL. Entre los valores actuales, se incluyen los siguientes:
    • CREATE: la consulta creó el objetivo de DDL.
    • SKIP: no-ops. Ejemplos: se envió CREATE TABLE IF NOT EXISTS y la tabla existe. O se envió DROP TABLE IF EXISTS y la tabla no existe.
    • REPLACE: la consulta reemplazó el objetivo de DDL. Ejemplo: se envió CREATE OR REPLACE TABLE y la tabla ya existe.
    • DROP: la consulta borró el objetivo de DDL.
  • ddlTargetTable: cuando envías una declaración CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla de destino se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Declaración DROP FUNCTION

Sintaxis

DROP FUNCTION [IF EXISTS] [[project_name.]dataset_name.]function_name

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando la función especificada no existe. Si está ausente, la consulta falla cuando la función especificada no existe.

project_name es el nombre del proyecto que contiene la función que se borrará. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene la función que se borrará. El valor predeterminado es defaultDataset en la solicitud.

function_name es el nombre de la función que borrarás.

Ejemplos

La siguiente declaración de ejemplo borra la función parseJsonAsStruct contenida en el conjunto de datos mydataset.

DROP FUNCTION mydataset.parseJsonAsStruct;

La siguiente declaración de ejemplo borra la función parseJsonAsStruct del conjunto de datos sample_dataset en el proyecto other_project.

DROP FUNCTION `other_project`.sample_dataset.parseJsonAsStruct;

Declaración DROP PROCEDURE

Sintaxis

DROP PROCEDURE [IF EXISTS] [[project_name.]dataset_name.]procedure_name

En el ejemplo anterior, se ilustra lo siguiente:

IF EXISTS: si está presente, la consulta se realiza de forma correcta cuando el procedimiento especificado no existe. Si está ausente, la consulta falla cuando el procedimiento especificado no existe.

project_name es el nombre del proyecto que contiene el procedimiento que se borrará. La configuración predeterminada es el proyecto que ejecuta esta consulta de DDL. Si el nombre del proyecto contiene caracteres especiales, como dos puntos, debe estar entre acentos graves ` (ejemplo: `google.com:my_project`).

dataset_name es el nombre del conjunto de datos que contiene el procedimiento que se borrará. El valor predeterminado es defaultDataset en la solicitud.

procedure_name es el nombre del procedimiento que borrarás.

Ejemplos

La siguiente declaración de ejemplo borra el procedimiento myprocedure contenido en el conjunto de datos mydataset.

DROP PROCEDURE mydataset.myProcedure;

La siguiente declaración de ejemplo borra el procedimiento myProcedure del conjunto de datos sample_dataset en el proyecto other_project.

DROP PROCEDURE `other-project`.sample_dataset.myprocedure;