如何在 hive 中创建包含 10% 记录的视图?

mwg9r5ms  于 2021-04-08  发布在  Hive
关注(0)|答案(2)|浏览(540)

我想在我的hive表的顶部创建一个视图,但该视图应该包含以下内容
只占总记录的10%。 Count(*)/10
我怎么能用 "ROWNUM() "或 "RANK "函数来做。
如果数据是随机的,那将是非常有帮助的。

aor9mmx1

aor9mmx11#

如果大约10%的样本已经足够好了,只需包括。

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

对于一张大table来说,这应该是相当接近于精确的10%。

bpzcxfmw

bpzcxfmw2#

或者你也可以使用下面的ntile窗口功能。

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

我已经在postgres中测试了一个类似的查询。

相关问题