如何将查询答案传递到极限函数Impala中

时间:2018-07-30 18:48:32

标签: sql hadoop impala

我正在尝试在黑斑羚中抽样20%的桌子。我在某处听说内置的impala采样功能存在问题。

是否可以将子查询传递给impala限制函数以对整个表的n%进行采样。

我有这样的东西:

select 
* from
table_a
order by rand()
limit
(
select 
round( (count(distinct ids)) *.2,0)
from table_a) 
)

子查询为我提供了所有记录的20%

1 个答案:

答案 0 :(得分:1)

我不确定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;