Hive:随机选择不同大小的样本分组

9fkzdhlc  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(416)

是否有可能随机选择不同大小的样本,从一组一组的Hive?例如,我有一张这样的table

|-----------------|----------------|
|     ID          |     Value      |
|-----------------|----------------|
|    IKJ12        |    5           |
|-----------------|----------------|
|    IKJ12        |    9           |
|-----------------|----------------|
|    IKJ12        |    10          |
|-----------------|----------------|
|    IKJ09        |    7           |
|-----------------|----------------|
|    IKJ09        |    14          |
|-----------------|----------------|

我想从中随机抽取两个样品 ID = IKJ12 一个样本来自 ID = IKJ09 . 一种可能是这样的。

|-----------------|----------------|
|     ID          |     Value      |
|-----------------|----------------|
|    IKJ12        |    5           |
|-----------------|----------------|
|    IKJ12        |    10          |
|-----------------|----------------|
|    IKJ09        |    14          |
|-----------------|----------------|
uidvcgyl

uidvcgyl1#

你能试试这个吗?我没有找到测试出来,但我想你会从这个想法。
行号用于为分区中的每个id提供唯一的rownum。
sum用于获取一个分区中有多少个元素。

select id,value
from 
(select id,value,
row_number() over(partition by id order by id) rn
sum(1) over(partition by id order by id) cnt
from table 
)
where rs.rn<= floor(rand*100)%cnt+1

相关问题