2017-02-08 15 views
1

BigQueryで最高のサンプリング方法を見つけようとしています。私のデータセットはかなり大きく(11B行)、分布は歪んでいる傾向があります。これまで私はこれらの2つのオプションを調べてきました。BigQueryでRAND()はどのように動作しますか?

  1. ハッシュ - ここではサンプルを選択するために特定の値のハッシュを取っています。これはかなり簡単なアプローチであり、その背後にある仕組みははっきりしています。 私の質問は2番目のオプションについてです:
  2. RAND()関数を使用しています。私はここでBigQueryのリファレンスを見て、それを使う方法を理解しています: https://cloud.google.com/bigquery/docs/reference/legacy-sql#rand しかし、私はこの機能がどのくらい正確に機能しているのか分かりません。

誰もがそこで起こっている背景のものにいくつかの光を当てることができますか?

どうもありがとう、 Gallory

答えて

3

は、私の答えは、BigQueryのStandard SQLに適用されます。 RAND()関数は、FLOAT64型の擬似乱数値を生成します。範囲は[0,1](0を含まず、1を含まない)です。サンプリングに使用する方法は、FARM_FINGERPRINT関数を使用する方法と似ていますが、既存のキーを指定する必要はありません。 RAND()は一様な分布を提供するので、ある列にスキューがある場合、そのサンプルでは同じスキューが予想されます。テーブル内のデータの10%をサンプリングする例:

SELECT * FROM Table WHERE RAND() < 0.1 
関連する問題