2017-01-26 10 views
0

私はGoでRESTfulなAPIを作り、BigQueryで行を書き込みます。私はGoogle BigQuery package for Goを使用しています。必須ではないフィールドでBigQueryでテーブルを作成するにはどうすればよいですか?

BigQueryスキームを作成するために、私はexampleで説明されているように、構造体からスキーマを推測しています。

問題は、結果のスキーマにすべての繰り返しフィールドが「必須」となっているため、ヌル値を持つ構造体をアップロードするときにヌル値がempyフィールドとしてアップロードされる...

これは私の構造体の例である:私は唯一のフィールドSEで構造体をアップロードする場合は、

testSchema, err := bigquery.InferSchema(Stats{}) 
if err != nil { 
    // TODO: Handle error. 
} 

そして:

type Stats struct { 
    Name   string  `bigquery:"name"` 
    LastName  int   `bigquery:"last_name"` 
    PhoneNumber  string  `bigquery:"phone_number"` 
} 

これは、スキーマの作成方法の例です。 T:

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

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

結果はBigQueryの中で、フィールド「LAST_NAME」と「PHONE_NUMBER」は代わりにNULL

答えて

0

の空の文字列「」である、ということです私は囲碁専門家でありませんが、でコードを見ますhttps://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/schema.go#L182inferFieldSchemaメソッドは常にRequired: trueに設定されているようです。私はそれを制御するためのバグを報告します(どういうわけかは分かりませんが)。あるいは、スキーマの修正後にREQUIREDからNULLABLEへのスキーマの変更はBigQueryでサポートされています。

関連する問題