睿治
当前版本:2.7.2

JAVA脚本

1. 概述

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

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

2. 操作步骤 

 1.在质量模型中添加主题表“XXB_DAY_GUID”,定义数据期、数据级次、关键字字段,没有可不定义。

2.新建规则,在质量模型规则库中新建规则,选择“JAVA脚本”,处理内置规则满足不了的数据质量检查需求,点击下一步,进入规则编辑页面。

规则编辑页面,主题表一栏选择上述添加的主题表“XXB_DAY_GUID”,填写Java脚本代码,检查E32字段是否为空,本案例以行数据检查检查方式为例。以下为Java脚本代码:

“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 {

   private static final long serialVersionUID = -8046849565053039741L;

   public boolean checkRowData(Row row, TableRowData rowData) {

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

       return !StrFunc.isNull(value);

   }

}”

该规则有参数如下:

Ø 代号:系统将根据规则类型系统自动生成,也可能自定义输入。

Ø 分组:选择规则分组,当前规则将添加至选定的分组下。

Ø 主题表:选择波动检查的来源表。

Ø 业务规则:选择规则的业务规则类型。

Ø 脚本代码:需要执行的JAVA脚本代码。

Ø 描述:用户输入规则的详情。

Ø 过滤条件:当对一部分数据进行检查时,可以输入过滤条件表达式。

Ø 问题级别:分为严重、重要、一般。用户可以根据提示选择优先处理哪类问题。

Ø 自动启用:打上勾后表示创建规则后自动设为启用状态,不打勾设为禁用状态。

Ø 权重:输入权重值,用于质量管理绩效打分。

Ø 关联关系:指标表达式或者过滤条件涉及他表时,过滤条件涉及他表时需勾选与之对应的关联关系。

可以点击右下角的查看“JAVA检查说明”,里面有几种接口方法说明。

Row接口方法说明如下:

方法

描述

fieldIndex(String col)

通过列名找到在row的位置索引;

get(int index)

返回指定索引位置的值,和上述方法结合使用就可以找到对应列名的值,返回的是Object对象;

getAs(String col)

返回指定列对应的值;

getAs(int col)

返回指定索引对应的值;

size()

返回列数。

TableRowData接口方法说明如下:

方法

描述

getPeriod()

获取此行数据的数据期;

getDataClass()

获取此行的数据级次;

getFieldAlias(String fieldName)

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

getFieldValue(String fieldName)

取此行数据某字段的值;

getLinkFieldValue(String linkId ,String fieldName)

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

Dataset接口方法说明如下:

方法

描述

drop(String col)

删除指定列;

col(String col)

返回指定的列,返回的对象是Column类型;

filter(String condition)

过滤指定数据,等价于sql的where语句;

groupBy(Column col)

分组,等价于sql的group by语句。

orderBy(Column col)

排序,等价于sql的order by语句;

join(Dataset dataset, String col)

join两个dataset对象,等价于sql的join语句;

intersect(Dataset dataset)

intersect两个dataset对象;

except(Dataset dataset)

except两个dataset对;

union(Dataset dataset)

union两个dataset对象;

sample(double fraction)

随机抽样返回一个新的dataset;

distinct()

去重;

count()

获取总条数;

isEmpty()

dataset里面数据是否为空;

first()

返回第一行的数据;

limit(int n)

返回前n条数据组成的dataset对象;

createTempView(String viewName)

创建一个临时视图;

createOrReplaceTempView(String viewName)

创建或者替换一个临时视图。

TableDatasetMgr接口方法说明如下:

方法

描述

getAnalDataset(String tableName, String orderFields, String whereSql)

获取分析连接池查询出来的Dataset对象;

getResultDataset(String tableName, String orderFields, String whereSql)

获取结果连接池的查询出来的Dataset对象;

refreshAnalDataset(String tableName, String orderFields, String whereSql)

获取分析连接池某张表最新查询出来的Dataset对象;

refreshResultDataset(String tableName, String orderFields, String whereSql)

获取结果连接池某张表最新查询出来的Dataset对象。

CheckResultData接口方法说明如下:

方法

描述

setRowResult(Dataset dataset)

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

setTableResult(Dataset dataset)

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

 

3.新建质检方案,质检方案页面新建,弹出质检方案流程页面,填写方案标题,下一步将上述规则添加到质检方案中,点击“下一步”,后续设置可跳过,直到成功。

4.执行质检方案,在方案的操作栏点击“执行”,弹出弹框,选择合适的数据期,不同步上期例外,点击“确定”,执行方案后在质量监控页面可查看方案执行结果,选择本例方案,合适的数据期、数据级次和主题表后,下面显示出方案中规则的数据量、错误合计、例外合计、已修复合计等数据,点击操作栏的“查看”可以查看错误合计的所有数据详情。

附件列表

0

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

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

上一篇数据集检查

下一篇R脚本

请先登录