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.

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

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente sentencia:

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

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

Ir a Cloud Shell

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 se encuentra en la misma región que el conjunto de datos que contiene la tabla que clonas, se copia una 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, se copia una tabla completa.
  • 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.