预警规则编写规范_第1页
预警规则编写规范_第2页
预警规则编写规范_第3页
预警规则编写规范_第4页
预警规则编写规范_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、预警规则编写规范1. 说明预警规则编写通过规范性的写法,达到统一的输出格式,统一的语法规范,提高易读性和易维护性。2. 编写目的随着公司审计、反洗钱项目的增加,预警规则均需要进行自主编写,通过预警规则编写的规范性,使单个项目中不同人员编写的预警规则差别降低到最小,不同项目中的预警规则差别也随之降低,对后续维护工作提供更好的支持,以及对知识传递形成完善的事例。3. 预警编写规范整理部分项目预警规则编写中不同的差异情况,需要注意以下几点:3.1. 触发动作获取根据“正说反抓”的预警抓取顺序,预警规则的触发动作应该遵循数据先后顺序中最后发生动作作为触发或最主要业务最后发生场景作为触发。确定触发动作可

2、以减少其数据量,并且在无触发情况下,该规则空数据批处理,减少数据库批处理压力。3.2. 预警规则设计项目经理或业务经理在预警规则编写之前需要对预警规则思路进行整理,完成预警规则设计,形成简单的数据库语言步骤思路,完成对预警规则的数据逻辑解释,以便实施人员进行预警规则编写工作。对于之后项目中遇到相同预警规则也可以提供参考。例如:对公短期内多账户划款到同一账户,并几乎全部支取或划转应当编写出数据逻辑步骤和最终要显示的预警规则明细情况:基于分录流水触发主体 T68_RULE_TRANSACTION A基于分录流水触发主体 T68_RULE_TRANSACTION_HIS Bstep1、获得当日发生的

3、对公出账信息A.KMCC = C /*科目存储 C对公活期账户*/A.WIPP_OF = 0 /*冲账标志 = 正常*/A.EC_FLG = 0 /*抹账标志 = 正常*/A.DC_FLAG = 1 /*借贷标志 = 借 */step2、获得该账户在回顾周期内发生的出入账交易A.ACCT_NO = B.ACCT_NOA.ACCT_SEQNO = B.ACCT_SEQNOB.TRADEDT = A.TRADEDT - 参数01step3、剔除同客户互转NOT EXISTS TBID = TBID LOANGROUPID = LOANGROUPID CUST_NO = CUST_NO DC_FLA

4、G DC_FALGstep4、统计该账户入账对手客户数,汇总入账金额SUM(B.TRANS_AMT) AS TRANS_AMT_CB.DC_FLAG = 2/*贷方交易 入账*/GROUP BY B.OPP_CUST_NAME HAVING COUNT(*) = 参数02step5、统计满足step3的账户出账金额,同汇总入账金额进行比较,满足浮动百分比的进行预警SUM(TRANS_AMT) AS TRANS_AMT_DB.DC_FALG = 1 /*借方交易 出账*/TRANS_AMT_D = TRANS_AMT_C * (100 - 参数03) /100TRANS_AMT_D = TRAN

5、S_AMT_C * (100 + 参数03) /100预警临时主键使用账号ACCT_NO | ACCT_SEQNO001 分录流水3.3. 临时表创建临时表命名规范:TMP_(+)规则编号(+)_表简称,例如:TMP_ACCT_OC。临时表命名后针对临时表中的字段需要字段可以包含如下: 必要信息:下一个步骤中需要使用到的字段和主键,例如:主键EVENTKEY、账号ACCT_NO等。 关键信息:在本步骤中需要获取到,应用于预警结果的,例如:交易日期TRADEDT、交易机构TRANS_ORGAN等。 辅助信息:能够在获得该步骤后,查看该步骤信息中包含的除去以上两点后,所需的时间、地点、人物、事件中

6、所缺少的信息,例如:客户号CUNT_NO、客户名称CUST_NAME等。 承接信息:承接上一步骤中的必要信息或关键信息,制造数据冗余,以便在后续步骤中不必再进行反复关联。这部分内容需要灵活应用,根据实际需要进行组合,不要造成临时表信息过少造成后续步骤不能直接应用该步骤,还需要再重新关联业务表获得必要和关键信息;也不要邹城临时表信息过大,造成不必要的数据库资源浪费。3.4. 预警步骤拆分为了提升预警规则的SQL语句的可读性,将预警规则拆分为最小模块,建立相应的临时表,不建议进行一重或多重子查询。3.5. SQL语句格式通过语句格式规范后。整个项目中的成员在编写完预警规则后,SQL语句仿佛是同意一

7、个人完成的,在阅读方面差异化减少,后续维护人员维护便利,以及后续知识传递后SQL语句的可读性,现在规范一下SQL语句在编写中的语句格式。 INSERT INTO TABLE_NAME 单独一行; 然后下一行单独一行放“(”; 需要插入数据的字段信息,每行一个字段,每行需要距离INSERT有4个空格的缩进,后跟“,”和注释,注释需要使用“/*/”格式,禁止使用“”; 单独一行存放“)”; 再起一行写SELECT进行查询; 所需查询字段信息,每行一个字段,每行需要距离SELECT有4个空格的缩进,后跟“,”和注释,注释需要使用“/*/”格式,禁止使用“”; 再起一行存放FROM; 表名单独一行存放

8、,并且需要距离FROM有4个空格的缩进,多张表关联的情况一样,均距离FROM有4个空格缩进; WHERE/GROUP BY等语句均单独起一行,后面跟的条件单独写在下一行中,并且需要距离WHERE/GROUP BY等语句有4个空格的缩进,注释需要使用“/*/”格式,禁止使用“”; AND需要同INSERT、SELECT、FROM、WHERE/GROUP BY的第一个字母处于同一列,并且一个空格后跟相对应的查询条件; 查询条件填写完成之后,单独一行存放该语句结束符号“;”; 每条语句完成之后不需要进行COMMIT。例如:/*2 获得当日发生的对公出账信息 */ INSERT INTO TMP_CP

9、N_ACCOUNT ( EVENTKEY, /*账号*/ TBID, /*柜员流水号*/ LOANGROUPID, /*借贷组对*/ TRANS_ORGAN, /*交易机构*/ TRADEDT, /*交易日期*/ TRANS_SEQNO, /*交易流水号*/ DC_FLAG, /*借贷标识*/ CASH_XFER_FLAG, /*现转标识*/ ACCT_NO, /*账号*/ CUST_NO, /*客户号*/ CUST_NAME, /*客户名称*/ TRANS_AMT, /*交易金额*/ ACCT_BAL, /*余额*/ TRAN_KHJG /*开户机构*/ ) SELECT EVENTKEY,

10、 /*账号*/ TBID, /*柜员流水号*/ LOANGROUPID, /*借贷组对*/ TRANS_ORGAN, /*交易机构*/ TRADEDT, /*交易日期*/ TRANS_SEQNO, /*交易流水号*/ DC_FLAG, /*借贷标识*/ CASH_XFER_FLAG, /*现转标识*/ ACCT_NO, /*账号*/ CUST_NO, /*客户号*/ CUST_NAME, /*客户名称*/ TRANS_AMT, /*交易金额*/ ACCT_BAL, /*余额*/ TRAN_KHJG /*开户机构*/ FROM T68_RULE_TRANSACTION A WHERE A.KMC

11、C = C /*科目存储 C对公活期账户 */ AND A.WIPP_OFF = 0 /*冲账标志 = 正常 */ AND A.EC_FLG = 0 /*抹账标志 = 正常 */ AND A.DC_FLAG = 1 /*借贷标志 = 借 */ ;为什么不适用PL/SQL中提供的优化格式呢?因为如果使用PL/SQL中的优化格式,有的SQL语句显示会混乱,然后不能对编写SQL语句的开发实施人员进行规范性锻炼,我们规范SQL语句格式不只是为了编写这个预警,也是为了我们的开发实施人员形成一个良好的习惯打基础,从最小的事情上学会规范自己,在以后的工作当中却学会总结,学会从多个出发点考虑问题。3.6. “

12、假笛卡尔”处理预警编写过程中,会出现不同程度的“假笛卡尔”情况,这个目前在我的理解中应该是属于不可避免的,也应该在考虑中可以允许的。为什么成为“假笛卡尔”呢?如果大家是编写过预警规则的人,应该会注意到,如果按照触发动作来获取数据,并且获取了主键之后,在下一个步骤进行编写时,会发生类似于笛卡尔现象,出现重复的数据部分(多条数据中只有第一步中继承过来的信息不同,第二步获得的信息完全相同),但是又不是真正意义的笛卡尔,所以我称为“假笛卡尔”。这个现象应该避免吗?按照正常的数据库语言编写规范来说,应该是需要避免的,因为这样造成了数据的重复,以及结果集的非正常增加。但是按照预警规则特点和业务逻辑以及预警

13、结果需要等,并且这样的数据情况可能会贯穿整个预警规则,例如以贷还贷这类的资金流向的预警规则,每一个步骤都会产生“假笛卡尔”数据,所以如果这部分“假笛卡尔”数据如果在我们编写人员可控范围内,是允许生成这部分“假笛卡尔”数据的。所以强调一下,在临时表建立的时候,不建议只建立一个字段或两个字段(两个字段的除了统计后获得统计信息的表)的临时表,最好是能够对每个预警规则的临时表有一个良好的规划,表中的字段是一步步不增加的,在做出冗余之后,获得预警结果时,所需关联的临时表在三个以下。4. 预警编写注意事项4.1. 临时表建立临时表建立分为ORACLE和DB2两种方式:ORACLE建立方式:直接在系统中建立

14、数据表,在SQL中使用“TRUNCATE TABLE”对中间表清空。例如:(临时表创建语句为规则外编码,不放入可执行SQL中,需要在可执行SQL部署系统前在数据库中预先执行)。DB2建立方式:建立系统SESSION临时表,在SQL语句结束后对该中间表做“DROP TABLE”操作。4.2. 预警临时主键字段拼接:YJLS|-|-|0000|-|T.CUST_NO|-|T.TRANS_ORGAN预警临时主键并不是指该表是唯一索引或者主键,该字段是标示某一组数据做为一个预警信息,预警临时主键后组合的字段应该为该预警的分组字段。例如:如果是客户为预警主体则应该以客户号为标示,如果以交易为主体,则需要根据交易的特点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论