我有一个看起来像这样的表:
Name Age Num_Hobbies Num Shoes
Jane 31 10 2
Bob 23 3 4
Jane 60 2 200
Jane 31 100 6
Bob 10 8 7
etc etc
我想将此表按名称和年龄分组,并从其余各列中随机选择一行。
在熊猫中,我将执行以下操作:
df.groupby(['Name', 'Age']).apply(lambda x: x.sample(n=1))
在蜂巢中,我知道如何创建组,但不知道如何从组中选择一个随机样本。
我在堆栈溢出时看到了这个问题:How to sample for each group in hive?
但是,我不明白如何应用动态分区或Hive存储桶从组中选择单个样本。
答案 0 :(得分:0)
您可以将rank()
或row_number()
与rand()
一起使用
select * from
(
select name,age,rank() (partition by name,age order by rand()) as rank
from table
) t
where rank = 1