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