Como exportar dados do BigQuery para o Cloud Storage por linha de comando

 Nesta postagem, falaremos como utilizar os comandos “BQ” para fazer a exportação de uma tabela que esteja no BigQuery para um bucket do Cloud Storage.

O que é BigQuery?

É um data warehouse totalmente gerenciado que permite realizar análises em um grande conjunto de dados, no patamar de petabytes.

Suporta consultas no formato ANSI SQL e criação de modelos de Machine Learning (ML) em uma sintaxe semelhante ao SQL.

O que é Cloud Storage?

Fornece, a nível mundial, um armazenamento de objetos altamente durável que escalona para exabytes de dados. É possível acessar dados instantaneamente de qualquer classe de armazenamento, integrar o armazenamento aos seus aplicativos com uma API exclusiva unificada e otimizar o preço e desempenho de forma fácil.

Passo a Passo

1. O primeiro passo a fazer é o login em sua conta do GCP, para este tutorial você vai precisar de uma conta que possua um projeto.

2. Vá até a barra superior e clique no ícone do Cloud Shell, igual a imagem abaixo.

3. Nesse passo vamos definir o projeto a ser usado dentro do cloud shell, no campo [PROJECT_ID], insira o id do seu projeto:

gcloud config set project [PROJECT_ID]

4. Criaremos o bucket do Cloud Storage em que iremos exportar nossa tabela:

gsutil mb -l us-central1 gs://[PROJECT_ID]-tabelas

5. Vá até o console do BigQuery e crie um novo conjunto de dados:

6. Insira um nome para o conjunto de dados e clique em criar:

7. Crie a tabela "clientes" a partir da query abaixo, vamos usar esses dados para fazer a exportação:

create table dataset_teste.clientes as
SELECT cliente_id, nome
FROM (
  SELECT 1 AS cliente_id,'José' Nome UNION ALL
  SELECT 2 AS cliente_id,'Maria' Nome UNION ALL
  SELECT 3 AS cliente_id,'João' Nome UNION ALL
  SELECT 4 AS cliente_id,'Pedro' Nome UNION ALL
  SELECT 5 AS cliente_id,'Ana' Nome 
  ) AS Clientes;

8. Execute o comando abaixo no Cloud Shell para fazer a exportação da sua tabela:

bq extract \
--destination_format CSV \
'dataset_teste.clientes' \
gs://[PROJECT_ID]-tabelas/clientes.csv

Observação:

O comando BQ EXTRACT permite uma maior personalização da extração, no exemplo acima utilizamos o formato CSV, mas é possível gerar arquivos Json e Avro, além de selecionar uma possível compressão, delimitador e header do arquivo.

Também existe um limite no tamanho do arquivo a ser gerado, o BigQuery suporta exportar até 1 GB de dados em um único arquivo.

Para exportar mais de 1 GB de dados, é possível exportar em vários arquivos, porém o tamanho é variado entre esses arquivos, para adotar essa abordagem use o caractere curinga ('*') após o caminho do Storage.

Referências

  • Exporting table data

https://cloud.google.com/bigquery/docs/exporting-data#console

Nesta postagem, falaremos como realizar pelo console a exportação de uma tabela que esteja no BigQuery para um bucket do Cloud Storage.