CREATE TABLE shanghailifeecif.edorinfo( contno string DEFAULT NULL COMMENT '保单号', edortype string DEFAULT NULL COMMENT '管理机构', lppostaladdress string DEFAULT NULL COMMENT '原客户地址', lcpostaladdress string DEFAULT NULL COMMENT '现客户地址', lpmobile string DEFAULT NULL COMMENT '原手机号', lcmobile string DEFAULT NULL COMMENT '现手机号 ', lpidtype string DEFAULT NULL COMMENT '原证件类型', lcidtype string DEFAULT NULL COMMENT '现证件类型 ', lpidno string DEFAULT NULL COMMENT '原证件号码', lcidno string DEFAULT NULL COMMENT '现证件号码 ', EDORAPPDATE string DEFAULT NULL COMMENT '保全申请日期', EDORCVALIDATE string DEFAULT NULL COMMENT '保全生效日期 ' ) COMMENT '保全' STORED AS csvfile; CREATE TABLE shanghailifeecif.audit_edorlist( managecom varchar2(200) DEFAULT NULL COMMENT '管理机构', -- dialect: ORACLE managename varchar2(200) DEFAULT NULL COMMENT '管理机构名称', -- dialect: ORACLE salechnl varchar2(200) DEFAULT NULL COMMENT '销售渠道', -- dialect: ORACLE salechnlname varchar2(64) DEFAULT NULL COMMENT '销售渠道名称', -- dialect: ORACLE selltype varchar2(64) DEFAULT NULL COMMENT '合作渠道代码', -- dialect: ORACLE selltypename varchar2(64) DEFAULT NULL COMMENT '合作渠道名称', -- dialect: ORACLE contno varchar2(200) DEFAULT NULL COMMENT '保单号', -- dialect: ORACLE riskcodes varchar2(200) DEFAULT NULL COMMENT '险种代码', -- dialect: ORACLE risknames varchar2(200) DEFAULT NULL COMMENT '险种名称', -- dialect: ORACLE risktypes varchar2(64) DEFAULT NULL COMMENT '险种类型', -- dialect: ORACLE signdate timestamp DEFAULT NULL COMMENT '承保日期', appntname varchar2(200) DEFAULT NULL COMMENT '投保人', -- dialect: ORACLE prem decimal(10,2) DEFAULT NULL COMMENT '保费', edorname varchar2(256) DEFAULT NULL COMMENT '保全类型', -- dialect: ORACLE edoracceptno varchar2(256) DEFAULT NULL COMMENT '保全受理号', -- dialect: ORACLE edorno varchar2(256) DEFAULT NULL COMMENT '批单号', -- dialect: ORACLE edorvalidate timestamp DEFAULT NULL COMMENT '保全生效日期', customerhandleflag varchar2(64) DEFAULT NULL COMMENT '是否亲办', -- dialect: ORACLE operator varchar2(256) DEFAULT NULL COMMENT '操作人', -- dialect: ORACLE approveoperator varchar2(256) DEFAULT NULL COMMENT '审批人', -- dialect: ORACLE getmoney decimal(10,2) DEFAULT NULL COMMENT '保全退补费金额', cusappdate timestamp DEFAULT NULL COMMENT '客户申请日期', payyears varchar2(64) DEFAULT NULL COMMENT '缴费年期', -- dialect: ORACLE agentname varchar2(256) DEFAULT NULL COMMENT '代理人姓名', -- dialect: ORACLE edorstate varchar2(64) DEFAULT NULL COMMENT '保全状态', -- dialect: ORACLE ins_time timestamp DEFAULT NULL ) COMMENT '保全清单'; ====================================================================== =================================目的表结构================================= ====================================================================== CREATE TABLE PartyTimeLine( TripID string NOT NULL COMMENT '旅程ID' , PartyID string NOT NULL COMMENT '参与方ID' , Name string COMMENT '参与方名称' , PCertID string COMMENT '参与方证件号码' , PPhone string COMMENT '参与方手机' , PRole string COMMENT '参与方角色 投保人、被保人、受益人' , Scenario string COMMENT '场景 投保 保全 报案 咨询 投诉 其他' , SDate DATE COMMENT '发生日期' , ThreadID string COMMENT '关联ID 可关联至更详细信息,如保单ID、报案ID等' , ParentID string COMMENT '父ID 如报案对应的保单ID' , Describe string COMMENT '描述' , Channel string COMMENT '来源' , EndDate DATE COMMENT '完成日期' , CREATED_BY string COMMENT '创建人' , CREATED_TIME DATE COMMENT '创建时间' , UPDATED_BY string COMMENT '更新人' , UPDATED_TIME DATE COMMENT '更新时间' ) COMMENT '参与方事件 ' STORED AS ES with shard number 10 replication 1; ==================================================初始化数据==================================================================== CREATE OR REPLACE PROCEDURE init_partytimeline_main() -- 创建主存储过程 IS DECLARE partytimeline_count int strsql string BEGIN --1.从保全清单表中初始化 参与事件 init_insuranceclaimthread_edorlist(partytimeline_count) partytimeline_count:=partytimeline_count+1; --2.从保全表中初始化 参与事件 init_insuranceclaimthread_dorinfo(partytimeline_count) partytimeline_count:=partytimeline_count+1; -- 用于以后更新时是用的序列 strsql:=' DROP SEQUENCE IF EXISTS globaleTripID_sequence; CREATE SEQUENCE globaleTripID_sequence INCREMENT BY 1 START WITH '|| partytimeline_count||' NOMAXVALUE NOMINVALUE NOCYCLE CACHE 1; '; EXECUTE IMMEDIATE strsql EXCEPTION WHEN HIVE_EXCEPTION THEN log_exception('init_partytimeline_main',sqlerrm(),sqlcode()) WHEN Others THEN log_exception('init_partytimeline_main',sqlerrm(),sqlcode()) END; /*audit_edorlist 表 managecom varchar2(200) DEFAULT NULL COMMENT '管理机构', -- dialect: ORACLE managename varchar2(200) DEFAULT NULL COMMENT '管理机构名称', -- dialect: ORACLE salechnl varchar2(200) DEFAULT NULL COMMENT '销售渠道', -- dialect: ORACLE salechnlname varchar2(64) DEFAULT NULL COMMENT '销售渠道名称', -- dialect: ORACLE selltype varchar2(64) DEFAULT NULL COMMENT '合作渠道代码', -- dialect: ORACLE selltypename varchar2(64) DEFAULT NULL COMMENT '合作渠道名称', -- dialect: ORACLE contno varchar2(200) DEFAULT NULL COMMENT '保单号', -- dialect: ORACLE riskcodes varchar2(200) DEFAULT NULL COMMENT '险种代码', -- dialect: ORACLE risknames varchar2(200) DEFAULT NULL COMMENT '险种名称', -- dialect: ORACLE risktypes varchar2(64) DEFAULT NULL COMMENT '险种类型', -- dialect: ORACLE signdate timestamp DEFAULT NULL COMMENT '承保日期', appntname varchar2(200) DEFAULT NULL COMMENT '投保人', -- dialect: ORACLE prem decimal(10,2) DEFAULT NULL COMMENT '保费', edorname varchar2(256) DEFAULT NULL COMMENT '保全类型', -- dialect: ORACLE edoracceptno varchar2(256) DEFAULT NULL COMMENT '保全受理号', -- dialect: ORACLE edorno varchar2(256) DEFAULT NULL COMMENT '批单号', -- dialect: ORACLE edorvalidate timestamp DEFAULT NULL COMMENT '保全生效日期', customerhandleflag varchar2(64) DEFAULT NULL COMMENT '是否亲办', -- dialect: ORACLE operator varchar2(256) DEFAULT NULL COMMENT '操作人', -- dialect: ORACLE approveoperator varchar2(256) DEFAULT NULL COMMENT '审批人', -- dialect: ORACLE getmoney decimal(10,2) DEFAULT NULL COMMENT '保全退补费金额', cusappdate timestamp DEFAULT NULL COMMENT '客户申请日期', payyears varchar2(64) DEFAULT NULL COMMENT '缴费年期', -- dialect: ORACLE agentname varchar2(256) DEFAULT NULL COMMENT '代理人姓名', -- dialect: ORACLE edorstate varchar2(64) DEFAULT NULL COMMENT '保全状态', -- dialect: ORACLE ins_time timestamp DEFAULT NULL */ CREATE TABLE PartyTimeLine_edor_tmp( id string, contno string comment '保单号', PartyID string COMMENT '参与方ID' , appntname string COMMENT '参与方名称' , PCertID string COMMENT '参与方证件号码' , PPhone string COMMENT '参与方手机' , cusappdate DATE COMMENT '客户申请日期' , edoracceptno string COMMENT '保全受理号' , edorvalidate DATE COMMENT '保全生效日期' ) COMMENT '参与方保全事件临时表 ' STORED AS ES with shard number 10 replication 1; !set plsqlUseSlash true SET plsql.catch.hive.exception=true; --set plsql.compile.dml.check.semantic=false; --禁止编译过程对PL/SQL内部语法进行检查。 CREATE OR REPLACE PROCEDURE init_insuranceclaimthread_edorlist(partytimeline_count OUT int) IS BEGIN --初始化临时表 delete from PartyTimeLine_edor_tmp; insert into PartyTimeLine_edor_tmp( id, contno, appntname, cusappdate, edoracceptno, edorvalidate ) SELECT row_number()over(), contno, appntname, cusappdate, edoracceptno, edorvalidate from shanghailifeecif.audit_edorlist; --更新临时表信息 UPDATE PartyTimeLine_edor_tmp a SET ( PartyID ,-- 参与方ID PCertID ,-- 参与方证件号码 PPhone ) = ( select ApplicantID ,--客户等级 AppCertID ,--贡献度分 AppPhone--家庭加分 from shanglifeecif.InsuranceArrangement b where b.PolicyNo = a.contno ) WHERE 1=1 ; --更新参与方事件表 insert into PartyTimeLine( TripID, PartyID, --参与方id Name, PCertID, PPhone, PRole, Scenario, SDate, ThreadID, ParentID, EndDate, CREATED_BY, CREATED_TIME ) SELECT row_number()over(), PartyID, appntname, PCertID, PPhone, '投保人', '投保', cusappdate, edoracceptno, contno, edorvalidate, 'admin', sysdate from PartyTimeLine_edor_tmp where PartyID is not null; --已经存在的数据行数 select count(0) into partytimeline_count from PartyTimeLine EXCEPTION WHEN HIVE_EXCEPTION THEN log_exception('init_insuranceclaimthread_edorlist',sqlerrm(),sqlcode()) WHEN Others THEN log_exception('init_insuranceclaimthread_edorlist',sqlerrm(),sqlcode()) END; --------------------------------根据edorinfo更新 保全---------------------------------------- /* contno string DEFAULT NULL COMMENT '保单号', edortype string DEFAULT NULL COMMENT '管理机构', lppostaladdress string DEFAULT NULL COMMENT '原客户地址', lcpostaladdress string DEFAULT NULL COMMENT '现客户地址', lpmobile string DEFAULT NULL COMMENT '原手机号', lcmobile string DEFAULT NULL COMMENT '现手机号 ', lpidtype string DEFAULT NULL COMMENT '原证件类型', lcidtype string DEFAULT NULL COMMENT '现证件类型 ', lpidno string DEFAULT NULL COMMENT '原证件号码', lcidno string DEFAULT NULL COMMENT '现证件号码 ', EDORAPPDATE string DEFAULT NULL COMMENT '保全申请日期', EDORCVALIDATE string DEFAULT NULL COMMENT '保全生效日期 ' */ CREATE OR REPLACE PROCEDURE init_insuranceclaimthread_dorinfo(partytimeline_count OUT int) IS BEGIN --初始化临时表 delete from PartyTimeLine_edor_tmp; insert into PartyTimeLine_edor_tmp( id, contno, appntname, cusappdate, edoracceptno, edorvalidate ) SELECT row_number()over(), contno, appntname, EDORAPPDATE, edoracceptno, EDORCVALIDATE from shanghailifeecif.audit_edorlist; --更新临时表信息 UPDATE PartyTimeLine_edor_tmp a SET ( PartyID ,-- 参与方ID PCertID ,-- 参与方证件号码 PPhone ) = ( select ApplicantID ,--客户等级 AppCertID ,--贡献度分 AppPhone--家庭加分 from shanglifeecif.InsuranceArrangement b where b.PolicyNo = a.contno ) WHERE 1=1 ; --更新参与方事件表 insert into PartyTimeLine( TripID, PartyID, --参与方id Name, PCertID, PPhone, PRole, Scenario, SDate, ThreadID, ParentID, EndDate, CREATED_BY, CREATED_TIME ) SELECT row_number()over(), PartyID, appntname, PCertID, PPhone, '投保人', '投保', cusappdate, edoracceptno, contno, edorvalidate, 'admin', sysdate from PartyTimeLine_edor_tmp where PartyID is not null; --已经存在的数据行数 select count(0) into partytimeline_count from PartyTimeLine EXCEPTION WHEN HIVE_EXCEPTION THEN log_exception('init_insuranceclaimthread_dorinfo',sqlerrm(),sqlcode()) WHEN Others THEN log_exception('init_insuranceclaimthread_dorinfo',sqlerrm(),sqlcode()) END; ================================================数据解析============================================================================================ --保全号是唯一的 是不重复的 --从 audit_edorlist 的表中插入的数据为 619006 --有1060个数据 因为查不到保单无法进入数据库 SELECT count(1) FROM audit_edorlist ; --620066 SELECT count(1) FROM ( SELECT contno FROM audit_edorlist GROUP BY contno ); --根据保单 去重550805 SELECT count(1) FROM ( SELECT contno,cusappdate FROM audit_edorlist GROUP BY contno,cusappdate );--根据保单和申请时间 去重 591350 SELECT count(1) a,contno FROM audit_edorlist GROUP BY contno,cusappdate ORDER BY a DESC; --查询重复最多的数据 SELECT * FROM audit_edorlist WHERE contno = '2018020800060078';