Bigquery将列添加到表模式

arc*_*man 20 google-bigquery

我正在尝试向BigQuery现有表添加新列.我尝试过bq命令工具和API方法.调用Tables.update()时出现以下错误.

我试过提供带有附加字段的完整模式,并且也给出了如下所示的相同错误.

使用API​​我得到以下错误:

{
    "schema": {
        "fields": [{
            "name": "added_column",
            "type": "integer",
            "mode": "nullable"
        }]
    }
}



{
    "error": {
        "errors": [{
            "domain": "global",
            "reason": "invalid",
            "message": "Provided Schema does not match Table [blah]"
        }],
        "code": 400,
        "message": "Provided Schema does not match Table [blah]"
    }
}
Run Code Online (Sandbox Code Playgroud)

使用BQ工具,我收到以下错误:

./bq update -t blah added_column:integer
Run Code Online (Sandbox Code Playgroud)

更新操作中的BigQuery错误:提供的架构与表[blah]不匹配

Jor*_*ani 42

试试这个:

bq --format=prettyjson show yourdataset.yourtable > table.json
Run Code Online (Sandbox Code Playgroud)

编辑table.json并删除除"fields"内部之外的所有内容(例如保留[ { "name": "x" ... }, ... ]).然后将新字段添加到架构中.

或通过jq管道

bq --format=prettyjson show yourdataset.yourtable | jq .schema.fields > table.json
Run Code Online (Sandbox Code Playgroud)

然后运行:

bq update yourdataset.yourtable table.json
Run Code Online (Sandbox Code Playgroud)

您可以添加--apilog=apilog.txt到命令行的开头,该命令行将准确显示从bigquery服务器发送/返回的内容.