feat: add BigQuery Python functions and BQClient type

Funciones CRUD completas para BigQuery: auth, datasets, tables, queries,
jobs, routines, load/export. Tipo BQClient como wrapper del SDK oficial.
This commit is contained in:
2026-04-07 18:45:02 +02:00
parent c311623a76
commit 690e68a542
33 changed files with 2720 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
---
name: bq_get_job
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def bq_get_job(client: BQClient, job_id: str) -> dict"
description: "Obtiene detalles completos de un job por su ID incluyendo estado, bytes procesados y errores. Incluye campos adicionales respecto a bq_list_jobs: destination_table, query y lista de errores."
tags: [bigquery, gcp, job, get, google-cloud, python]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [google-cloud-bigquery]
params:
- name: client
desc: "cliente autenticado de BigQuery obtenido con bq_auth"
- name: job_id
desc: "ID del job a consultar (formato: 'proyecto:region.job_id' o solo 'job_id')"
output: "dict con campos: job_id, job_type, state, created, started, ended, user_email, bytes_processed, error, y opcionalmente destination_table, query, errors"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/bigquery/jobs.py"
---
## Ejemplo
```python
from bigquery.client import bq_auth
from bigquery.jobs import bq_get_job
client = bq_auth("my-project")
job = bq_get_job(client, "job_abc123")
print(job["state"], job["bytes_processed"])
# Inspeccionar query SQL del job
if job.get("query"):
print("SQL:", job["query"][:200])
# Ver errores detallados
if job["error"]:
print("Error principal:", job["error"])
for err in job.get("errors", []):
print(" -", err)
```
## Notas
Lanza `google.api_core.exceptions.NotFound` si el job_id no existe en el proyecto.
A diferencia de `bq_list_jobs`, este metodo retorna campos adicionales cuando estan disponibles:
- `destination_table`: tabla destino (solo en query/load jobs con destino explicito)
- `query`: texto SQL del job (solo en query jobs)
- `errors`: lista completa de errores (cada uno como dict con `reason`, `message`, `location`)
Los campos `created`, `started` y `ended` se serializan como strings ISO 8601.