Saltar al contenido

Bigquery agrega columnas al esquema de la tabla

Solución:

Prueba esto:

bq --format=prettyjson show yourdataset.yourtable > table.json

Edite table.json y elimine todo excepto el interior de “campos” (por ejemplo, mantenga el [ { "name": "x" ... }, ... ]). Luego agregue su nuevo campo al esquema.

O tubería a través de jq

bq --format=prettyjson show yourdataset.yourtable | jq .schema.fields > table.json

Entonces corre:

bq update yourdataset.yourtable table.json

Puedes añadir --apilog=apilog.txt al comienzo de la línea de comando que mostrará exactamente lo que se envía / devuelve desde el servidor de bigquery.

En mi caso, estaba intentando agregar un REQUIRED campo a una tabla de plantilla, y se estaba encontrando con este error. Cambiando el campo a NULLABLE , déjame actualizar la tabla.

También una versión más reciente sobre actualizaciones para cualquiera que se tropiece con Google.

#To create table
bq mk --schema domain:string,pageType:string,source:string -t Project:Dataset.table
#Or using schema file
bq mk --schema SchemaFile.json -t Project:Dataset.table


#SchemaFile.json format
[{                                                                                                                                                                                                                                                
  "mode": "REQUIRED",
  "name": "utcTime",
  "type": "TIMESTAMP"
},    
{
  "mode": "REQUIRED",
  "name": "domain",
  "type": "STRING"
},  
{
  "mode": "NULLABLE",
  "name": "testBucket",
  "type": "STRING"
},  
{
  "mode": "REQUIRED",
  "name": "isMobile",
  "type": "BOOLEAN"                                                                                                                                                                                                                       
},
{
  "mode": "REQUIRED",
  "name": "Category",
  "type": "RECORD",
  "fields": [
    {
      "mode": "NULLABLE",
      "name": "Type",
      "type": "STRING"
     },
     {
       "mode": "REQUIRED",
       "name": "Published",
       "type": "BOOLEAN"
     }
    ]
}]

# TO update
bq update --schema UpdatedSchema.json -t Project:Dataset.table
# Updated Schema contains old and any newly added columns 

Algunos documentos para tablas de plantillas

Estaba atascado tratando de agregar columnas a una tabla existente en BigQuery usando el cliente Python y encontré esta publicación varias veces. Luego dejaré el fragmento de código que lo resolvió por mí, en caso de que alguien tenga el mismo problema:

# update table schema
bigquery_client = bigquery.Client()
dataset_ref = bigquery_client.dataset(dataset_id)
table_ref = dataset_ref.table(table_id)
table = bigquery_client.get_table(table_ref)
new_schema = list(table.schema)
new_schema.append(bigquery.SchemaField('LOLWTFMAN','STRING'))
table.schema = new_schema
table = bigquery_client.update_table(table, ['schema'])  # API request
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *