Apache griffin 正则表达式前后端交互问题

2020-11-06  本文已影响0人  maverick_360

在Apache griffin搭建完成以后,基于数据仓库的数据,陆续做了一些测试验证工作,主要应用的measure中的profile类型。在使用的过程中,遇到一个奇怪的问题。如下所示:

针对测试的字段,我们填入自定义的正则表达式,如图1所示,点击->保存->提交;在Measure创建以后,查看Measure的详情信息,发现channel_id的正则表达式,同我们输入的完全不一样,如图2所示:

图1-创建Measure任务 图2-查看Measure信息

为什么会发生这种情况呢?我们重新又按照上述步骤,同时开启前端网络调试(F12),查看在post过程中,发送的相关参数;最终确定,问题发生在前端向后台服务发送消息时,就已经存在啦;

定位问题以后,解决的思路就比较清晰啦:

1) 找到创建measue时的前端页面,找到对应文本框的ID或者名字,如下图3所示:

图3-创建Measure前端的页面

2) 找到对应的Js或者TS代码(近几年大多开源框架,都是基于TS来开发),找到对应的ts文件pr.component.ts;从getGrouprule函数入手,定位到代码分支,当originrule =="Regular Expression Detection Count"时,会调用transferRule函数,生成对应的规则;问题就出现在transferRule函数内,此处规则是写死的,想了一下,没get到这样做的目的是什么;不过定位到问题后,解决就比较easy啦,通过第一步获取到页面信息,修改下图中的代码为:`count(source.${col.name}) AS \`${col.name}_regexcount\` WHERE source.${col.name} RLIKE '${col.regex}'`

图4-tranferRule函数代码

修改对应的代码后,通过maven,重新打包,发布,测试;发现问题解决啦,在前端定义的规则,可以顺利的传到后台,并进行任务的执行。

上一篇下一篇

猜你喜欢

热点阅读