Restablece tablas borradas
En este documento, se describe cómo restablecer (o recuperar) una tabla borrada en BigQuery. Puedes restablecer una tabla borrada dentro del período de viaje en el tiempo especificado para el conjunto de datos, incluidas las eliminaciones explícitas y las implícitas debido al vencimiento de la tabla. También puedes configurar el período de viaje en el tiempo.
Para obtener información sobre cómo restablecer un conjunto de datos o una instantánea borrados, consulta los siguientes recursos:
El período de viaje en el tiempo puede tener una duración de dos a siete días. Después de que transcurre el período de viaje en el tiempo, BigQuery proporciona un período de seguridad ante fallas en el que los datos borrados se conservan automáticamente durante siete días más. Una vez que transcurre el período de seguridad, no es posible restablecer una tabla con ningún método, incluida la apertura de un ticket de asistencia.
Antes de comenzar
Asegúrate de tener los permisos de Identity and Access Management (IAM) necesarios para restablecer una tabla borrada.
Si restableces una tabla de un conjunto de datos borrado, debes volver a crear el conjunto de datos en la misma región en la que se almacenó originalmente. Si se vuelve a crear el conjunto de datos en otra región, se producirá un error en el restablecimiento de la tabla de viaje en el tiempo.
Roles obligatorios
Para obtener los permisos que necesitas para restablecer una tabla borrada, pídele a tu administrador que te otorgue el rol de IAM de usuario de BigQuery (roles/bigquery.user) en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Restablece una tabla
Para restablecer una tabla desde los datos históricos, puedes copiar los datos históricos en una tabla nueva. La copia de datos históricos funciona incluso si la tabla se borró o caducó, siempre que restablezcas la tabla dentro de la duración del período de viaje en el tiempo.
Cuando restableces una tabla a partir de datos históricos, las etiquetas de la tabla de origen no se copian en la tabla de destino. La información de partición de la tabla tampoco se copia en la tabla de destino. Para volver a crear el esquema de partición de la tabla original, puedes ver la solicitud de creación de la tabla inicial en Cloud Logging y usar esa información para particionar la tabla restablecida.
Solo puedes restablecer una tabla completa. No puedes restablecer particiones individuales.
Por ejemplo, no se admite la copia de una partición con un decorador de particiones, como bq cp mydataset.mytable$20260712@1418864998000 mydataset.mytable_restored.
Puedes restablecer una tabla que se haya borrado, pero que aún se encuentre dentro del período. Para ello, copia la tabla en una tabla nueva con el decorador de tiempo @<time>.
No puedes consultar una tabla borrada, incluso si usas un decorador de tiempo. Primero, debes restablecerla.
Usa la siguiente sintaxis con el decorador de tiempo @<time>:
tableid@TIME, dondeTIMEes la cantidad de milisegundos desde la época de Unix.tableid@-TIME_OFFSETen el queTIME_OFFSETes la compensación relativa desde la hora actual, en milisegundos.tableid@0: Especifica los datos históricos más antiguos disponibles.
Para restablecer una tabla, elige una de las siguientes opciones:
Console
No puedes recuperar una tabla con la Google Cloud consola.
bq
-
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Para restablecer una tabla, primero determina una marca de tiempo UNIX de cuando existió la tabla (en milisegundos). Puedes usar el comando
datede Linux para generar la marca de tiempo de Unix a partir de un valor de marca de tiempo normal:date -d '2023-08-04 16:00:34.456789Z' +%s000
Luego, usa el comando
bq copycon el decorador de viajes en el tiempo@<time>para realizar la operación de copia de tabla.Por ejemplo, ingresa el siguiente comando para copiar la tabla
mydataset.mytableen el momento1418864998000en una nueva tablamydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
Opcional: Proporciona la marca
--locationy configura el valor en tu ubicación.También puedes especificar un desplazamiento relativo. En el siguiente ejemplo, se copia la versión de una tabla de hace una hora atrás:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Si prevés que quieres restablecer una tabla más tarde de lo que permite el período de viaje en el tiempo, crea una instantánea de la tabla. Para obtener más información, consulta Introducción a las instantáneas de tablas.
No puedes restablecer una vista lógica directamente. Para obtener más información, consulta Cómo restablecer una vista.
Identifica cuándo se borró una tabla
Usa el siguiente filtro en el Explorador de registros de la consola de Google Cloud para identificar la entrada de auditoría que muestra el vencimiento o la eliminación de una tabla especificada:
resource.type="bigquery_resource"
protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
(protoPayload.methodName="google.cloud.bigquery.v2.TableService.DeleteTable" OR protoPayload.methodName="tableservice.delete" OR protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.statementType="DROP_TABLE" OR protoPayload.methodName="InternalTableExpired")
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto.DATASET_ID: Es el ID del conjunto de datos que contenía la tabla.TABLE_ID: Es el ID de la tabla borrada.
Como alternativa, usa el siguiente filtro para encontrar la fecha de vencimiento o eliminación del conjunto de datos que contenía la tabla:
resource.type="bigquery_dataset"
protoPayload.resourceName="projects/PROJECT_ID/datasets/DATASET_ID"
(protoPayload.methodName="google.cloud.bigquery.v2.DatasetService.DeleteDataset" OR protoPayload.methodName="datasetservice.delete")
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto.DATASET_ID: Es el ID del conjunto de datos que contenía la tabla.
Identifica la causa de la eliminación de la tabla
Puedes usar la vista
INFORMATION_SCHEMA.TABLE_STORAGE
para determinar cómo se borró una tabla.
La vista INFORMATION_SCHEMA.TABLE_STORAGE contiene información sobre las tablas actuales
y las tablas borradas dentro del período de viaje en el tiempo. Si se borró una tabla, la columna table_deletion_time contiene la marca de tiempo de eliminación y la columna table_deletion_reason contiene el método de eliminación.
Para determinar el motivo por el que se borró una tabla, consulta la vista INFORMATION_SCHEMA.TABLE_STORAGE:
SELECT table_name, deleted, table_deletion_time, table_deletion_reason FROM `PROJECT_ID`.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE WHERE table_schema = "DATASET_ID" AND table_name = "TABLE_ID"
Reemplaza las siguientes variables:
PROJECT_ID: Es el ID del proyecto.REGION: Es la región del conjunto de datos que contenía la tabla.DATASET_ID: Es el ID del conjunto de datos que contenía la tabla.TABLE_ID: Es el ID de la tabla borrada.
La columna table_deletion_reason explica por qué se borró la tabla:
TABLE_EXPIRATION: La tabla se borró después del tiempo de vencimiento establecido.DATASET_DELETION: Un usuario borró el conjunto de datos al que pertenecía la tabla.USER_DELETED: Un usuario borró la tabla.
Soluciona problemas de recuperación de tablas
Consulta la tabla borrada con una marca de tiempo en el pasado
No puedes restablecer los datos de la tabla si consultas una tabla borrada en el pasado con un
decorador de marca de tiempo o con
FOR SYSTEM_TIME AS OF
para guardar el resultado en una tabla de destino. Si usas cualquiera de estos métodos, se genera el siguiente error:
Not found: Table myproject:mydataset.table was not found in location LOCATION
En su lugar, para copiar la tabla, sigue los pasos que se indican en Cómo restablecer una tabla.
Error: VPC Service Controls: Request is prohibited by organization's policy
Cuando intentes ejecutar el comando de copia desde Google Cloud Shell, es posible que encuentres un error como el siguiente:
BigQuery error in cp operation: VPC Service Controls: Request is prohibited by organization's policy
No se admite el uso de Cloud Shell desde la consola de Google Cloud con los Controles del servicio de VPC, ya que se trata como una solicitud fuera de los perímetros de servicio y se deniega el acceso a los datos que protegen los Controles del servicio de VPC. Para solucionar este problema, inicia Cloud Shell y conéctate a él de forma local con Google Cloud CLI.
Error: Latest categories are incompatible with schema
Si ejecutas el comando de copia desde Google Cloud Shell, es posible que recibas un error como el siguiente:
Latest categories are incompatible with schema at TIMESTAMP
Este error puede deberse a varios motivos:
- El esquema de la tabla de destino es diferente del esquema de la tabla original (se permiten columnas adicionales, siempre y cuando no tengan etiquetas de política a nivel de la columna adjuntas).
- Las etiquetas de política a nivel de columna de la tabla de destino están configuradas de manera diferente a las de la tabla de origen.
Para resolver este error, haz lo siguiente:
- Asegúrate de que el esquema de la tabla de destino sea idéntico, de que no falte ninguna de las columnas de la tabla original en la tabla de destino y de que las columnas estén en el mismo orden en ambas tablas.
- Quita las etiquetas de política a nivel de la columna de la tabla de destino que no se encuentren en el esquema de la tabla original.
Error: BigQuery error in cp operation: Invalid time travel timestamp
Si ejecutas el comando bq copy desde Google Cloud Shell, es posible que recibas un
error como el siguiente:
BigQuery error in cp operation: Invalid time travel timestamp 1744343690000 for table PROJECT_ID:DATASET_ID.TABLE_ID@1744343690000. Cannot read before 1744843691075
Este error indica que intentas recuperar datos del estado de la tabla anterior al período de viaje en el tiempo o antes de que se creara la tabla. Esto no es compatible. El mensaje de error contiene la marca de tiempo más reciente que se puede
usar para leer los datos de la tabla. Usa la marca de tiempo del error en el comando bq copy.
Este error también puede ocurrir cuando proporcionas un valor de marca de tiempo negativo, por ejemplo, TABLE@-1744963620000. En su lugar, usa un desplazamiento de tiempo que se pueda usar con el signo -.
BigQuery error in cp operation: Invalid time travel timestamp 584878816 for table PROJECT_ID:DATASET_ID.TABLE_ID@584878816. Cannot read before 1744843691075
Este mensaje de error indica que el comando bq cp contiene un valor de marca de tiempo negativo como desplazamiento y que intentaste leer la tabla en CURRENT_TIMESTAMP - PROVIDED TIMESTAMP. Normalmente, este valor es una marca de tiempo de 1970. Para solucionar este problema, verifica los valores de desplazamiento o marca de tiempo cuando
establezcas el valor del decorador de tablas y usa el signo - de forma adecuada.
Particiones
Solo puedes restablecer una tabla completa. No puedes restablecer particiones individuales.
Por ejemplo, no se admite la copia de una partición con un decorador de particiones, como bq cp mydataset.mytable$20260712@1418864998000 mydataset.mytable_restored.
Vistas materializadas
No puedes restablecer una vista materializada borrada directamente. Si borras una vista materializada, debes volver a crearla.
Si borras una tabla que es una tabla base para una vista materializada, ya no se podrá consultar ni actualizar la vista materializada. Si restableces la tabla base siguiendo los pasos que se indican en Restablece una tabla, también debes volver a crear las vistas materializadas que usen esa tabla.
Tablas externas
No puedes restablecer una tabla externa borrada directamente. Si borras una tabla externa, debes volver a crearla. El proceso de recreación requiere conocer la definición de la tabla original, en especial, lo siguiente:
- Esquema de la tabla
- Los URIs de origen que apuntan a los datos externos
- El formato de los datos externos
Puedes obtener esta información de Cloud Logging buscando la entrada de registro de creación de la tabla.
También puedes intentar obtener los URI consultando la vista INFORMATION_SCHEMA.TABLE_OPTIONS si la tabla se acaba de borrar.
Borrar la tabla externa no borra los datos subyacentes.
¿Qué sigue?
- Aprende cómo crear y utilizar tablas.
- Aprende a administrar tablas.
- Aprende a modificar esquemas de tablas.
- Obtén más información sobre cómo trabajar con datos de tablas.