Crear clones de tablas
En este documento se describe cómo copiar una tabla en un clon de tabla mediante una instrucción SQL CREATE TABLE CLONE
, un comando bq cp
o una llamada a la API jobs.insert
. Este documento está dirigido a usuarios que conocen los clones de tablas.
Permisos y roles
En esta sección se describen los permisos de gestión de identidades y accesos (IAM) que necesitas para crear una clonación de tabla y los roles de IAM predefinidos que conceden esos permisos.
Permisos
Para crear una clonación de una tabla, necesitas los siguientes permisos:
Permiso | Recurso |
---|---|
Todas las siguientes:bigquery.tables.get bigquery.tables.getData |
La tabla de la que quieres hacer un clon. |
bigquery.tables.create bigquery.tables.updateData
|
El conjunto de datos que contiene el clon de la tabla. |
Roles
Los roles predefinidos de BigQuery que proporcionan los permisos necesarios son los siguientes:
Role | Recurso |
---|---|
Cualquiera de las siguientes:bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
La tabla de la que quieres hacer un clon. |
Cualquiera de las siguientes:bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
El conjunto de datos que contiene el nuevo clon de la tabla. |
Crear un clon de una tabla
Usa GoogleSQL, la herramienta de línea de comandos bq o la API de BigQuery para crear un clon de una tabla.
SQL
Para clonar una tabla, usa la instrucción CREATE TABLE CLONE.
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Haz los cambios siguientes:
PROJECT
es el ID del proyecto de destino. Este proyecto debe pertenecer a la misma organización que el proyecto que contiene la tabla que vas a clonar.DATASET
es el nombre del conjunto de datos de destino. Este conjunto de datos debe estar en la misma región que el conjunto de datos que contiene la tabla que vas a clonar.CLONE_NAME
es el nombre de la tabla clon que vas a crear.
bq
Usa el comando bq cp
con la marca --clone
:
bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
Haz los cambios siguientes:
PROJECT
es el ID del proyecto de destino. Este proyecto debe pertenecer a la misma organización que el proyecto que contiene la tabla que vas a clonar.DATASET
es el nombre del conjunto de datos de destino. Este conjunto de datos debe estar en la misma región que el conjunto de datos que contiene la tabla que vas a clonar. Si el conjunto de datos no está en la misma región que el conjunto de datos que contiene la tabla que vas a clonar, se copiará la tabla completa.CLONE_NAME
es el nombre de la tabla clon que vas a crear.
Es obligatorio usar la marca --no_clobber
.
Si vas a crear un clon en el mismo proyecto que la tabla base, puedes omitir la especificación de un proyecto, tal como se muestra a continuación:
bq cp --clone --no_clobber myDataset.myTable DATASET.CLONE_NAME
API
Llama al método jobs.insert
con el campo operationType
definido como CLONE
:
Parámetro | Valor |
---|---|
projectId |
El ID del proyecto que ejecuta el trabajo. |
Cuerpo de la solicitud | { "configuration": { "copy": { "sourceTables": [ { "projectId": "myProject", "datasetId": "myDataset", "tableId": "myTable" } ], "destinationTable": { "projectId": "PROJECT", "datasetId": "DATASET", "tableId": "CLONE_NAME" }, "operationType": "CLONE", "writeDisposition": "WRITE_EMPTY", } } } |
Haz los cambios siguientes:
PROJECT
es el ID del proyecto de destino. Este proyecto debe pertenecer a la misma organización que el proyecto que contiene la tabla que vas a clonar.DATASET
es el nombre del conjunto de datos de destino. Este conjunto de datos debe estar en la misma región que el conjunto de datos que contiene la tabla que vas a clonar. Si el conjunto de datos no está en la misma región que el conjunto de datos que contiene la tabla que vas a clonar, se copiará la tabla completa.CLONE_NAME
es el nombre de la tabla clon que vas a crear.
Control de acceso
Cuando creas una clonación de una tabla, el acceso a la tabla clonada se establece de la siguiente manera:
- Las políticas de acceso a nivel de fila se copian de la tabla base a la tabla clonada.
- Las políticas de acceso a nivel de columna se copian de la tabla base a la tabla clonada.
El acceso a nivel de tabla se determina de la siguiente manera:
- Si la clonación de la tabla sobrescribe una tabla ya creada, se mantiene el acceso a nivel de tabla de la tabla ya creada. Las etiquetas no se copian de la tabla base.
- Si la clonación de la tabla es un recurso nuevo, el acceso a nivel de tabla de la clonación se determina mediante las políticas de acceso del conjunto de datos en el que se crea la clonación de la tabla. Además, las etiquetas se copian de la tabla base a la tabla clonada.
Siguientes pasos
- Una vez que hayas creado una tabla clonada, podrás usarla como si fuera una tabla estándar. Para obtener más información, consulta el artículo Gestionar tablas.