人大金仓 KFS数据过滤-行过滤

文章介绍了KFS中的skipeventbyvalue过滤器,用于基于SQL语句中字段值的过滤。该过滤器支持多条件和多种数据类型,如数值、字符和时间,通过配置规则文件实现对DML语句的精细化控制。
摘要由CSDN通过智能技术生成
一、skipeventbyvalue过滤器

KFS支持基于字段中某个值的sql过滤,使用 skipeventbyvalue过滤器+规则文件实现,比如:sql语句insert into xx(id,c1) values(1,’test’),过滤规则文件匹配字段c1的test值,如果值满足规则文件,那么就将此sql语句过滤掉,配置的值支持的数据类型为数值类型(int)、字符类型(varchar)、时间类型(date)。通过配置过滤规则,符合规则的dml语句将会被过滤、不在入库。

二、行过滤配置

在flysync.ini文件中添加如下配置:

svc-remote-filters= skipeventbyvalue

-----过滤器中添加skipeventbyvalue

property=replicator.filter.skipeventbyvalue.definitionsFile=${replicator.home.dir}/support/filters-config/skipeventbyvalue.json

---------------指定skipeventbyvalue过滤规则文件路径

三、skipeventbyvalue.json过滤规则文件配置

3.1 配置文件说明

3.1.1 单条件过滤场景

过滤规则使用json格式,故配置文件的内容需要符合json格式,以下边配置为例,各个配置参数的含义为:

 

{“public.test”: { --------需要过滤的表名,其配置方式为模式名.表名-------“condition”: { -----------过滤规则主体---------“column”: “AGE”, ----------AGE字段作为判断主体-----------“function”: “>”, ----------过滤条件,可选>,<,<>,=,>=,<=----“value”: 18, ----------过滤条件阈值---------“operator”: “”, ----------逻辑条件,可选and,or等-------“conditions”: [] ----------多条件过滤规则主体,单条件不写,详情可见复合场景-----}}


该过滤规则表示,public.test表,AGE字段大于18的数据将被过滤丢弃,不做同步

3.1.2 多条件过滤场景

多字段单条件场景


{/* 等效于 WHERE AGE > 18 AND SEX = ‘女’ */“public.test”: {“condition”: {“column”: “”,“function”: “”,“value”: “”,“operator”: “”,“conditions”: [ { -----------多条件情况下,过滤规则写在conditions内—“column”: “AGE”,“function”: “>”,“value”: 18,“operator”: “”,“conditions”: []}, ---------------第一字段条件结束后,使用逗号隔开----------{“column”: “SEX”,“function”: “equals”, --------字符类型函数条件,详情见数据类型章节“value”: “女”,“operator”: “AND”, ---------逻辑条件,同sql逻辑一致-----“conditions”: []} ]}}}


以上过滤规则表示,public.test表,age>18,且sex为女的数据将被过滤丢弃

/* 等效于 WHERE AGE > 18 AND SEX = ‘女’ */

多字段多条件场景

 

{“public.test”: {“condition”: {“column”: “”,“function”: “”,“value”: “”,“operator”: “”“conditions”: [ { ----------单字段(AGE)多条件过滤规则开始----------“column”: “”,“function”: “”,“value”: “”,“operator”: “”,“conditions”: [ {“column”: “AGE”,“function”: “>”,“value”: 18,“operator”: “”,“conditions”: []},{“column”: “AGE”,“function”: “<”,“value”: 35,“operator”: “AND”,“conditions”: []} ]}, -----------------AGE字段过滤规则结束---------------{ ---------------SEX字段过滤规则主体-----------------“column”: “SEX”,“function”: “equals”,“value”: “女”,“operator”: “AND”“conditions”: []} ]}}}


以上过滤规则表示,public.test表,AGE大于18,小于35,且sex为女的数据将被过滤丢弃 WHERE (AGE > 18 AND AGE < 35) AND SEX = ‘女’

3.2 数值规则类型介绍

KFS规则文件中支持配置不同的数据类型来匹配,主要是分为数值型(int、number、double等),字符型(varchar、nvchar等),时间类型(date、timestamp等)

3.2.1 数值类型

对于过滤字段值是数据类型的情况,配置规则文件如下:

{/* 等效于 WHERE AGE > 18 */“SCHEMA_NAME_1.TABLE_NAME_1”: {“condition”: {“column”: “AGE”,“function”: “>”, -----可选>,<,<>,>=,<=,=“value”: 18, -----规则使用的值“operator”: “”,“conditions”: []}}
 


3.2.2 字符类型
 

{/* 等效于 WHERE SEX = ‘女’ */“SCHEMA_NAME_1.TABLE_NAME_1”: {“condition”: {“column”: “SEX”,“function”: “equals”,“value”: “女”,“operator”: “”,“conditions”: []}}


字符类型的函数配置为:

equals = ,以上述例子举例,等效于WHERE SEX = '女

equalsignoreCase 不区分大小写,均作为大写匹配,等效于 WHERE upper(SEX) = upper(‘女’)

startsWith 后模糊,等效于 WHERE SEX LIKE ‘女%’

endsWith 前模糊,等效于WHERE SEX LIKE ‘%女’

contains 全模糊,等效于 WHERE SEX LIKE ‘%女%’

3.2.3 时间类型

 

{“SCHEMA_NAME_1.TABLE_NAME_1”: {“condition”: {“column”: “BIRTH”,“function”: “>”, -----同数值类型----“value”: “2008-08-08”“operator”: “”“conditions”: []}}


四、总结

skipeventbyvalue支持多字段、多条件过滤,支持and,or等逻辑结合,本文中仅举例AND,可以灵活组合,满足不同的场景

参考文档:
《KFS常见过滤器配置一览》
更多信息,参见KingbaseES V8 — KingbaseES产品手册
  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值