0

両方のテーブルを結合しようとしています

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   |
4

1 に答える 1