我正在尝试加入两个表
ON scores.updated_at_yyyy_mm = distributions.range_yyyy_mm
这当然有效,但也根据分布表中给出的“计数”限制从分数表返回的行数,不幸的是我无法开始工作。我尝试了子查询,包括 - SELECT * FROM (SELECT) - 和 - JOIN(SELECT ...)。理想情况下,我还可以获得分数的随机样本 - TABLESAMPLE ( ROWS) 来救援?
我已经看到了很多 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 |