👻

Go言語でBigQueryのクエリを実行してみる

2020/10/01に公開

概要

Go言語からBigQueryのクエリを実行してみたので、そのメモ。

import

Google提供のBigQueryのライブラリと、認証周りで使うライブラリをimport。

"google.golang.org/api/bigquery/v2"
"golang.org/x/net/context"
"golang.org/x/oauth2/jwt"

接続

GCPプロジェクトの権限を持つアカウント名と秘密鍵を使ってアクセスします。

cfg := jwt.Config{
	Email:      account,
	PrivateKey: pem,
	Scopes:     []string{bigquery.BigqueryScope},
	TokenURL:   "https://accounts.google.com/o/oauth2/token",
}
ctx := context.Background()
client := cfg.Client(ctx)
conn, err := bigquery.New(client)

クエリ

プロジェクトIDとクエリを指定して、実行する。

result, err := conn.Jobs.Query(projectId, &bigquery.QueryRequest{
	Query: "SELECT * FROM ....",
}).Do()

なおデータセットIDはクエリ内のテーブル名に含まれる。

結果

Rowsに結果が入っている。

for _, row := range result.Rows {
	for _, cell := range row.F {
		fmt.Print(cell.V)
		fmt.Print(",")
	}
	fmt.Print("\n")
}

この記事はQiitaの記事をエクスポートしたものです

Discussion