RAND()如何在BigQuery中运行?

Gal*_*nox 4 google-bigquery

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

  1. HASHING - 我在其中使用某个值的哈希来选择样本.这是非常简单的方法,其背后的机制很清楚.我的问题是关于第二种选择:
  2. 使用RAND()函数.我通过查看BigQuery参考来了解如何使用它:https: //cloud.google.com/bigquery/docs/reference/legacy-sql#rand 但是,我不知道这个功能究竟是如何工作的.

任何人都可以对那里发生的背景事情有所了解吗?

非常感谢,Gallory

Mos*_*sky 8

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

SELECT * FROM Table WHERE RAND() < 0.1
Run Code Online (Sandbox Code Playgroud)