如何在持续数据批处理中实现稳定10%随机采样?
需求:低成本实现数据流的10%随机采样
我们有持续向数据湖写入的数据流,需要低运行成本的方案,获取数据的10%随机样本。
当前遇到的问题
目前使用以下代码片段进行采样,但随着新批次数据到来,总采样率会超出10%:
select id, (uniform(0::float, 1::float, random(1)) < .10)::boolean as sampling from temp_hh_mstr;
曾尝试按每批次100条记录、以0.1为采样率处理10个批次,最终总采样率约为32%,不符合预期。
已尝试思路的痛点
考虑过通过Snowflake的TABLESAMPLE,结合总记录数与已采样ID计算采样,但每次新批次到来都需要重新计算,会增加运行成本。
参考方向
- 连续性修正的威尔逊得分区间
- 二项式置信区间
内容的提问来源于stack exchange,提问作者Vaibhav
相关产品推荐
相关产品推荐

