Cómo usar instrucciones del lenguaje de definición de datos

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

Instrucción CREATE TABLE

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

Sintaxis

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE}
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 instrucciones:

  • CREATE TABLE: Crea una tabla nueva.
  • CREATE TABLE IF NOT EXISTS: Crea una tabla nueva solo si la tabla no existe 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 instrucciones CREATE TABLE deben seguir las siguientes reglas:

  • Se permite solo una instrucción CREATE.
  • Deben estar presentes la lista de columnas, la cláusula as query_statement, o ambas.
  • Cuando tanto la lista de columnas como la cláusula as query_statement están presentes, BigQuery ignora los nombres de la cláusula as query_statement y hace coincidir las columnas con la lista de columnas según la 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 columna duplicados.

table_name

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

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

column_name y column_schema

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

  • column_name es el nombre de la columna. Los nombres de columnas deben cumplir los siguientes requisitos:
    • 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 al tipo de datos, pero admite una limitación NOT NULL opcional para los tipos (con la excepción 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 admitido, excepto 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 limitación NOT NULL está presente para una columna o un campo, estos se crean con el modo REQUIRED. Por el contrario, cuando la limitació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 admiten el modificador NOT NULL. Por ejemplo, un column_schema de ARRAY<INT64> NOT NULL no es válido, ya que las columnas de ARRAY tienen el modo REPEATED y pueden estar vacías, pero no pueden ser NULL. Un elemento array de una tabla nunca puede ser NULL, sin importar si se especifica la limitació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. Por ejemplo, si la tabla T contiene una columna declarada como x INT64 NOT NULL, CREATE TABLE dataset.newtable AS SELECT x FROM T crea una tabla llamada dataset.newtable, en la cual x es NULLABLE.

column_schema puede usarse solo en la lista de definición de columnas de las instrucciones 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 tablas. 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 de _PARTITIONTIME pseudo column. Esta sintaxis solo es compatible con CREATE TABLE sin la cláusula AS query_statement.
  • PARTITION BY DATE(<timestamp_column>): Particiona la tabla con la fecha de la columna TIMESTAMP.
  • PARTITION BY <date_column>: Particiona la tabla con la columna DATE.

clustering_column_list

CLUSTER BY es una cláusula opcional que controla el agrupamiento en clústeres de tablas. clustering_column_list es una lista separada por comas que determina cómo agrupar la tabla en clústeres. 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 establecer 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 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 "2020-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 establecer 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 establecer 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 Protege 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 2020"

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 consulta 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 analíticas
  • 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 en column_schema te permite especificar opciones facultativas de columnas o campos. Las opciones de columnas 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 referencia de sintaxis de SQL para conocer la forma de query_statement que se admite.

Limitaciones conocidas:

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

Ejemplos de CREATE TABLE

Crea una tabla nueva

La instrucción de 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]:[DATASET].[TABLE]

En el siguiente ejemplo, se crea una tabla particionada llamada newtable en mydataset. Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.newtable`.

En la tabla, se usa la siguiente partition_expression para particionarla: PARTITION BY DATE(_PARTITIONTIME). Esta expresión particiona la tabla con la marca de tiempo basada en la fecha en la seudocolumna _PARTITIONTIME.

El esquema de la tabla contiene 2 columnas:

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

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

La lista de opciones de tabla especifica lo siguiente:

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

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

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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 DATE(_PARTITIONTIME)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2020, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 DATE(_PARTITIONTIME)
OPTIONS(
  expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
  partition_expiration_days=1,
  description="a table that expires in 2020, with each partition living for 24 hours",
  labels=[("org_unit", "development")]
)'

API

Llama al método jobs.query y proporciona la instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crear una tabla nueva a partir de una tabla existente

La instrucción de 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]:[DATASET].[TABLE]

En el siguiente ejemplo, se crea una tabla llamada top_words en mydataset. Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo: `myproject.mydataset.rainy_days`.

El esquema de la tabla contiene 2 columnas:

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

La lista de opciones de tabla especifica lo siguiente:

  • Descripción: diez palabras más frecuentes según el corpus de Shakespeare

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

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea una tabla solo si la tabla no existe

La instrucción de 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, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); 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 tabla especifica lo siguiente:

  • Fecha y hora de vencimiento: 1 de enero de 2020, a las 00:00:00 UTC
  • Descripción: una tabla que vence en 2020
  • 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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 "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

Llama al método jobs.query y proporciona la instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea o reemplaza una tabla

La instrucción de 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; si newtable ya existe en mydataset, se la reemplaza. Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); 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 tabla especifica lo siguiente:

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

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

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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 "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

Llama al método jobs.query y proporciona la instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crear una tabla con columnas REQUIRED

El modificador NOT NULL en la lista de definiciones de columnas de una instrucció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]:[DATASET].[TABLE]

Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crear una tabla con particiones

En el siguiente ejemplo, se crea una tabla con particiones llamada newtable en mydataset con una columna de DATE. Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); 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 tabla especifica lo siguiente:

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

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

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo 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 con particiones llamada days_with_rain en mydataset con una columna de DATE. Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); 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 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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 may 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 may 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo 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. Es una tabla particionada por una columna de TIMESTAMP y agrupada por una columna de STRING llamada customer_id.

Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.myclusteredtable`.

El esquema de la tabla contiene 3 columnas:

  • timestamp: la hora de la recopilación de 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 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 instrucción de DDL, haz lo siguiente:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de DDL CREATE TABLE en el área de texto de 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 Mostrar opciones.

  5. En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo 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, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.myclusteredtable`.

El esquema de la tabla contiene 3 columnas:

  • timestamp: la hora de la recopilación de 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 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 instrucción de DDL, haz lo siguiente:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

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

     #standardSQL
     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 Mostrar opciones.

  5. En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo 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 denominada myclusteredtable en mydataset mediante el resultado de una consulta. Se trata de una tabla particionada por una columna TIMESTAMP.

Si no tienes un proyecto predeterminado configurado, indícalo antes del nombre del conjunto de datos en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.myclusteredtable`.

El esquema de la tabla contiene 3 columnas:

  • timestamp: la hora de la recopilación de 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 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 instrucción de DDL, haz lo siguiente:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de DDL CREATE TABLE en el área de texto de 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 Mostrar opciones.

  5. En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrucción CREATE VIEW

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

Sintaxis

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
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 instrucciones:

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

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

  • Contener hasta 1,024 caracteres
  • Contener 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 instrucciones CREATE VIEW deben cumplir con las siguientes reglas:

  • Se permite solo una instrucció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 "2020-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 2020"

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 consulta 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 analíticas
  • Las siguientes funciones escalares:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Ejemplos

Crea una vista nueva

La instrucción de 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]:[DATASET].[VIEW]

En el siguiente ejemplo, se crea una vista llamada newview en mydataset. Cuando utilizas una instrucción de DDL para crear una vista, debes especificar el proyecto, el conjunto de datos y la vista en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[VISTA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.newview`.

La vista se define con 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 desde el momento en que se creó 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo 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());

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 finalice.

# 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 instrucción de 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 y no se realiza ninguna acción.

En el siguiente ejemplo, se crea una vista llamada newview en mydataset solo si no existe una vista llamada newview en mydataset. Cuando utilizas una instrucción de DDL para crear una vista, debes especificar el proyecto, el conjunto de datos y la vista en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[VISTA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.newview`.

La vista se define con 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 desde el momento en que se creó 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Crea o reemplaza una vista

La instrucción de 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, se reemplaza. Cuando utilizas una instrucción de DDL para crear una vista, debes especificar el proyecto, el conjunto de datos y la vista en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[VISTA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.newview`.

La vista se define con 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 desde el momento en que se creó 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, aparece la tabla en el panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrucción ALTER TABLE SET OPTIONS

Para establecer las opciones en una tabla en BigQuery, utiliza la instrucción de DDL ALTER TABLE SET OPTIONS.

Sintaxis

{ALTER TABLE | ALTER TABLE IF EXISTS}
table_name
SET OPTIONS(table_set_options_list)

Donde:

{ALTER TABLE | ALTER TABLE IF EXISTS} es una de las siguientes instrucciones:

  • ALTER TABLE: Altera las opciones en una tabla existente.
  • ALTER TABLE IF EXISTS: Altera las opciones en una tabla solo si existe.

table_name es el nombre de la tabla que estás alterando.

table_set_options_list

La lista de opciones te permite establecer 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 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 "2020-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 establecer 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 establecer 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 Protege 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 2020"

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 consulta 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 analíticas
  • 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 de una tabla en siete días desde el momento de ejecución de la instrucción ALTER TABLE y también se establece la descripción:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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. Una vez completada la consulta, la propiedad se establece en la tabla.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Establecer el atributo de filtro de partición requerida en una tabla particionada

En el siguiente ejemplo, se establece 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. Establecer esta opción como verdadera puede ayudar a evitar errores cuando se consultan más datos de lo previsto:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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. Una vez completada la consulta, la propiedad se establece en la tabla.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo 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:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de DDL en el área de texto Consulta nueva.

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

  4. Haz clic en Ejecutar consulta. Cuando se completa la consulta, la tabla ya no tiene fecha y hora de vencimiento.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrucción ALTER VIEW SET OPTIONS

Para establecer las opciones en una vista en BigQuery, utiliza la instrucción de DDL ALTER VIEW SET OPTIONS.

Sintaxis

{ALTER VIEW | ALTER VIEW IF EXISTS}
view_name
SET OPTIONS(view_set_options_list)

Donde:

{ALTER VIEW | ALTER VIEW IF EXISTS} es una de las siguientes instrucciones:

  • ALTER VIEW: Altera las opciones de una vista existente.
  • ALTER VIEW IF EXISTS: Altera las opciones de una vista solo si esta existe.

view_name es el nombre de la vista que deseas alterar.

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 "2020-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 2020"

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 consulta 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 analíticas
  • 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

Configurar 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 instrucción ALTER VIEW y también se establece la descripción:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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. Cuando se completa la consulta, la propiedad se estableció en la vista.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrucción DROP TABLE

Para borrar una tabla en BigQuery, utiliza la instrucción de DDL DROP TABLE.

Sintaxis

{DROP TABLE | DROP TABLE IF EXISTS}
table_name

Donde:

{DROP TABLE | DROP TABLE IF EXISTS} es una de las siguientes instrucciones:

  • DROP TABLE: Borra una tabla del conjunto de datos especificado.
  • DROP TABLE IF EXISTS: Borra una tabla solo si esta existe en el conjunto de datos especificado.

table_name es el nombre de la tabla que deseas borrar.

Ejemplos

Borra una tabla

La instrucción de DDL DROP TABLE borra una tabla del 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

Si deseas borrar una tabla de otro proyecto, debes especificar el proyecto, el conjunto de datos y la tabla en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.mytable`.

Para borrar una tabla con DDL, haz lo siguiente:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de DDL en el área de texto Consulta nueva.

     #standardSQL
     DROP TABLE mydataset.mytable
     

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Borra una tabla solo si la tabla existe

La instrucción de DDL DROP TABLE IF EXISTS borra una tabla del 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 y no se realiza ninguna acción.

Si deseas borrar una tabla de otro proyecto, debes especificar el proyecto, el conjunto de datos y la tabla en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[TABLA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.mytable`.

Para borrar una tabla con DDL solo si la tabla existe, haz lo siguiente:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, se quita la tabla del panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrucción DROP VIEW

Para borrar una vista en BigQuery, utiliza la instrucción de DDL DROP VIEW.

Sintaxis

{DROP VIEW | DROP VIEW IF EXISTS}
view_name

Donde:

{DROP VIEW | DROP VIEW IF EXISTS} es una de las siguientes instrucciones:

  • DROP VIEW: Borra una vista del conjunto de datos especificado.
  • DROP VIEW IF EXISTS: Borra una vista solo si existe en el conjunto de datos especificado.

view_name es el nombre de la vista que deseas borrar.

Ejemplos

Cómo borrar una vista

La instrucción de DDL DROP VIEW borra una vista del 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

Si deseas borrar una vista de otro proyecto, debes especificar el proyecto, el conjunto de datos y la vista en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[VISTA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.myview`.

Para borrar una vista con DDL, haz lo siguiente:

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de DDL en el área de texto Consulta nueva.

     #standardSQL
     DROP VIEW mydataset.myview
     

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

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Borra una vista solo si existe

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

Si deseas borrar una vista de otro proyecto, debes especificar el proyecto, el conjunto de datos y la vista en el siguiente formato: `[PROYECTO].[CONJUNTO DE DATOS].[VISTA]` (incluidos los acentos graves); por ejemplo, `myproject.mydataset.myview`.

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

IU web

  1. Dirígete a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Redactar consulta.

  3. Escribe tu instrucción de 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, se quita la tabla del panel de navegación.

Línea de comandos

Ingresa el comando bq query y proporciona la instrucción de 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 instrucción de 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: Ninguna operación. Por ejemplo, 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. Por 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 instrucción CREATE TABLE/VIEW o DROP TABLE/VIEW, la tabla objetivo se muestra como un objeto con 3 campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.