【问题标题】:Select random row per column value from Hive table从 Hive 表中选择每列值的随机行
【发布时间】:2018-09-14 18:41:07
【问题描述】:

我正在尝试为列hash 的每个不同值检索一个随机行。我还需要 dt 列。

到目前为止,我遇到了这个不起作用的查询:

INSERT OVERWRITE TABLE t PARTITION(dt)
    SELECT hash, dt FROM (
        SELECT hash, RAND() as r, dt FROM t1
            UNION
        SELECT hash, RAND() as r, dt FROM t2
    ) result
    WHERE r IN (SELECT MAX(r) FROM result WHERE hash=result.hash);

由于在 FROM 子句 FROM result 中使用它,查询失败并出现错误 Table not found 'result'

如何修复此查询或在此处使用什么其他方法?

【问题讨论】:

    标签: hive subquery hiveql


    【解决方案1】:

    您可以使用row_number 获取按 r 排序的每个散列的最大值的行。

    INSERT OVERWRITE TABLE t PARTITION(dt)
        SELECT hash,dt
        FROM (SELECT hash, dt, row_number() over(partition by hash order by r desc) as rnum 
              FROM (SELECT hash, RAND() as r, dt FROM t1
                    UNION ALL
                    SELECT hash, RAND() as r, dt FROM t2
                   ) result
             ) t
        WHERE rnum=1
    

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 2018-03-04
      • 2020-03-17
      相关资源
      最近更新 更多