我试图在 Impala 的一张table上取样20%。我在某处听说内置的impala采样函数有问题。有没有方法将子查询传递给impala limit函数以对整个表的n%进行采样。我有这样的想法:
select * from table_a order by rand() limit ( select round( (count(distinct ids)) *.2,0) from table_a) )
子查询提供了所有记录的20%
eaf3rand1#
我不确定impala是否有特定的采样逻辑(有些数据库有)。但您可以使用窗口函数:
select a.* from (select a.*, row_number() over (order by rand()) as seqnum, count(*) over () as cnt from table_a ) a where seqnum <= cnt * 0.2;
1条答案
按热度按时间eaf3rand1#
我不确定impala是否有特定的采样逻辑(有些数据库有)。但您可以使用窗口函数: