【问题标题】:What is the most efficient way to randomly sample with replacement in BigQuery?在 BigQuery 中随机抽样替换的最有效方法是什么?
【发布时间】:2020-06-10 20:29:44
【问题描述】:

question 的答案解释了如何从 BigQuery 表中随机抽样。有没有一种有效的方法替换

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

【问题讨论】:

  • 请解释一下“100K 独立随机样本”是什么意思。每个样本有多大?您希望数据是什么样的?样本在结果集中如何表示?
  • 是的,请添加一些颜色说明您为什么要这样做

标签: sql google-bigquery


【解决方案1】:

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

  • 索引表的行
  • 生成一个包含 10 万个介于 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

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2012-04-20
    相关资源
    最近更新 更多