Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何在BigQuery中创建包含非必填字段的表?_Go_Google Bigquery - Fatal编程技术网

Go 如何在BigQuery中创建包含非必填字段的表?

Go 如何在BigQuery中创建包含非必填字段的表?,go,google-bigquery,Go,Google Bigquery,我正在Go中制作一个RESTful API,它在BigQuery中写入行。我正在使用 为了创建BigQuery方案,我从结构推断模式,如中所述 问题是,结果模式的所有非重复字段都是“必需的”,因此,当我想要上载一个具有空值的结构时,空值将作为empy字段上载 这是my struct的一个示例: type Stats struct { Name string `bigquery:"name"` LastName int

我正在Go中制作一个RESTful API,它在BigQuery中写入行。我正在使用

为了创建BigQuery方案,我从结构推断模式,如中所述

问题是,结果模式的所有非重复字段都是“必需的”,因此,当我想要上载一个具有空值的结构时,空值将作为empy字段上载

这是my struct的一个示例:

type Stats struct {
    Name            string        `bigquery:"name"`
    LastName        int           `bigquery:"last_name"`
    PhoneNumber     string        `bigquery:"phone_number"`
}
这是如何创建架构的示例:

testSchema, err := bigquery.InferSchema(Stats{})
if err != nil {
    // TODO: Handle error.
}
并且,如果我上载一个只有一个字段集的结构:

rows := []*Stats{
    {Name: "testA"},
}

u := table.Uploader()
err2 := u.Put(ctx, rows)

结果是,在BigQuery中,“last_name”和“phone_number”字段是一个空字符串“”,而不是NULL

我是一名专家,但查看代码时,它看起来像
inferFieldSchema
方法总是设置
Required:true
。我会提交一个bug以允许控制它(尽管不清楚如何),或者您可以在创建模式后对其进行修补—BigQuery支持将模式从REQUIRED修改为NULLABLE。

为此,显然您必须使用特定的BigQuery NULLABLE类型(NullInt64、NullFloat64、NullString、NullBool、NullTimestamp、NullDate、NullTime和NullDateTime)

使用bigquery.NullBool的示例: