【问题标题】:Hive: randomly select N values from distinct values of one columnHive:从一列的不同值中随机选择 N 个值
【发布时间】:2021-01-11 23:07:50
【问题描述】:

假设我有一个这样的数据集

|-----------------|----------------|
|    ID           |     Values     |
|-----------------|----------------|
|     123         |     aaaa       |
|-----------------|----------------|
|    234          |    bbb         |
|-----------------|----------------|
|     123         |     ab3d       |
|-----------------|----------------|
|    264          |     34g3ff     |
|-----------------|----------------|
|     783         |     341g5h     |
|-----------------|----------------|
|    921          |     7jdfew     |
|-----------------|----------------|
|     264         |     53fj       |
|-----------------|----------------|

我想从不同的 ID 值中随机选择 3 个值。一种可能性是获得这样的表格

|-----------------|----------------|
|    ID           |     Values     |
|-----------------|----------------|
|     123         |     aaaa       |
|-----------------|----------------|
|     123         |     ab3d       |
|-----------------|----------------|
|     783         |     341g5h     |
|-----------------|----------------|
|    921          |     7jdfew     |
|-----------------|----------------|

我应该如何在 Hive 中做到这一点?

【问题讨论】:

    标签: sql random hive subquery inner-join


    【解决方案1】:

    这是一个使用连接和rand()的选项:

    select id, values
    from mytable t
    inner join (select distinct id from mytable order by rand() limit 3) i on i.id = t.id
    

    子查询随机选择3个ids,然后外层查询带来所有相关行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-19
      • 2012-01-05
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 2016-03-03
      • 1970-01-01
      相关资源
      最近更新 更多