测试文档(产品帮助文档专用)

JAVA脚本@

JAVA脚本用于执行JAVA脚本检查数据:可按需定义执行条件与逻辑,调用系统 API 处理复杂业务场景,灵活满足内置规则无法覆盖的自定义数据质量检查需求。

复杂业务场景用内置规则无法准确检查,为准确检查数据质量,使用JAVA语言编写代码精准找到需要质检的数据进行检查。

脚本代码:需要执行的Java代码,支持行数据检查、整表数据检查这2种检查方式

行数据检查:

#传统jdbc引擎示例

import com.esen.eutil.util.StrFunc;

class CheckData {

   /**

*校验表格行数据中E32字段是否为非空有效值

*@return boolean 校验结果:true=E32字段非空有效,false=E32字段为空/无效

*/

   public boolean checkRowData(TableRowData rowData) {

     String value = rowData.getFieldValue("E32");

       return !StrFunc.isNull(value);

   }

}

 

#Spark引擎示例

package com.esen.edq.spark;

import java.io.Serializable;

import org.apache.spark.sql.Row;

import com.esen.edq.spark.core.rule.script.TableRowData;

import com.esen.eutil.util.StrFunc;

class CheckRow implements Serializable {

    /**

*校验表格行数据中E32字段是否为非空有效值

*@return boolean 校验结果:true=E32字段非空有效,false=E32字段为空/无效

*/

   private static final long serialVersionUID = -8046849565053039741L;

   public boolean checkRowData(Row row, TableRowData rowData) {

       String value = row.getAs(rowData.getFieldAlias("E32"));

       return !StrFunc.isNull(value);

   }

}

TableRowData接口方法说明如下:

方法

描述

getPeriod()

获取此行数据的数据期;

getDataClass()

获取此行的数据级次;

getFieldAlias(String fieldName)

取此行数据某字段的别名;

getFieldValue(String fieldName)

取此行数据某字段的值;

getLinkFieldValue(String linkId ,String fieldName)

linkId代表关
联关系id,获取此行数据的关联表对应的某一字段的值。

 

整表数据检查:

#传统jdbc引擎示例

import com.esen.eutil.util.StrFunc;

class CheckTableData {

  private CheckResultData resultData = new CheckResultDataImpl();

    //记录男生数量

    int man = 0;

    //记录女生数量

    int woman = 0;

public void batchCheckTableData(TableDataSet tableDataSet,TableResultSetMgr resultSetMgr){

        while(tableDataSet.next()) {

            TableRowData tableRowData = tableDataSet.getTableRowData();

            String fieldValue = (String) tableRowData.getFieldValue("sex_");

            if("男".equals(fieldValue)) {

                man++;

            }else if("女".equals(fieldValue)){

                woman++;

            }

            if(man == 0 || woman == 0){

                resultData.addTableResult("person",false,null);

            }else{

                resultData.addTableResult("person",0.4<man/woman<0.6,null);

            }

       }

    }

    public CheckResultData finishBatchCheck(){

        return null;

    }

    public CheckResultData finishFinalCheck(){

      return resultData;

    }

}

#Spark引擎示例

package com.esen.edq.spark;

import java.io.Serializable;

import org.apache.spark.sql.Row;

import com.esen.edq.spark.core.rule.script.TableRowData;

import com.esen.eutil.util.StrFunc;

Class CheckTableData implements Serializable {

  private CheckResultData resultData = new CheckResultDataImpl();

    //记录男生数量

    int man = 0;

    //记录女生数量

    int woman = 0;

public void batchCheckTableData(TableDataSet tableDataSet,TableResultSetMgr resultSetMgr){

        while(tableDataSet.next()) {

            TableRowData tableRowData = tableDataSet.getTableRowData();

            String fieldValue = (String) tableRowData.getFieldValue("sex_");

            if("男".equals(fieldValue)) {

                man++;

            }else if("女".equals(fieldValue)){

                woman++;

            }

            if(man == 0 || woman == 0){

                resultData.addTableResult("person",false,null);

            }else{

                resultData.addTableResult("person",0.4<man/woman<0.6,null);

            }

       }

    }

    public CheckResultData finishBatchCheck(){

        return null;

    }

    public CheckResultData finishFinalCheck(){

      return resultData;

    }

}

 

 

TableDataSet接口方法说明如下:

方法

描述

next()

下一条数据,没有下一条返回false,有则返回true;

getTableRowData()

返回当前指向的TableRowData接口,TableRowData接口说明如上;

resultSetMgr接口方法说明如下:

方法

描述

getResultSet(String tableName,String orderFields,String whereSql)

获得一个当前连接池检查表ResultSet对象;

getResultSet(String ds,String tableName,String orderFields,String whereSql)

获得一个其他连接池表的ResultSet对象;

refreshResultSet(String ds,String tableName,String orderFields,String whereSql)

重新获得一个检查表ResultSet对象,ds可为空;

CheckResultData接口方法说明如下:

方法

描述

addRowResult(TableRowData rowData,boolean passed,String desc)

添加一条以行数据做检查的检查结果;

addTableResult(String desc,boolean passed)

添加一条以整表数据做检查的检查结果;

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇数据集检查@

下一篇R脚本@

请先登录