(Hadoopクラスターで使用するために)PigLatinに変換しようとしているSQLのクエリがあります。ほとんどの場合、クエリをPigに移動することに問題はありませんが、理解できない何かに遭遇しました。
次のようなselectステートメントを想像してみてください。
SELECT a.f1, b.f2, b.f3 -- just for example
FROM tableA a, tableB b
WHERE(
(
a.f1 = b.f2
AND
(
a.f2 = b.f1
OR
(
(a.f2 = 'somestring1' OR a.f2 = 'somestring2')
AND
(b.f1 is null OR b.f1 ='somestring3' OR b.f1 = 'somestring4')
)
)
OR
(
a.f3 = b.f4
AND
(
a.f4 = b.f3
OR
(
(a.f4 = 'somestring5' OR a.f4 = 'somestring6')
AND
(b.f3 is null OR b.f3 ='somestring7' OR b.f3 = 'somestring8')
)
)
)
)
GROUP BY -- some other stuff
今、私はPigへの直接翻訳が不可能かもしれないことを知っています。その場合、このステートメントを計算に必要なJOIN(およびフィルター)にどのように分解するのか疑問に思います(それからPigクエリを作成する方法を確認する方が簡単な場合があります)。
Pigメーリングリストにアクセスしましたが、Pigは実際にはJOINと「OR」を実行しないため、適切な解決策はまだ見つかりません。私はこの質問がいかに奇妙であるかを知っています。
(Pigでこれがどのように行われるかについて誰かが知っているなら、私はそれを見ることに反対しません...)
編集:これがHiveでもっと簡単になるかどうか誰かが知っていますか?