sql - 在 BigQuery 中随机抽样替换的最有效方法是什么?

标签 sql google-bigquery

question 的答案解释了如何从 BigQuery 表中随机抽样。有没有一种有效的方法可以通过替换来做到这一点?

举个例子,假设我有一个包含 1M 行的表,我希望选择 100K 个独立随机采样的行。

最佳答案

找到了一个巧妙的解决方案:

  • 索引表的行
  • 生成一个包含 100K 个介于 1 到 1M 之间的随机整数的虚拟表
  • 在索引 = 随机值上内联表

代码:

# randomly sample 100K rows from `table` with replacement
with large_table as (select *, row_number() over() as rk from `table`),
num_elements as (select count(1) as n from large_table),
dummy_table as (select 1 + cast(rand() * (select n - 1 from num_elements) as int64) as i from unnest(generate_array(1, 100000)))
select * from dummy_table
inner join large_table on dummy_table.i = large_table.rk

关于sql - 在 BigQuery 中随机抽样替换的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422858/

相关文章:

sql - 在自连接字段上执行递归 SQL 查询的最佳方法是什么(以及通过 nhibernate 执行此操作?)

sql - 使用嵌套查询加速 SQL 查询

google-cloud-platform - 部署云功能时谷歌Bigquery导入错误

mysql - 处理 php 和 sql 中的新行

SQL - 选择 sum(A) <= X 和 sum(B) 最大的 ID 子集

mysql - 对结果集执行 Post SQL 查询?

google-bigquery - 是否可以在 Data Studio 计算中使用 BigQuery 重复字段?

google-bigquery - 大查询 : How can I change the type of one of my column from INTEGER to STRING?

google-bigquery - 如何在 BigQuery 中执行 Pandas 列转换?

google-bigquery - 如何使用 Airflow 的 BigQuery 运算符引用外部 SQL 文件?