数据集清洗需求:重复PersonID剔除Unknown行,唯一ID的Unknown行保留
数据集处理方案
需求说明
- 当同一
PersonID对应多条记录且包含Unknown值时,剔除该PersonID对应的所有Unknown记录 - 若某
PersonID仅对应一条记录且值为Unknown,则保留该行
示例数据集
| Name | PersonID | PCPGrouper |
|---|---|---|
| ABBAN, AVRIL | 1094893 | Unknown |
| ABBIS,CHLOE | 1114294 | T Docs |
| ABBIS,CHLOE | 1114294 | Unknown |
处理后预期结果
| Name | PersonID | PCPGrouper |
|---|---|---|
| ABBAN, AVRIL | 1094893 | Unknown |
| ABBIS,CHLOE | 1114294 | T Docs |
实现代码(SQL示例)
用窗口函数统计每个PersonID的记录数,再按规则筛选:
WITH person_counts AS ( SELECT *, COUNT(*) OVER (PARTITION BY PersonID) AS id_count FROM your_table_name ) SELECT Name, PersonID, PCPGrouper FROM person_counts WHERE (id_count = 1 AND PCPGrouper = 'Unknown') OR (id_count > 1 AND PCPGrouper != 'Unknown');
逻辑说明
- 先通过窗口函数计算每个
PersonID的总记录数 - 筛选条件分两种情况:
- 单条记录且为
Unknown的行直接保留 - 多条记录的
PersonID只保留非Unknown的行
- 单条记录且为
内容的提问来源于stack exchange,提问作者ginkoba
相关产品推荐
相关产品推荐

