本記事は ZOZO Advent Calendar 2023 シリーズ 7 の 15 日目の記事です。
結論
BigQuery で簡単に再現性のあるランダムサンプリングをしたい時は Legacy SQL を使う。
▼ 1% のデータをランダムサンプリングしたい時
#legacySQL
SELECT * FROM [bigquery-public-data.ml_datasets.penguins]
WHERE rand(42) < 0.01
▼ 20% のデータをランダムサンプリングしたい時
#legacySQL
SELECT * FROM [bigquery-public-data.ml_datasets.penguins]
WHERE rand(42) < 0.2
BigQuery では SQL の先頭で #legacySQL
を宣言すると Legacy SQL を使用できます。
デフォルトで使用される Standard SQL では rand 関数に seed 値を指定できません。
一方で Legacy SQL では rand 関数に seed 値を与えられるため、簡単に再現性のあるランダムサンプリングができます。
なお Standard SQL と記法が異なる点に注意してください。
⚠️ 公式の推奨は Standard SQL なので場合に応じて以下の方法などと使い分けてください。