睿治
当前版本:2.7.2

sql脚本

1.概述

sql脚本用于执行sql检查数据:满足企业复杂数据质检需求,应对标准化规则难以覆盖的定制化、多源关联校验场景。依托 SQL 的灵活查询与计算能力,支持用户自定义脚本,实现个性化业务逻辑校验,填补通用规则局限,保障复杂场景下的数据质量。

检查主题表“XXB_DAY_GUID”中E4字段小于200的值,编辑sql脚本检查主题表。

2.操作步骤

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

2.新建规则,在模型规则库中点击“新建规则”,进入规则类型选择页面,选中【sql脚本】规则,点击“下一步”,进入规则编辑页面。

在规则编辑页面选择主题表“XXB_DAY_GUID”,检查规则有sql语句和存储过程两种,这里举例sql语句检查规则

点击“SQL编辑器”,编辑sql语句“select substr(BBQ,1,6) as PERIOD, UPID as DATACLASS,GUID_ AS KEY_GUID_ ,upid as key_upid from XXB_DAY_GUID where e4>'200' and substr(BBQ,1,6)= '<#=PERIOD#>'”,

规则有如下参数:

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

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

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

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

Ø 检查规则:选择规则的检查规则方式,分为SQL语句和存储过程。

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

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

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

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

可以点击右下角的查看“sql脚本说明”:

示例一 SQL脚本

通过调用SQL脚本检查目标数据是否满足要求,将对数据来源表进行检查比对,SQL语句只返回错误的数据。

SELECT
VAR_YYYYMMDD AS PERIOD, -- 第一个参数固定为数据期,比如年报传递值2014,月报传递201410,模型没有数据期则为常量(00000000)
'vroot' AS DATACLASS, -- 第二个参数固定为数据级次,比如110000,模型没有设置数据级次则为常量(vroot)
ID AS KEY_ID --同规则检查的主题表设置的关键字段,字段名为在主题表上定义的关键字的别名,关键字段有几个,就需要定义几列,比如关键字为BUILDID,BUILDNODEID,那么需要增加两列KEY_BUILDID,KEY_BUILDNODEID,主题表必须设置关键字段
FROM tmptb WHERE ID LIKE '11%'
如果需要使用当前数据期,则可以使用宏表达式<#=PERIOD#>
AND VAR_YYYYMMDD = '<#=PERIOD#>'

示例二 过程存储

通过调用存储过程检查目标数据是否满足要求,将对数据来源表进行检查比对,并且返回检查结果集的临时表。

存储过程接口:
CREATE OR REPLACE PROCEDURE p_checkRuleXxx
(
bbq IN varchar, -- 第一个参数固定为数据期,比如,年报传递值2014,月报传递201410
dataclass in varchar, -- 第二个参数固定为数据级次,比如110000,如果执行时未选择数据级次,此参数为空(NULL对象)
tmptb out varchar --第三个为输出参数,返回临时的结果表,此结果表的创建与删除由创建存储过程人员维护
)

临时表字段信息:
dataclass --固定字段名,数据级次,此字段存放数据级次值
key1,key2,key3 --定义此规则的主题表设置的关键字段,字段名为在主题表上定义的关键字的别名,关键字段有几个,就需要定义几列,比如关键字为bbq,userid,btype,那么需要增加三列bbq,userid,btype
checkstate --固定字段名,数据是否通过,通过为1,未通过为0

参数设置完成后点击“完成”按钮,规则新建成功。

3.新建质检方案,模型质检方案点击“新建”,进入新建方案流程页面,填写方案名称,点击“下一步”

将新建sql规则添加到流程中,然后点击“下一步”

后续流程可按需求设置,不设置可点击“下一步”跳过,方案设置完成后关闭

4.执行质检方案,选择合适的数据期,不同步上期例外(根据需求选择),点击“确定”。

方案执行成功后可在质量监控页面查看,在搜索栏选择方案,合适的数据期、数据级次和主题表,下面将显示质检方案中主题表经过规则检查后,展示出数据量、错误合计、例外合计、已修复合计的数据,操作栏“查看”可查看错误数据的详情。

3.SQL脚本规则说明

主要介绍SQL脚本规则的使用,SQL脚本规则支持使用SQL语句及存储过程对质检数据进行质量检查。下面是对两种检查方式的填写说明:

SQL语句检查

通过SQL语句对质检主题表数据进行检查,需要在SQL语句中定义好数据期、数据级次、关键字字段以及质检条件。示例如下:

1.添加质检主题表,定义主题表的数据期、数据级次、关键字字段。没有可不定义。

2.添加SQL规则进入规则编辑页面,选择对应质检主题表,并写入固定格式的SQL语句。

select [数据期字段] as PERIOD, [数据级次字段] as DATACLASS,[关键字字段1] AS KEY_字段1,[关键字字段2] AS KEY_字段2 from [质检主题表对应数据库] where [质检条件] and [数据期字段]= '<#=PERIOD#>'

当模型及质检主题表设置数据期、数据级次时,SQL语句中必须包含数据期及数据级次;当模型及质检主题表未设置数据期或数据级次时,可写入’’ as PERIOD作为数据期条件、’000000’ as DATACLASS作为数据级次条件

存储过程检查

通过存储过程对质检主题表数据进行检查之前,需要先在对应数据库连接池内自定义存储过程。规则执行时系统调用存储过程,传递数据期,数据级次相关参数,由存储过程返回临时表。示例如下:

1.创建临时表

CREATE TABLE SQLCHECKTABLE2(
DATACLASS VARCHAR(50),
CHECKSTATE INTEGER ,
SYS_XDATA_ROWID VARCHAR(50),
FIELDVALUES VARCHAR(50),
FIELDVALUEDESC VARCHAR(50))

//以上临时表sql中除了 SYS_XDATA_ROWID是关键字字段外,其余是固定写法

2.创建存储过程

CREATE OR REPLACE PROCEDURE SQLCHECK_TEST2(
PERIOD IN VARCHAR,//定义数据期参数
DATACLASS IN VARCHAR,//定义数据级次参数
TMPTABLE OUT VARCHAR) AS
BEGIN
DELETE SQLCHECKTABLE2;//清空临时表SQLCHECKTABLE2
COMMIT;
EXECUTE IMMEDIATE 'INSERT INTO SQLCHECKTABLE2(DATACLASS,CHECKSTATE,SYS_XDATA_ROWID)//将数据插入临时表SQLCHECKTABLE2
(SELECT UPIDC18 AS DATACLASS, (CASE WHEN A.E15C2 is null THEN 0 ELSE 1 END) AS CHECKSTATE,A.SYS_XDATA_ROWID FROM F_XXB3_COPY A WHERE A.BBQC11 ='''||PERIOD||''')';//UPIDC18为数据级次字段,BBQC11为数据期字段,F_XXB3_COPY为质检主题表对应库表名称,SYS_XDATA_ROWID为关键字字段
COMMIT;
TMPTABLE := 'SQLCHECKTABLE2';
END SQLCHECK_TEST2;

3.新建sql规则,主题表选择F_XXB3_COPY,存储过程选择SQLCHECK_TEST2,然后保存规则。

注:模型启动Saprk引擎后,不支持选择存储过程进行数据质检。

附件列表

0

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

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

上一篇新建标准审批工作流

下一篇创建和执行质检方案

请先登录