RAND()如何在BigQuery中运行?

时间:2017-02-08 14:35:07

标签: google-bigquery

我正在尝试在BigQuery中找到最佳的采样实践。我的数据集很大(11B行),但分布往往是倾斜的。到目前为止,我一直在探索这两个选项:

  1. HASHING - 我在其中取一定值的哈希值来选择样本。这是非常简单的方法,其背后的机制很清楚。 我的问题是关于第二种选择:
  2. 使用RAND()函数。通过查看BigQuery引用,我了解如何使用它: https://cloud.google.com/bigquery/docs/reference/legacy-sql#rand 但是,我不知道这个功能究竟是如何工作的。
  3. 任何人都可以更多地了解那里正在发生的背景吗?

    非常感谢, Gallory

1 个答案:

答案 0 :(得分:6)

我的回答将适用于BigQuery Standard SQL。 RAND()函数生成FLOAT64类型的伪随机值,范围为[0,1),包括0和1的排除。使用它进行采样的方式类似于使用FARM_FINGERPRINT函数的方式,但是您不需要指定任何现有密钥。 RAND()提供均匀分布,因此如果某些列具有偏斜,则样本中预计会出现相同的偏斜。对表中10%的数据进行采样的示例:

SELECT * FROM Table WHERE RAND() < 0.1