[BigQuery] ランダムにデータを2分割する方法(ABテスト)

スポンサーリンク
BigQuery

BigQueryでランダムにデータを2分割する方法を紹介します。活用シーンとしては、ABテストを実施する際に便利です。

今回、ランダムにデータを2分割しますが、再現性を保つようにします。つまり、「ある時にSQLを実行したらグループAに分類。後日SQLを実行してもグループAに分類。」となるようにします。

サンプルSQL

テーブル「tb_user」に、一意のID「user_id」のカラムを持つ場合、以下のように書けます。

-- ABテスト用に、ランダムにデータを2分割するクエリ。
-- 全データが「group_no=0」と「group_no=1」に分かれる。
SELECT
  *,
  MOD(ABS(FARM_FINGERPRINT(user_id)), 2) as group_no
FROM tb_user

FARM_FINGERPRINT でハッシュを計算
ABS ハッシュが負の数になる可能性があるため正の数に変換
MOD で余りを算出する

(参考)
https://cloud.google.com/bigquery/docs/reference/standard-sql/hash_functions

以上、『ランダムにデータを2分割する方法(ABテスト)』でした。

コメント

タイトルとURLをコピーしました