登录
首页 >  Golang >  Go问答

修改BigQuery架构会如何影响数据?

来源:stackoverflow

时间:2024-03-20 11:12:34 343浏览 收藏

修改 BigQuery 架构会影响数据,因为 BigQuery 仅支持添加列和将列模式从 REQUIRED 放宽为 NULLABLE。如果您需要进行其他架构更改,则必须采用其他方法,例如将数据迁移到具有新架构的新表中。

问题内容

我已将数据从 datastore 导出到 cloud storage,并将其加载到 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
}

解决方案


现有 BigQuery 表支持的唯一修改是:

  • 向架构定义添加列
  • 将列的模式从 REQUIRED 放宽为 NULLABLE

请参考https://cloud.google.com/bigquery/docs/managing-table-schemas。 如果您想执行这两个操作范围之外的架构更改,您可能必须采取不同的方法。考虑将数据迁移到具有新架构的新表中。

好了,本文到此结束,带大家了解了《修改BigQuery架构会如何影响数据?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>