Introducció
En aquest tema, aprendrem com automatitzar fluxos de treball a BigQuery utilitzant Google Cloud Functions. Les Cloud Functions són funcions de codi que s'executen en resposta a esdeveniments, permetent-nos crear solucions escalables i sense servidor per a diverses tasques, incloent-hi l'automatització de processos a BigQuery.
Objectius
- Comprendre què són les Cloud Functions i com funcionen.
- Aprendre a crear i desplegar una Cloud Function.
- Integrar Cloud Functions amb BigQuery per automatitzar fluxos de treball.
- Veure exemples pràctics d'automatització.
Què són les Cloud Functions?
Google Cloud Functions és un servei de computació sense servidor que permet executar codi en resposta a esdeveniments sense gestionar servidors. Les funcions poden ser desencadenades per diversos esdeveniments, com ara canvis en un bucket de Cloud Storage, missatges en una cua de Pub/Sub, o fins i tot peticions HTTP.
Característiques clau
- Sense servidor: No cal gestionar ni escalar servidors.
- Desencadenadors basats en esdeveniments: Les funcions s'executen en resposta a esdeveniments específics.
- Escalabilitat automàtica: Les funcions s'escalen automàticament segons la demanda.
- Integració amb altres serveis de Google Cloud: Facilita la creació de solucions integrades.
Crear i desplegar una Cloud Function
Pas 1: Configurar l'entorn
Abans de crear una Cloud Function, assegura't de tenir el SDK de Google Cloud instal·lat i configurat al teu entorn. Pots seguir les instruccions oficials de Google per a la instal·lació i configuració.
Pas 2: Escriure la funció
A continuació, escriurem una funció simple que s'executa en resposta a una petició HTTP i executa una consulta a BigQuery.
import google.cloud.bigquery as bigquery
from flask import escape
def bigquery_query(request):
client = bigquery.Client()
query = """
SELECT name, COUNT(*) as name_count
FROM `project_id.dataset.table`
GROUP BY name
ORDER BY name_count DESC
LIMIT 10
"""
query_job = client.query(query)
results = query_job.result()
output = []
for row in results:
output.append(f"{row.name}: {row.name_count}")
return escape("\n".join(output))Pas 3: Desplegar la funció
Per desplegar la funció, utilitza la següent comanda del SDK de Google Cloud:
gcloud functions deploy bigquery_query \ --runtime python39 \ --trigger-http \ --allow-unauthenticated
Pas 4: Provar la funció
Un cop desplegada, pots provar la funció fent una petició HTTP a l'URL proporcionat per Google Cloud Functions.
Integració amb BigQuery
Exemple pràctic: Automatització de l'actualització de taules
Suposem que volem automatitzar l'actualització d'una taula a BigQuery cada vegada que es carrega un nou fitxer CSV a un bucket de Cloud Storage. Podem crear una Cloud Function que s'executi en resposta a aquest esdeveniment.
Pas 1: Escriure la funció
import google.cloud.bigquery as bigquery
import google.cloud.storage as storage
def update_table(event, context):
client = bigquery.Client()
bucket_name = event['bucket']
file_name = event['name']
dataset_id = 'your_dataset_id'
table_id = 'your_table_id'
uri = f"gs://{bucket_name}/{file_name}"
job_config = bigquery.LoadJobConfig(
source_format=bigquery.SourceFormat.CSV,
skip_leading_rows=1,
autodetect=True,
)
load_job = client.load_table_from_uri(
uri, f"{dataset_id}.{table_id}", job_config=job_config
)
load_job.result()
print(f"Loaded {file_name} into {dataset_id}.{table_id}")Pas 2: Desplegar la funció
gcloud functions deploy update_table \ --runtime python39 \ --trigger-resource your-bucket-name \ --trigger-event google.storage.object.finalize
Exercici pràctic
Descripció
Crea una Cloud Function que s'executi en resposta a un missatge Pub/Sub i executi una consulta a BigQuery per obtenir les 5 primeres files d'una taula específica. La funció ha de retornar els resultats com una resposta HTTP.
Solució
import google.cloud.bigquery as bigquery
from google.cloud import pubsub_v1
from flask import escape
def query_bigquery(event, context):
client = bigquery.Client()
query = """
SELECT *
FROM `project_id.dataset.table`
LIMIT 5
"""
query_job = client.query(query)
results = query_job.result()
output = []
for row in results:
output.append(dict(row))
return escape(str(output))Desplega la funció amb:
Conclusió
En aquest tema, hem après com utilitzar Google Cloud Functions per automatitzar fluxos de treball a BigQuery. Hem vist com crear i desplegar funcions que s'executen en resposta a esdeveniments i com integrar-les amb BigQuery per executar consultes automàticament. Aquestes habilitats són essencials per crear solucions escalables i eficients en entorns de dades moderns.
Curs de BigQuery
Mòdul 1: Introducció a BigQuery
- Què és BigQuery?
- Configurar el teu entorn de BigQuery
- Comprendre l'arquitectura de BigQuery
- Visió general de la consola de BigQuery
Mòdul 2: SQL bàsic a BigQuery
Mòdul 3: SQL intermedi a BigQuery
Mòdul 4: SQL avançat a BigQuery
- Unions avançades
- Camps niats i repetits
- Funcions definides per l'usuari (UDFs)
- Particionament i agrupament
Mòdul 5: Gestió de dades a BigQuery
- Carregar dades a BigQuery
- Exportar dades de BigQuery
- Transformació i neteja de dades
- Gestió de conjunts de dades i taules
Mòdul 6: Optimització del rendiment de BigQuery
- Tècniques d'optimització de consultes
- Comprendre els plans d'execució de consultes
- Ús de vistes materialitzades
- Optimització de l'emmagatzematge
Mòdul 7: Seguretat i compliment de BigQuery
Mòdul 8: Integració i automatització de BigQuery
- Integració amb serveis de Google Cloud
- Ús de BigQuery amb Dataflow
- Automatització de fluxos de treball amb Cloud Functions
- Programació de consultes amb Cloud Scheduler
Mòdul 9: Aprenentatge automàtic a BigQuery (BQML)
- Introducció a BigQuery ML
- Creació i entrenament de models
- Avaluació i predicció amb models
- Funcions avançades de BQML
