--- 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, pendiente-usar] 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.