我正在尝试加入两个表
ON scores.updated_at_yyyy_mm = distributions.range_yyyy_mm
当然有效,但也可以根据' count'来限制分数表中返回的行数。在发行表中给出,遗憾的是我无法开始工作。我尝试了子查询,SELECT * FROM(SELECT) - 和 - JOIN(SELECT ...)。 理想情况下,我还可以随机抽取一些分数 - TABLESAMPLE(ROWS)来救援?
我已经看到了很多针对MS SQL和Oracle的解决方案,但是找不到Hive的任何东西(也许Hive 0.13可以做到这一点 - 但我还没有弄清楚如何升级底层Shark的Hive)。 / p>
在Hive(和Shark)中是否有可能这样的事情,或者我是否以完全错误的方式解决这个问题?非常感谢你的帮助!!
btw - 我在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 |
答案 0 :(得分:0)
在子查询中包装分配表,计算count或row_number,与分数连接并将row_number计算为rn(由updated_at_yyyy_mm分配),然后在上子查询过滤器结果行中:其中rn< = scores.cnt。