【发布时间】:2021-09-09 15:47:47
【问题描述】:
我有一个如下所示的表格:
| user_id | target |
|---|---|
| 1278 | 1 |
| 9809 | 0 |
| 3345 | 0 |
| 9800 | 0 |
| 1298 | 1 |
| 1223 | 0 |
我的目标是执行欠采样,这意味着我想随机选择目标值为 0 的用户子集,同时保留目标值为 1 的所有用户。我已经尝试了以下代码,但是,由于 user_ids 都是唯一的,它不会随机删除目标为 0 的行。知道我需要做什么吗?
select *
from (select user_id, target, row_number() over (partition by user_id, target order by rand()) as seq
from dataset.mytable
) a
where target = 1 or seq = 1
【问题讨论】:
标签: sql google-bigquery sampling