2017-01-26 2 views
0

Я делаю RESTful API в Go, который записывает строки в BigQuery. Я использую Google BigQuery package for Go.Как создать таблицу в BigQuery с необязательными полями?

Чтобы создать схему BigQuery, я выводя схему из структуры, как описано в example.

Проблема заключается в том, что результирующая схема имеет все неперечисленные поля как «Обязательные», поэтому, когда я хочу загрузить структуру с нулевыми значениями, нулевые значения загружаются как поля empy ...

Это пример моей структуры:

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

ответ

0

Я не эксперт Go, но глядя на код в https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/schema.go#L182 похоже, что метод inferFieldSchema всегда устанавливает Required: true. Я бы установил ошибку, чтобы разрешить ее контролировать (хотя и неясно, как это сделать), или вы можете исправить свою схему после ее создания - модификация схемы от REQUIRED to NULLABLE поддерживается BigQuery.

Смежные вопросы