Como acessar dados no data lake
Olá! Quer acessar dados do datalake? Beleza! Esse guia tem como objetivo cobrir diversos cenários de acesso a eles. Mas, para isso, deixo aqui algumas perguntas e redirecionamentos que podem te ajudar:
- Ainda não sabe qual dado quer acessar?
→ Sem problemas! Vamos para a seção Como buscar dados.
- Já escolheu o dado no data.rio e quer acessá-lo via download?
→ Excelente! Basta clicar no link, ele fará o download do arquivo. Se ele não estiver disponível, entre em contato conosco, será um prazer te ajudar.
- Já escolheu o dado no data.rio e quer acessá-lo via BigQuery/Python/R/PowerBI?
→ Sensacional! Caso ainda não tenha uma conta na GCP e um projeto configurado, siga para a seção Como criar uma conta na GCP. Se já tiver, melhor ainda! Basta olhar aqui ao lado, no menu de navegação, a seção que melhor se encaixa com suas necessidades.
- Seu caso não se encaixa em nenhum acima?
→ Poxa! Vamos trabalhar juntos para melhorar o acesso aos dados! Entre em contato conosco, vamos entender sua demanda e te ajudar! 🤗
Como buscar dados
Conhecendo o data.rio
Você ainda não conhece o data.rio? 🤯
O data.rio é o portal de dados abertos da Prefeitura do Rio de Janeiro. Ele é estruturado e mantido pelo Instituto Pereira Passos. Nós, como Escritório de Dados, em parceria, disponibilizamos os dados do datalake lá também! 🤩
Tome um tempo para navegar pelo site e conhecer os dados disponíveis!
Identificando dados do datalake
Na página de pesquisa do data.rio, você poderá buscar por dados das mais diversas formas. Ao acessá-la, você deve encontrar algo assim:
Rolando a página, ao lado esquerdo, você verá um campo "Tags". Ali, você pode utilizar a tag escritorio_de_dados
para
encontrar os dados do datalake!
Então você pode escolher o dado que quiser ali e, ao clicar, você vai se deparar com uma página semelhante à seguinte:
Ali tem tudo que você precisa saber sobre o dado e diversas maneiras de acessá-lo! 💥
Como criar uma conta na GCP
Requisitos
Pessoas externas à PCRJ
- Ter uma conta Google válida (um Gmail, por exemplo)
- Cartão de crédito (em alguns poucos casos a GCP exige o cadastro do cartão de crédito. Apesar de ser necessário, a GCP provê 1TB de consumo de dados gratuitamente todo mês, dentre outras coisas e é possível ativar o sandbox posteriormente. Para mais informações, veja referências)
Pessoas internas à PCRJ
- Preencher o formulário de Solicitação de criação de credenciais de acesso aos dados também disponível dentro do botão institucional na ṕágina Datalake do Escritório de Dados.
- Ter uma conta @dados.rio. Vocês devem usar somente essa conta para todo o resto do tutorial.
Criando uma conta
- Vá ao GCP Console e clique no botão "Comece a usar gratuitamente", na barra superior direita
- Faça login com sua conta Google ou sua conta @dados.rio para acesso institucional. Nesse último caso, não aparecerá a opção de adicionar cartão de crédito.
Se não houver necessidade de cadastrar cartão de crédito, a GCP só irá solicitar para você preencher qual seu país e aceitar os Termos de Serviço. Feito isso é só criar um projeto!
- Preencha as informações necessárias para cadastro, incluindo os dados do cartão de crédito
- Quando chegar na etapa de verificação de informações de pagamento, clique em "Prosseguir para a verificação"
-
A aprovação dos documentos pode levar até 2 dias úteis.
-
Para entrar na sandbox e desabilitar o billing siga esse tutorial:
Criando um projeto
Para consumir dados via Google BigQuery, será necessário criar um projeto na GCP. Para fazê-lo, siga as seguintes etapas:
- Vá ao GCP Console e clique no botão "Selecione um projeto"
- Se você não possui e-mail institucional escolha a opção Sem organização, caso contrário selecione dados.rio. Depois, clique na opção "Novo projeto".
Se você for redirecionado para a página da imagem abaixo, clique em Criar projeto.
- Preencha o nome do projeto lembrando que esse é um projeto só seu. Logo abaixo do nome do projeto haverá a possibilidade de alterar o ID do projeto. Por questões de organização, sugerimos que o ID do projeto seja o mesmo do nome do projeto e que a separação seja feita por hífens (
-
) no lugar de espaços. Para as pessoas que acessarem com um e-mail institucional (@dados.rio) deverá ser escolhida a opção de dados.rio do campo Organização. Para os demais, pode deixar essa opção marca com Sem organização.
- Clique em "Criar". Você será redirecionado para a página inicial do console da GCP. Quando o projeto tiver sido criado, clique em "Selecionar projeto".
Parabéns! Você já pode usar o Google BigQuery! 🎉
Acessando dados via BigQuery
Com sua conta da GCP devidamente configurada, você pode acessar dados via BigQuery. Vamos lá!
Adicionando o projeto do Escritório de Dados
- No GCP Console, verifique se você está com o projeto correto selecionado e, em seguida, clique no ícone de hambúrguer.
- Procure na lista do hambúrguer o serviço "BigQuery". Passe o mouse por cima e selecione "Espaço de trabalho SQL".
🆘 Se tiver dificuldade em encontrar o BigQuery, pode procurar por ele na barra de pesquisa lá em cima!.
- O console do BigQuery será aberto. Ao lado esquerdo, você verá todos os projetos que você possui acesso. Ao lado direito, há um campo de texto para executar queries.
- Na barra Explorer, clique nas três bolinhas verticais e depois em "+ Adicionar dados" para adicionar novos projetos. Para algumas pessoas o botão "+ Adicionar dados" aparerá diretamente.
- Depois, clique em "Fixar um projeto por nome".
- Em seguida, procure pelo projeto datario, que se refere aos dados disponibilizados pela equipe do Escritório de Dados Rio. Ao encontrar, clique em "Fixar".
- Depois de alguns segundos o projeto datario estará aparecendo em sua aba "Explorer". Ao navegar por ele, verá algo semelhante ao seguinte:
Agora você está pronto para utilizar os dados abertos da Prefeitura do Rio de Janeiro!
Se você trabalha para a prefeitura e quer adicionar os demais projetos que tem acesso, basta seguir o mesmo passo mostrado anteriormente e buscar o nome do projeto da sua secretaria ou órgão. Exemplo de projetos internos:
- rj-cor
- rj-escritorio
- rj-segovi
- rj-sme
Fazendo sua primeira query e usando os resultados
- Pode-se fazer uma query nessa tabela clicando em "Query" ou nos três pontinhos verticais e escolhendo "Query". Em ambas as formas, será gerada uma query básica para a tabela.
- Para executar a query, basta clicar em "Run" ou pressionar Ctrl + Enter. Os resultados serão exibidos como na imagem acima.
Ao final, com os resultados da query que desejamos, podemos fazer coisas legais! 🤓
É possível, por exemplo:
- Baixar ou salvar os resultados clicando em "Save results".
- Salvar a query ou criar uma view com ela para utilizar depois, clicando em "Save", ao lado de "Run".
- Criar um schedule para executar essa mesma query em intervalos de tempo definidos, clicando em "Schedule".
Explorando os dados com Data Studio, Google Sheets e Colab
Após rodarmos uma query no GCP também podemos explorar nossos dados utilizando outras plataformas gratuitas como o Data Studio, Google Planilhas e Colab. Para isso, basta clicar no botão "Explore Data" na parte inferior direita e escolher a melhor forma para você.
Com o Data Studio você consegue criar gráficos e dashboards que atualizarão automaticamente com seus dados. Já com o Google Planilhas também é possível criar gráficos e ainda realizar análises rápidas. Para análises mais aprofundadas e complexas recomendamos o uso do Colab, mas nesse caso será necessário um conhecimento básico de Python.
E é isso! Agora é hora de voar! 🚀
Navegando pelos dados
- Aqui, você pode selecionar qualquer tabela, clicar nos pontinhos verticais e "Open". Assim, serão exibidas as propriedades dessa tabela. Na aba "Schema", será mostrado o nome de cada coluna, seu tipo e descrição.
- Já na aba "Detalhes", haverá informação sobre o tamanho da tabela, número de linhas, datas de criação e atualização, etc.
- Por fim, na aba "Preview", aparecerão alguns dados contidos nessa tabela.
Acessando dados via Python
Então você quer acessar os dados diretamente via Python? A gente te dá uma força! 👨💻
Requisitos
- Python 3.6 ou superior
- basedosdados (instale com
pip install basedosdados
)
Fazendo uma query
A seguir, vamos consultar dados da maneira mais simples possível. Se liga só nesse snippet curtinho mas SUPER poderoso 💪:
import basedosdados as bd
query = "SELECT * FROM `datario.educacao_basica.aluno` LIMIT 10"
df = bd.read_sql(query, billing_project_id="<id-do-seu-projeto>")
Importante: note que esse billing_project_id
deve corresponder ao ID do seu projeto na GCP, NÃO
ao nome do projeto. No caso da imagem abaixo, seria "primeiro-projeto-350017"
Quando você executar esse snippet, será solicitada a autenticação com sua conta Google:
E assim que autorizar, você vai ter seu dado lindo de bonito já em um DataFrame do Pandas! É pura magia 🪄
Acessando dados via R
A basedosdados possui um guia excelente de como acessar dados do BigQuery via R. Você pode acessá-lo aqui!
Acessando dados via PowerBI
A documentação oficial da Microsoft possui um guia excelente de como acessar dados do BigQuery via PowerBI. Você pode acessá-lo aqui!
Acessando dados via Google Sheets/Planilha
Para importar toda uma tabela em um Google Sheets você deve, primeiramente, acessar uma planilha e clicar nas opções Data > Data connectors > Connect to BigQuery.
Uma nova janela será aberta para que você escolha o projeto, o dataset e a tabela que você quer acessar.
Feito isso, o Google Sheets irá importar toda a tabela. Tome cuidado com tabelas muito grandes! Se esse for o seu caso recomendamos importar a tabela no python utilizando a biblioteca basedosdados
mencionada anteriormente.
Acessando dados via Data Studio
Para importar toda uma tabela no Data Studio você deve, primeiramente, acessar o site do Data Studio e criar um novo report.
Para conectar uma tabela do BigQuery clique no botão correspondente a ele.
Navegue nas opções de projeto, dataset e tabela até encontrar o dado de interesse.
Prontinho! Agora é só liberar seu lado analytics + criativo para começar suas análises.
Dicas para reduzir o custo de uma query no GCP
1 - Evite SELECT *
Para contornar o uso do SELECT *
você pode:
- Escrever apenas os nomes das colunas que deseja como retorno.
Ex:
SELECT id_aluno, turma, situacao FROM datario.educacao_basica.aluno
- Excluir algumas colunas com o uso do
EXCEPT
. Ex:SELECT * EXCEPT(id_aluno, turma, situacao) FROM datario.educacao_basica.aluno
2 - Espiar como são os dados 🕵🏽♀️
Para olhar como são os dados você pode:
Clicar nos pontinhos verticais e "Open". E depois selecionar a aba "Preview" para visualizar algumas linhas dessa tabela.
Dessa forma, você consegue visualizar dados gratuitamente e sem afetar sua cota mensal 🤩.
3 - Filtrar a partição
Se a tabela for particionada, opte por filtrá-la utilizando a coluna de partição. Você pode descobrir se a tabela é particionada seguindo o mesmo passo anterior, mas selecionando a aba "Detalhes" e procurando o termo “Particionada no campo “.
Como vimos na imagem acima, a tabela datario.meio_ambiente_clima.quantidade_agua_precipitavel_satelite
é particionada pela coluna data_particao
. Vamos ver um exemplo de como é importante filtrarmos nossas consultas considerando a coluna de partição:
Suponha que queremos obter todos os valores da quantidade de água precipitável para latitudes menores que -22.0º e considerando apenas dados obtidos à 1h da manhã. Se adicionarmos no filtro a nossa coluna de partição, o GCP nos avisa que a query processará 83.24MB.
Se removermos da nossa query o filtro da partição o GCP processará 13.37GB! Bem mais do que a query anterior 🤯!
Você pode estar pensando 🤔: “Claro que a query consumirá mais! Você tem um filtro a menos nessa query.” Para rebater essa crítica vamos comparar a query anterior com uma sem filtro nenhum:
Nesse caso, o CGP irá processar a mesma quantidade de GB que a query em que não utilizamos a coluna de partição 🤓!
Então lembre-se: sempre use a coluna de partição quando sua tabela permitir 😉!
4 - JOIN
Para melhorar a eficiência dos JOIN podemos:
- reduzir a quantidade de dados das tabelas antes de uma cláusula JOIN. Quanto antes reduzirmos a quantidade de dados, menos processamento iremos exigir.
- sempre que possível, utilize colunas de inteiros para realizar o join entre tabelas.