両方のテーブルを結合しようとしています
ON scores.updated_at_yyyy_mm = distributions.range_yyyy_mm
もちろんこれは機能しますが、分布テーブルで指定された「カウント」に従って、スコアテーブルから返される行数を制限することもできます。残念ながら、これは機能しません。SELECT * FROM (SELECT) と JOIN(SELECT ...) の両方のサブクエリを試しました。理想的には、スコアのランダム サンプルも取得できます。
私は MS SQL と Oracle の多くのソリューションを見てきましたが、Hive のソリューションを見つけることができませんでした (おそらく Hive 0.13 でそれが可能ですが、Shark の基礎となる Hive をアップグレードする方法をまだ理解していません)。
Hive(およびShark)でそのようなことはまったく可能ですか、それとも私はこれを完全に間違った方法で行っていますか? 助けてくれて本当にありがとうございます!!
ところで-私はApache Shark 0.9.1を使用しており、Sharkをローカルで実行するための指示に従いました(つまり、Hadoop/Hiveクラスターではありません)。そして、私のテーブルは次のとおりです
scores: distributions:
user_id | updated_at_yyyy_mm | score | range_yyyy_mm | count |
--------------------------------------- -----------------------
000001 | 2014-01 | 100 | 2014-01 | 2 |
000001 | 2014-02 | 103 | 2014-02 | 1 |
000001 | 2014-03 | 106 | 2014-03 | 3 |
000001 | 2014-04 | 102 | 2014-04 | 1 |
... | ... | ... |
000002 | 2014-01 | 107 |
000002 | 2014-02 | 104 |
000002 | 2014-03 | 105 |
000002 | 2014-04 | 105 |
... | ... | ... |
000003 | 2014-01 | 109 |
000003 | 2014-02 | 111 |
000003 | 2014-03 | 113 |
000003 | 2014-04 | 102 |
... | ... | ... |
これは私が取得したいものです:
profiles:
user_id | updated_at_yyyy_mm | score |
--------------------------------------
000002 | 2014-01 | 107 |
000003 | 2014-01 | 109 |
000002 | 2014-02 | 104 |
000001 | 2014-03 | 106 |
000002 | 2014-03 | 105 |
000003 | 2014-03 | 113 |
000001 | 2014-04 | 102 |