雑文発散

«前の日記(2014-03-05) 最新 次の日記(2014-03-07)» 編集
過去の日記

2014-03-06 [長年日記]

[] Treasure Data のクエリで悩んでいた

LanguageManual SubQueries の「Subqueries in the WHERE Clause」を読むと、WHERE の IN 句でもサブクエリが使えそうに書いているんだけど、どうも Treasure Data ではうまくいかずに悩んでいた。

このドキュメントだと Hive 0.13 で対応したような書き方なので、TD での Hive のバージョンは違うのかな。。。

いろいろググった結果、「ほぼやけくそHive Hacks」に

Hiveではサブクエリを持つINメソッドは使えないため、LEFT SEMI JOINを使用して同等の処理を実現する。

SQL
SELCT a.id, a.name FROM movie_a WHERE a.id IN (SELECT b.movieid FROM score b);

HiveQL
SELECT a.id, a.name FROM movie_a LEFT SEMI JOIN score b ON a.id = b.movie_id;

のように書かれていたので、こっち方面を試してみよう。

【追記】

Hive Built-in Operators」に「supported by Hive 0.10.0 (CDH 4.3.1)」と書かれていた。