Browse Source

数据规则

zhangheng 3 năm trước cách đây
mục cha
commit
5e981a225b

+ 9 - 3
server/src/main/java/edp/davinci/model/DataRules.java

@@ -19,9 +19,15 @@ public class DataRules extends RecordInfo<DataRules>
 
     private String ruleDesc; // 规则描述
 
-    private String inspectionType; // 规则 一致性、完整性、规范性、准确性
-
-    private String ruleType; // 规则类型  not_null: 非空 range: 值域 length:长度 date_format:日期格式
+    private String inspectionType; // 规则 完整性、一致性、规范性、准确性
+
+    /**
+     * 完整性:  not_null: 非空
+     * 一致性: range: 值域 length:长度 date_format:日期格式
+     * 规范性: 错误、缺失,空值,精度    空值 null_data
+     * 准确性: 识别和度量重复数据、冗余数据 重复数据 repeat_data
+     */
+    private String ruleType;
 
     private String ruleConfig; // 规则配置 {range:{from:,to:},length:,date_format:}
 

+ 13 - 0
server/src/main/java/edp/davinci/service/impl/QualityTaskServiceImpl.java

@@ -140,12 +140,14 @@ public class QualityTaskServiceImpl implements QualityTaskService {
 
             StringBuilder sql = new StringBuilder("select * from (" + view.getSql() + " ) v where 1 =1 ");
             List<Map<String, Object>> result = sqlUtils.query4List(sql.toString(), -1);
+            // 1. 【完整性】
             if (dataRules.getRuleType().equalsIgnoreCase("not_null")) {
                 // 非空
                 sql.append(" and ");
                 sql.append("v." + fieldName + " is not null ");
 
             }
+            // 2. 【一致性】
             if (dataRules.getRuleType().equalsIgnoreCase("range")) {
                 // 值域
                 sql.append(" and ");
@@ -163,6 +165,17 @@ public class QualityTaskServiceImpl implements QualityTaskService {
                 sql.append(fieldName + " is not null ");
             }
 
+            // 3. 【准确性】
+            if (dataRules.getRuleType().equalsIgnoreCase("repeat_data")) {
+                // 重复数据
+                sql.append("select "+ fieldName +" from (" + view.getSql() + ") GROUP BY "+ fieldName +" HAVING Count(*)> 1");
+            }
+            // 4. 【规范性】
+            if (dataRules.getRuleType().equalsIgnoreCase("null_data")) {
+                // 日期格式
+                sql.append(" and ");
+                sql.append(fieldName + " is null ");
+            }
             // 符合条件的
             List<Map<String, Object>> newResult = sqlUtils.query4List(sql.toString(), -1);