Nós recentemente publicou um detalhado livro sobre como trabalhar com o data warehouse Google BigQuery . Hoje decidimos tocar brevemente neste tópico novamente e publicar um pequeno caso sobre como consultar dados do BigQuery em Python e R.
Deixe-nos saber nos comentários se você estiver interessado em uma publicação sobre aprendizado de máquina usando o BigQuery
Visão geral
Neste artigo, veremos como carregar dados do Google BigQuery usando Python e R e, em seguida, falaremos sobre como consultar os dados para obter insights úteis. Usaremos a biblioteca Google Cloud BigQuery para se conectar ao BigQuery Python e a biblioteca bigrquery para fazer o mesmo em R.
Também discutiremos dois estágios da manipulação de dados do BigQuery usando Python / R:
- Conectividade do Google BigQuery e acesso a dados
- Consulta de dados com Python / R
Este artigo pressupõe que todos os seus dados de usuário estão armazenados no Google BigQuery.
Pitão
Python é uma das linguagens de propósito geral mais populares para manipulação de dados. Possui atenção e demanda por sua flexibilidade e facilidade de uso, e em ciência de dados possui uma grande variedade de bibliotecas e ferramentas para interação com sistemas de terceiros.
Conexão ao Google BigQuery com Python
Para consultar os dados do Google BigQuery usando Python, você precisa conectar o cliente Python à sua instância do BigQuery. Isso usa a biblioteca de cliente da nuvem para a API do Google BigQuery. Existem também soluções alternativas para se conectar ao BigQuery usando Python; por exemplo, a biblioteca BigQuery-Python de tylertreat é ótima.
Estaremos trabalhando com a biblioteca Google Cloud BigQuery, pois ela é estável e oficialmente compatível com o Google.
Isso pressupõe que você já tenha um ambiente de desenvolvimento Python configurado.
Para instalar a biblioteca, execute o seguinte comando na linha de comando:
pip install --upgrade google-cloud-bigquery
Em seguida, conectamos o cliente ao banco de dados. Para fazer isso, você precisa baixar um arquivo JSON contendo credenciais para o serviço BigQuery. Se você não tiver um, veja como criar um. Em seguida, baixe esse arquivo JSON para sua máquina local.
Agora que temos tudo configurado, procedemos à inicialização da conexão. O seguinte código Python é usado para isso:
rom google.cloud import bigquery
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
'path/to/file.json')
project_id = 'my-bq'
client = bigquery.Client(credentials= credentials,project=project_id)
No snippet acima, você também precisará especificar a
project_idlocalização do arquivo JSON com a chave, substituindo ' path/to/file.json' pelo caminho realmente correto para o arquivo JSON salvo na máquina local.
No Google BigQuery, um projeto é um contêiner de nível superior e fornece controle de acesso padrão sobre todos os conjuntos de dados.
Consulta de dados do BigQuery com Python
Agora que nosso cliente do BigQuery está configurado e pronto para uso, podemos consultar muitos dados do BigQuery.
Isso usa um método de consulta que coloca o trabalho de consulta em uma fila do BigQuery. As solicitações são executadas de forma assíncrona - isso significa que não especificamos atrasos e o cliente espera que o trabalho seja concluído. Assim que isso acontecer, o método retorna uma instância
Query_Jobcontendo os resultados.
Você pode ler mais sobre como esse método funciona na documentação oficial aqui .
Esta é a aparência do código Python de interesse:
query_job = client.query("""
SELECT *
FROM dataset.my_table
LIMIT 1000 """)
results = query_job.result() # .
Observe que os padrões da consulta acima são a sintaxe SQL padrão. Se você quiser usar SQL legado, o código será assim:
job_config.use_legacy_sql = True
query_job = client.query("""
SELECT *
FROM dataset.my_table
LIMIT 1000""", job_config = job_config)
results = query_job.result() # .
R
A linguagem R é uma alternativa popular ao Python e é usada ativamente na ciência de dados. Se você estiver interessado em análises estatísticas detalhadas e metódicas de dados, existem poucas linguagens que podem competir com R.
Ao trabalhar com o Google BigQuery, a linguagem R também oferece uma biblioteca confiável e fácil de usar para consultar e manipular dados. Aqui estaremos trabalhando com a biblioteca bigrquery criada e mantida por Hadley Wickham, diretor de pesquisa da RStudio.
Isso pressupõe que você já configurou seu ambiente de desenvolvimento em R. Caso contrário, use este guia para configurar o RStudio.
Conecte-se ao Google BigQuery com R
Para instalar bigrquery, execute o seguinte comando no console R:
install.packages(“bigrquery”)
É simples assim! Estamos prontos para ir.
Assim como no Python, nossa autorização de cliente R é necessária para acessar os serviços do Google Cloud. Como segue na documentação do bigrquery, siga o prompt do console R para abrir a URL de login e, em seguida, copie o código para o console.
Observação: esta autorização precisa ser feita apenas uma vez. Todas as solicitações subsequentes atualizarão automaticamente as credenciais de acesso.
Consultando dados do BigQuery com R
Para consultar dados do BigQuery em R, siga estas etapas:
- Vamos indicar o ID do projeto no console do Google Cloud, como foi feito em Python.
- Vamos formar uma string de consulta com a qual solicitaremos dados.
- Vamos chamá-lo
query_execcom nosso ID de projeto e string de consulta.
Aqui está o código para fazer tudo isso:
#
library(bigrquery)
# ID
project_id <- "your-project-id"
#
sql_string <- "SELECT * FROM dataset.my_table LIMIT 1000"
#
query_results <- query_exec(sql_string, project = project_id, useLegacySql = FALSE)
Assim como no Python, você pode executar consultas escritas em SQL legado. Você também pode alterar o valor
useLegacySqlpara TRUEem sua função query_exec.
Conclusão
Então, vimos como é fácil e simples trabalhar com dados salvos no Google BigQuery, referindo-se a eles em Python e R.
Nessas duas linguagens, não é difícil construir um modelo estatístico baseado em dados processados desta forma, e objetivos diferentes: entender como o usuário se comporta no aplicativo, prever a taxa de desligamento, etc.