Restablece las instantáneas de tablas

En este documento, se describe cómo crear una tabla que admita escritura a partir de una instantánea de tabla mediante la consola de Google Cloud, una consulta de CREATE TABLE CLONE, un comando bq cp o la API de jobs.insert. Está dirigido a usuarios que estén familiarizados con las instantáneas de tablas.

Permisos y roles

Esta sección describe lo siguiente: Permisos de Identity and Access Management (IAM) que necesitas para crear una tabla que admita escritura a partir de una instantánea de tabla yroles predefinidos de IAM que otorguen esos permisos.

Permisos

Para crear una tabla que admita escritura a partir de una instantánea de tabla, necesitas los siguientes permisos:

Permiso Recurso
Todos los siguientes:

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
La instantánea de tabla que deseas copiar en una tabla que admita escritura.
bigquery.tables.create El conjunto de datos que contiene la tabla de destino.

Funciones

A continuación, se enumeran los roles predefinidos de BigQuery que proporcionan los permisos necesarios:

Función Recurso
Cualquiera de los siguientes:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
La instantánea de tabla que deseas copiar en una tabla que admita escritura.
Cualquiera de los siguientes:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
El conjunto de datos que contiene la tabla de destino.

Restablece una instantánea de tabla

Para crear una tabla que admita escritura a partir de una instantánea, especifica la instantánea de la tabla que deseas copiar y la tabla de destino. La tabla de destino puede ser una tabla nueva o puedes reemplazar una existente por la instantánea de la tabla.

Restablece a una tabla nueva

Puedes restablecer una instantánea de tabla en una tabla nueva con una de las siguientes opciones:

Console

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorer, expande los nodos del proyecto y del conjunto de datos de la instantánea de tabla desde la que deseas restablecer.

  3. Haz clic en el nombre de la instantánea de la tabla.

  4. En el panel de instantánea de tabla que aparece, haz clic en Copiar (Copy).

    Restablece una tabla a partir desde una instantánea

  5. En el panel Restablecer instantánea que aparecerá, escribe la información para Proyecto, Conjunto de datos y Tabla de la tabla nueva.

  6. Haz clic en Guardar.

SQL

Usa la declaración DDL CREATE TABLE CLONE:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    Reemplaza lo siguiente:

    • TABLE_PROJECT_ID: Es el ID del proyecto en el que se creará la tabla nueva.
    • TABLE_DATASET_NAME: Es el nombre del conjunto de datos en el que se creará la tabla nueva.
    • NEW_TABLE_NAME: Es el nombre de la tabla nueva.
    • SNAPSHOT_PROJECT_ID: Es el ID del proyecto que contiene la instantánea desde la que restableces.
    • SNAPSHOT_DATASET_NAME: Es el nombre del conjunto de datos que contiene la instantánea desde la que restableces.
    • SNAPSHOT_NAME: Es el nombre de la instantánea desde la que restableces.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

bq

Escribe el siguiente comando en Cloud Shell:

Ir a Cloud Shell

bq cp \
--restore \
--no_clobber \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.NEW_TABLE_NAME

Reemplaza lo siguiente:

  • SNAPSHOT_PROJECT_ID: Es el ID del proyecto que contiene la instantánea desde la que restableces.
  • SNAPSHOT_DATASET_NAME: Es el nombre del conjunto de datos que contiene la instantánea desde la que restableces.
  • SNAPSHOT_NAME: Es el nombre de la instantánea desde la que restableces.
  • TABLE_PROJECT_ID: Es el ID del proyecto en el que se creará la tabla nueva.
  • TABLE_DATASET_NAME: Es el nombre del conjunto de datos en el que se creará la tabla nueva.
  • NEW_TABLE_NAME: Es el nombre de la tabla nueva.

La marca --no_clobber le indica al comando que falle si la tabla de destino ya existe.

API

Llama al método jobs.insert con los siguientes parámetros:

Parámetro Valor
projectId El ID del proyecto que se facturará para esta operación.
Cuerpo de la solicitud
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "NEW_TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

Reemplaza lo siguiente:

  • SNAPSHOT_PROJECT_ID: Es el ID del proyecto que contiene la instantánea desde la que restableces.
  • SNAPSHOT_DATASET_NAME: Es el nombre del conjunto de datos que contiene la instantánea desde la que restableces.
  • SNAPSHOT_NAME: Es el nombre de la instantánea desde la que restableces.
  • TABLE_PROJECT_ID: Es el ID del proyecto en el que se creará la tabla nueva.
  • TABLE_DATASET_NAME: Es el nombre del conjunto de datos en el que se creará la tabla nueva.
  • NEW_TABLE_NAME: Es el nombre de la tabla nueva.

Si no se especifica un vencimiento, la tabla de destino vencerá después del vencimiento predeterminado del conjunto de datos que contiene la tabla de destino.

Reemplaza una tabla existente

Puedes reemplazar una tabla existente con una instantánea de tabla mediante una de las siguientes opciones:

Console

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorer, expande los nodos del proyecto y del conjunto de datos de la instantánea de tabla desde la que deseas restablecer.

  3. Haz clic en el nombre de la instantánea de la tabla.

  4. En el panel de instantánea de tabla que aparece, haz clic en Copiar (Copy).

    Restablece una tabla a partir desde una instantánea

  5. En el panel Restablecer instantánea que aparecerá, escribe la información para Proyecto, Conjunto de datos y Tabla de la tabla existente.

  6. Elige Reemplazar tabla si existe.

  7. Haz clic en Guardar.

SQL

Usa la declaración DDL CREATE TABLE CLONE:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    Reemplaza lo siguiente:

    • TABLE_PROJECT_ID: Es el ID del proyecto en el que se creará la tabla nueva.
    • TABLE_DATASET_NAME: Es el nombre del conjunto de datos que contiene la tabla que deseas reemplazar.
    • TABLE_NAME: Es el nombre de la tabla que deseas reemplazar.
    • SNAPSHOT_PROJECT_ID: Es el ID del proyecto que contiene la instantánea desde la que restableces.
    • SNAPSHOT_DATASET_NAME: Es el nombre del conjunto de datos que contiene la instantánea desde la que restableces.
    • SNAPSHOT_NAME: Es el nombre de la instantánea desde la que restableces.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

bq

Escribe el siguiente comando en Cloud Shell:

Ir a Cloud Shell

bq cp \
--restore \
--force \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME

Reemplaza lo siguiente:

  • SNAPSHOT_PROJECT_ID: Es el ID del proyecto que contiene la instantánea desde la que restableces.
  • SNAPSHOT_DATASET_NAME: Es el nombre del conjunto de datos que contiene la instantánea desde la que restableces.
  • SNAPSHOT_NAME: Es el nombre de la instantánea desde la que restableces.
  • TABLE_PROJECT_ID: Es el ID del proyecto en el que se creará la tabla nueva.
  • TABLE_DATASET_NAME: Es el nombre del conjunto de datos que contiene la tabla que deseas reemplazar.
  • TABLE_NAME: Es el nombre de la tabla que deseas reemplazar.

API

Llama al método jobs.insert con los siguientes parámetros:

Parámetro Valor
projectId El ID del proyecto que se facturará para esta operación.
Cuerpo de la solicitud
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

Reemplaza lo siguiente:

  • SNAPSHOT_PROJECT_ID: Es el ID del proyecto que contiene la instantánea desde la que restableces.
  • SNAPSHOT_DATASET_NAME: Es el nombre del conjunto de datos que contiene la instantánea desde la que restableces.
  • SNAPSHOT_NAME: Es el nombre de la instantánea desde la que restableces.
  • TABLE_PROJECT_ID: Es el ID del proyecto en el que se creará la tabla nueva.
  • TABLE_DATASET_NAME: Es el nombre del conjunto de datos que contiene la tabla que deseas reemplazar.
  • TABLE_NAME: Es el nombre de la tabla que deseas reemplazar.

Si no se especifica un vencimiento, la tabla de destino vencerá después del vencimiento predeterminado del conjunto de datos que contiene la tabla de destino.

¿Qué sigue?