🐙
GoでBigQueryのデータを取得する方法
GoでBigQueryのデータを取得する方法です。
ポイントは
BigQueryのINTEGERがInt64に
BigQueryのNUMERICがRatになる所です。
stringは変更不要
そのため、Goで扱う場合はFloat64でfloat64に変換しました。
ここでbig.Ratを学んだ
//BigQueryの部分のみ抜粋
var hogestruct HogeStruct
projectID := "projectId"
ctx := context.Background()
client, err := bigquery.NewClient(ctx, projectID)
defer client.Close()
query := `
select
event_timestamp AS EventTimestamp,
hoge_id AS HogeId,
float_value AS FloatValue
from dataset.tablle where hogecolumn = @hoge LIMIT 1`
q := client.Query(query)
//@hogeの所に実際の値を設定。Nameはカラム
q.Parameters = []bigquery.QueryParameter{
{Name: "hogecolumn", Value: hogeValue},
}
q.Location = "asia-northeast1"
// Run the query and print results when the query job is completed.
job, err := q.Run(ctx)
//エラー処理は省略
//1件のみ取得
var values []bigquery.Value
for {
err := it.Next(&values)
if err != nil {
break
}
break
}
if values != nil {
hogestruct.EventTimestamp = values[0].(string)
hogestruct.HogeId = values[1].(int64)
hogestruct.FloatValue, _ = values[2].(*big.Rat).Float64()
}
Discussion