Athena で特定の期間内のランダムな日時をユーザーごとに生成するクエリは、AthenaがPrestoをベースにしていることを考慮して作成します。Presto SQLでは、random()
関数を使用して乱数を生成し、日付関数を組み合わせてランダムな日時を割り当てることができます。
例えば、2021年1月1日から2021年12月31日の間でランダムな日時を生成する場合、以下のようなクエリが使えます
SELECT user_id, DATE_ADD('2021-01-01', INTERVAL FLOOR(RAND() * (DATEDIFF('2021-12-31', '2021-01-01') + 1)) DAY) as random_date FROM your_table;
このクエリでは以下のことを行っています:
random()
関数で0から1までのランダムな値を生成します。date_diff('day', date('2021-01-01'), date('2021-12-31'))
で2021年1月1日から12月31日までの日数を計算します。- 生成されたランダムな値に上記の日数を乗算し、1を足して完全な日数範囲を得ます。
cast(... as integer)
で整数に変換します。date_add('day', ..., date('2021-01-01'))
で、2021年1月1日からランダムに生成された日数を加算し、ランダムな日時を得ます。
ここで your_table
は、ランダムな日時を割り当てたいユーザーのIDが含まれるテーブル名に置き換えてください。また、Athenaでは日付のフォーマットや関数の使用方法が他のSQLデータベースと異なる場合があるので、必要に応じてクエリを調整してください。
コメント