功能
从BigQuery 中抽取小数据集进行验证时, 常用rand()
生成随机数, 再进行排序后选取数据:
原始思路
with rnk_user as (
select rand() as rnk, name, phone
from user
)
select name, phone
from rnk_user
order by rnk
limit 10000
改进版
利用where条件, 但是由于rand()
是随机数, 不能完全做到比例, 所以多选一部分(20%) 然后用LIMIT进行限定:
select name, phone
from user
where rand() < 12000/{lines of table}
limit 10000
最终版
select name, phone
from user
order by rand()
limit 10000