SiNBLOG

140文字に入らないことを、極稀に書くBlog

bigqueryのjoin eachはサブクエリのgroup byに対応していない?

先日、bigqueryに待望のlarge joinが入りました!
Google Developers Blog: BigQuery gets big new features to make data analysis even easier

というわけで、試していたのですが、ちょっと気になるところが・・・
joinする右のテーブルがサブクエリで、group byを使っていた時にエラーになる?


SELECT p1.pokemonName FROM [pokemonms.Pokemon] p1
JOIN EACH
(SELECT worldGuideNo, pokemonName
FROM [pokemonms.Pokemon]
GROUP BY worldGuideNo,pokemonName
) p2 ON p1.worldGuideNo = p2.worldGuideNo


Error: SHUFFLE BY may only be applied to parallelizable queries, but query is not parallelizable: (SELECT [worldGuideNo], [pokemonName] FROM [gen_726962906418_pokemonms.Pokemo...

こんな感じでエラーになっちゃうのです
テーブルのデータ量は数件で、結果も大したことはありません
また、JOIN EACHをJOINに変えれば、動きます


普通のJOINの方がコストが低いので、データが少ないうちはJOINでやっておいて、
small joinの制限を超えたら、JOIN EACHに書き換えれば良いと思っていたのですが、
これだと、SQLの修正が必要になってしまいます


でも、googleの中の人に連絡したら、もしかしたらバグかもーと仰っていたので、
JOIN EACHでサブクエリにgroup by使っていても動くようになるのかも!


2014/05/06追記 エラー回避方法は以下の記事
2013-05-06 - SinDiary