update
This commit is contained in:
parent
d1ede2d4aa
commit
62637fcd7f
@ -0,0 +1,20 @@
|
||||
package cn.datax.service.data.quality.api.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author ch
|
||||
* @date 2023/12/25 17:18
|
||||
*
|
||||
* 正则校验
|
||||
*/
|
||||
@Data
|
||||
public class Regular implements Serializable {
|
||||
|
||||
/**
|
||||
* 正则表达
|
||||
*/
|
||||
private String regular;
|
||||
}
|
@ -32,4 +32,11 @@ public class RuleConfig implements Serializable {
|
||||
* 准确性
|
||||
*/
|
||||
private Accuracy accuracy;
|
||||
|
||||
/**
|
||||
* 正则表达
|
||||
*/
|
||||
|
||||
private Regular regular;
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ public enum RuleItem {
|
||||
Integrity("integrity_key", "验证表中必须出现的字段非空"),
|
||||
Relevance("relevance_key", "验证关联性"),
|
||||
Timeliness("timeliness_key", "验证及时性"),
|
||||
Regular("regular_key","正则表达式"),
|
||||
|
||||
Consistent("consistent_key", "验证用户指定的字段枚举值是否合乎要求");
|
||||
|
||||
private final String code;
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user