数据比对功能可对两个表进行逐字段级别的比对,一般用于当重要表的加工逻辑调整后或者模型重构后,为了确保加工出来的新数据和原有数据的一致性,需要和原有数据进行比对。 目前支持hive表之间比对,以及MySQL、Oracle、SQLServer、Greenplum、StarRocks、Doris数据源与hive数据比对。也支持同数据源下StarRocks表和Diors表之间比对。

  • 如果是加工逻辑调整,比对结果一致或者差异可解释并能接受,则认为新的逻辑可以提交上线。
  • 如果是模型重构,比对结果反应新的模型数据正确,则可安排老模型下线、迁移。
说明:目前所有项目成员都可以访问数据比对,但是仅能比对自己有读权限的表,并且不能操作其他人的数据比对任务。

数据比对任务创建

在数据比对页面的左上角提供了任务创建的入口,点击新建任务按钮进入创建页面。在任务创建过程中用户需要完成比对对象和规则的配置。
数据比对 - 图1

设置比对对象

在设置比对表模块中,需要选择比对对象。目前支持两种比对模式:

  1. 表模式:比对的对象为两张已持久化到数据库的表。
  2. SQL模式:比对的对象为两段 SQL 产出的虚拟数据集,该数据尚未持久化到表。

选择表模式时,需要完成源表比对表以及任务名称的配置;
选择SQL模式时,需要选择数据源,并完成SQL别名SQL语句的配置,需注意,SQL必须通过校验才可以进入第二步。
数据比对 - 图2

当配置完源表和比对表后,任务名称会自动生成,格式为“年月日_比对+源表名+和+比对表名”,当比对模式为SQL模式时,则任务名称中的库表名称会对应自动填充SQL别名。支持自定义修改。
数据比对 - 图3

设置比对规则

进入设置规则页面,需要对比对对象和任务参数进行配置,具体参数和描述见下方表格。

数据比对 - 图4

参数项 描述
比对方式 包括全量比对抽样比对,当选择抽样比对时,可设置抽样数,默认为10%
关联模式 包括主键关联MD5关联
1、主键关联表示通过设置源表的主键和比对表进行关联,对源表的每条记录和比对表的记录,逐个字段进行比对。支持联合主键的关联比对。对于设置为源表主键的字段,在字段映射中为必选项且不可编辑;
2、 MD5关联是指将源表和比对表的每条记录,分别串在一起并计算MD5码,通过MD5码进行关联比较。采用MD5比对可能会花费更多的资源和计算时间,一般适用于没有主键的表的比对;
源表主键 指字段差值的绝对值小于等于阈值时视为相等。比如阈值为0.0000001时,一个是1.0000001,另一个是1.0,则认为两者相同。
字段映射 除了主键为必选项外,其它字段均可选择是否要进行比对。支持源表字段和比对表字段自动匹配,也支持手动修改。支持忽略项设置。

在设置字段映射的列表中,自动选择比对表中同名的字段,支持对比对进行忽略项设置,参数说明如下:

忽略项 描述
忽略0、空值、空串间差异 对于NULL、''、0、0.0、'0'或'0.0',认为都相同
忽略字段类型 比如字符串'100'和数字100,认为相同
忽略精度差异 指字段差值的绝对值小于等于阈值时视为相等。比如阈值为0.0000001时,一个是1.0000001,另一个是1.0,则认为两者相同。
说明:目前暂不支持struct、map、array类型的字段比对。

配置完上述内容后,可单击保存并运行按钮进行任务运行,也可以单击保存暂不运行任务,之后可在形态探查页面的列表中,单击运行按钮进行任务运行。

此外在任务参数中还要设置结果储存位置,当比对源表是hive时,设置规则具体如下:

1、支持选择测试库/非测试库,再选择具体的库;

2、如果当前项目开通了测试功能,且比对的两个表中含有测试库的表,则结果存储位置能选择测试库或非测试库,默认选中测试库。库下拉展示测试/非测试下所有当前用户有建表权限的库;

3、如果比对的两个表都为非测试库的表,则结果存储位置默认选择非测试库。库下拉展示测试/非测试下当前用户有建表权限的库。

当比对源表是非hive时,存储位置直接选择源表数据源下的数据库即可。

任务实例详情

任务运行后,最新的实例信息会呈现在列表中,并可以通过单击具体的任务ID,快速查看任务配置信息。
在任务列表中,单击实例列表会进入实例列表页面,在该页面中会展示当前任务生成的历史实例,对状态为已完成的实例可单击运行结果日志按钮查看比对结果以及任务运行日志。

在实例详情页中,比对结果展示的内容会根据选择的关联模式不同而稍有不同。

  • 主键关联的比对结果将包括:比对表信息、任务参数信息、表级别比对结果以及字段比对结果。
  • MD5关联的比对结果将包括:比对表信息、任务参数信息、比对规则信息以及表级别比对结果。

其中,比对表信息以及任务参数信息会显示任务配置时的信息。

主键关联模式实例详情

  • 表级别比对结果:
    数据比对 - 图5

  • 字段比对结果:
    数据比对 - 图6

  • 主键仅在本表记录数:
    数据比对 - 图7

    说明:当出现不一致的内容时,可单击表格中数字查看详情,且支持记录下载。
  • 字段内容不一致:
    数据比对 - 图8

    说明:当出现不一致的内容时,可单击表格中数字查看详情,且支持记录下载。
  • 主键不唯一情况:当源表主键不唯一时,无法进行数据比对。
    数据比对 - 图9

  • 参数说明:

    参数项 描述
    整体不一致率 计算公式=(1-主键相同字段内容一致的数量/记录数)*100%。
    对于抽样比对,比对表无法计算。
    库表名称 源表和比对表表名称。
    记录数 基于设置的分区和非分区过滤计算得到的记录数。
    主键仅在本表记录数 1. 对于全量比对,源表和比对表会按照主键进行全关联,源表和比对表都会存在“主键仅在本表记录数”;
    2. 对于抽样比对,源表和比对表会按照主键进行左关联,仅源表会有“主键仅在本表记录数”。
    主键相同 字段内容一致、字段内容不一致、不一致率三块结果统计。

MD5关联模式实例详情

  • 比对规则信息:
    数据比对 - 图10

  • 表级别比对结果:
    数据比对 - 图11

  • 仅在本表记录:
    数据比对 - 图12

    说明:当出现不一致的内容时,可单击表格中数字查看详情,且支持记录下载。
  • 参数说明:

    参数项 描述
    整体不一致率 计算公式=(1-主键相同字段内容一致的数量/记录数)*100%。
    对于抽样比对,比对表无法计算。
    库表名称 源表和比对表表名称。
    记录数 基于设置的分区和非分区过滤计算得到的记录数。
    仅在本表记录数 表示MD5值仅在本表的记录数,对于抽样比对,比对表不会有数据。
    MD5一致记录数 表示源表抽样的记录中,MD5值能在比对表找到的记录数。