如何将查询答案传递给limit函数impala

0mkxixxg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(387)

我试图在 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%

eaf3rand

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;

相关问题