LoginSignup
3
1

More than 5 years have passed since last update.

golangでbigqueryのReadでエラーが起きてはまった話

Posted at

本題の通り
調べたサンプルで例えば

q := client.Query("SELECT word FROM [bigquery-public-data.samples.shakespeare] LIMIT 1;")
 Failed to Read Query:googleapi: Error 400: Syntax error: Unexpected "[" at [2:6]. If this is a table identifier, escape the name with `, e.g. `table.name` rather than [table.name]., invalidQuery
exit status 1

このエラーが

[じゃなくて`でてと言われているみたいだけど

q := client.Query("SELECT word FROM `bigquery-public-data.samples.shakespeare` LIMIT 1;")

と書くと今度はテーブルないよエラーになりなぜだという状態に。。

いろいろと調べたところどうもlegacySQLとstandardSQLがあるらしいです。

テーブルのオプションでSQL DialectにUse Legacy SQLのチェックがあれば
legacySQL使えるとありデフォルトはチェックあり

だけどエラーに。

ようやく解決方法がわかったので記事に

解決方法1

ヒントを書く

q := client.Query("#legacySQL\n SELECT word FROM [bigquery-public-data.samples.shakespeare] LIMIT 1;")

or

q := client.Query("#standardSQL\n SELECT word FROM `bigquery-public-data.samples.shakespeare` LIMIT 1;")

解決方法2

QueryConfigで設定する

q := client.Query("SELECT word FROM [bigquery-public-data.samples.shakespeare] LIMIT 1;")
q.QueryConfig.UseLegacySQL = true

or

q := client.Query("SELECT word FROM [bigquery-public-data.samples.shakespeare] LIMIT 1;")
q.QueryConfig.UseStandardSQL = true

この方法でエラーが出なくなった。

githubのissuesとか調べてもこの情報見当たらなかったけど
解決方法が別にあるのかも。。

とりあえず、解決方法2で実装することに

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1