Copia conjuntos de datos

Puedes copiar un conjunto de datos dentro de una región o de una región a otra sin extraer, mover y volver a cargar los datos en BigQuery. Puedes copiar el conjunto de datos una vez o según una programación recurrente personalizada.

Antes de comenzar

Antes de crear una copia de un conjunto de datos, ten en cuenta esta información:

  • La copia del conjunto de datos usa características del Servicio de transferencia de datos de BigQuery. En el proyecto de Google Cloud de tu conjunto de datos de destino, verifica si completaste todas las acciones necesarias para habilitar el Servicio de transferencia de datos de BigQuery.
  • Si creas la transferencia con la IU web clásica de BigQuery, debes permitir que aparezcan ventanas emergentes en tu navegador de bigquery.cloud.google.com para que puedas ver la ventana de permisos. Debes otorgar al Servicio de transferencia de datos de BigQuery el permiso para administrar tu copia del conjunto de datos, que es un tipo de transferencia.
  • Crea un conjunto de datos de BigQuery como el conjunto de datos de destino en la misma región o en una región diferente a la de tu conjunto de datos de origen. Debes especificar una ubicación para almacenar tus datos de BigQuery cuando creas un conjunto de datos. Todavía no se admiten todas las regiones para la copia de conjuntos de datos (consulta la sección sobre limitaciones de ubicación). El nombre del conjunto de datos debe ser exclusivo en cada proyecto.
  • Ubica el ID del conjunto de datos de origen que deseas copiar y el ID del proyecto de origen.
  • Si quieres configurar las notificaciones de ejecución de transferencias para Pub/Sub, debes tener los permisos pubsub.topics.setIamPolicy. Los permisos de Pub/Sub no son necesarios si solo configuras las notificaciones por correo electrónico. Para obtener más información, consulta la sección sobre notificaciones de ejecución del Servicio de transferencia de datos de BigQuery.
  • Si planeas reemplazar la tabla de destino durante el copiado con la marca overwrite_destination_table, ambas tablas deben tener el mismo esquema de partición.

Permisos necesarios

Antes de crear una copia de un conjunto de datos, asegúrate de que la persona que crea la copia tenga los siguientes permisos necesarios en BigQuery:

  1. El permiso bigquery.transfers.update para crear la transferencia de copia

  2. El permiso bigquery.tables.list en el conjunto de datos de origen

    Las siguientes funciones predefinidas de IAM a nivel de proyecto contienen el permiso bigquery.tables.list:

    • bigquery.dataViewer
    • bigquery.dataEditor
    • bigquery.dataOwner
    • bigquery.metadataViewer
    • bigquery.user
  3. Los permisos bigquery.tables.list y bigquery.tables.create en el conjunto de datos de destino

    Las siguientes funciones predefinidas de IAM a nivel de proyecto contienen los permisos bigquery.tables.list y bigquery.tables.create:

    • bigquery.dataEditor
    • bigquery.dataOwner
  4. La función predefinida de IAM a nivel de proyecto bigquery.admin incluye todos los permisos necesarios para copiar un conjunto de datos. Para obtener más información sobre las funciones de IAM en BigQuery, consulta la sección sobre el control de acceso.

Configura una copia de conjunto de datos

Sigue estos pasos para crear una copia de un conjunto de datos.

Console

Opción 1: usa el ícono Copiar conjunto de datos (Copy Dataset).

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Selecciona el nombre del conjunto de datos de origen que deseas copiar.

  3. Haz clic en el ícono Copiar un conjunto de datos (Copy Dataset).

    Ícono de Copiar un conjunto de datos.

  4. En el cuadro de diálogo Copiar conjunto de datos (Copy Dataset), selecciona el ID del proyecto y el ID del conjunto de datos de destino. El proyecto y el conjunto de datos pueden estar en regiones diferentes, pero no todas las regiones se admiten para la copia de conjuntos de datos entre regiones.

  5. Los nombres de conjuntos de datos dentro de un proyecto deben ser exclusivos.

  6. De manera opcional, marca la casilla Reemplazar las tablas de destino (Overwrite destination table) si deseas actualizar (reemplazar) todos los datos en el conjunto de datos de destino. Se reemplazan las tablas y el esquema.

    Cuadro de diálogo de Copiar conjunto de datos.

  7. Se recomienda borrar el conjunto de datos anterior para evitar que se generen costos de almacenamiento adicionales.

Opción 2: usa la IU de transferencias.

  1. Ve a la IU web de BigQuery.

    Ir a la IU web de BigQuery

  2. Haz clic en Transferencias.

  3. Haz clic en + CREAR UNA TRANSFERENCIA (CREATE A TRANSFER).

  4. En la página Crear transferencia, realiza lo siguiente:

    • En la sección Tipo de origen (Source type), en Origen (Source), elige Copiar un conjunto de datos (Dataset Copy).

      Fuente de transferencia.

    • En la sección Nombre de la configuración de transferencia (Transfer config name), en Nombre visible (Display name), ingresa el nombre de la transferencia, como My Transfer. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.

      Nombre de la transferencia.

    • En la sección Opciones de programación (Schedule options), en Programa, deja el valor predeterminado, Comenzar ahora (Start now), o haz clic en Start at a set time.

      • En Repeticiones (Repeats), selecciona la frecuencia con la que se ejecutará la transferencia. Incluye las siguientes opciones:

        • Diariamente (Daily) (predeterminada)
        • Semanal
        • Mensual
        • Personalizada
        • Según demanda (On demand)

        Si eliges una opción que no sea Diariamente (Daily), tendrás opciones adicionales. Por ejemplo, si eliges Semanalmente (Weekly), aparece una opción para que selecciones el día.

      • En Fecha de inicio y hora de ejecución (Start date and run time), ingresa la fecha y hora para iniciar la transferencia. Si seleccionas Comenzar ahora (Start now), esta opción se inhabilitará.

        Programa de la transferencia.

    • En Conjunto de datos de destino, elige el conjunto de datos que creaste para almacenar tus datos, en una región diferente.

    • En Source dataset, ingresa el nombre del conjunto de datos que deseas copiar.

    • En Proyecto de origen (Source project), ingresa el ID del proyecto en el que se encuentra tu conjunto de datos de origen.

    • Marca la casilla Reemplazar las tablas de destino (Overwrite destination table) si deseas actualizar (reemplazar) todos los datos en el conjunto de datos de destino (opcional). Se reemplazan las tablas y el esquema.

      Copia de conjunto de datos nueva.

    • De forma opcional, en la sección Opciones de notificación (Notification options), haz lo siguiente:

      • Haz clic en el botón de activación para habilitar las notificaciones por correo electrónico. Si habilitas esta opción, el administrador de transferencias recibirá una notificación por correo electrónico cuando falle la ejecución de una transferencia.
      • En Selecciona un tema de Pub/Sub (Select a Pub/Sub topic), elige el nombre de tu tema (topic) o haz clic en Crear un tema (Create topic) para crear uno. Con esta opción, se configuran las notificaciones de ejecución de Pub/Sub para tu transferencia.

      Tema de Pub/Sub.

  5. Haz clic en Guardar (Save).

  6. Se recomienda borrar el conjunto de datos anterior para evitar costos de almacenamiento adicionales.

IU clásica

  1. Ve a la IU web clásica de BigQuery.

    Ir a la IU web clásica de BigQuery

  2. Haz clic en Transferencias.

  3. Haz clic en Agregar transferencia.

  4. En la página Transferencia nueva (New Transfer), haz lo siguiente:

    • En Origen (Source), elige Copia de conjunto de datos (Dataset Copy).
    • En Nombre visible (Display name), ingresa un nombre para la transferencia, como My Dataset Copy. El nombre visible puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.
    • En Programa (Schedule), puedes dejar el valor predeterminado de Diario (cada 24 horas, según el tiempo de creación) o puedes hacer clic en Editar (Edit) para cambiar la hora (opcional). También puedes cambiar el intervalo a Semanal, Mensual o Personalizado. Cuando seleccionas Personalizado, se espera una especificación de tiempo similar a Cron, por ejemplo every 12 hours. El período más corto permitido es de 12 horas.

    • En Conjunto de datos de destino (Destination dataset), selecciona el conjunto de datos que corresponda.

    • En Conjunto de datos de origen (Source dataset), ingresa el nombre de tu conjunto de datos de origen.

    • En Proyecto de origen (Source project), selecciona el proyecto en el que se encuentra tu conjunto de datos de origen.

      Copia de conjunto de datos nueva.

    • De forma opcional, expande la sección Avanzado (Advanced) y configura las notificaciones de ejecución para tu transferencia.

    • En Tema de Cloud Pub/Sub (Cloud Pub/Sub topic), ingresa el nombre de tu tema de Cloud Pub/Sub, por ejemplo, projects/myproject/topics/mytopic.

    • Marca Enviar notificaciones por correo electrónico (Send email notifications) para activar las notificaciones por correo de las ejecuciones de transferencia con errores.

      Tema de Pub/Sub.

  5. Haz clic en Agregar (Add).

  6. Se recomienda borrar el conjunto de datos anterior para evitar que se generen costos de almacenamiento adicionales.

bq

Ingresa el comando bq mk y suministra la marca de creación de transferencias --transfer_config. También se requieren las siguientes marcas:

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --target_dataset=DATASET --display_name=NAME --params='PARAMETERS'
    

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud. Si no se especifica --project_id, se usa el proyecto predeterminado.
  • DATA_SOURCE: Es la fuente de datos, cross_region_copy.
  • DATASET: Es el conjunto de datos de destino de BigQuery para la configuración de transferencia.
  • NAME: Es el nombre visible del trabajo de copia o la configuración de transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.
  • PARAMETERS contiene los parámetros para la configuración de la transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}'. Para copiar conjuntos de datos, debes suministrar los parámetros source_dataset_id, source_project_id y overwrite_destination_table (este último es opcional).

Los parámetros para una configuración de copia de conjunto de datos son los siguientes:

  • source_dataset_id: Es el ID del conjunto de datos de origen que deseas copiar.
  • source_project_id: Es el ID del proyecto en el que se encuentra tu conjunto de datos de origen.
  • overwrite_destination_table: Incluye este parámetro si deseas truncar las tablas de una copia anterior y actualizar todos los datos (opcional).

Por ejemplo, con el comando siguiente, se crea una configuración de copia de conjunto de datos llamada My Transfer con un conjunto de datos de destino denominado mydataset y un proyecto con el ID de myproject.

bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'

API

Usa el método projects.locations.transferConfigs.create y proporciona una instancia del recurso TransferConfig.

Visualiza y actualiza trabajos de copia de conjunto de datos

Puedes consultar el progreso y ver los detalles de una copia de conjunto de datos en Transferencias (Transfers).

Console

Consola del botón de Transferencias.

Consola de Ver detalles de transferencia.

Las ejecuciones de actualización de copia de conjunto de datos se ejecutan con la programación configurable que especifiques. El valor predeterminado es cada 24 horas. Haz clic en el menú Más (More) y, luego, en Actualizar ahora si deseas solicitar una ejecución nueva inmediata.

Botón Actualizar copia de conjunto de datos.

IU clásica

Botón clásico Transferencias.

Las ejecuciones de actualización de copia de conjunto de datos se ejecutan con la programación configurable que especifiques. El valor predeterminado es cada 24 horas. Haz clic en Actualizar ahora si deseas solicitar una ejecución nueva inmediata.

Botón Actualizar copia de conjunto de datos.

Precios

No se generan cargos por la copia de conjuntos de datos durante el período Beta.

Durante la disponibilidad general, los datos copiados entre regiones se facturan con las mismas tarifas que los precios para la salida de red entre regiones de Compute Engine.

BigQuery envía datos comprimidos para copiar entre regiones, por lo que la cantidad de GB facturados puede ser menor que el tamaño de tu conjunto de datos.

Cuotas y limitaciones

Se aplican los límites siguientes a las copias de conjuntos de datos en BigQuery. Los límites se aplican a los trabajos de copia creados mediante la herramienta de línea de comandos (CLI), la consola o la IU web clásica de BigQuery. También se aplican a los trabajos de copia enviados de manera programática mediante el método de la API de tipo de copia jobs.insert.

Todos los cargos de uso estándar de BigQuery por almacenamiento y consultas se aplican a los datos copiados. Consulta la sección sobre precios de BigQuery para obtener más información.

Las copias de conjuntos de datos de BigQuery están sujetas a las siguientes limitaciones:

Cuotas

Dentro de la región

La copia de conjuntos de datos dentro de una misma región sigue la misma cuota para todos los trabajos de copia de BigQuery.

Se aplican los siguientes límites a la copia de tablas en BigQuery. Los límites se aplican a los trabajos creados de forma automática mediante la copia de datos con la herramienta de línea de comandos, Console o la IU web clásica de BigQuery. También se aplican a los trabajos de copia enviados de manera programática mediante el método de API jobs.insert de tipo de copia.

  • Trabajos de copia diarios por tabla de destino: 1,000 (incluye operaciones con errores)
  • Trabajos de copia por proyecto por día: 100,000 (incluye operaciones con errores)

Entre regiones

  • Trabajos de copia por tabla de destino por día: 100 (incluye las fallas)
  • Trabajos de copia por proyecto por día: 2,000 (incluye las fallas)

Limitaciones generales

  • Debes crear el conjunto de datos de destino antes de poder crear una configuración de transferencia para la copia del conjunto de datos.

  • Para cada configuración de copia de conjunto de datos, puedes tener una copia activa a la vez. Las ejecuciones de transferencia adicionales están en cola.

Limitaciones del tipo de datos

  • No se admite la copia de vistas.
  • No se admite la copia de tablas externas.
  • No se admite la copia del almacenamiento en un búfer de transmisión.
  • La compatibilidad con la copia de tablas encriptadas con claves administradas por el cliente es distinta para la copia dentro de la misma región y la copia entre regiones.

Dentro de la región

La copia de tablas encriptadas, incluidas las tablas encriptadas con claves administradas por el cliente (CMEK), se admite para la copia de conjuntos de datos dentro de la misma región.

Interregión

Se admite la copia de tablas con la encriptación predeterminada entre regiones. En la actualidad, no se admite la copia de tablas encriptadas con claves administradas por el cliente (CMEK) entre regiones. Las tablas encriptadas con CMEK se omiten cuando se copian tablas en el conjunto de datos de destino.

Limitaciones del conjunto de datos de origen

El tamaño máximo del conjunto de datos de origen es de 20,000 tablas. La cantidad de tablas que se pueden copiar por ejecución es distinta para copias dentro de una misma región y copias entre regiones.

Dentro de la región

  • El tamaño máximo del conjunto de datos de origen es de 20,000 tablas.

  • Se puede copiar un máximo de 20,000 tablas por ejecución al conjunto de datos de destino.

Entre regiones

  • El tamaño máximo del conjunto de datos de origen es de 20,000 tablas.

  • Se puede copiar un máximo de 1,000 tablas por ejecución al conjunto de datos de destino.

Ejemplo

Si configuras una copia entre regiones de un conjunto de datos que tiene 8,000 tablas, el Servicio de transferencia de datos de BigQuery crea de forma automática 8 ejecuciones de manera secuencial. La primera ejecución copia 1,000 tablas; luego, 24 horas después, otra ejecución copia 1,000 tablas y así hasta que se copien todas las tablas del conjunto de datos, hasta un máximo de 20,000 tablas por conjunto de datos.

Limitaciones de las tablas

  • En la actualidad, se admite la copia de tablas particionadas. Sin embargo, no es posible agregar datos a una tabla particionada.

  • Si existe una tabla en el conjunto de datos de origen y el conjunto de datos de destino, y no cambió desde la última copia exitosa, se omite. Esto ocurre incluso si se marca la casilla Reemplazar tabla de destino.

  • Cuando se truncan las tablas, la copia del conjunto de datos no detecta ningún cambio realizado en el conjunto de datos de destino antes de comenzar la copia. Se actualizan (reemplazan) todos los datos del conjunto de datos de destino. Se reemplazan las tablas y el esquema.

    • Si planeas reemplazar la tabla de destino durante el copiado mediante la marca overwrite_destination_table, ambas tablas deben tener el mismo esquema de partición.

Regiones admitidas

Hay dos tipos de ubicaciones:

  • Una región es un lugar geográfico específico, como Londres.

  • Una multirregión es un área geográfica grande, como los Estados Unidos, que contiene dos o más lugares geográficos.

Los conjuntos de datos se pueden copiar de una región a otra, de una región individual a una multirregión, de una multirregión a una región individual o de una multirregión a otra multirregión.

En la actualidad, no se admiten todas las regiones para la copia de conjuntos de datos. Puedes crear copias de conjuntos de datos en regiones en las que se admita el Servicio de transferencia de datos de BigQuery, como se muestra a continuación.

Ubicaciones regionales

Descripción de la región Nombre de la región
América
Las Vegas us-west4
Virginia del Norte us-east4
Salt Lake City us-west3
Europa
Finlandia europe-north1
Londres europe-west2
Zúrich europe-west6
Asia-Pacífico
Singapur asia-southeast1
Sídney australia-southeast1
Taiwán asia-east1
Tokio asia-northeast1

Ubicaciones multirregionales

Descripción de la multirregión Nombre de la multirregión
Centros de datos dentro de los estados miembros de la Unión Europea1 EU
Centros de datos en Estados Unidos US

1 Los datos ubicados en la multirregión EU no se almacenan en los centros de datos de europe-west2 (Londres) ni de europe-west6 (Zúrich).

Qué sigue

  • Para acceder a información sobre el uso de las transferencias, lo que incluye la obtención de información sobre una configuración de transferencia, la enumeración de configuraciones de transferencia y la visualización del historial de ejecuciones de una transferencia, consulta la sección sobre cómo trabajar con transferencias.