在Big Query中从每个组中获取随机样本

时间:2016-03-15 18:52:22

标签: google-bigquery random-sample

我正在尝试找出在Big Query中为每个组中的每个组随机抽取100条记录的最佳方法。

例如,我有一个表,其中列A是唯一的recordID,列B是记录所属的groupID。对于每个不同的groupID,我想采用100个记录ID的随机样本。有没有简单的方法来完成这个?

2 个答案:

答案 0 :(得分:3)

下面的内容应该有效

ListAllBuckets

如果你想提高随机性,还要检查RAND()here

答案 1 :(得分:0)

有类似的需求,即群集抽样,超过400M和更多列,但在使用Exceeded resources...时遇到ROW_NUMBER()错误。

如果您不需要RAND(),因为您的数据无论如何都是无序的,这表现得非常好(在我的情况下<30秒):

SELECT ARRAY_AGG(x LIMIT 100) 
FROM yourtable x 
GROUP BY groupId

你可以:

  • 如果前端无法呈现嵌套记录,则使用UNNEST()进行装饰
  • 添加ORDER BY groupId以更快地查找/确认模式