存在数据重叠时如何合并数据集并防止历史数据丢失?
数据集合并与长期数据留存方案
一、合并两个数据集并去重(优先实时数据源)
方法1:Python Pandas 实现
- 读取数据源:
- 导入Excel历史数据:
df_excel = pd.read_excel("历史数据截至4月.xlsx") - 导入数据库实时数据:
df_db = pd.read_sql("SELECT * FROM 实时数据表", 数据库连接对象)
- 导入Excel历史数据:
- 标记数据源类型:给两个数据集添加标识列,用于后续优先级判断
df_excel["数据源标记"] = "历史Excel"df_db["数据源标记"] = "实时数据库"
- 合并数据集:
df_combined = pd.concat([df_excel, df_db]) - 去重并保留实时数据:按数据唯一主键(如
ID、日期+业务编号)排序,将实时数据放在前面,再去重保留第一条df_final = df_combined.sort_values("数据源标记", ascending=False).drop_duplicates(subset=["主键列名"], keep="first")
- 清理标识列:
df_final = df_final.drop("数据源标记", axis=1)
方法2:Excel Power Query 实现
- 导入两个数据源:分别将Excel文件、数据库数据导入Power Query编辑器
- 添加优先级标记:给历史数据加自定义列填
0,实时数据加自定义列填1(数字排序方便优先选择) - 合并两个查询:将两个表合并为一个完整数据集
- 去重处理:先按优先级标记降序排序,再删除重复的主键行,确保实时数据被保留
- 加载结果:将处理后的数据集加载回Excel
二、解决14个月后五月数据丢失的问题
核心是建立独立的全量归档机制,脱离滚动数据库和静态Excel的依赖:
- 每次完成数据合并后,将最终的完整数据集保存到专属归档存储:
- 用数据库的话,新建一个
全量历史归档表,仅允许插入和查询操作,禁止删除历史数据; - 用文件存储的话,维护一个持续更新的全量归档Excel,同时定期生成带日期后缀的备份文件(如
全量历史数据_202405.xlsx),并存入云盘或本地备份目录。
- 用数据库的话,新建一个
- 每月定期更新归档:将当月新增的实时数据增量追加到归档中,或直接用最新合并的全量数据覆盖归档,确保归档始终包含所有历史数据。
- 后续查询旧数据时,直接从归档存储提取,不再依赖滚动的实时数据库或旧版Excel文件。
内容的提问来源于stack exchange,提问作者user12804
相关产品推荐
相关产品推荐

