This commit is contained in:
gaochang
2023-12-25 20:16:15 +08:00
parent d1ede2d4aa
commit 62637fcd7f
6 changed files with 78 additions and 6 deletions

View File

@@ -0,0 +1,40 @@
package cn.datax.service.data.quality.schedule.rules;
import cn.datax.common.database.constants.DbType;
import java.util.Map;
/**
* @author ch
* @date 2023/12/25 18:14
*/
public class RegularRule implements RuleItem{
private static String REGULAR = "regular";
@Override
public String parse(DbType dbType, String table, String column, Map<String, Object> map) {
final StringBuilder builder = new StringBuilder();
switch (dbType) {
case ORACLE:
case ORACLE_12C:
builder.append("SELECT SUM(CASE WHEN ROUND(TO_NUMBER(SYSDATE - ").append(column).append(")) >= ").append(map.get(REGULAR)).append(" THEN 1 ELSE 0 END), COUNT(*) FROM ").append(table);
break;
case MYSQL:
builder.append("select sum(case when ").append(column).append(" REGEXP ").append("'"+map.get(REGULAR)+"'").append(" != '' THEN 0 ELSE 1 END),")
.append(" COUNT(*) from ").append(table);
case MARIADB:
case SQL_SERVER:
case SQL_SERVER2008:
case POSTGRE_SQL:
case OTHER:
default:
break;
}
return builder.toString();
}
@Override
public String code() {
return "timeliness_key";
}
}

View File

@@ -1,5 +1,7 @@
package cn.datax.service.data.quality.schedule.rules;
import cn.datax.service.data.quality.api.dto.Regular;
import java.util.HashMap;
import java.util.Map;
@@ -13,6 +15,7 @@ public class RuleItemRegistry {
this.rule_item_map.put("integrity_key", new IntegrityRule());
this.rule_item_map.put("relevance_key", new RelevanceRule());
this.rule_item_map.put("timeliness_key", new TimelinessRule());
this.rule_item_map.put("regular_key", new RegularRule());
this.rule_item_map.put("accuracy_key_length", new AccuracyLengthRule());
}

View File

@@ -4,12 +4,7 @@ import cn.datax.common.base.BaseServiceImpl;
import cn.datax.common.core.RedisConstant;
import cn.datax.common.database.constants.DbType;
import cn.datax.common.redis.service.RedisService;
import cn.datax.service.data.quality.api.dto.Accuracy;
import cn.datax.service.data.quality.api.dto.CheckRuleDto;
import cn.datax.service.data.quality.api.dto.Consistent;
import cn.datax.service.data.quality.api.dto.Relevance;
import cn.datax.service.data.quality.api.dto.RuleConfig;
import cn.datax.service.data.quality.api.dto.Timeliness;
import cn.datax.service.data.quality.api.dto.*;
import cn.datax.service.data.quality.api.entity.CheckRuleEntity;
import cn.datax.service.data.quality.api.enums.RuleItem;
import cn.datax.service.data.quality.dao.CheckRuleDao;
@@ -132,6 +127,11 @@ public class CheckRuleServiceImpl extends BaseServiceImpl<CheckRuleDao, CheckRul
Accuracy accuracy = ruleConfig.getAccuracy();
map.put("max_length", accuracy.getMaxLength());
break;
// 正则表达
case Regular:
Regular regular = ruleConfig.getRegular();
map.put("regular", regular.getRegular());
break;
default:
return null;
}