[英]MS Access - select one random record for each unique value in a column
[英]Snowflake Add new column with unique random value for each record
我有一个数据集如下
Name Email date
john john@aol.com. 2020-09-01
kevin kevin@att.net. 2020-09-08
john. john@aol.com. 2020-09-08
该数据集将每周使用新数据和数据加载日期更新。
我需要添加另一列 Anonymous_id :这是每行的唯一值。 这应该是 len>=6 的随机字母数字列
原因是我们可能在不同的日期有相同的电子邮件和姓名。 所以我们想使用 Anonymous_id 列作为主键。
请记住,此表将每周加载一次数据。
Name Email Date Anonymous_id
John john@aol.com 2020-09-01. 123ax56
kevin. kevin@att.net. 2020-09-08. 245xd67
John. john@aol.com. 2020-09-08. 456yt23
有一个函数 RANDSTR( , ) 可以产生一个随机的 6 个字符串。 它不保证唯一性。 使用 UUID_STRING() 会给你更好的产生唯一值的机会。
将数字转换为字符串:
select lpad(row_number() over (order by random()), 6, '0')
这会生成一个数字,最多可处理 999,999 行。 它可以很容易地扩展到更多的行。
也就是说,我建议您为此目的只使用数字而不是字符串。
使用数字而不是字符串。 我只会使用row_number()
create table new_table as
select name, email, date, row_number() over (order by name, email, date) as anonymous_id
from old_table;
接下来,这还允许您查看每个名称的最新电子邮件地址,因为您可以在查询此 new_table 时简单地在 where 子句中添加anonymous_id=1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.