BigQuery:是否可以通过在记录中添加字段来修改表架构

Ode*_*adt 1 google-bigquery

BigQuery 手册指出只能添加新字段,而不能修改现有字段。我的问题是是否可以将现有字段添加到记录字段中。假设原始架构是:

{"type":"RECORD","name":"record","mode":"REPEATED"
 "fields":[
    {"type":"STRING","name":"f1","mode":"NULLABLE"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想添加 f2 所以架构将是:

{"type":"RECORD","name":"record","mode":"REPEATED"
 "fields":[
    {"type":"STRING","name":"f1","mode":"NULLABLE"},
    {"type":"STRING","name":"f2","mode":"NULLABLE"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

是否可以?

rme*_*ves 9

控制台不支持向 STRUCT 添加新字段,但您可以使用 BigQuery CLI 添加它,如下所示

在控制台模式下:

经典 BigQuery 网页界面当前不支持向现有 RECORD 列添加新的嵌套字段。

使用 BigQuery CLI:

在此选项中,您可以创建新架构并用于bq update project_id:dataset.table schema更新表。

正如您可以在链接中找到的:

  1. 首先,发出带有 --schema 标志的 bq show 命令并将现有表架构写入文件。如果您要更新的表位于默认项目以外的项目中,请按以下格式将项目 ID 添加到数据集名称:project_id:dataset.table。[...]
bq show \
--schema \
--format=prettyjson \
project_id:dataset.table > schema_file
Run Code Online (Sandbox Code Playgroud)
  1. 在文本编辑器中打开架构文件。该架构应如下所示。在此示例中,column3 是嵌套的重复列。嵌套列是nested1 和nested2。fields 数组列出了嵌套在 column3 中的字段。[...]
  2. 将新的嵌套列添加到 fields 数组的末尾。在此示例中,nested3 是新的嵌套列。[...]
  3. 更新架构文件后,发出以下命令来更新表的架构。如果您要更新的表位于默认项目以外的项目中,请按以下格式将项目 ID 添加到数据集名称:project_id:dataset。[...]

bq update mydataset.mytable /tmp/myschema.json

希望能帮助到你