如何使用Hive中的表记录的10%创建视图?

问题描述

我想在配置单元表的顶部创建一个视图,但该视图应包含
仅占总记录的10%。 Count(*)/10

如何使用ROWNUM()RANK函数
如果数据是随机的,将非常有帮助。

解决方法

如果大约10%的样本足够好,则只需添加:

create view v_t
    select t.*
    from t
    where rand() < 0.1;

对于大桌子,这应该非常接近10%。

,

或者,您可以使用以下ntile窗口函数:

create view v_t
    select * from 
    (select *,ntile(10) over(order by rand()) as percentile from tablename) as A 
    where percentile=1

我已经在Postgres中测试了类似的查询。 Here is a demo