Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Como copiar dados dentro do BigQuery

By Joshua FoxJun 15, 20202 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Copiar dados entre tabelas no BigQuery ficou muito mais fácil nos últimos anos. Ainda assim, há várias maneiras de fazer isso, cada uma com limitações diferentes que podem confundir. Vou descrever todas elas, com prós e contras.

Antigamente, copiar dados entre regiões era complicado.

Cópia via Storage

Dava para copiar do BigQuery para o Cloud Storage e, depois, de volta para o BigQuery em outra região. Além de adicionar uma etapa que complica o processo, isso também pode sair caro. E você ainda precisava orquestrar tudo por conta própria, por exemplo, usando o Composer para agendamento, buffer e paralelização.

Cópia de datasets

Recentemente, o recurso Dataset Copying simplificou bastante esse processo. Ele funciona entre regiões e é gratuito, com exceção dos custos de rede. Agendamento e recursos relacionados já vêm integrados.

Cópia dentro da mesma região com `bq` _, Job API ou Copy Tables_

Copiar dentro da mesma região sempre foi mais fácil e, melhor ainda, gratuito. Dentro da região, você pode executar bq cp na linha de comando, escrever código usando a Job API ou ainda usar a opção "Copy Tables" no Cloud Console.

Scheduled Queries

O recurso Scheduled Queries é outra forma de copiar dados dentro de uma região. Não é gratuito, mas é bastante flexível: permite escrever qualquer instrução SELECT para inserir os dados em uma tabela de destino. E, como o próprio nome sugere, já vem com agendamento integrado.

Entre as abordagens que mencionei, só bq cp e Scheduled Queries dão conta de um caso de uso bem comum: backup incremental diário de uma tabela particionada por tempo de ingestão. Apenas eles conseguem copiar somente a partição do último dia e preservá-la como partição na tabela de destino.

Veja as opções organizadas em uma tabela: