--- name: bq_update_table kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def bq_update_table(client: BQClient, dataset_id: str, table_id: str, schema: list[dict] | None = None, description: str | None = None, labels: dict | None = None) -> dict" description: "Actualiza metadatos de una tabla BigQuery: schema (solo adicion de columnas), descripcion y etiquetas. Usa client._client.update_table() del SDK oficial." tags: [bigquery, gcp, table, update, 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 BQClient obtenido con bq_auth" - name: dataset_id desc: "ID del dataset que contiene la tabla" - name: table_id desc: "nombre (ID) de la tabla a actualizar" - name: schema desc: "schema completo nuevo (columnas existentes + nuevas al final). BigQuery SOLO permite agregar columnas, no eliminar ni renombrar. None = no modificar" - name: description desc: "nueva descripcion de la tabla. None = no modificar" - name: labels desc: "nuevas etiquetas clave-valor (reemplaza las existentes). None = no modificar" output: "dict con la metadata actualizada de la tabla (misma estructura que bq_get_table)" tested: false tests: [] test_file_path: "" file_path: "python/functions/bigquery/tables.py" --- ## Ejemplo ```python from bigquery import bq_auth, bq_update_table client = bq_auth("mi-proyecto") # Actualizar descripcion y etiquetas tabla = bq_update_table( client, "ventas_ds", "transacciones", description="Transacciones de ventas — actualizado", labels={"env": "prod", "team": "data", "version": "2"}, ) # Agregar columna nueva al schema existente tabla = bq_update_table( client, "ventas_ds", "transacciones", schema=[ {"name": "id", "type": "INTEGER", "mode": "REQUIRED"}, {"name": "fecha", "type": "DATE", "mode": "NULLABLE"}, {"name": "monto", "type": "FLOAT", "mode": "NULLABLE"}, {"name": "nueva_col", "type": "STRING", "mode": "NULLABLE"}, # nueva ], ) ``` ## Notas BigQuery tiene restricciones estrictas sobre modificacion de schema: se pueden agregar columnas NULLABLE o REPEATED al final, pero NO se pueden eliminar columnas, renombrar columnas ni cambiar el tipo de una columna existente. Si se necesita ese tipo de cambio, la alternativa es crear una tabla nueva con `CREATE TABLE AS SELECT`. Los campos `None` no generan actualizacion — solo se envian al API los campos que cambian.