我已将数据从数据存储导出到云存储,并将其加载到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
}
LEATH
相关分类