2017-02-08 31 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