我已将数据从数据存储导出到云存储,并将其加载到BigQuery。如果我更改了架构的顺序,它会影响数据吗?下表如下:用于更新架构的代码:func updateSchema(projectID, datasetID, tableID string) error { projectID := "my-project-id" datasetID := "mydataset" tableID := "mytable" ctx := context.Background() client, err := bigquery.NewClient(ctx, projectID) if err != nil { return fmt.Errorf("bigquery.NewClient: %v", err) } defer client.Close() tableRef := client.Dataset(datasetID).Table(tableID) meta, err := tableRef.Metadata(ctx) if err != nil { return err } newSchema := bigquery.Schema{ {Name: "settlement", Type: bigquery.StringFieldType }, {Name: "dismissal_id", Type: bigquery.IntegerFieldType }, {Name: "brand_safe_flag", Type: bigquery.BooleanFieldType }, {Name: "net_cv_cost", Type: bigquery.StringFieldType }, {Name: "gross_cv_cost", Type: bigquery.StringFieldType }, {Name: "non_achievement_message", Type: bigquery.StringFieldType }, {Name: "partner_id", Type: bigquery.IntegerFieldType }, {Name: "click_url", Type: bigquery.RecordFieldType, Schema: bigquery.Schema{ {Name: "string", Type: bigquery.StringFieldType}, {Name: "text", Type: bigquery.StringFieldType}, {Name: "provided", Type: bigquery.StringFieldType}, }}, } update := bigquery.TableMetadataToUpdate{ Schema: newSchema, } if _, err := tableRef.Update(ctx, update, meta.ETag); err != nil { return err } return nil}
1 回答

LEATH
TA贡献1936条经验 获得超6个赞
现有 BigQuery 表支持的唯一修改是:
向架构定义中添加列
将列的模式从 放宽为
REQUIRED
NULLABLE
请参阅 https://cloud.google.com/bigquery/docs/managing-table-schemas。如果要在这两个操作的范围之外执行架构更改,则可能必须采用其他方法。请考虑将数据迁移到具有新架构的新表中。
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消