在数据发生变动的时候,如更改数据 Schema、变更数据源等,需要对变更前后的数据进行对比,通过量化评估两份数据的差异,来避免变更导致的数据变化影响数据下游正常使用的情况发生。
通过数据对比功能,对新旧数据表到字段级进行差异量化对比,精确衡量数据变动的影响,为数据责任人提供参考依据。
产品提供了以下两种模式进行对比。
- 表:对比的对象为两张已持久化到 Hive 的 A 表和 B 表。
- SQL:对比的对象为两段 SQL 产出的虚拟数据集,该数据尚未持久化到 Hive 表。
相比表对比,SQL 对比具有以下优势:
- 如果需要对比多个日期分区,可以在 SQL 中直接查询出某一段日期分区下的数据进行对比,而 Hive 表对比仅可选择一个固定分区。
- 对比的数据在原 Hive 表基础上,需要进行一些过滤、聚合、Join 等,更适合用 SQL 对比。
- 有些需要更改表结构的数据变动(如增加字段、更改字段类型等),由于可以先对比数据结果,再进行变更,用 SQL 对比更方便。
1 前提条件
EMR 引擎上传 Spark Jar 包后才能正常使用。若没有上传,当选择相应 EMR 引擎时,系统会弹窗提示您上传,详细操作说明请参见配置Hive模板规则。
说明
- 具备 EMR 引擎的根目录读写权限的账号才能执行上传操作,主账号默认具备该权限。
- 在数据监控、数据探查或数据对比页面选择 EMR 引擎实例后,系统都会进行 Spark Jar 的扫描,可通过任一入口进行上传,上传成功一次即可。
2 新建对比
新建数据对比的步骤如下:
- 登录 DataLeap 控制台。
- 选择数据质量 > 数据对比,进入数据对比页面。
- 单击新建对比按钮,进入新建对比页面。
- 设置对比信息。
- 选择对比模式,并设置相关参数。
- 选择校验的内容。
- 指定两份数据对比的唯一键。
注意
若唯一键重复,可能导致校验报告数据不可信,请提前检验主键唯一性的数据质量。
- 选择要校验的字段,并对其设置 Diff 逻辑。
说明
该设置仅对两份数据中,唯一键匹配上的数据进行计算。如果匹配上的数量为0,则不会进行计算,报告中也不会展示 Diff 明细。
- 根据需要,可设置运行参数。
- 单击提交按钮,完成新建对比。
创建数据对比的相关参数说明如下表所示。其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。
参数 | 说明 |
---|
*选择对比模式 | 提供表和SQL两种对比模式选项。 - 表:对比的对象为两张已持久化到 Hive 的 A 表和 B 表。
- SQL:对比的对象为两段 SQL 产出的虚拟数据集,该数据尚未持久化到 Hive 表。
|
*引擎 | 要使用的引擎实例,提供 EMR、LAS 和 EMR_SERVERLESS_SPARK 三种引擎选项。 - 当选择 EMR 时,可从下拉列表中选择一个实例。
- 当选择 LAS 时,实例默认为 default。
- 当选择 EMR_SERVERLESS_SPARK 时,实例选项默认为 default。
说明 EMR支持快捷模式和安全模式两类集群,集群访问模式的相关配置说明请参见绑定 EMR 集群。 - 快捷模式:选择数据表时不会进行鉴权,可选择集群下所有数据表进行对比。
- 安全模式:选择数据表时会进行数据鉴权,若无该表的读取权限,则无法创建相应的对比。
|
表模式 |
*库名 | 所选引擎下要对比的数据库名称,下拉可选已创建的数据库。 |
*表名 | 所选数据库下要对比的数据表名称,下拉可选已创建的数据表。 |
表负责人 | 数据表的负责人,选择表名后自动显示。 |
*分区信息 | 数据表的分区字段,选择表名后自动显示,可按需编辑。
分区取值无需填写引号。例如,可填写date=20201016/hour=10/app=数据质量,无需填写date='20201016'/hour='10'/app='数据质量'。 说明 - 当数据表为分区表时,选择表名后才显示该参数。
- 当存在多个分区时,需至少选中一个分区名称,且对应分区表达式不能为空。
|
其他过滤条件 | 根据需要增加过滤条件。
支持输入语法逻辑与 SQL 一致的条件语句,如 dau>1000 and type in (a,b),无需输入where。 |
*唯一键 | 用于两表匹配,表对比默认从数据地图上获取唯一键信息,可以更改。 |
*字段 | 两表对应的校验字段,自动填充,B 表可编辑。 |
*Diff逻辑 | Diff 逻辑支持以下两种计算方式,设置时需至少选择一种。 - 等值匹配:新旧两字段中不相等的取值行数,占旧表总行数的百分比,越小意味着 Diff 越小。计算方式:count(A!=B)/count(A)
- 差值绝对值:新旧两字段数值差值的绝对值求和,占旧表字段求和的百分比,越小意味着 Diff 越小。计算方式:SUM(|A-B|)/SUM(A)
|
是否查询Diff明细 | 可选择是否查询 Diff 明细。
勾选后,若该字段出现 Diff,系统会提供 Diff 数据明细。 |
SQL模式 |
SQL 别名 | 自行设置的两表的 SQL 别名,便于后续快速理解对比报告。 |
*SQL 语句 | 使用SQL语句对比两个表的数据,按需手动输入。 |
*对比字段 | 解析输入的 SQL 语句后,自动填充,可按需编辑。
相关参数说明,可参见“表模式”。 |
运行设置 |
*执行方式 | 数据对比采取的执行方式,支持立即执行、定时调度和关联任务三种方式。 - 立即执行:提交后立刻执行,仅执行一次。
- 定时调度:根据设定的执行时间,定期重复执行。
- 关联任务:按照关联任务的调度时间执行。
|
*执行频率 | 数据对比的执行频率,仅支持天级。
当执行方式选择定时调度时,需设置该参数。 |
*执行时间 | 数据对比的执行时间,仅支持北京时间 每天的某个时间点,可自行设定。
当执行方式选择定时调度时,需设置该参数。 |
*任务名称 | 要关联任务的名称,可通过任务名称关键词或ID进行搜索选择。
当执行方式选择关联任务时,需设置该参数。 |
运行参数 | SQL 语句前的运行参数,如“set 参数名 1=取值;”,按需配置。 |
报警配置(可选择是否开启报警配置,开启后则需配置以下参数。) |
*报警条件 | 可通过新增SQL字段按钮增加报警项,每项包括字段名称和报警条件两部分内容。 - 字段名称:下拉可选进行数据对比的数据表中的字段。
- 报警条件:每个字段的报警条件支持等值匹配行数和等值不匹配行数两个选项,可设置多个,多个报警条件之间的关系默认为且,可改为或。
|
*报警渠道 | 仅支持邮箱+站内信的告警方式。 |
*报警对象 | 接收报警信息的用户或值班计划接收人。 - 用户:输入用户账号关键词后,在下拉列表中选择,支持设置多个。
- 值班计划:输入值班计划名称的关键词后,在下拉列表中选择。设置后,报警消息将发送至值班计划中的接收人。
说明 可通过查看值班计划按钮,查看值班计划列表及值班设置是否符合预期,并支持添加新值班计划,相关操作说明请参见值班管理。 |
2 管理对比结果
数据对比创建成功后,可以执行查看对比报告、搜索对比结果、查看运行日志等操作,步骤如下:
- 登录 DataLeap 控制台。
- 选择数据质量 > 数据对比 > 对比结果,进入对比结果页面。
- 在引擎下拉列表中,选择要查看的引擎和对应的实例。
- 可执行以下操作:
- 设置搜索信息,快速查找符合条件的对比结果列表。
- 单击对比结果列表中某条信息操作列的对比报告按钮,进入对比报告页面,可以查看对比总体概况、Diff明细列表等信息。
- 对比总体概况中,各指标计算逻辑如下:
- 表A/B行数:select count(*) from table_A/B
- 行数差值百分比:|数据B行数-数据A行数|/数据A行数
- 主键匹配上的总行数:select count(*) from table_A inner join table_B on 唯一键A = 唯一键 B
- 表A/B中匹配上的行数占比:(主键匹配上的总行数)/(表A/B行数)
- Diff 明细列表,各字段含义如下:
- 字段名称(A/B):可以核查字段是否选择正确。
- 字段类型(A/B):可以对比字段的类型差异。
- Diff逻辑:若 Diff值为0,说明两表完全相同;若存在Diff,则可根据 Diff逻辑: Diff值和 Diff值占比(%) 的数值大小进行评估。
说明
创建的数据对比运行成功后,才可以查看对比报告。
- 单击列表中某条信息操作列的运行日志按钮,可以查看该对比的运行日志。
- 单击列表中某条运行中的信息操作列的终止按钮,可以终止该对比。
- 单击列表中某条信息操作列的 ... > 复制按钮,可以复制该对比信息,创建新的对比。
- 单击列表中某条信息操作列的 ... > 重跑按钮,二次确认后,可以重跑该次校验任务。
- 单击列表中某条信息操作列的 ... > 分享按钮,可以复制报告地址并分享给他人。
- 单击列表中某条信息操作列的 ... > 查看SQL 按钮,可以查看该数据对比信息的 SQL 语句。
3 管理定时对比任务
若新建对比采用的执行方式是定时对比,则会生成定时对比任务,您可通过本功能对其进行相应管理,操作如下:
- 登录 DataLeap 控制台。
- 选择数据质量 > 数据对比 > 定时对比,进入定时对比页面。
- 在引擎下拉列表中,选择要查看的引擎和对应的实例。
- 可执行以下操作:
- 设置搜索信息,快速查找符合条件的定时对比任务列表。
- 单击列表中某条信息操作列的编辑按钮,可以修改该对比信息。
- 单击列表中某条信息操作列的开启/关闭复合按钮,可以开启/关闭该定时对比。开启后,才会定时执行对比操作。
- 单击列表中某条信息操作列的删除复合按钮,二次确认后,可删除该定时对比任务。
- 勾选一条或多条信息后,单击列表下方的批量操作按钮,可以执行相应的批量操作。