本題の通り
調べたサンプルで例えば
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で実装することに