当前位置: 首页 > news >正文

kettle开发-Day43-数据对比

前言:

        随着数字化的深入,各种系统及烟囱的建立,各系统之间的架构和数据存储方式不同,导致做数据仓库或数据湖时发现,因自建的系统或者非标准化的系统经常存在物理删除而不是软删除。这就延伸出一个问题,经常导致数仓里面的数据多余目标库的。导致做数据分析或者消息推送时,出现了很多“垃圾数据”。那我们怎么有效的去识别数仓和目标库的数据情况呢,今天我们介绍用kettle来标记不同库之间的数据对比。

一、数据对比

      ①出发点:

  1. 数据准确性验证

    • 数仓中的数据通常来源于多个源库,通过数据对比可以验证数仓中的数据是否准确反映了源库中的原始数据,从而确保数据分析和决策的准确性。
  2. 数据完整性检查

    • 数据对比有助于发现数仓中是否存在数据缺失或异常,确保数据的完整性。这对于数据分析和挖掘至关重要,因为不完整的数据可能导致错误的结论。
  3. 数据一致性维护

    • 在不同的业务系统或数据源之间,数据可能存在差异。通过数据对比,可以发现并解决这些差异,确保数仓中的数据在不同场景下保持一致。
  4. 数据质量提升

    • 数据对比是数据质量管理的重要环节。通过对比,可以发现数据质量问题(如错误、重复、缺失等),并采取相应的措施进行修正和改进。

       ② 常用方法 

  1. 行数对比

    • 对比源库和数仓中相同表的行数,以检查是否存在数据丢失或重复。这可以通过SQL语句中的SELECT COUNT函数来实现。
  2. 内容对比

    • 对比源库和数仓中相同表的数据内容,确保数据的准确性和一致性。这可以通过逐行比对数据或使用特定的数据对比工具来完成。
  3. 维度交叉对比

    • 在多维度的数据场景下,可以通过交叉对比不同维度下的数据汇总结果,以检查数据的一致性和准确性。例如,对比不同时间段、不同区域或不同产品线的数据汇总结果。
  4. 实时对比与离线对比

    • 根据业务需求,可以选择实时对比或离线对比。实时对比适用于对数据实时性要求较高的场景,而离线对比则适用于对数据实时性要求不高的场景。在实时对比中,可以使用数据流处理技术来实时同步和对比数据;在离线对比中,则可以使用批处理技术来定期同步和对比数据。
  5. DQC校验

    • DQC(Data Quality Check)校验是一种常用的数据质量检查方法。通过预设的检查规则和算法,对数据进行唯一性验证、最大/最小值验证等,以确保数据的准确性和合规性。

二、实际案例

        本次我们以OA系统中,我们常见的我们发起的流程,还没走完,然后被退回或者异常终止,然后被发起人删除的场景,刚开始我以为只是状态的改变,后面经过仔细分析,确实OA系统存在物理删除的操作,这导致我们进行OA流程分析的时候,推送提醒了很多异常的数据。比如这样,这样。

        因为频繁的出现,导致我不得不找OA负责人去分析原因,通过在OA系统里面查询对比,真的是被物理删除了,因此想到的解决方案就是通过新旧数据对比来标记数仓里面被删除的OA流程,然后进行过滤,来保证数据的一致性。

三、实现思路

         为了对比对应的数据,因此我们需要去定义比较数据的范围时,对比的主键(指标)。在本次数据对比中,我们通过对比近3个月的数据及通过ID作为主键进行对比,具体作业如下图所示。

        如上图所示,我们更新数据源近90天数据,作为新数据,用存储在数仓里面的对应的表做旧数据。然后通过主键进行对比就能发现新旧数据的修改情况。

         这里需要注意的是旧数据的比较范围要相对小点,即新数据更新的是近90天的数据,旧数据应该是89天的,这样就能有效避免误判的情况。

        然后我们通过主键排序和合并记录的功能,将数据对比的结果输出到一个对比结果表里面,然后我们再通过一个更新程序去更新对应目标表的数据即可。具体更新程序如下图所示。

 


http://www.mrgr.cn/news/69005.html

相关文章:

  • Qt---双缓冲绘图
  • PyAEDT:Ansys Electronics Desktop API 简介
  • 我与Linux的爱恋:进程间通信 匿名管道
  • 基于机器学习电信号EMG训练分类模型控制仿生手控制系统(Matlab-Simulink实现)
  • 【设计模式-迪米特法则】
  • Redis知识点整理 - 脑图
  • java day04-面向对象基础02
  • 基于java宠物医院管理系统的设计与实现
  • bat调用Perl脚本接收不到参数
  • 让SQL更优雅!深入浅出【公用表表达式(CTE)】语法及实战案例
  • ONLYOFFICE 8.2 版:助力自动化办公的佼佼者
  • Python代码主要实现了一个基于Transformer和LSTM的混合模型,用于对给定数据集进行二分类任务
  • 冬季游泳比赛的最佳选择:气膜游泳馆—轻空间
  • 云原生安全解决方案NeuVector 5.X部署实践
  • 接外包开发究竟要掌握哪些技能?
  • IDEA代码没问题但是编译的时候报错
  • AI大模型如何重塑软件开发流程
  • Unet++改进6:添加CoordAtt注意力机制
  • 前端开发的未来:2024 年您应该关注的 6 大趋势
  • 【已解决】Windows11 24H2 无法访问无密码SMB共享怎么办;
  • 设置允许多用户远程登录 Windows 云服务器
  • 研发LLM模型,如何用数值表示人类自然语言?
  • Python常用脚本集锦
  • 【项目开发】如何理解软件架构中“弹性”一词
  • 如何构建多平台nuget包
  • 操作系统复习指南:知识点整理与习题解析