Como criar uma tabela externa de um arquivo Json no BigQuery

Nesta postagem, mostraremos como usar criar uma tabela externa do BigQuery a partir de um arquivo json que esta armazenado no Cloud Storage.

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, neste tutorial será usado para armazenamento de dados do Hive e origem de leitura da tabela externa do BigQuery.

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 são tabelas externas no BigQuery?

Em uma tabela externa os dados não estarão armazenados no BigQuery, mas podem ser consultados por ele.

Nessa abordagem somente os metadados são criados nele, ao consultar a tabela a fonte de dados externa que será consultada.

Atualmente, o BQ aceita essas fontes externas:

  • Bigtable
  • Cloud Storage
  • Google Drive
  • Cloud SQL (Beta)

Nos seguintes formatos:

  • Avro
  • CSV
  • JSON
  • ORC
  • Parquet

As “external tables” podem ser usadas principalmente quando os dados da origem são atualizados com frequência e para limpeza antes de armazenar o dado no BigQuery.

Passo a Passo — Linha de comando

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é menu, selecione Storage > Navegador.


3.Clique em Criar Intervalo ou Criar Bucket:


4.Especifique um nome para seu bucket, o nome precisa ser exclusivo no mundo, precisam começar e terminar com um número ou uma letra. Precisam conter apenas letras minúsculas, números, traços (-), sublinhados (_) e pontos (.). Precisam ter de 3 a 63 caracteresNão é permitido usar espaços e não podem começar com o prefixo "goog", e não podem conter a palavra "google".


5. Defina a região conforme abaixo e clique em continuar:


6. Defina o tipo de armazenamento como Standard e clique em continuar:


7. Escolha o controle de acesso como detalhado e clique em continuar.


8. Clique em criar:


9. Verifique se o bucket foi criado com sucesso:


10. Crie um arquivo chamado funcionarios.json com o seguinte conteudo:

{"nome":"Joao", "email":"Joao@gmail.com", "idade":"23"}
{"nome":"Maria", "email":"Maria23@gmail.com", "idade":"28"}
{"nome":"Ana", "email":"Ana@gmail.com", "idade":"33"}
{"nome":"Rosana", "email":"Rosana32@gmail.com", "idade":"41"}

11. Clique em Fazer Upload e suba seu arquivo pro seu bucket:


12. Agora a partir dos arquivos desse diretório, vamos criar nossa tabela externa no BQ. Vá até o console do BigQuery e crie um novo conjunto de dados:

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

14. Clique em criar tabela e siga os passos abaixo:

  • No campo “Criar tabela de:” selecione Google Cloud Storage;
  • No campo “Selecionar arquivo do bucket do GCS:” insira o caminho da nossa tabela no cloud storage com asterisco (*) no final.
  • Selecione o formato de arquivo como Json.
  • Marque a opção Detectar automaticamente para o esquema.
  • Insira um nome para sua tabela.
  • Defina sua tabela como externa.

No final sua tela ficara semelhante a esta:


Observação:

O BigQuery aceita apenas arquivos JSON delimitado por nova linha, o que significa um objeto JSON completo por linha.

Para vários objetos JSON, basta colocá-los um em cada linha. Não os coloque dentro de uma matriz.

O BigQuery espera que cada linha comece com um objeto, "{". Se você colocar "[" como o primeiro caractere, verá uma mensagem de erro.

15. Faça um select na tabela criada:

Observação:

Em um dos testes realizados para este tutorial, acrescentamos um novo arquivo json no bucket. Os dados deste arquivo foram reconhecidos pela tabela nos campos já existentes, se o arquivo tiver campos fora do layout da tabela criada não serão espelhados na tabela.

Referências