SQL脚本用于执行SQL检查数据:满足企业复杂数据质检需求,应对标准化规则难以覆盖的定制化、多源关联校验场景。依托 SQL 的灵活查询与计算能力,支持用户自定义脚本,实现个性化业务逻辑校验,填补通用规则局限,保障复杂场景下的数据质量。
检查规则:支持SQL语句、存储过程两种类型的检查方式,如果质量模型启用的Spark引擎,则无法选择存储过程类型。
SQL:通过输入自定义的sql来检查数据,sql内容需要满足一定条件规范。
select BBQ as PERIOD,--数据期字段指定,如果没有则配置’00000000’ UPID as DATACLASS,--数据级次字段指定,如果没有则配置’vroot’ GUID_ AS KEY_GUID_--关键字字段指定,必填字段,存在多个的话则都需要配置 from <#=TABLENAME#>--检查表的宏表达式,也支持直接输入实际的数据库表名代替 where e4 > '200' and substr(BBQ, 1, 6) = '<#=PERIOD#>'--查询条件,如果涉及需要根据数据级次或数据期过了,则也可以通过宏表达式来代替 |
存储过程:通过存储过程对质检主题表数据进行检查之前,需要先在对应数据库连接池内自定义存储过程。规则执行时系统调用存储过程,传递数据期,数据级次相关参数,由存储过程返回临时表。示例如下:
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,然后保存规则。
请先登录