依赖推送和依赖抽取都没有执行如何排查?

有数支持依赖推送和依赖抽取,在设置依赖的时候会选择依赖的范围,比如依赖全部表,或者自定义表:

依赖推送和依赖抽取都没有执行如何排查? - 图1

但是我们经常遇到依赖推送的任务和抽取任务没有触发,那要如何排查呢?

以邮件推送"所有表更新"为例:

1、我们需要进入有数的业务库查看cache_table_task(存储用户推送过来的信息)这个表里面的数据,我们找到这个推送依赖的所有表名称,通过SQL语句查询一下 select * from cache_table_task where table_name=(表名) and type ='task',如下图:

依赖推送和依赖抽取都没有执行如何排查? - 图2

create_time就是用户推送过来的时间,我们需要拿到没有推送的时间段,找到最晚的一次推送(比如:28号没有推送,我就拿28号里面最晚的表信息),拿到对应的transid(在字段details里面有一个transID)如上图所示。

然后我们需要进入有数的服务器,进入/youdata/log/web目录下面,打开包含pushTable名字的文件,如图:

依赖推送和依赖抽取都没有执行如何排查? - 图3

比如28号没有推送,我们就打开web-pushTable-2023-08-28.log,29号没有推送我就打开29号的日志文件

打开文件之后,在文件里面搜索刚刚复制粘贴的transid,如下图:

依赖推送和依赖抽取都没有执行如何排查? - 图4

可以看到transid下面对应的info输入就是我们这个推送所依赖的所有表的更新时间(json存储):

依赖推送和依赖抽取都没有执行如何排查? - 图5

id可以理解抽取表的id(等同于依赖表的id),"relyUpdatedTime"指的就是这个表最近一次更新的时间。从上图可以看到这个json里面"relyUpdatedTime"大部分都是8月28号的信息,说明这个里面所有的表都应该是8月28号更新之后,有数才会进行推送,但是里面有一个relyUpdatedTime为8月27号的,如下图:

依赖推送和依赖抽取都没有执行如何排查? - 图6

说明这张表28号,并没有更新推送给有数,不符合"全部表更新"在推送的规则,所以推送任务就不会触发。

如何找到具体是那张表名呢?

我们只需要拿到前面的id 24177,到有数的业务库里面查询一下table_extract这个表,就可以找到具体的表名:select * from table_extract where id = 24177,table_name就是表名:

依赖推送和依赖抽取都没有执行如何排查? - 图7

这个时候就需要业务开发者看一下为什么这个张表没有推送给有数。

如果像验证一下是不是真的没有推送给有数,可以根据开头的SQL语句查询一下,应该是没有包含那天的数据的。(select * from cache_table_task where table_name=(表名) and type ='task')