利用kettle进行数据核对并将核对结果发送到钉钉通知。
根据业务需求,需要对数据库中不同层级的数据进行核对,检查数据在传输以及清洗的过程中是否存在缺失。
由于平时的数据检查都是手动进行查询,需要在上班以后再进行,就拖慢了报表的出表时间。最近在想着用什么方法,能在上班前就将数据检查完,并且能有通知,不用再去查看。在网上查阅了一下,没发现什么有借鉴意义的,就自己慢慢摸索了一个符合自己需要的校验方法。
废话不多说,先上图。该校验是利用SQL进行查询,再通过钉钉进行通知。
在表输入步骤,调用存储过程,得出不匹配的数据。-- call 存储过程名字()
存储过程内容如下:
DROP TABLE IF EXISTS a1;
CREATE TEMPORARY TABLE a1
select 唯一字段 from ods层表 where 唯一字段 not in (select 唯一字段 from 数据源表);
DROP TABLE IF EXISTS a2;
CREATE TEMPORARY TABLE a2
select 唯一字段 from dwd层表 where 唯一字段 not in (select 唯一字段 from 数据源表);
#如果存在有辅助表,有数据增删减,可再增加一个临时表。又或者存在数据的计算,可自行增加核对内容。
#如果有ods层不匹配的数据、dwd层不匹配的数据,则会输出数据,否则为null
SELECT * from (SELECT 唯一字段 from a1 union all SELECT 唯一字段 from a2 )a;
加入kettle组件--Switch / Case。Switch / Case用于进行条件判断。
加入kettle组件--中止。中止可以帮助我们停止这个转换。
加入kettle组件--文本文件输出。文本文件输出可以帮助我们正常运行这个转换。
在转换中,如果数据核对无误,就会输出null值,就会进行下一步骤“文本文件输出”,否则就会执行“中止”步骤。
当数据无误时:
当数据存在问题时:
在数据正常后,我们如何可以在上班之前得知呢?那就要让我们的钉钉小助手上线了。
(具体的kettle钉钉通知操作见上一章内容)
在这一转换中,只要一点击运行,我发现“自定义常量数据”总是最开始运行的。这样还没等Switch/Case做完判断,它就已经进行钉钉通知了。因此,就需要在kettle连接钉钉通知的操作中加一个“阻塞数据直至步骤后完成”组件,等上一部分内容都运行成功,才进行钉钉通知。
如图,“字符串替换”组件从6.8s也就是上面组件完成后,才开始往后进行
运行成功后,钉钉机器人就会在群里发送信息
如果数据有问题,就会停止转换
把转换放在作业中,定时跑数,就可以在钉钉信息通知中知道数据问题了。成功就会通知,没成功就不会通知。
小伙伴们也可以在此基础上增加一个不成功的消息通知!