【问题标题】:Limit number or rows from JOIN限制 JOIN 中的行数或行数
【发布时间】:2014-04-17 23:09:31
【问题描述】:

我正在尝试加入两个表

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)中是否有可能发生这样的事情,或者我是否以完全错误的方式来解决这个问题?非常感谢您的帮助!!

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   |

【问题讨论】:

    标签: sql hive shark-sql


    【解决方案1】:

    将分布表包装在计算计数或行数的子查询中,与分数连接并将行数计算为 rn(由 updated_at_yyyy_mm 分布),然后在上面的子查询过滤结果行中:其中 rn

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多