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.

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

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    CREATE TABLE
    myproject.myDataset_backup.myTableClone
    CLONE myproject.myDataset.myTable;

  3. 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:

Ir a Cloud Shell

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.