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
En la consola de Google Cloud, ve a la página de BigQuery.
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.
Haz clic en el nombre de la instantánea de la tabla.
En el panel de instantánea de tabla que aparece, haz clic en Copiar (Copy).
En el panel Restablecer instantánea que aparecerá, escribe la información para Proyecto, Conjunto de datos y Tabla de la tabla nueva.
Haz clic en Guardar.
SQL
Usa la declaración DDL CREATE TABLE CLONE
:
En la consola de Google Cloud, ve a la página de BigQuery.
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.
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:
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
En la consola de Google Cloud, ve a la página de BigQuery.
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.
Haz clic en el nombre de la instantánea de la tabla.
En el panel de instantánea de tabla que aparece, haz clic en Copiar (Copy).
En el panel Restablecer instantánea que aparecerá, escribe la información para Proyecto, Conjunto de datos y Tabla de la tabla existente.
Elige Reemplazar tabla si existe.
Haz clic en Guardar.
SQL
Usa la declaración DDL CREATE TABLE CLONE
:
En la consola de Google Cloud, ve a la página de BigQuery.
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.
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:
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.