Case DataLakers — Cloud Function: acessar e retornar dados do BigQuery como API

DataLakers Tecnologia
Blog DataLakers
Published in
3 min readOct 27, 2022

Na DataLakers, temos como principal missão otimizar os processos dos nossos clientes e fazer com que suas funcionalidades estejam ao alcance fácil para seu dia a dia de negócios.

Hoje trazemos em nosso Blog do Medium um artigo prático e bem técnico, em que conseguimos solucionar o problema do nosso cliente a partir das ferramentas disponíveis na Google Cloud Program (GCP).

Nosso cliente em questão (que, por questões de confidencialidade, manteremos anônimo) queria consultar sua base de clientes no BigQuery, para usar os recursos da Google Cloud Program (GCP) e ter um acesso aos dados por meio de uma API. Por isso, decidimos que seria a melhor solução usar a Cloud Function, uma função auto gerenciada com escalamento automático para poder servir esses recursos de consulta da base do BigQuery para uma aplicação externa com segurança e confiabilidade. Dessa maneira, unimos esses dois recursos e criamos uma solução.

Nesse artigo você verá o passo a passo do nosso processo.

Indo direto ao assunto no console do Google vá para Cloud Functions, e lá clique em Create Function.

1. Configuração

Na primeira parte de configuração escolha o tipo de função. Criamos uma de geração 1, o nome do endpoint em Function name e a Região em Region

- Environment: 1st gen

- Function name: search-bigquery-example (nome do endpoint)

- Region: us-central1 (fica a sua escolha)

Como Gatilho mantenha HTTP e por segurança deixe habilitado o checkbox Require HTTPS

As configurações abaixo de tempo de Runtime, build, connections e outros fatores, dependem de cada ambiente, então não iremos nos aprofundar.

Clique em Save e Next

2. Código

Em code você vai escolher o Runtime e colocar o código fonte. Colocamos um código fonte de exemplo abaixo, feito em python. Então as configurações ficaram assim:

- Runtime : Python 3.8

- Entry point : search_bigquery_example (Atenção esse é o nome da função que vai ser chamada logo tem que ser igual a função que foi definida)

- Source code: Inline Editor

De começo no próprio editor tem um código de exemplo, mas vamos descartar esse e olhar o de baixo.

Criamos três arquivos:

- requirements.txt (dependencias da cloud function)

- main.py (código central que aceita e responde as requisições)

- functions.py (funções auxiliares para deixar tudo arrumado)

Requirements.txt

  • Sem mistérios aqui! Dependências do projeto e só:
# requirements.txt# aqui tem as duas dependencias no mesmo formato que usei na cloud functiongoogle-cloud-bigqueryflask

main.py

- search_bigquery_example

  • Aqui é a função que recebe e responde as requisições. Colocamos os comentários no código para ficar mais claro:

functions.py

- Aqui são funções auxiliares que separamos para organizar o código, como boas práticas de desenvolvimento e auxilia a função principal **main.py** deixando mais clara e limpa e ainda separando as responsabilidades.

Agora é só executar a Cloud Function e ver como a mágica acontece!

Considerações Finais

As Cloud Functions são uma ótima saída para criar jobs na área de engenharia de dados, funcionais e de ágil implementação, devido a praticidade do deploy e versatilidade de gatilhos (HTTP, Cloud Pub/Sub, Cloud Storage e etc..). Porém, é importante destacar que seu uso é mais adequado para jobs com pouca demanda e de propósito único, caso a sua intenção seja uma API (como no exemplo aqui mostrado). No caso de alta demanda seria uma melhor solução se atentar para outros serviços da plataforma da GCP.

Escrito por Raphael Oliveira (Engenheiro de Dados da DataLakers)

--

--

DataLakers Tecnologia
Blog DataLakers

As melhores soluções para seu projeto de Big Data. A DataLakers Tecnologia é uma empresa especializada em automatização de pipeline e governança de dados.