2017-02-08 32 views
1

我正试图在BigQuery中找到最佳的抽样实践。我的数据集相当大(11B行),但分布趋于偏斜。到目前为止,我一直在探索这两个选项:RAND()如何在BigQuery中工作?

  1. HASHING - 在这里我取一定值的哈希来选择样本。这是非常简单的方法,背后的机制很明确。 我的问题是关于第二个选项:
  2. 使用RAND()函数。我明白如何通过查看这里的BigQuery参考来使用它: https://cloud.google.com/bigquery/docs/reference/legacy-sql#rand 但是,我不知道该函数的工作原理。

任何人都可以在背景中发现更多的光线吗?

非常感谢, Gallory

回答

3

我的答案将适用于BigQuery的Standard SQL。 RAND()函数在[0,1]范围内生成一个类型为FLOAT64的伪随机值,包括0和1在内。您将其用于采样的方式与使用FARM_FINGERPRINT函数的方式类似,但是您不需要指定任何现有的密钥。 RAND()提供均匀分布,所以如果某些列有偏斜,则样本中预期会出现相同的偏斜。取样示例表中数据的10%:

SELECT * FROM Table WHERE RAND() < 0.1