Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cómo copiar datos dentro de BigQuery

By Joshua FoxJun 15, 20202 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Copiar datos entre tus propias tablas en BigQuery se volvió mucho más fácil en los últimos años. Aun así, existen varias formas de hacerlo, cada una con limitaciones distintas que pueden generar confusión. A continuación describo cada una, con sus pros y contras.

Antes, copiar entre regiones de datos era complicado.

Copiar a través de Storage

Se podía copiar desde BigQuery a Cloud Storage y, desde ahí, de vuelta a BigQuery en la otra región. Esto no solo suma un paso adicional que complica el proceso, sino que además puede salir caro. Y encima tenías que orquestarlo por tu cuenta, por ejemplo, con Composer para la programación, el buffering y la paralelización.

Copia de datasets

Hace poco, la función Dataset Copying simplificó muchísimo este proceso. Funciona entre regiones y es gratuita, salvo por los costos de red. La programación y otras funciones relacionadas ya vienen integradas.

Copia dentro de una región con `bq` _, la Job API o Copy Tables_

Copiar dentro de una misma región siempre fue más sencillo y, lo mejor de todo, gratis. Dentro de la región, puedes ejecutar bq cp desde la línea de comandos, programar contra la Job API o usar "Copy Tables" en la Cloud Console.

Scheduled Queries

La función Scheduled Queries es otra forma de copiar dentro de una región. Si bien no es gratuita, resulta muy flexible, ya que te permite escribir cualquier sentencia SELECT para insertar los datos en una tabla destino. Y, como su nombre lo indica, trae la programación integrada.

De los métodos que mencioné, solo bq cp y Scheduled Queries cubren un caso de uso muy común: el backup incremental diario de una tabla particionada por tiempo de ingesta. Únicamente estos permiten copiar solo la partición del último día y conservarla como partición en la tabla destino.

Aquí tienes las opciones en formato de tabla: