Administra tablas

En este documento, se describe cómo administrar tablas en BigQuery. Puedes administrar tus tablas de BigQuery de las maneras siguientes:

  • Actualiza estas características de una tabla:
    • Fecha de vencimiento
    • Descripción
    • Definición de esquema
    • Etiquetas
  • Renombra (copia) una tabla.
  • Copia una tabla.
  • Borra una tabla.
  • Restablece una tabla borrada

Para obtener más información sobre cómo crear y usar tablas, incluido la obtención de información de tablas, las listas de tablas y el control de acceso a los datos de estas, consulta Crea y usa tablas.

Actualiza las propiedades de las tablas

Puedes actualizar las características siguientes de una tabla:

Permisos necesarios

Como mínimo, para actualizar una tabla, debes tener permisos de bigquery.tables.update y bigquery.tables.get. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos de bigquery.tables.update y bigquery.tables.get:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Además, si un usuario tiene permisos de bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso de bigquery.dataOwner. El acceso bigquery.dataOwner otorga a los usuarios la capacidad de actualizar las propiedades de la tabla en los conjuntos de datos que crean.

Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Control de acceso.

Actualiza la descripción de una tabla

Puedes actualizar la descripción de una tabla de la manera siguiente:

  • Mediante GCP Console o la IU web clásica de BigQuery
  • Con una declaración de DDL ALTER TABLE
  • Con el comando bq update de CLI.
  • Si llamas al método tables.patch de la API
  • Mediante las bibliotecas cliente

Para actualizar la descripción de una tabla, sigue estos pasos:

Console

Cuando creas una tabla mediante GCP Console, no puedes agregar una descripción. Después de crear la tabla, puedes agregar una en la página de Detalles (Details).

  1. En el panel Recursos (Resources), selecciona tu tabla.

  2. Debajo del Editor de consultas (Query editor), haz clic en Detalles (Details).

    Edita un esquema de tabla

  3. En la sección Descripción (Description), haz clic en el ícono de lápiz para editar la descripción.

    Edita una descripción

  4. Ingresa una descripción en el cuadro y haz clic en Actualizar (Update) para guardarla.

DDL

Las declaraciones del lenguaje de definición de datos (DDL) te permiten crear y modificar tablas y vistas mediante la sintaxis de consulta de SQL estándar.

Obtén más información sobre el uso de las declaraciones del lenguaje de definición de datos.

Para actualizar la descripción de una tabla mediante una declaración DDL en GCP Console, sigue estos pasos:

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

  2. Redacta tu declaración de DDL en el área de texto Editor de consultas (Query editor).

     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       description="Description of mytable"
     )
     

  3. Haz clic en Ejecutar (Run).

IU clásica

  1. Selecciona tu tabla en el panel de navegación.

  2. En la página Detalles de la tabla (Table Details), haz clic en Detalles (Details).

  3. En la sección Descripción (Description), haz clic en Describe esta tabla (Describe this table) para abrir el cuadro de descripción.

  4. Ingresa una descripción en el cuadro. Cuando haces clic fuera del cuadro, el texto se guarda.

    Descripción de una tabla

CLI

Ejecuta el comando bq update con la marca --description. Si actualizas una tabla en un proyecto que no es el predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos con el formato siguiente: project_id:dataset.

bq update \
--description "description" \
project_id:dataset.table

Donde:

  • description es el texto de descripción de la tabla entre comillas.
  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos que contiene la tabla que quieres actualizar.
  • table es el nombre de la tabla que quieres actualizar.

Ejemplos:

Ingresa el comando siguiente para cambiar la descripción de mytable en mydataset a “Description of mytable”. mydataset se encuentra en tu proyecto predeterminado.

bq update --description "Description of mytable" mydataset.mytable

Ingresa el comando siguiente para cambiar la descripción de mytable en mydataset a “Description of mytable”. mydataset se encuentra en myotherproject, no en tu proyecto predeterminado.

bq update \
--description "Description of mytable" \
myotherproject:mydataset.mytable

API

Llama al método tables.patch y usa la propiedad description en el recurso de tabla para actualizar la descripción de la tabla. Debido a que con el método tables.update se reemplaza todo el recurso de la tabla, es preferible usar el método tables.patch.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	Description: "Updated description.",
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

Configura la propiedad de descripción de la tabla y llama a Client.update_table() para enviar la actualización a la API.

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

Actualiza la fecha de vencimiento de una tabla

Puedes determinar una fecha de vencimiento de la tabla predeterminada a nivel de conjunto de datos o puedes configurarla cuando se crea la tabla. Se suele hablar de "tiempo de vida" o TTL para referirse a la fecha de vencimiento de una tabla.

Si configuras la fecha de vencimiento cuando se crea la tabla, se ignora el vencimiento predeterminado de la tabla del conjunto de datos. Si no estableces un vencimiento predeterminado de la tabla a nivel de conjunto de datos y no estableces un vencimiento de la tabla cuando la creas, la tabla nunca vencerá y deberás borrarla de forma manual.

En cualquier momento posterior a la creación de la tabla, puedes actualizar la fecha de vencimiento de la tabla con una de las siguientes opciones:

  • Mediante GCP Console o la IU web clásica de BigQuery
  • Con una declaración de DDL ALTER TABLE
  • Con el comando bq update de CLI.
  • Si llamas al método tables.patch de la API
  • Mediante las bibliotecas cliente

Para actualizar la fecha de vencimiento de una tabla, sigue estos pasos:

Console

No puedes agregar una fecha de vencimiento cuando creas una tabla mediante GCP Console. Después de crear una tabla, puedes agregar o actualizar su vencimiento en la página de Detalles de tabla (Table Details).

  1. En el panel Recursos (Resources), selecciona tu tabla.

  2. Debajo del Editor de consultas (Query editor), haz clic en Detalles (Details).

  3. Haz clic en el ícono de lápiz junto a Información de tabla (Table info)

  4. En Vencimiento de tabla (Table expiration), selecciona Especificar fecha (Specify date). Luego, selecciona la fecha de vencimiento mediante el widget de calendario.

  5. Haz clic en Actualizar (Update) para guardar. La fecha de vencimiento actualizada aparecerá en la sección Información de tabla (Table info).

DDL

Las declaraciones del lenguaje de definición de datos (DDL) te permiten crear y modificar tablas y vistas mediante la sintaxis de consulta de SQL estándar.

Obtén más información sobre el uso de las declaraciones del lenguaje de definición de datos.

Para actualizar la fecha de vencimiento mediante una declaración DDL en GCP Console, sigue estos pasos:

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

  2. Redacta tu declaración de DDL en el área de texto Editor de consultas (Query editor).

     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       -- Sets table expiration to timestamp 2025-02-03 12:34:56
       expiration_timestamp=TIMESTAMP "2025-02-03 12:34:56"
     )
     

  3. Haz clic en Ejecutar (Run).

IU clásica

  1. Selecciona tu tabla en el panel de navegación.

  2. En la página Detalles de la tabla (Table Details), haz clic en Detalles (Details).

  3. Para (Fecha de vencimiento) (Expiration time), haz clic en Editar (Edit).

  4. En el cuadro de diálogo Actualizar vencimiento (Update expiration), haz clic en En (In) y, luego, ingresa la fecha de vencimiento en días.

  5. Haz clic en Aceptar OK. La fecha de vencimiento actualizada aparece en la página Detalles (Details).

    Vencimiento de la tabla

CLI

Ejecuta el comando bq update con la marca --expiration. Si actualizas una tabla en un proyecto que no es el predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos con el formato siguiente: project_id:dataset.

bq update \
--expiration integer \
project_id:dataset.table

Donde:

  • integer es la duración predeterminada (en segundos) de la tabla. El valor mínimo es 3,600 segundos (una hora). La hora de vencimiento se evalúa según la hora actual más el valor del número entero. Si especificas 0, se quita el vencimiento y la tabla nunca se vence. Las tablas sin vencimiento deben borrarse de forma manual.
  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos que contiene la tabla que quieres actualizar.
  • table es el nombre de la tabla que quieres actualizar.

Ejemplos:

Ingresa el comando siguiente para actualizar la fecha de vencimiento de mytable en mydataset a 5 días (432,000 segundos). mydataset se encuentra en tu proyecto predeterminado.

bq update --expiration 432000 mydataset.mytable

Ingresa el comando siguiente para actualizar la fecha de vencimiento de mytable en mydataset a 5 días (432,000 segundos). mydataset se encuentra en myotherproject, no en tu proyecto predeterminado.

bq update --expiration 432000 myotherproject:mydataset.mytable

API

Llama al método tables.patch y usa la propiedad expirationTime en el recurso de tabla para actualizar el vencimiento de la tabla en milisegundos. Debido a que con el método tables.update se reemplaza todo el recurso de la tabla, es preferible usar el método tables.patch.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Table beforeTable = bigquery.getTable(datasetName, tableName);

// Set table to expire 5 days from now.
long expirationMillis = DateTime.now().plusDays(5).getMillis();
TableInfo tableInfo = beforeTable.toBuilder()
        .setExpirationTime(expirationMillis)
        .build();
Table afterTable = bigquery.update(tableInfo);

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

Configura la propiedad Table.expires y llama a Client.update_table() para enviar la actualización a la API.

import datetime
import pytz

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.expires is None

# set table to expire 5 days from now
expiration = datetime.datetime.now(pytz.utc) + datetime.timedelta(days=5)
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

# expiration is stored in milliseconds
margin = datetime.timedelta(microseconds=1000)
assert expiration - margin <= table.expires <= expiration + margin

Actualiza la definición de esquema de la tabla

Si deseas obtener instrucciones para actualizar la definición de esquema de una tabla, consulta Modifica esquemas de tablas.

Renombra una tabla

En la actualidad, no puedes renombrar una tabla existente. Si necesitas cambiar el nombre, sigue los pasos para copiar la tabla. Cuando especifiques la tabla de destino en la operación de copia, usa el nombre de tabla nuevo.

Copia una tabla

Puedes copiar una tabla de las maneras siguientes:

  • Mediante GCP Console o la IU web clásica de BigQuery
  • Mediante el comando bq cp de la herramienta de línea de comandos
  • Mediante una llamada al método jobs.insert de la API y la configuración de un trabajo de copy
  • Mediante las bibliotecas cliente

Permisos necesarios

Como mínimo, para copiar tablas y particiones, debes tener los permisos siguientes.

En el conjunto de datos de origen:

  • bigquery.tables.get
  • bigquery.tables.getData

En el conjunto de datos de destino:

  • bigquery.tables.create se usa para crear la copia de la tabla o partición en el conjunto de datos de destino

Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos de bigquery.tables.create, bigquery.tables.get y bigquery.tables.getData:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Además, para ejecutar el trabajo de copia, debes tener permisos de bigquery.jobs.create.

Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos de bigquery.jobs.create:

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

Además, si un usuario tiene permisos de bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso de bigquery.dataOwner. El acceso bigquery.dataOwner otorga al usuario la capacidad de copiar tablas y particiones en el conjunto de datos, pero se requiere acceso al conjunto de datos de destino, a menos que este también lo haya creado el usuario.

Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Control de acceso.

Limitaciones sobre la copia de tablas

Los trabajos de copia de tablas están sujetos a las limitaciones siguientes:

  • Cuando copias una tabla, el nombre de la tabla de destino debe respetar las mismas convenciones que cuando creas una tabla.
  • Las copias de tablas están sujetas a las políticas de cuota de BigQuery para trabajos de copia.
  • Cuando usas GCP Console o la IU web clásica de BigQuery para copiar una tabla, no puedes sobrescribir una tabla existente en el conjunto de datos de destino. La tabla debe tener un nombre único en el conjunto de datos de destino.
  • Cuando copias tablas, el conjunto de datos de destino debe residir en la misma ubicación que el conjunto de datos que contiene la tabla que quieres copiar. Por ejemplo, no puedes copiar una tabla de un conjunto de datos de la región de la UE y escribirla en un conjunto de datos de la región de EE.UU.
  • GCP Console y la IU web clásica de BigQuery no admiten la copia de múltiples tablas de origen en una tabla de destino.
  • Cuando copias múltiples tablas fuente a una tabla de destino con CLI o la API, todas las tablas deben tener esquemas idénticos.

Copia una sola tabla fuente

Puedes copiar una tabla de las maneras siguientes:

  • Mediante GCP Console o la IU web clásica de BigQuery
  • Mediante el comando bq cp de la herramienta de línea de comandos
  • Mediante una llamada al método jobs.insert de la API, la configuración de un trabajo copy y la especificación de la propiedad sourceTable
  • Mediante las bibliotecas cliente

GCP Console y la IU web clásica de BigQuery solo admiten una tabla de origen y una tabla de destino en un trabajo de copia. Para copiar múltiples archivos fuente a una tabla de destino, debes usar la herramienta de línea de comandos o la API.

Para copiar una sola tabla fuente, sigue estos pasos:

Console

  1. Selecciona la tabla que deseas copiar desde el panel Recursos (Resources).

  2. Debajo del Editor de consultas (Query editor), haz clic en Copiar tabla (Copy table).

  3. En el cuadro de diálogo Copiar tabla (Copy table), en Destino (Destination), haz lo siguiente:

    • En Nombre del proyecto (Project name), elige el proyecto que almacenará la tabla copiada.
    • En Nombre del conjunto de datos (Dataset name), selecciona el conjunto de datos en el que deseas almacenar la tabla copiada. Los conjuntos de datos de origen y de destino deben estar en la misma ubicación.
    • En Nombre de tabla (Table name), ingresa un nombre para la tabla nueva. El nombre debe ser único en el conjunto de datos de destino. El nombre de la tabla puede tener hasta 1,024 caracteres de la A a la Z (mayúsculas o minúsculas), números del 0 al 9, o _ (el carácter de guion bajo). No puedes reemplazar una tabla existente en el conjunto de datos de destino mediante GCP Console.
  4. Haz clic en Copiar (Copiar) para iniciar el trabajo de copia.

IU clásica

  1. Haz clic en el ícono de mostrar menú flecha hacia abajo que se encuentra al lado de la tabla que quieres copiar y haz clic en Copiar tabla (Copy Table).

  2. En el cuadro de diálogo Copy Table (Copiar tabla), sigue estos pasos:

    • En Proyecto de destino (Destination project), selecciona el proyecto que almacenará la tabla copiada.
    • En Conjunto de datos de destino (Destination dataset), selecciona el conjunto de datos en el que deseas almacenar la tabla copiada. Los conjuntos de datos de origen y de destino deben estar en la misma ubicación.
    • En Tabla de destino (Destination table), ingresa un nombre para la tabla nueva. El nombre debe ser único en el conjunto de datos de destino. El nombre de la tabla puede tener hasta 1,024 caracteres de la A a la Z (mayúsculas o minúsculas), números del 0 al 9, o _ (el carácter de guion bajo). No puedes reemplazar una tabla existente en el conjunto de datos de destino con la IU web clásica de BigQuery.

      Copia de tabla

  3. Haz clic en Aceptar para iniciar el trabajo de copia.

CLI

Ejecuta el comando bq cp. Se pueden usar marcas opcionales a fin de controlar la disposición de escritura de la tabla de destino:

  • -a o --append_table anexan los datos de la tabla de origen a una tabla existente en el conjunto de datos de destino.
  • -f o --force reemplazan una tabla existente en el conjunto de datos de destino y no te solicitan confirmación.
  • -n o --no_clobber muestran el siguiente mensaje de error si la tabla ya existe en el conjunto de datos de destino: Table 'project_id:dataset.table' already exists, skipping. Si no se especifica -n, el comportamiento predeterminado es solicitarte que elijas si deseas reemplazar la tabla de destino.
  • --destination_kms_key es la clave de Cloud KMS administrada por el cliente que se usa para encriptar la tabla de destino.

--destination_kms_key no se muestra aquí. Consulta la protección de datos con claves de Cloud Key Management Service para obtener más información.

Si el conjunto de datos de origen o de destino se encuentra en un proyecto que no es el predeterminado, debes agregar el ID del proyecto a los nombres de los conjuntos de datos con el formato siguiente: project_id:dataset.

Proporciona la marca --location y configura el valor como tu ubicación (opcional).

bq --location=location cp \
-a -f -n \
project_id:dataset.source_table \
project_id:dataset.destination_table

Donde:

  • location es el nombre de tu ubicación. La marca --location es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de las marcas en asia-northeast1. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc.
  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos de origen o de destino.
  • source_table es la tabla que quieres copiar.
  • destination_table es el nombre de la tabla en el conjunto de datos de destino.

Ejemplos:

Ingresa el comando siguiente para copiar mydataset.mytable a mydataset2.mytable2. Ambos conjuntos de datos se encuentran en tu proyecto predeterminado.

bq cp mydataset.mytable mydataset2.mytable2

Ingresa el comando siguiente para copiar mydataset.mytable y reemplazar una tabla de destino con el mismo nombre. El conjunto de datos fuente se encuentra en tu proyecto predeterminado. El conjunto de datos de destino se encuentra en myotherproject. La combinación de teclas -f se usa para reemplazar la tabla de destino sin confirmación.

bq cp -f \
mydataset.mytable \
myotherproject:myotherdataset.mytable

Ingresa el comando siguiente para copiar mydataset.mytable y mostrar un error si el conjunto de datos de destino contiene una tabla con el mismo nombre. El conjunto de datos fuente se encuentra en tu proyecto predeterminado. El conjunto de datos de destino se encuentra en myotherproject. La combinación de teclas -n se usa para evitar reemplazar una tabla con el mismo nombre.

bq cp -n \
mydataset.mytable \
myotherproject:myotherdataset.mytable

Ingresa el comando siguiente para copiar mydataset.mytable y anexar los datos a una tabla de destino con el mismo nombre. El conjunto de datos fuente se encuentra en tu proyecto predeterminado. El conjunto de datos de destino se encuentra en myotherproject. La combinación de teclas - a se usa para anexar datos a la tabla de destino.

bq cp -a mydataset.mytable myotherproject:myotherdataset.mytable

API

Puedes copiar una tabla existente a través de la API mediante una llamada al método bigquery.jobs.insert y la configuración de un trabajo de copy. Especifica tu ubicación en la propiedad location en la sección jobReference del recurso de trabajo.

Debes especificar los valores siguientes en tu configuración de trabajo:

"copy": {
      "sourceTable": {       // Required
        "projectId": string, // Required
        "datasetId": string, // Required
        "tableId": string    // Required
      },
      "destinationTable": {  // Required
        "projectId": string, // Required
        "datasetId": string, // Required
        "tableId": string    // Required
      },
      "createDisposition": string,  // Optional
      "writeDisposition": string,   // Optional
    },

Aquí, sourceTable proporciona información sobre la tabla que se copiará, destinationTable brinda información sobre la tabla nueva, createDisposition especifica si se debe crear la tabla cuando no existe y writeDisposition especifica si se anexan datos a una tabla existente o si se la reemplaza.

C#

Antes de probar este ejemplo, sigue las instrucciones de configuración para C# que se encuentran en la guía de inicio rápido de BigQuery con bibliotecas cliente. Si necesitas más información, consulta la documentación de referencia de la API de BigQuery para C#.


using Google.Apis.Bigquery.v2.Data;
using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryCopyTable
{
    public void CopyTable(
        string projectId = "your-project-id",
        string destinationDatasetId = "your_dataset_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        TableReference sourceTableRef = new TableReference()
        {
            TableId = "shakespeare",
            DatasetId = "samples",
            ProjectId = "bigquery-public-data"
        };
        TableReference destinationTableRef = client.GetTableReference(
            destinationDatasetId, "destination_table");
        BigQueryJob job = client.CreateCopyJob(
            sourceTableRef, destinationTableRef)
            .PollUntilCompleted();  // Wait for the job to complete.
        // Retrieve destination table
        BigQueryTable destinationTable = client.GetTable(destinationTableRef);
        Console.WriteLine(
            $"Copied {destinationTable.Resource.NumRows} rows from table "
            + $"{sourceTableRef.DatasetId}.{sourceTableRef.TableId} "
            + $"to {destinationTable.FullyQualifiedId}."
        );
    }
}

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
dataset := client.Dataset(datasetID)
copier := dataset.Table(dstID).CopierFrom(dataset.Table(srcID))
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

TableId destinationId = TableId.of(dataset, tableName);
JobOption options = JobOption.fields(JobField.STATUS, JobField.USER_EMAIL);
Job job = table.copy(destinationId, options);
// Wait for the job to complete.
try {
  Job completedJob =
      job.waitFor(
          RetryOption.initialRetryDelay(Duration.ofSeconds(1)),
          RetryOption.totalTimeout(Duration.ofMinutes(3)));
  if (completedJob != null && completedJob.getStatus().getError() == null) {
    // Job completed successfully.
  } else {
    // Handle error case.
  }
} catch (InterruptedException e) {
  // Handle interrupted wait
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.

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

async function copyTable() {
  // Copies src_dataset:src_table to dest_dataset:dest_table.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const srcDatasetId = "my_src_dataset";
  // const srcTableId = "my_src_table";
  // const destDatasetId = "my_dest_dataset";
  // const destTableId = "my_dest_table";

  // Copy the table contents into another table
  const [job] = await bigquery
    .dataset(srcDatasetId)
    .table(srcTableId)
    .copy(bigquery.dataset(destDatasetId).table(destTableId));

  console.log(`Job ${job.id} completed.`);

  // Check the job's status for errors
  const errors = job.status.errors;
  if (errors && errors.length > 0) {
    throw errors;
  }
}

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para PHP.

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $sourceTableId   = 'The BigQuery table ID to copy from';
// $destinationTableId = 'The BigQuery table ID to copy to';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$sourceTable = $dataset->table($sourceTableId);
$destinationTable = $dataset->table($destinationTableId);
$copyConfig = $sourceTable->copy($destinationTable);
$job = $sourceTable->runJob($copyConfig);

// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
    $error = $job->info()['status']['errorResult']['message'];
    printf('Error running job: %s' . PHP_EOL, $error);
} else {
    print('Table copied successfully' . PHP_EOL);
}

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Python.

# from google.cloud import bigquery
# client = bigquery.Client()

source_dataset = client.dataset("samples", project="bigquery-public-data")
source_table_ref = source_dataset.table("shakespeare")

# dataset_id = 'my_dataset'
dest_table_ref = client.dataset(dataset_id).table("destination_table")

job = client.copy_table(
    source_table_ref,
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request

job.result()  # Waits for job to complete.

assert job.state == "DONE"
dest_table = client.get_table(dest_table_ref)  # API request
assert dest_table.num_rows > 0

Copia múltiples tablas de origen

Puedes copiar múltiples tablas de origen en una tabla de destino de las maneras siguientes:

  • Mediante el comando bq cp de la herramienta de línea de comandos
  • Mediante una llamada al método jobs.insert de la API, la configuración de un trabajo de copy y la especificación de la propiedad sourceTables
  • Mediante las bibliotecas cliente

Todas las tablas de origen deben tener esquemas idénticos y solo se permite una tabla de destino.

Las tablas fuente deben especificarse en una lista separada por comas. No puedes usar comodines cuando copias múltiples tablas fuente.

Para copiar múltiples tablas fuente, sigue estos pasos:

Console

En la actualidad, GCP Console no admite la copia de múltiples tablas.

IU clásica

En la actualidad, la IU web clásica de BigQuery no admite la copia de múltiples tablas.

CLI

Ejecuta el comando bq cp y, luego, incluye múltiples tablas fuente en una lista separada por comas. Se pueden usar marcas opcionales a fin de controlar la disposición de escritura de la tabla de destino:

  • -a o --append_table anexan los datos de las tablas fuente a una tabla existente en el conjunto de datos de destino.
  • -f o --force reemplazan una tabla de destino existente en el conjunto de datos de destino y no te solicitan confirmación.
  • -n o --no_clobber muestran el siguiente mensaje de error si la tabla ya existe en el conjunto de datos de destino: Table 'project_id:dataset.table' already exists, skipping. Si no se especifica -n, el comportamiento predeterminado es solicitarte que elijas si deseas reemplazar la tabla de destino.
  • --destination_kms_key es la clave de Cloud Key Management Service administrada por el cliente que se usa para encriptar la tabla de destino.

--destination_kms_key no se muestra aquí. Consulta la protección de datos con claves de Cloud Key Management Service para obtener más información.

Si el conjunto de datos de origen o de destino se encuentra en un proyecto que no es el predeterminado, debes agregar el ID del proyecto a los nombres de los conjuntos de datos con el formato siguiente: project_id:dataset.

Proporciona la marca --location y configura el valor como tu ubicación (opcional).

bq --location=location cp \
-a -f -n \
project_id:dataset.source_table,project_id:dataset.source_table \
project_id:dataset.destination_table

Donde:

  • location es el nombre de tu ubicación. La marca --location es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de las marcas en asia-northeast1. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc.
  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos de origen o de destino.
  • source_table es la tabla que quieres copiar.
  • destination_table es el nombre de la tabla en el conjunto de datos de destino.

Ejemplos:

Ingresa el comando siguiente para copiar mydataset.mytable y mydataset.mytable2 a mydataset2.tablecopy. Todos los conjuntos de datos se encuentran en tu proyecto predeterminado.

bq cp \
mydataset.mytable,mydataset.mytable2 \
mydataset2.tablecopy

Ingresa el comando siguiente para copiar mydataset.mytable y mydataset.mytable2 a myotherdataset.mytable y reemplazar una tabla de destino con el mismo nombre. El conjunto de datos de destino se encuentra en myotherproject, no en tu proyecto predeterminado. La combinación de teclas -f se usa para reemplazar la tabla de destino sin confirmación.

bq cp -f \
mydataset.mytable,mydataset.mytable2 \
myotherproject:myotherdataset.mytable

Ingresa el comando siguiente para copiar myproject:mydataset.mytable y myproject:mydataset.mytable2 y mostrar un error si el conjunto de datos de destino contiene una tabla con el mismo nombre. El conjunto de datos de destino se encuentra en myotherproject. La combinación de teclas -n se usa para evitar reemplazar una tabla con el mismo nombre.

bq cp -n \
myproject:mydataset.mytable,myproject:mydataset.mytable2 \
myotherproject:myotherdataset.mytable

Ingresa el comando siguiente para copiar mydataset.mytable y mydataset.mytable2, y anexar los datos a una tabla de destino con el mismo nombre. El conjunto de datos fuente se encuentra en tu proyecto predeterminado. El conjunto de datos de destino se encuentra en myotherproject. La combinación de teclas-a se usa para anexar datos a la tabla de destino.

bq cp -a \
mydataset.mytable,mydataset.mytable2 \
myotherproject:myotherdataset.mytable

API

Si deseas copiar múltiples tablas con la API, llama al método jobs.insert, configura un trabajo de copy para la tabla y especifica la propiedad sourceTables.

Especifica tu región en la propiedad location en la sección jobReference del recurso de trabajo.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
dataset := client.Dataset(datasetID)

srcTableIDs := []string{"table1", "table2"}
var tableRefs []*bigquery.Table
for _, v := range srcTableIDs {
	tableRefs = append(tableRefs, dataset.Table(v))
}
copier := dataset.Table(dstTableID).CopierFrom(tableRefs...)
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

TableId destinationTable = TableId.of(datasetId, destinationTableId);
CopyJobConfiguration configuration =
    CopyJobConfiguration.newBuilder(
        destinationTable,
        Arrays.asList(
            TableId.of(datasetId, "table1"),
            TableId.of(datasetId, "table2")))
    .build();

// Copy the tables.
Job job = bigquery.create(JobInfo.of(configuration));
job = job.waitFor();

// Check the table
StandardTableDefinition table = bigquery.getTable(destinationTable).getDefinition();
System.out.println("State: " + job.getStatus().getState());
System.out.printf("Copied %d rows.\n", table.getNumRows());

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Python.

# from google.cloud import bigquery
# client = bigquery.Client()
# source_dataset_id = 'my_source_dataset'
# dest_dataset_id = 'my_destination_dataset'

table1_ref = client.dataset(source_dataset_id).table("table1")
table2_ref = client.dataset(source_dataset_id).table("table2")
dest_table_ref = client.dataset(dest_dataset_id).table("destination_table")

job = client.copy_table(
    [table1_ref, table2_ref],
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request
job.result()  # Waits for job to complete.

assert job.state == "DONE"
dest_table = client.get_table(dest_table_ref)  # API request
assert dest_table.num_rows > 0

Borra tablas

Puedes borrar una tabla de las maneras siguientes:

  • Mediante GCP Console o la IU web clásica de BigQuery
  • Mediante el comando bq rm de la herramienta de línea de comandos
  • Si llamas al método tables.delete de la API
  • Mediante las bibliotecas cliente

Por ahora, solo puedes borrar una tabla a la vez.

Cuando borras una tabla, también se borra cualquier dato en ella. Para borrar las tablas de forma automática después de un tiempo determinado, debes establecer el vencimiento predeterminado de la tabla para el conjunto de datos o configurar la fecha de vencimiento cuando creas la tabla.

Permisos necesarios

Como mínimo, para borrar una tabla, debes tener los permisos de bigquery.tables.delete y bigquery.tables.get. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos de bigquery.tables.delete y bigquery.tables.get:

  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

Además, si un usuario tiene permisos de bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso de bigquery.dataOwner. El acceso de bigquery.dataOwner otorga al usuario la capacidad de borrar tablas en el conjunto de datos.

Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Control de acceso.

Borra una tabla

Para borrar una tabla, sigue estos pasos:

Console

  1. Selecciona tu tabla en el panel de Recursos (Resources). Debajo del Editor de consultas (Query editor), haz clic en Borrar tabla (Delete table).

  2. Escribe el nombre de la tabla en el cuadro de diálogo y, luego, haz clic en Borrar (Delete) para confirmar.

IU clásica

  1. Haz clic en el ícono de flecha hacia abajo ícono de flecha hacia abajo junto al nombre de tu tabla en la barra de navegación y haz clic en Borrar tabla (Delete table).

  2. Cuando se te solicite, haz clic en Aceptar (OK) para confirmar.

CLI

Usa el comando bq rm con la marca --table (o la combinación de teclas -t) para borrar una tabla. Cuando usas la CLI para quitar una tabla, debes confirmar la acción. Puedes usar la marca --force (o la combinación de teclas -f) para omitir la confirmación.

Si la tabla se encuentra en un conjunto de datos en un proyecto que no es el predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos con el formato siguiente: project_id:dataset.

bq rm \
-f \
-t \
project_id:dataset.table

Donde:

  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos que contiene la tabla.
  • table es el nombre de la tabla que quieres borrar.

Ejemplos:

Ingresa el comando siguiente para borrar mytable de mydataset. mydataset se encuentra en tu proyecto predeterminado.

bq rm -t mydataset.mytable

Ingresa el comando siguiente para borrar mytable de mydataset. mydataset se encuentra en myotherproject, no en tu proyecto predeterminado.

bq rm -t myotherproject:mydataset.mytable

Ingresa el comando siguiente para borrar mytable de mydataset. mydataset se encuentra en tu proyecto predeterminado. El comando usa la combinación de teclas -f para omitir la confirmación.

bq rm -f -t mydataset.mytable

API

Llama al método tables.delete de la API y especifica la tabla que quieres borrar con el parámetro tableId.

C#

Antes de probar este ejemplo, sigue las instrucciones de configuración para C# que se encuentran en la guía de inicio rápido de BigQuery con bibliotecas cliente. Si necesitas más información, consulta la documentación de referencia de la API de BigQuery para C#.


using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
table := client.Dataset(datasetID).Table(tableID)
if err := table.Delete(ctx); err != nil {
	return err
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.

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

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

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

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para PHP.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Python.

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True
client.delete_table(table_id, not_found_ok=True)
print("Deleted table '{}'.".format(table_id))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración para Ruby que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Ruby.

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

Restablece tablas borradas

Es posible restablecer una tabla dentro de los 2 días luego de que se borró. Si se aprovecha la función de decorador de instantáneas, es posible hacer referencia a una tabla antes del evento de borrado y, luego, copiarla. Ten en cuenta la información siguiente:

  • No se puede hacer referencia a una tabla borrada si ya creaste una nueva tabla con el mismo nombre en el mismo conjunto de datos.

  • No se puede hacer referencia a una tabla borrada si borraste el conjunto de datos que la contenía y ya creaste un nuevo conjunto de datos con el mismo nombre.

Restablece una tabla borrada

Puedes restablecer una tabla borrada de las maneras siguientes:

  • Mediante el decorador de instantáneas @<time> en la CLI
  • Mediante las bibliotecas cliente

Console

No puedes recuperar una tabla mediante GCP Console.

IU clásica

No puedes recuperar una tabla mediante la IU web clásica.

CLI

Para recuperar una tabla con SQL heredado, usa el decorador instantáneo @<time>. Primero, determina una marca de tiempo UNIX de cuando existió la tabla (en milisegundos). Luego, copia la tabla en esa marca de tiempo a la tabla nueva. La tabla nueva debe tener un nombre distinto al de la tabla borrada.

Proporciona la marca --location y configura el valor como tu ubicación (opcional).

Por ejemplo, ingresa el comando siguiente para copiar mydataset.mytable en el tiempo 1418864998000 a la tabla nueva mydataset.newtable.

bq cp mydataset.mytable@1418864998000 mydataset.newtable

Para obtener más información, consulta Decoradores de tabla en SQL heredado.

Go

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")

ds := client.Dataset(datasetID)
if _, err := ds.Table(tableID).Metadata(ctx); err != nil {
	return err
}
// Record the current time.  We'll use this as the snapshot time
// for recovering the table.
snapTime := time.Now()

// "Accidentally" delete the table.
if err := client.Dataset(datasetID).Table(tableID).Delete(ctx); err != nil {
	return err
}

// Construct the restore-from tableID using a snapshot decorator.
snapshotTableID := fmt.Sprintf("%s@%d", tableID, snapTime.UnixNano()/1e6)
// Choose a new table ID for the recovered table data.
recoverTableID := fmt.Sprintf("%s_recovered", tableID)

// Construct and run a copy job.
copier := ds.Table(recoverTableID).CopierFrom(ds.Table(snapshotTableID))
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

// String datasetId = "my_dataset";
String tableId = "oops_undelete_me";

// Record the current time.  We'll use this as the snapshot time
// for recovering the table.
long snapTime = Instant.now().getMillis();

// "Accidentally" delete the table.
bigquery.delete(TableId.of(datasetId, tableId));

// Construct the restore-from tableID using a snapshot decorator.
String snapshotTableId = String.format("%s@%d", tableId, snapTime);
// Choose a new table ID for the recovered table data.
String recoverTableId = String.format("%s_recovered", tableId);

// Construct and run a copy job.
CopyJobConfiguration configuration =
    CopyJobConfiguration.newBuilder(
        TableId.of(datasetId, recoverTableId),
        TableId.of(datasetId, snapshotTableId))
    .build();
Job job = bigquery.create(JobInfo.of(configuration));
job = job.waitFor();

// Check the table
StandardTableDefinition table = bigquery.getTable(
        TableId.of(datasetId, recoverTableId)).getDefinition();
System.out.println("State: " + job.getStatus().getState());
System.out.printf("Recovered %d rows.\n", table.getNumRows());

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Python.

# TODO(developer): Uncomment the lines below and replace with your values.
# import time
# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'  # Replace with your dataset ID.
# table_id = 'my_table'      # Replace with your table ID.

table_ref = client.dataset(dataset_id).table(table_id)

# TODO(developer): Choose an appropriate snapshot point as epoch
# milliseconds. For this example, we choose the current time as we're about
# to delete the table immediately afterwards.
snapshot_epoch = int(time.time() * 1000)

# "Accidentally" delete the table.
client.delete_table(table_ref)  # API request

# Construct the restore-from table ID using a snapshot decorator.
snapshot_table_id = "{}@{}".format(table_id, snapshot_epoch)
source_table_ref = client.dataset(dataset_id).table(snapshot_table_id)

# Choose a new table ID for the recovered table data.
recovered_table_id = "{}_recovered".format(table_id)
dest_table_ref = client.dataset(dataset_id).table(recovered_table_id)

# Construct and run a copy job.
job = client.copy_table(
    source_table_ref,
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request

job.result()  # Waits for job to complete.

print(
    "Copied data from deleted table {} to {}".format(table_id, recovered_table_id)
)

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

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