数据校验

工具介绍

数据校验是一个数据验证工具,用户可以根据自己数据同步的情况,选择对应的方式进行校验同步数据的正确性。该工具支持:行级、hash、高级三种校验方式。行级是校验源和目标数据的行数在数据同步设置的条件下是否相等。hash是校验源同步到目标的数据每个字段是否都完全相同。高级校验,用户可以自己通过编写JS设置校验条件。

操作介绍

行级校验

在任务运行界面,点击数据校验按钮,进入数据校验界面。点击+按钮来进入校验设置界面,选择行级校验。选择要进行校验的源表和目标表,跟进情况输入SQL 或者MQL。

行级校验只支持count,因为是用来统计行数的。所以写SQL的时候要注意!!!

设置好校验的设置项后,执行校验!执行校验的过程中会显示校验的当期进度,方便用户指定校验的进展情况。校验结束后会进入校验结果页面!若在执行校验的过程中存在问题,会显示在校验结果页面的下发错误对比栏中。

如果在源和目标表下面输入了SQL,会在对应的位置显示一个绿点。如果需要重新设置或者核对设置校验内容,可以点击编辑按钮。

hash校验

在校验设置页面选择校验方式为hash校验。hash校验会把源表和目标表中所有的记录的每个字段都进行比对。这个校验只适用于同类型的数据之间进行数据同步时使用!如果不同类型的数据库之间使用,有可能会报错,因为hash要求很严格。

hash校验可以选择采样范围,是百分比,还是行数。如果选择按行数校验,是随机从源表同步到目标表中的数据随机抽取指定行数的数据进行hash校验。如果选择百分比,是按照比例随机从源表同步到目标表中的数据随机抽取指定行数的数据进行hash校验。

hash的sql只能查询某些字段和所有字段。其他都不支持!

高级校验

高级校验是根据用户自己输入的规则来对数据进行校验。用户可以通过输入JS脚本来设置规则,在执行时,程序会调用用户输入的JS来对源表到目标表的数据进行校验。

高级校验的采样方式也有两种:行数和百分比。如果选择行数就会随机抽取从源表同步到目标表的数据指定行数的数据,然后按照用户的JS脚本进行校验。如果是百分比,就会按照同步数据量*百分比来计算出要校验的数据行数,然后随机抽取行数的数据按照JS脚本进行校验。

js脚本要求:高级校验的JS必须包含如下内容:

  • result: 固定值:passed 或 failed

  • message:错误信息

  • data:目标表数据

示例脚本:

function validate(sourceRow){
var targetRow = sourceRow;
var result = "";
var message = "";
if(JSON.stringify(sourceRow) === JSON.stringify(targetRow)){
result = "passed";
message = "成功";
}
else {
result = "failed";
message = "记录不一致";
}
return {
result: result,
message: message,
data: targetRow
};
}

说明:三种校验方式运行同时使用,校验结果会以列表的形式展示!