Crea clonaciones de tablas
En este documento, se describe cómo copiar una tabla en una clonación de tabla mediante una instrucción de SQL CREATE TABLE CLONE
, un comando bq cp
o una llamada a la API jobs.insert
. Este documento está dirigido a usuarios familiarizados con las clonaciones de tablas.
Permisos y funciones
En esta sección, se describen los permisos de Identity and Access Management (IAM) que necesitas para crear una clonación de tabla, junto con los roles predefinidos de IAM que otorgan esos permisos.
Permisos
Para crear una clonación de tabla, necesitas los siguientes permisos:
Permiso | Recurso |
---|---|
Todos los siguientes:bigquery.tables.get bigquery.tables.getData |
La tabla que deseas clonar. |
bigquery.tables.create bigquery.tables.updateData
|
El conjunto de datos que contiene la clonación de tabla. |
Funciones
A continuación, se enumeran los roles predefinidos de BigQuery que proporcionan los permisos necesarios:
Función | Recurso |
---|---|
Cualquiera de los siguientes:bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
La tabla que deseas clonar. |
Cualquiera de los siguientes:bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
El conjunto de datos que contiene la nueva clonación de tabla. |
Crea una clonación de tabla
Usa GoogleSQL, la herramienta de línea de comandos de bq o la API de BigQuery para crear una clonación de tabla.
SQL
Para clonar una tabla, usa la instrucción CREATE TABLE CLONE.
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Reemplaza lo siguiente:
PROJECT
es el ID del proyecto de destino. Este proyecto debe estar en la misma organización que el proyecto que contiene la tabla que clonas.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 clonas.CLONE_NAME
es el nombre de la clonación de tabla que vas a crear.
bq
Usa un comando bq cp
con la marca --clone
:
bq cp --clone -n project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
Reemplaza lo siguiente:
PROJECT
es el ID del proyecto de destino. Este proyecto debe estar en la misma organización que el proyecto que contiene la tabla que clonas.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 clonas. Si el conjunto de datos no está en la misma región que el conjunto de datos que contiene la tabla que clonas, se copia la tabla completa.CLONE_NAME
es el nombre de la clonación de tabla que vas a crear.
Si creas una clonación en el mismo proyecto que la tabla base, puedes omitir la especificación de un proyecto, como se muestra a continuación:
bq cp --clone -n myDataset.myTable DATASET.CLONE_NAME
API
Llama al método jobs.insert
con el campo operationType
configurado 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", } } } |
Reemplaza lo siguiente:
PROJECT
es el ID del proyecto de destino. Este proyecto debe estar en la misma organización que el proyecto que contiene la tabla que clonas.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 clonas. Si el conjunto de datos no está en la misma región que el conjunto de datos que contiene la tabla que clonas una tabla completa, se copia.CLONE_NAME
es el nombre de la clonación de tabla que vas a crear.
Control de acceso
Cuando creas una clonación de tabla, el acceso a la clonación de tabla se establece de la siguiente manera:
- Las políticas de acceso a nivel de fila se copian de la tabla base a la clonación de tabla.
- Las políticas de acceso a nivel de columna se copian de la tabla base a la clonación de tabla.
El acceso a nivel de tabla se determina de la siguiente manera:
- Si la clonación de tabla reemplaza una tabla existente, se mantendrá el acceso a nivel de tabla para la tabla existente. Las etiquetas no se copian de la tabla base.
- Si la clonación de tabla es un recurso nuevo, el acceso a nivel de tabla para la clonación de tabla se determina según las políticas de acceso del conjunto de datos en el que se crea la clonación de tabla. Además, las etiquetas se copian de la tabla base a la clonación de tabla.
¿Qué sigue?
- Después de crear una clonación de tabla, puedes usarla como usas las tablas estándar. Para obtener más información, consulta Administra tablas.